[med-svn] [genometools] 01/03: New upstream version 1.5.10+ds
Sascha Steinbiss
satta at debian.org
Sun Aug 6 14:14:46 UTC 2017
This is an automated email from the git hooks/post-receive script.
satta pushed a commit to branch master
in repository genometools.
commit 17a2684ec4cfc4b86555bbbe2a941f6b16f53e00
Author: Sascha Steinbiss <satta at debian.org>
Date: Sun Aug 6 15:45:26 2017 +0200
New upstream version 1.5.10+ds
---
.travis.yml | 45 +-
CHANGELOG | 19 +-
Makefile | 15 +-
VERSION | 2 +-
doc/RELEASE | 4 -
gtdata/modules/gtdoclib/docvisitorlatex.lua | 27 +-
gtdata/modules/gtdoclib/gtscript_header.lp | 1 -
gtdata/modules/gtdoclib/libgenometools_header.lp | 1 -
gtpython/README | 2 +-
scripts/SEmatch.rb | 151 +
scripts/all-vs-all.sh | 6 +-
scripts/alloutputoptions.rb | 44 +-
scripts/build_dists.sh | 8 +
scripts/check-fstperquery.rb | 55 +
scripts/cleanpp.sh | 1 +
scripts/cmp_db_query_exch.rb | 4 +-
scripts/collect-mappings.rb | 26 -
scripts/convert2myersformat.rb | 77 +-
scripts/cutsequences.rb | 61 +
scripts/enumkmers.rb | 26 +
scripts/esq-in-bytes.sh | 25 +-
scripts/estim-kmer-size.rb | 25 +
scripts/evalue-filter.rb | 29 +
scripts/extract-seed.rb | 18 +
scripts/fasta.rb | 112 +
scripts/findfasta.rb | 28 +-
scripts/gen-display-struct.rb | 226 +
scripts/gen-intsets.rb | 35 +-
scripts/gen-radixsort-ip.rb | 466 +-
scripts/gen-radixsort-ip.sh | 1 +
scripts/gfa2lint.rb | 148 +
scripts/manyshort-somelong.rb | 23 +
scripts/matches-compare.rb | 396 +
scripts/matches2ani.rb | 52 +
scripts/mk_ft_longest_common.rb | 258 +
scripts/print_sequence.rb | 7 +
scripts/reverse-complement.rb | 19 +
scripts/run-se-da.sh | 4 +-
scripts/se-permutation.rb | 45 +
scripts/seeds2maxmatches.rb | 95 +
scripts/sensitivity-test.rb | 4 +-
scripts/sim-read-mapping.sh | 60 +-
scripts/single-read-mapping.sh | 30 +
scripts/skmake.rb | 15 +-
scripts/travis_installdeps.sh | 13 +
scripts/{alloutputoptions.rb => turnwheel.rb} | 23 +-
src/annotationsketch/custom_track_gc_content.c | 4 +-
src/core/accspecialrange.gen | 50 +
src/core/alphabet.c | 25 +-
src/core/arraydef.h | 41 +-
src/core/bitbuffer.c | 301 +-
src/core/bitbuffer.h | 70 +-
src/core/bitpackstringsimpleop.h | 11 +-
src/core/colorspace.h | 6 +-
src/core/csvline_reader.c | 302 +
src/core/csvline_reader.h | 85 +
src/core/encseq.c | 90 +-
src/core/encseq.h | 19 +-
src/core/fptr_api.h | 2 +-
src/core/gtdatapath.c | 15 +-
src/core/mail_address.h | 2 +-
src/core/radix_sort.c | 241 +-
src/core/radix_sort.h | 11 +
src/core/radixsort-ip-flba.inc | 364 +
src/core/radixsort-ip-uint64keypair.inc | 211 +-
src/core/radixsort-ip-ulong.inc | 203 +-
src/core/radixsort-ip-ulongpair.inc | 203 +-
src/core/str.c | 7 +
src/core/str.h | 2 +
src/core/timer.c | 45 +-
src/core/timer_api.h | 3 +
src/core/unused_api.h | 6 +
src/extended/alignment.c | 164 +-
src/extended/alignment.h | 13 +-
src/extended/assembly_stats_calculator.c | 95 +-
src/extended/assembly_stats_calculator.h | 5 +
src/extended/blast_process_call.h | 8 +-
src/extended/compressed_bitsequence.h | 6 +-
src/extended/condenseq.c | 170 +-
src/extended/condenseq.h | 14 +-
src/extended/condenseq_creator.c | 448 +-
src/extended/condenseq_creator.h | 14 +-
src/extended/condenseq_rep.h | 10 +-
src/extended/condenseq_search_arguments.h | 2 +
src/extended/editscript.c | 54 +-
src/extended/editscript.h | 92 +-
src/extended/elias_gamma.h | 2 +-
src/extended/encdesc.c | 1 -
src/extended/encdesc_header_io.h | 2 +
src/extended/fasta_header_iterator.h | 6 +-
src/extended/gff3_escaping.c | 14 +-
src/extended/gff3_parser.c | 21 +-
src/extended/huffcode.h | 2 +-
src/extended/intset.h | 2 +-
src/extended/intset_16.c | 37 +-
src/extended/intset_16.h | 2 +-
src/extended/intset_32.c | 37 +-
src/extended/intset_32.h | 2 +-
src/extended/intset_8.c | 37 +-
src/extended/intset_8.h | 2 +-
src/extended/io_function_pointers.h | 6 +-
src/extended/linspace_management.c | 7 +-
src/extended/match_blast.c | 61 +-
src/extended/match_blast_api.h | 35 +-
src/extended/match_iterator_blast.c | 59 +-
src/extended/match_iterator_open.c | 11 +-
src/extended/multieoplist.c | 16 +-
src/extended/multieoplist.h | 26 +-
src/extended/popcount_tab.h | 3 +-
src/extended/ranked_list.c | 4 +-
src/extended/rbtree.c | 51 +-
src/extended/rbtree.h | 33 +-
src/extended/rcr.h | 2 +
src/extended/safe_popen.c | 9 +-
src/extended/sam_alignment.h | 82 +-
src/extended/sam_query_name_iterator.h | 4 +-
src/extended/samfile_iterator.h | 2 +-
src/extended/scorehandler.c | 12 +
src/extended/scorehandler.h | 4 +
src/extended/wtree.h | 7 +-
src/extended/wtree_encseq.c | 4 +-
src/gtt.c | 4 +
src/match/asqg_writer.c | 2 +-
src/match/asqg_writer.h | 2 +-
src/match/chain2dim.c | 19 +-
src/match/chainofin.c | 9 +-
src/match/diagband-struct.c | 349 +
src/match/diagband-struct.h | 170 +
src/match/diagbandseed.c | 4556 +++++++++---
src/match/diagbandseed.h | 89 +-
src/match/eis-bwtseq-context.c | 2 +-
src/match/esa-mmsearch.c | 54 +-
src/match/esa-mmsearch.h | 3 +
src/match/ft-eoplist.c | 1349 ++++
src/match/ft-eoplist.h | 222 +
src/match/ft-front-generation.c | 395 +-
src/match/ft-front-generation.h | 58 +-
src/match/ft-front-prune.c | 981 ++-
src/match/ft-front-prune.h | 57 +-
src/match/ft-longest-common.inc | 1839 +++++
src/match/ft-polish.c | 27 +-
src/match/ft-polish.h | 25 +-
src/match/ft-trimstat.c | 203 +-
src/match/ft-trimstat.h | 36 +-
src/match/gfa_writer.c | 227 +
src/match/gfa_writer.h | 70 +
src/match/karlin_altschul_stat.c | 945 +++
src/match/karlin_altschul_stat.h | 90 +
src/match/lua_tools.h | 3 +
src/match/querymatch-align.c | 967 +--
src/match/querymatch-align.h | 111 +-
src/match/querymatch-display.c | 636 ++
src/match/querymatch-display.h | 67 +
src/match/querymatch.c | 1475 +++-
src/match/querymatch.h | 156 +-
src/match/rdj-filesuf-def.h | 2 +
src/match/rdj-spmfind.c | 1 +
src/match/rdj-strgraph.c | 67 +-
src/match/rdj-strgraph.h | 4 +
src/match/rectangle-store.c | 158 +
src/match/rectangle-store.h | 25 +
src/match/se-display-fwd.inc | 85 +
src/match/se-display.inc | 426 ++
src/match/seed-extend-iter.c | 231 +-
src/match/seed-extend-iter.h | 99 +-
src/match/seed-extend.c | 1395 ++--
src/match/seed-extend.h | 254 +-
src/match/seed_extend_parts.c | 325 +
src/match/seed_extend_parts.h | 73 +
src/match/seq_or_encseq.h | 34 +
src/match/seqabstract.c | 18 +-
src/match/seqabstract.h | 2 +-
src/match/sfx-diffcov.c | 8 +-
src/match/sfx-run.c | 2 +-
src/match/sfx-suffixgetset.c | 11 +-
src/match/shu-dfs.h | 10 +-
src/match/test-maxpairs.c | 18 +-
src/tools/gt_condenseq_compress.c | 6 +-
src/tools/gt_kmer_database.c | 4 +-
src/tools/gt_readjoiner.c | 2 +
src/tools/gt_readjoiner_asqg.c | 2 +-
.../{gt_readjoiner_asqg.c => gt_readjoiner_gfa.c} | 147 +-
.../lua_tools.h => tools/gt_readjoiner_gfa.h} | 13 +-
src/tools/gt_repfind.c | 495 +-
src/tools/gt_seed_extend.c | 813 ++-
src/tools/gt_seqorder.c | 247 +-
src/tools/gt_seqstat.c | 41 +-
src/tools/gt_sfxmap.c | 6 +-
src/tools/gt_show_seedext.c | 412 +-
src/tools/gt_sortbench.c | 194 +-
testdata/at-C99887-fwd.fna | 14 +
testdata/at-C99887-rev.fna | 14 +
testdata/at-C99930.fna | 12 +
testdata/gt_seqorder_test_sortlength.fas | 34 +
testdata/gt_sketch_textwidth.gff3 | 2 +-
testdata/matchtool_see-ext.match | 72 +
testdata/query-fwd.match | 55 +
testdata/query-rev.match | 55 +
testdata/readjoiner/30x_800nt.gfa1 | 64 +
testdata/readjoiner/30x_800nt.gfa2 | 64 +
testdata/readjoiner/30x_long_varlen.gfa1 | 73 +
testdata/readjoiner/30x_long_varlen.gfa2 | 73 +
testdata/readjoiner/70x_100nt.gfa1 | 82 +
testdata/readjoiner/70x_100nt.gfa2 | 82 +
testdata/readjoiner/contained_varlen.gfa1 | 11 +
testdata/readjoiner/contained_varlen.gfa2 | 11 +
.../at1MB-Atinsert-greedy-20-700-75-3-39-a | 1528 ++--
.../at1MB-U8-greedy-r-12-30-80-2-36-a | 1087 +--
.../repfind-result/at1MB-U8-xdrop-20-20-80-6-a | 359 +-
.../repfind-result/at1MB-U8-xdrop-r-12-30-80-6-a | 562 +-
.../repfind-result/at1MB-greedy-70-500-90-1-39-a | 1409 ++--
.../repfind-result/at1MB-greedy-r-14-32-80-2-36-a | 226 +-
testdata/repfind-result/at1MB-xdrop-20-20-80-6 | 1 +
.../repfind-result/at1MB-xdrop-70-500-90-1-39-a | 1297 ++--
testdata/repfind-result/at1MB-xdrop-r-14-32-80-6-a | 145 +-
testdata/repfind-result/humhbb.fna-gr-ext.result | 1 +
testdata/repfind-result/ychrIII.fna-gr-ext.result | 4 +
testdata/see-ext-U8-evalue-bitscore.matches | 11 +
testdata/see-ext-ani-at1MB-U8.txt | 6 +
testdata/see-ext-at1MB-400-al-from-dtrace.matches | 7610 ++++++++++++++++++++
testdata/see-ext-at1MB-400-cigar.matches | 230 +
testdata/see-ext-at1MB-400-cigarX.matches | 231 +
testdata/see-ext-at1MB-400-dtrace.matches | 230 +
testdata/see-ext-at1MB-400-evalue-bitscore.matches | 228 +
testdata/see-ext-at1MB-400-seqdesc.matches | 230 +
testdata/see-ext-at1MB-400-seqlength.matches | 228 +
testdata/see-ext-at1MB-400-trace.matches | 230 +
testdata/see-ext-at1MB-500-al.matches | 947 +++
...ee-ext-at1MB-500-alignment-seed_in_algn.matches | 321 +
testdata/see-ext-at1MB-500-failed_seed.matches | 1477 ++++
...sert100-evalue-bitscore-cigar-seqlength.matches | 11 +
...ert100-evalue-bitscore-cigarX-seqlength.matches | 12 +
.../see-ext-at1MB-U8-200-al-from-dtrace.matches | 47 +
testdata/see-ext-at1MB-maxmat250.matches | 94 +
.../see-ext-at1MB-mincoverage200-tabsep.matches | 750 ++
.../see-ext-at1MB-u8-failed_seed-evalue.matches | 21 +
testdata/see-ext-at1MB-u8-maxmat30.matches | 27 +
testdata/see-ext-at1MB-u8.matches | 1397 ++++
testdata/see-ext-at1MB.matches | 1865 +++++
testdata/see-ext-fastq_long-u8.matches | 108 +
testdata/see-ext-fastq_long.matches | 39 +
testdata/see-ext-paired-u8.matches | 0
testdata/see-ext-paired.matches | 3 +
testsuite/gt_condenseq_include.rb | 4 +-
testsuite/gt_linspace_align_include.rb | 20 +-
testsuite/gt_readjoiner_include.rb | 17 +-
testsuite/gt_repfind_include.rb | 89 +-
testsuite/gt_seed_extend_include.rb | 577 +-
testsuite/gt_seqorder_include.rb | 9 +
testsuite/gt_sortbench_include.rb | 3 +-
testsuite/gt_suffixerator_include.rb | 2 +-
www/genometools.org/htdocs/annotationsketch.html | 1 -
.../htdocs/cgi-bin/annotationsketch_demo.cgi | 1 -
.../htdocs/cgi-bin/gff3validator.cgi | 1 -
www/genometools.org/htdocs/contract.html | 1 -
www/genometools.org/htdocs/contribute.html | 1 -
www/genometools.org/htdocs/customtracks.html | 1 -
www/genometools.org/htdocs/design.html | 1 -
www/genometools.org/htdocs/docs.html | 3 +-
www/genometools.org/htdocs/documentation.html | 1 -
www/genometools.org/htdocs/examples_tmpl.html | 1 -
www/genometools.org/htdocs/index.html | 1 -
www/genometools.org/htdocs/libgenometools.html | 75 +-
www/genometools.org/htdocs/license.html | 1 -
www/genometools.org/htdocs/manuals.html | 1 -
www/genometools.org/htdocs/style_options.html | 1 -
www/genometools.org/htdocs/tool.conf | 1 -
www/genometools.org/htdocs/tool_list.conf | 1 -
www/genometools.org/htdocs/tools.html | 1 -
www/genometools.org/htdocs/tools/gt.html | 3 +-
.../htdocs/tools/gt_bed_to_gff3.html | 3 +-
www/genometools.org/htdocs/tools/gt_cds.html | 3 +-
www/genometools.org/htdocs/tools/gt_chain2dim.html | 1 -
www/genometools.org/htdocs/tools/gt_chseqids.html | 3 +-
www/genometools.org/htdocs/tools/gt_clean.html | 3 +-
www/genometools.org/htdocs/tools/gt_compreads.html | 3 +-
.../htdocs/tools/gt_compreads_compress.html | 3 +-
.../htdocs/tools/gt_compreads_decompress.html | 3 +-
.../htdocs/tools/gt_compreads_refcompress.html | 3 +-
.../htdocs/tools/gt_compreads_refdecompress.html | 3 +-
www/genometools.org/htdocs/tools/gt_condenseq.html | 3 +-
.../htdocs/tools/gt_congruence.html | 3 +-
.../htdocs/tools/gt_congruence_spacedseed.html | 1 -
.../htdocs/tools/gt_convertseq.html | 3 +-
www/genometools.org/htdocs/tools/gt_csa.html | 3 +-
www/genometools.org/htdocs/tools/gt_dot.html | 3 +-
www/genometools.org/htdocs/tools/gt_dupfeat.html | 3 +-
www/genometools.org/htdocs/tools/gt_encseq.html | 3 +-
.../htdocs/tools/gt_encseq2spm.html | 3 +-
.../htdocs/tools/gt_encseq_bench.html | 3 +-
.../htdocs/tools/gt_encseq_bitextract.html | 3 +-
.../htdocs/tools/gt_encseq_check.html | 3 +-
.../htdocs/tools/gt_encseq_decode.html | 3 +-
.../htdocs/tools/gt_encseq_encode.html | 3 +-
.../htdocs/tools/gt_encseq_info.html | 3 +-
.../htdocs/tools/gt_encseq_md5.html | 3 +-
.../htdocs/tools/gt_encseq_sample.html | 3 +-
www/genometools.org/htdocs/tools/gt_eval.html | 3 +-
.../htdocs/tools/gt_extractfeat.html | 3 +-
.../htdocs/tools/gt_extractseq.html | 3 +-
.../htdocs/tools/gt_fastq_sample.html | 3 +-
.../htdocs/tools/gt_featureindex.html | 3 +-
.../htdocs/tools/gt_fingerprint.html | 3 +-
.../htdocs/tools/gt_genomediff.html | 1 -
www/genometools.org/htdocs/tools/gt_gff3.html | 3 +-
.../htdocs/tools/gt_gff3_to_gtf.html | 3 +-
.../htdocs/tools/gt_gff3validator.html | 3 +-
.../htdocs/tools/gt_gtf_to_gff3.html | 3 +-
www/genometools.org/htdocs/tools/gt_hop.html | 3 +-
www/genometools.org/htdocs/tools/gt_id_to_md5.html | 3 +-
.../htdocs/tools/gt_inlineseq_add.html | 3 +-
.../htdocs/tools/gt_inlineseq_split.html | 3 +-
www/genometools.org/htdocs/tools/gt_interfeat.html | 3 +-
www/genometools.org/htdocs/tools/gt_loccheck.html | 3 +-
.../htdocs/tools/gt_ltrclustering.html | 3 +-
www/genometools.org/htdocs/tools/gt_ltrdigest.html | 3 +-
.../htdocs/tools/gt_ltrharvest.html | 3 +-
www/genometools.org/htdocs/tools/gt_matchtool.html | 3 +-
www/genometools.org/htdocs/tools/gt_matstat.html | 1 -
www/genometools.org/htdocs/tools/gt_md5_to_id.html | 3 +-
www/genometools.org/htdocs/tools/gt_merge.html | 3 +-
www/genometools.org/htdocs/tools/gt_mergefeat.html | 3 +-
.../htdocs/tools/gt_mkfeatureindex.html | 3 +-
.../htdocs/tools/gt_mmapandread.html | 3 +-
www/genometools.org/htdocs/tools/gt_orffinder.html | 3 +-
.../htdocs/tools/gt_packedindex.html | 3 +-
www/genometools.org/htdocs/tools/gt_prebwt.html | 1 -
.../htdocs/tools/gt_readjoiner.html | 3 +-
.../htdocs/tools/gt_readjoiner_assembly.html | 3 +-
.../htdocs/tools/gt_readjoiner_overlap.html | 3 +-
.../htdocs/tools/gt_readjoiner_prefilter.html | 3 +-
www/genometools.org/htdocs/tools/gt_repfind.html | 83 +-
.../htdocs/tools/gt_scriptfilter.html | 3 +-
.../htdocs/tools/gt_seed_extend.html | 132 +-
www/genometools.org/htdocs/tools/gt_select.html | 3 +-
www/genometools.org/htdocs/tools/gt_seq.html | 3 +-
www/genometools.org/htdocs/tools/gt_seqfilter.html | 3 +-
www/genometools.org/htdocs/tools/gt_seqids.html | 3 +-
www/genometools.org/htdocs/tools/gt_seqmutate.html | 3 +-
www/genometools.org/htdocs/tools/gt_seqorder.html | 11 +-
www/genometools.org/htdocs/tools/gt_seqstat.html | 11 +-
.../htdocs/tools/gt_seqtransform.html | 3 +-
.../htdocs/tools/gt_seqtranslate.html | 3 +-
www/genometools.org/htdocs/tools/gt_sequniq.html | 3 +-
www/genometools.org/htdocs/tools/gt_shredder.html | 3 +-
.../htdocs/tools/gt_shulengthdist.html | 1 -
www/genometools.org/htdocs/tools/gt_simreads.html | 1 -
www/genometools.org/htdocs/tools/gt_sketch.html | 3 +-
.../htdocs/tools/gt_sketch_page.html | 3 +-
www/genometools.org/htdocs/tools/gt_snpper.html | 3 +-
www/genometools.org/htdocs/tools/gt_speck.html | 3 +-
.../htdocs/tools/gt_splicesiteinfo.html | 3 +-
.../htdocs/tools/gt_splitfasta.html | 3 +-
www/genometools.org/htdocs/tools/gt_stat.html | 3 +-
www/genometools.org/htdocs/tools/gt_tagerator.html | 1 -
www/genometools.org/htdocs/tools/gt_tallymer.html | 3 +-
.../htdocs/tools/gt_tallymer_mkindex.html | 1 -
.../htdocs/tools/gt_tallymer_occratio.html | 1 -
.../htdocs/tools/gt_tallymer_search.html | 1 -
www/genometools.org/htdocs/tools/gt_tirvish.html | 3 +-
www/genometools.org/htdocs/tools/gt_uniq.html | 3 +-
www/genometools.org/htdocs/tools/gt_uniquesub.html | 1 -
www/genometools.org/htdocs/tools/gt_wtree.html | 3 +-
www/genometools.org/htdocs/trackselectors.html | 1 -
364 files changed, 43070 insertions(+), 9498 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 9a0b1ca..2cc1a97 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,5 +1,7 @@
cache: apt
language: c
+os:
+ - linux
compiler:
- clang
env:
@@ -8,45 +10,52 @@ env:
matrix:
- default=yes testrange=1..1150
- assert=no testrange=1..1150
- - amalgamation=yes testrange=1..1150
- opt=no cairo=no testrange=1..1150
- threads=yes testrange=1..1150
- default=yes testrange=1151..1750
- assert=no testrange=1151..1750
- - amalgamation=yes testrange=1151..1750
- opt=no cairo=no testrange=1151..1750
- threads=yes testrange=1151..1750
- default=yes testrange=1751..3000
- assert=no testrange=1751..3000
- - amalgamation=yes testrange=1751..3000
- opt=no cairo=no testrange=1751..3000
- threads=yes testrange=1751..3000
matrix:
include:
- - compiler: gcc
+ - os: linux
+ compiler: gcc
env: default=yes
- - compiler: gcc
+ - os: linux
+ compiler: gcc
env: GT_BITS=32 cairo=no
- - compiler: clang
+ - os: linux
+ compiler: clang
env: GT_BITS=32 cairo=no
- - compiler: gcc
+ - os: linux
+ compiler: gcc
env: assert=no
- - compiler: gcc
+ - os: linux
+ compiler: gcc
env: amalgamation=yes
- - compiler: gcc
+ - os: linux
+ compiler: gcc
+ env: opt=no cairo=no
+ - os: osx
+ compiler: gcc
+ env: default=yes
+ - os: osx
+ compiler: gcc
+ env: assert=no
+ - os: osx
+ compiler: gcc
+ env: amalgamation=yes
+ - os: linux
+ compiler: gcc
env: opt=no cairo=no
- compiler: i686-w64-mingw32-gcc
env: SYSTEM=Windows MACHINE=i686 GT_BITS=32 AR=i686-w64-mingw32-ar fpic=no cairo=no sharedlib=no CFLAGS='-Wno-error=attributes -Wno-error=unused-parameter -DSQLITE_MALLOCSIZE=_msize'
- compiler: x86_64-w64-mingw32-gcc
env: SYSTEM=Windows MACHINE=i686 GT_BITS=64 AR=x86_64-w64-mingw32-ar fpic=no cairo=no sharedlib=no CFLAGS='-Wno-error=attributes -Wno-error=unused-parameter -DSQLITE_MALLOCSIZE=_msize'
-
before_install:
- - sudo apt-get update -q
- - sudo apt-get install ncbi-blast+ gcc-multilib -y
- - sudo apt-get install binutils-mingw-w64-i686 gcc-mingw-w64-i686 -y
- - sudo apt-get install binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 -y
-before_script:
- - blastn -version
- - blastp -version
- - makeblastdb -version
+ - ./scripts/travis_installdeps.sh
script: ./scripts/travis_test.rb
diff --git a/CHANGELOG b/CHANGELOG
index 7d7edb9..7b0110e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,21 @@
-changes in version 1.5.9 (2016-07-XX)
+changes in version 1.5.10 (2017-08-04)
+
+- bugfixes and cleanups
+- add Readjoiner output in GFA format
+- improve building on GCC 7
+- add arbitrary N values for `gt seqstat`
+- install gtdata into $PREFIX/share/genometools by default
+- improve robustness of test suite
+- add Travis tests for Mac OS X
+- `gt seed_extend` now speaks GFA2
+- improvements to `gt seed_extend` w.r.t. runtime and
+ output format
+- new implementation of functionality for computing
+ E-values for local alignments according to the
+ Karlin-Altschul statistics
+
+
+changes in version 1.5.9 (2016-07-21)
- bugfixes and cleanups
- update MD5 module to upstream version 1.2
diff --git a/Makefile b/Makefile
index cebc9e1..de5dabf 100644
--- a/Makefile
+++ b/Makefile
@@ -390,6 +390,12 @@ ifneq ($(sharedlib),no)
SHARED_LIBGENOMETOOLS := lib/libgenometools$(SHARED_OBJ_NAME_EXT)
endif
+ifeq ($(popcnt),yes)
+ ifeq ($(MACHINE),x86_64)
+ GT_CFLAGS += -mpopcnt
+ endif
+endif
+
LIBGENOMETOOLS_DIRS:= src/core \
src/extended \
src/gtlua \
@@ -770,6 +776,12 @@ src/core/checkbitpackstring-int.c: \
$(V_ECHO) '[rebuild $@]'
$(V_DO)scripts/template2c.pl '-int' $<
+src/extended/intset_8.c src/extended/intset_8.h src/extended/intset_16.c \
+src/extended/intset_16.h src/extended/intset_32.c src/extended/intset_32.h: \
+ ./scripts/gen-intsets.rb
+ $(V_ECHO) '[rebuild] $@'
+ $(V_DO)$<
+
# SQLite needs special attention
obj/$(SQLITE3_DIR)/%.o: $(SQLITE3_DIR)/%.c
$(V_ECHO) "[compile $(@F)]"
@@ -963,7 +975,8 @@ else
cp bin/gt $(prefix)/bin
$(STRIP) $(prefix)/bin/gt
endif
- cp -r gtdata $(prefix)/bin
+ mkdir -p $(prefix)/share/genometools
+ cp -a gtdata $(prefix)/share/genometools/
test -d $(prefix)/include/genometools/core \
|| mkdir -p $(prefix)/include/genometools/core
cp src/core/*_api.h $(prefix)/include/genometools/core
diff --git a/VERSION b/VERSION
index 2b26b8d..f0ed379 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.5.9
+1.5.10
diff --git a/doc/RELEASE b/doc/RELEASE
index eaec1e7..ac30c40 100644
--- a/doc/RELEASE
+++ b/doc/RELEASE
@@ -40,7 +40,3 @@ Steps for preparing a new GenomeTools release
Increase version number in VERSION file. Also, create a new CHANGELOG
entry with the new version number and commit the change with the
message 'version bump'.
-
-6. write email to gt-users mailing list (gt-users at genometools.org)
-
- There is a template in the doc/ subdirectory.
diff --git a/gtdata/modules/gtdoclib/docvisitorlatex.lua b/gtdata/modules/gtdoclib/docvisitorlatex.lua
index 190d188..409acba 100644
--- a/gtdata/modules/gtdoclib/docvisitorlatex.lua
+++ b/gtdata/modules/gtdoclib/docvisitorlatex.lua
@@ -58,19 +58,26 @@ local function codify(str)
str = ""
end
str = trim(str)
- local res = string.gsub(str, "\\", "$\\backslash$")
- res = string.gsub(res, "<<([^ ]-)>>", "@@%1@@")
- res = string.gsub(res, "<([^ ]-)>", "\\texttt{%1}")
- res = string.gsub(res, "@@([^ ]-)@@", "\\texttt{<%1>}")
- res = string.gsub(res, "\->", "$\\to$")
- res = string.gsub(res, ">", "$>$")
- res = string.gsub(res, "<", "$<$")
- res = string.gsub(res, " ([%a_][%a%d_%.]-%(%))", "\\texttt{%1}")
- res = string.gsub(res, "___(.-)___", " \\textbf{%1}")
+ local res = string.gsub(str, "\\", "\\textbackslash")
+ res = string.gsub(res, "<<([a-zA-z_*()]-)>>", "@@%1@@")
+ res = string.gsub(res, "<([a-zA-z_*()]-)>", "\\texttt{%1}")
+ res = string.gsub(res, "@@([a-zA-z_*()]-)@@", "\\texttt{<%1>}")
+ res = string.gsub(res, "%->", "\\(\\rightarrow\\)")
+ res = string.gsub(res, "<%-", "\\(\\leftarrow\\)")
+ res = string.gsub(res, ">=", "\\(\\ge\\)")
+ res = string.gsub(res, ">", "\\(>\\)")
+ res = string.gsub(res, "<=", "\\(\\le\\)")
+ res = string.gsub(res, "<", "\\(<\\)")
+ res = string.gsub(res, " ([%a_][%a%d_%.]-%(%))", " \\texttt{%1}")
+ res = string.gsub(res, "___(.-)___", "\\textbf{%1}")
res = string.gsub(res, "__(.-)__", "\\emph{%1}")
res = string.gsub(res, "_", "\\_")
res = string.gsub(res, "#", "\\#")
- res = string.gsub(res, "(%w+%^)%s*([%w\\{}]+)", "$%1{%2}$")
+ res = string.gsub(res, "(%w+%^)%s*([%w\\{}]+)", "\\(%1{%2}\\)")
+ res = string.gsub(res, "(%d+) ?\\%(", "\\(%1")
+ res = string.gsub(res, "\\%) ?(%d+)", "%1\\)")
+ res = string.gsub(res, "\\%) -%\\%(", " ")
+ res = string.gsub(res, "%.%.%.", "\\ldots")
return res
end
diff --git a/gtdata/modules/gtdoclib/gtscript_header.lp b/gtdata/modules/gtdoclib/gtscript_header.lp
index 450840a..4702a15 100644
--- a/gtdata/modules/gtdoclib/gtscript_header.lp
+++ b/gtdata/modules/gtdoclib/gtscript_header.lp
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/gtdata/modules/gtdoclib/libgenometools_header.lp b/gtdata/modules/gtdoclib/libgenometools_header.lp
index 38c1c52..9d54ab1 100644
--- a/gtdata/modules/gtdoclib/libgenometools_header.lp
+++ b/gtdata/modules/gtdoclib/libgenometools_header.lp
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/gtpython/README b/gtpython/README
index b7f451e..7b1ecac 100644
--- a/gtpython/README
+++ b/gtpython/README
@@ -16,7 +16,7 @@ python setup.py install
to install the 'gt' package on this system (must be root).
-Furthermore, you have to make sure that the GenomeTools shared libraries can be
+Furthermore, you have to make sure that the GenomeTools shared libraries can
be found by the dlopen(3) system call. For example, by adding the lib/
subdirectory of GenomeTools to your LD_LIBRARY_PATH environment variable.
Alternatively, use "make install" in the genometools directory for a
diff --git a/scripts/SEmatch.rb b/scripts/SEmatch.rb
new file mode 100644
index 0000000..1955fc2
--- /dev/null
+++ b/scripts/SEmatch.rb
@@ -0,0 +1,151 @@
+class SEmatch
+ def initialize(matchfile)
+ @matchfile = matchfile
+ end
+ def each()
+ begin
+ @fp = File.new(@matchfile)
+ rescue => err
+ STDERR.puts "#{$0}: cannot open #{@matchfile}"
+ exit 1
+ end
+ @options = nil
+ @fields = nil
+ @runtime = nil
+ @spacepeak = nil
+ @fp.each_line do |line|
+ if line.match(/^#/)
+ if m = line.match(/^# Options:(.*)$/)
+ @options = m[1]
+ elsif m = line.match(/^# Fields:\s(.*)$/)
+ @fields = m[1].gsub(/\./,"_").split(/, /)
+ @fields.map!{|f| f.gsub(/\s/,"_").gsub(/__/,"_").gsub(/%_/,"")}
+ end
+ if m = line.match(/^# TIME.*\s(\S+)$/)
+ @runtime = m[1].to_f
+ elsif m = line.match(/^# combined space peak in megabytes:\s(\S+)$/)
+ @spacepeak = m[1].to_f
+ end
+ else
+ if @fields.nil?
+ STDERR.puts "#{$0}: fields: not defined"
+ exit 1
+ end
+ value_hash = Hash.new()
+ line.gsub(/^\s+/,"").split(/\s+/).each_with_index do |value,idx|
+ if value.match(/^\d+\.\d+$/)
+ value_hash[@fields[idx].to_sym] = value.to_f
+ elsif value.match(/^\d+$/)
+ value_hash[@fields[idx].to_sym] = value.to_i
+ else
+ value_hash[@fields[idx].to_sym] = value
+ end
+ end
+ if value_hash.has_key?(:s_start)
+ if value_hash.has_key?(:s_len)
+ value_hash[:s_end] = value_hash[:s_start] + value_hash[:s_len] - 1
+ elsif value_hash.has_key?(:s_end)
+ if value_hash[:s_start] < value_hash[:s_end]
+ value_hash[:s_len] = value_hash[:s_end] - value_hash[:s_start] + 1
+ else
+ value_hash[:s_len] = value_hash[:s_start] - value_hash[:s_end] + 1
+ end
+ else
+ STDERR.puts "#{$0}: either length of match on subject or end " +
+ "position must be given"
+ exit 1
+ end
+ else
+ STDERR.puts "#{$0}: start of match on subject must be given"
+ exit 1
+ end
+ if value_hash.has_key?(:q_start)
+ if value_hash.has_key?(:q_len)
+ value_hash[:q_end] = value_hash[:q_start] + value_hash[:q_len] - 1
+ elsif value_hash.has_key?(:q_end)
+ if value_hash[:q_start] < value_hash[:q_end]
+ value_hash[:q_len] = value_hash[:q_end] - value_hash[:q_start] + 1
+ else
+ value_hash[:q_len] = value_hash[:q_start] - value_hash[:q_end] + 1
+ end
+ else
+ value_hash[:q_len] = value_hash[:s_len]
+ end
+ else
+ STDERR.puts "#{$0}: start of match on query must be given"
+ exit 1
+ end
+ value_hash[:origline] = line.chomp
+ yield value_hash
+ end
+ end
+ end
+ def spacepeak_get()
+ return @spacepeak
+ end
+ def runtime_get()
+ return @runtime
+ end
+end
+
+def match_is_identical(m0,m1)
+ if m0[:s_seqnum] != m1[:s_seqnum] or m0[:q_seqnum] != m1[:q_seqnum]
+ STDERR.puts "#{$0}: expect same sequence numbers"
+ exit 1
+ end
+ if [m0[:s_start],m0[:s_end],m0[:q_start],m0[:q_end]] ==
+ [m1[:s_start],m1[:s_end],m1[:q_start],m1[:q_end]]
+ return true
+ end
+ return false
+end
+
+def coords_contained_in(start0,end0,start1,end1)
+ if start1 <= start0 and end0 <= end1
+ return true
+ end
+ return false
+end
+
+def match_proper_contained_in(m0,m1)
+ if m0[:s_seqnum] != m1[:s_seqnum] or m0[:q_seqnum] != m1[:q_seqnum]
+ STDERR.puts "#{$0}: expect same sequence numbers"
+ exit 1
+ end
+ if coords_contained_in(m0[:s_start],m0[:s_end],m1[:s_start],m1[:s_end]) and
+ coords_contained_in(m0[:q_start],m0[:q_end],m1[:q_start],m1[:q_end]) and
+ not match_is_identical(m0,m1)
+ return true
+ end
+ return false
+end
+
+def coords_overlap_size(start0,end0,start1,end1)
+ if start0 > start1
+ STDERR.puts "#{$0}: start0=#{start0} > #{start1}=start1 not expected"
+ exit 1
+ end
+ if end0 < start1
+ return 0
+ elsif end0 < end1
+ return end0 - start1 + 1
+ else
+ return end1 - start1 + 1
+ end
+end
+
+def matches_overlap(m0,m1)
+ ovl = 0
+ if m0[:s_start] <= m1[:s_start]
+ ovl += coords_overlap_size(m0[:s_start],m0[:s_end],m1[:s_start],m1[:s_end])
+ else
+ ovl += coords_overlap_size(m1[:s_start],m1[:s_end],m0[:s_start],m0[:s_end])
+ end
+ if m0[:q_start] <= m1[:q_start]
+ ovl += coords_overlap_size(m0[:q_start],m0[:q_end],m1[:q_start],m1[:q_end])
+ else
+ ovl += coords_overlap_size(m1[:q_start],m1[:q_end],m0[:q_start],m0[:q_end])
+ end
+ len = (m0[:s_len] + m0[:q_len])/2 + (m1[:s_len] + m1[:q_len])/2
+ return (ovl.to_f/len.to_f).round
+end
diff --git a/scripts/all-vs-all.sh b/scripts/all-vs-all.sh
index 62178b7..74cf7f8 100755
--- a/scripts/all-vs-all.sh
+++ b/scripts/all-vs-all.sh
@@ -1,7 +1,7 @@
#!/bin/sh
set -e -x
-# set GTDIR as path of genometools directory
+: "${GTDIR:?Need to set environment GTDIR as path to genometools directory}"
excludelist=Verysmall.fna,TTTN.fna,description_test.fastq,Random160.fna,description_test2.fastq,Copysorttest.fna,TTT-small.fna,paired_reads_1N_2.p.fastq,Random.fna,wildcard1.fastq,wildcard2.fastq,fastq_problem2.fasta,fastq_problem.fasta,Reads3.fna,invalid_with_pos256_q31.fastq,Small.fna,sg_reads.fastq,Reads2.fna,hop_moderate.fastq,hop_aggressive.fastq
for reference in `${GTDIR}/scripts/findfasta.rb -n -e ${excludelist}`
@@ -10,9 +10,9 @@ do
for query in `${GTDIR}/scripts/findfasta.rb -n -e ${excludelist}`
do
bin/gt encseq encode -indexname query-index ${query}
- for mode in "" -seed-display
+ for mode in "" "-outfmt seed"
do
- bin/gt seed_extend $mode -v -ii ref-index -maxfreq 20 -qii query-index > tmp.matches
+ bin/gt seed_extend $mode -v -kmerfile no -ii ref-index -maxfreq 20 -qii query-index > tmp.matches
bin/gt dev show_seedext -a -f tmp.matches
bin/gt dev show_seedext -e -f tmp.matches
bin/gt dev show_seedext -a -f tmp.matches -sort
diff --git a/scripts/alloutputoptions.rb b/scripts/alloutputoptions.rb
index 92c06fa..c99022f 100755
--- a/scripts/alloutputoptions.rb
+++ b/scripts/alloutputoptions.rb
@@ -1,40 +1,14 @@
#!/usr/bin/env ruby
-def turnwheels(outlist)
- numofalphabets = outlist.length
- wheelspace = Array.new
- alphasizes = Array.new
- 0.upto(numofalphabets-1) do |z|
- alphasizes[z] = 2
- wheelspace[z] = 0
- end
- z = numofalphabets-1
- while true
- output = false
- 0.upto(numofalphabets-1) do |i|
- if wheelspace[i] == 1
- output = true
- print " #{outlist[i]}"
- end
- end
- if output
- puts ""
- end
- stop = false
- while not stop
- wheelspace[z] = wheelspace[z]+1
- if wheelspace[z] == alphasizes[z]
- wheelspace[z] = 0
- if z == 0
- return
- end
- z = z - 1
- else
- z = numofalphabets-1
- stop = true
- end
+require_relative "turnwheel.rb"
+
+elements = ["-tis","-suf","-bwt","-lcp"]
+size = elements.size
+turnwheels(Array.new(size) {2}) do |wheel|
+ 0.upto(size-1).each do |i|
+ if wheel[i] == 0
+ print " #{elements[i]}"
end
end
+ puts ""
end
-
-turnwheels(["-tis","-suf","-bwt","-lcp"])
diff --git a/scripts/build_dists.sh b/scripts/build_dists.sh
index b505070..7b6ccf0 100755
--- a/scripts/build_dists.sh
+++ b/scripts/build_dists.sh
@@ -52,6 +52,7 @@ make MACHINE=ARMv7 \
STRIP=arm-linux-gnueabihf-strip \
amalgamation=yes \
cairo=no \
+ errorcheck=no \
$*
make MACHINE=ARMv7 \
64bit=no \
@@ -60,6 +61,7 @@ make MACHINE=ARMv7 \
STRIP=arm-linux-gnueabihf-strip \
amalgamation=yes \
cairo=no \
+ errorcheck=no \
dist > $TMPFILE
DISTRIBUTION=`tail -n 1 $TMPFILE`
cp -f $DISTRIBUTION $DISTDIR
@@ -77,6 +79,7 @@ make MACHINE=ARMv6 \
amalgamation=yes \
64bit=no \
cairo=no \
+ errorcheck=no \
$*
make MACHINE=ARMv6 \
CC="ccache $HOME/arm/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc" \
@@ -85,6 +88,7 @@ make MACHINE=ARMv6 \
amalgamation=yes \
64bit=no \
cairo=no \
+ errorcheck=no \
dist > $TMPFILE
DISTRIBUTION=`tail -n 1 $TMPFILE`
cp -f $DISTRIBUTION $DISTDIR
@@ -102,6 +106,7 @@ make SYSTEM=Darwin \
amalgamation=yes \
64bit=no \
cairo=no \
+ errorcheck=no \
$*
make SYSTEM=Darwin \
MACHINE=i386 \
@@ -112,6 +117,7 @@ make SYSTEM=Darwin \
amalgamation=yes \
64bit=no \
cairo=no \
+ errorcheck=no \
dist > $TMPFILE
DISTRIBUTION=`tail -n 1 $TMPFILE`
cp -f $DISTRIBUTION $DISTDIR
@@ -129,6 +135,7 @@ make SYSTEM=Darwin \
STRIP=i686-apple-darwin10-strip \
amalgamation=yes \
cairo=no \
+ errorcheck=no \
$*
make SYSTEM=Darwin \
MACHINE=i386 \
@@ -139,6 +146,7 @@ make SYSTEM=Darwin \
STRIP=i686-apple-darwin10-strip \
amalgamation=yes \
cairo=no \
+ errorcheck=no \
dist > $TMPFILE
DISTRIBUTION=`tail -n 1 $TMPFILE`
cp -f $DISTRIBUTION $DISTDIR
diff --git a/scripts/check-fstperquery.rb b/scripts/check-fstperquery.rb
new file mode 100755
index 0000000..e774edc
--- /dev/null
+++ b/scripts/check-fstperquery.rb
@@ -0,0 +1,55 @@
+#!/usr/bin/env ruby
+
+require_relative "SEmatch.rb"
+
+if ARGV.length != 2
+ STDERR.puts "Usage: #{$0} <file with at most one match per query> <file with all matches>"
+ exit 1
+end
+
+require "set"
+
+fstperquery_matches = Set.new()
+fstperquery_seqnum = Set.new()
+
+miter = SEmatch.new(ARGV[0])
+miter.each do |m|
+ fstperquery_matches.add(m)
+ qseqnum = m[:q_seqnum]
+ if fstperquery_seqnum.member?(qseqnum)
+ STDERR.puts "#{$0}: match for query #{qseqnum} already in #{ARGV[0]}"
+ exit 1
+ else
+ fstperquery_seqnum.add(qseqnum)
+ end
+end
+
+all_matches = Set.new()
+all_seqnum = Set.new()
+miter = SEmatch.new(ARGV[1])
+miter.each do |m|
+ all_matches.add(m)
+ puts "add #{m} with seqnum #{m[:q_seqnum]}"
+ all_seqnum.add(m[:q_seqnum])
+end
+
+if not fstperquery_matches.subset?(all_matches)
+ STDERR.puts "#{$0}: fstperquery is not subset of all"
+ all_matches.difference(fstperquery_matches).each do |elem|
+ STDERR.puts elem
+ end
+ exit 1
+end
+
+if all_seqnum != fstperquery_seqnum
+ STDERR.puts "#{$0}: #{ARGV[0]}.q_seqnum != #{ARGV[1]}.q_seqnum"
+ STDERR.puts "#{ARGV[0]}_seqnum="
+ fstperquery_seqnum.each do |elem|
+ STDERR.puts elem
+ end
+ STDERR.puts "#{ARGV[1]}.q_seqnum"
+ all_seqnum.each do |elem|
+ STDERR.puts elem
+ end
+ exit 1
+end
diff --git a/scripts/cleanpp.sh b/scripts/cleanpp.sh
index 0b6649f..1ee1755 100755
--- a/scripts/cleanpp.sh
+++ b/scripts/cleanpp.sh
@@ -37,3 +37,4 @@ rm -f *.sti
rm -f *.sti1
rm -f *.suf
rm -f *.tis
+rm -f *.kmer
diff --git a/scripts/cmp_db_query_exch.rb b/scripts/cmp_db_query_exch.rb
index 7319c8b..f66f9c9 100755
--- a/scripts/cmp_db_query_exch.rb
+++ b/scripts/cmp_db_query_exch.rb
@@ -20,7 +20,8 @@ def conv_to_i(v)
end
def convertfileinput(lines)
- return lines.map! {|l| l.split(/\s/).map {|v| conv_to_i(v)}}
+ return lines.select{|line| not line.match(/^#/)}.
+ map! {|l| l.split(/\s/).map {|v| conv_to_i(v)}}
end
def extract(val,idxlist)
@@ -49,7 +50,6 @@ end
lines0 = convertfileinput(openfile(filename0).readlines.uniq)
lines1 = convertfileinput(openfile(filename1).readlines.uniq)
-
lines0.sort! {|a,b| extract(a,[1,2,5,6,9]) <=> extract(b,[1,2,5,6,9])}
lines1.sort! {|a,b| extract(a,[5,6,1,2,9]) <=> extract(b,[5,6,1,2,9])}
idxmap = [4,5,6,3,0,1,2,7,8,9]
diff --git a/scripts/collect-mappings.rb b/scripts/collect-mappings.rb
deleted file mode 100755
index 108af5a..0000000
--- a/scripts/collect-mappings.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-
-# Print the sensitivity of given matchfile(s).
-# This script is used by sim-read-mapping.sh.
-
-require "set"
-
-if ARGV.length == 0
- STDERR.puts "Usage: #{$0} <numreads> <matchfile>"
- exit 1
-end
-
-numreads=ARGV[0].to_i
-queryseqnums = Set.new()
-
-ARGV.shift
-ARGV.each do |filename|
- File.open(filename).each_line do |line|
- if not line.match(/^#/)
- m = line.split(/\s/)
- queryseqnum = m[5].to_i
- queryseqnums.add(queryseqnum)
- end
- end
-end
-printf("%.2f\n",100.0 * queryseqnums.length.to_f/numreads.to_f)
diff --git a/scripts/convert2myersformat.rb b/scripts/convert2myersformat.rb
index be8abd8..63ed72f 100755
--- a/scripts/convert2myersformat.rb
+++ b/scripts/convert2myersformat.rb
@@ -1,79 +1,8 @@
#!/usr/bin/env ruby
-module Fasta
-class SequenceEntry
- def initialize(header)
- @header = header
- @comment = []
- @seqoflines = []
- end
- def add_comment_line(line)
- @comment.push(line)
- end
- def add_sequence_line(line)
- line.chomp!
- line.gsub!(/\s/,"")
- @seqoflines.push(line)
- end
- def write(rc, io, seq_line_width = 70)
- io.print @header
- @comment.each do |c|
- io.print c
- end
- s = @seqoflines.join("")
- if rc
- s = s.reverse
- s.tr!("ACGTacgt","TGCAtgca")
- end
- b = 0
- while b < s.size
- io.puts(s[b..b + seq_line_width - 1])
- b += seq_line_width
- end
- end
- def get_seqlength()
- lensum = 0
- @seqoflines.each do |line|
- lensum+=line.length
- end
- return lensum
- end
- def get_sequence()
- return @seqoflines.join("")
- end
- def get_header()
- return @header.chomp
- end
-end
-
-def Fasta.read_multi_file(fname) # function for module Fasta
- begin
- fl = File.open(fname,"r")
- rescue => err
- STDERR.print "Could not open file \"#{fname}\": #{err}\n"
- exit 1
- end
- curr_entry = nil
- fl.each_line do |l|
- if l[0] == ?>
- if curr_entry != nil
- yield curr_entry # deliver current entry to iterator
- end
- curr_entry = SequenceEntry.new(l) # create new sequence entry
- elsif l[0] == ?; # comment line
- curr_entry.add_comment_line(l)
- else
- curr_entry.add_sequence_line(l)
- end
- end
- if curr_entry then
- yield curr_entry
- end # for the last sequence entry
-end
-
-end # module Fasta
+require_relative "fasta"
-def print_sequence(seq, linelength, fp=STDOUT)
+def print_wildcard_replace(seq, linelength, fp=STDOUT)
pos = 0
while pos < seq.length do
fp.puts replacewildcards(seq[pos..pos+linelength-1])
@@ -99,7 +28,7 @@ if __FILE__ == $0
id = 0
Fasta.read_multi_file(filename) do |entry|
puts "#{convert2myersformat(entry.get_header(), entry.get_seqlength(), id)}"
- print_sequence(entry.get_sequence(),70)
+ print_wildcard_replace(entry.get_sequence(),70)
id += 1
end
end
diff --git a/scripts/cutsequences.rb b/scripts/cutsequences.rb
new file mode 100755
index 0000000..ca79875
--- /dev/null
+++ b/scripts/cutsequences.rb
@@ -0,0 +1,61 @@
+#!/usr/bin/env ruby
+
+require_relative "fasta"
+require_relative "print_sequence"
+
+def cutsinglesequence(sequence,header,maxnumber,minlength,
+ maxlength,linelength)
+ pos = 0
+ count = 0
+ remaininglength = sequence.length
+ while pos < sequence.length and remaininglength >= minlength do
+ puts ">#{header}"
+ print_sequence(sequence[pos..pos+maxlength-1],linelength)
+ pos += maxlength
+ remaininglength -= maxlength
+ count += 1
+ if count >= maxnumber
+ break
+ end
+ end
+ return count
+end
+
+def cutsequences(inputfile,maxnumber,minlength,maxlength)
+ count = 0
+ linelength = 70
+ count = 0
+ Fasta.read_multi_file(inputfile) do |curr_entry|
+ len = curr_entry.get_seqlength()
+ if len >= minlength
+ sequence = curr_entry.get_sequence()
+ header = curr_entry.get_header()
+ if len > maxlength
+ count += cutsinglesequence(sequence,header,maxnumber,minlength,
+ maxlength,linelength)
+ else
+ puts ">#{header}"
+ print_sequence(sequence,linelength)
+ end
+ if count >= maxnumber
+ break
+ end
+ end
+ end
+end
+
+if __FILE__ == "#{$0}"
+ if ARGV.length != 4
+ STDERR.puts "Usage: #{$0} <inputfile> <maxnumber|all> <minlength> <maxlength>"
+ exit 1
+ end
+ inputfile = ARGV[0]
+ if ARGV[1] == "all"
+ maxnumber = INT_MAX
+ else
+ maxnumber = ARGV[1].to_i
+ end
+ minlength = ARGV[2].to_i
+ maxlength = ARGV[3].to_i
+ cutsequences(inputfile,minlength,maxlength)
+end
diff --git a/scripts/enumkmers.rb b/scripts/enumkmers.rb
new file mode 100755
index 0000000..32b496c
--- /dev/null
+++ b/scripts/enumkmers.rb
@@ -0,0 +1,26 @@
+#!/usr/bin/env ruby
+
+require_relative "turnwheel.rb"
+
+def enum_kmers(k,alphabet)
+ asize = alphabet.length
+ outstring = Array.new(k)
+ turnwheels(Array.new(k) {asize}) do |wheel|
+ 0.upto(k-1).each do |i|
+ outstring[i] = alphabet[wheel[i]]
+ end
+ yield outstring.join
+ end
+end
+
+if ARGV.length != 2
+ STDERR.puts "Usage: #{$0} <k> <alphabet>"
+ exit 1
+end
+
+k = ARGV[0].to_i
+alphabet = ARGV[1].split(//)
+
+enum_kmers(k,alphabet) do |kmer|
+ puts kmer
+end
diff --git a/scripts/esq-in-bytes.sh b/scripts/esq-in-bytes.sh
index 47d25fd..2babd0d 100755
--- a/scripts/esq-in-bytes.sh
+++ b/scripts/esq-in-bytes.sh
@@ -1,16 +1,27 @@
#!/bin/sh
set -e -x
+
+seed_extend()
+{
+ env -i ${GTDIR}/bin/gt seed_extend -l 17 -maxmat -ii db -qii query -maxfreq 20 -kmerfile no $1
+}
+
# set GTDIR as path of genometools directory
-for filename in `${GTDIR}/scripts/findfasta.rb`
+for dbseq in `${GTDIR}/scripts/findfasta.rb`
do
- ${GTDIR}/bin/gt encseq encode -indexname sfx $filename
- # Now do something with the sequence
- for mode in greedy xdrop
+ ${GTDIR}/bin/gt encseq encode -indexname db $dbseq
+ for queryseq in `${GTDIR}/scripts/findfasta.rb`
do
- echo $filename
- ${GTDIR}/bin/gt -j 4 seed_extend -seqlength-display -parts 2 -extend${mode} -ii sfx -v -maxfreq 20 -seed-display -kmerfile no > sfx.matches
- ${GTDIR}/bin/gt dev show_seedext -seqlength-display -f sfx.matches -a -sort
+ if test $queryseq != $dbseq
+ then
+ ${GTDIR}/bin/gt encseq encode -indexname query $queryseq
+ for mode in greedy
+ do
+ echo $filename
+ seed_extend "-no-reverse -maxmat 2 -use-apos"
+ done
+ fi
done
done
diff --git a/scripts/estim-kmer-size.rb b/scripts/estim-kmer-size.rb
new file mode 100755
index 0000000..00f0e8f
--- /dev/null
+++ b/scripts/estim-kmer-size.rb
@@ -0,0 +1,25 @@
+#!/usr/bin/env ruby
+
+# According to Mash: fast genome and metagenome distance estimation using
+# MinHash, Genome Biol. 2016, page 9, the probability of a given k-mer
+# w appearing in random genome of size n is
+# $P(w\in X)=1 - (1 - \sigma^{-k})^{n}$, where $\sigma$ is the alphabet
+# size. The following function computes this value:
+
+def prob_kmer_appears(k,sigma,n)
+ return 1.0 - (1 - (1.0/(sigma.to_f ** k)))**n
+end
+
+# given a known genome size n and the desired probability q of observing a
+# random k-mer, kmer-size can be computed by
+# $\lceil \log_{\sigma}(\frac{n(1-q)}{q}\rceil$. this
+
+def kmer_size_for_prob(q,sigma,n)
+ return (Math.log(n.to_f*(1.0 - q.to_f)/q.to_f)/(Math.log sigma.to_f)).ceil
+end
+
+[0.1,0.05,0.01,0.001].each do |q|
+ [6,7,8,9].each do |exponent|
+ puts "#{q} #{exponent} #{kmer_size_for_prob(q,4,10**exponent)}"
+ end
+end
diff --git a/scripts/evalue-filter.rb b/scripts/evalue-filter.rb
new file mode 100755
index 0000000..4bbf68e
--- /dev/null
+++ b/scripts/evalue-filter.rb
@@ -0,0 +1,29 @@
+#!/usr/bin/env ruby
+
+if ARGV.length != 2
+ STDERR.puts "Usage: #{$0} <evalue-filter> <file with subset>"
+ exit 1
+end
+
+def openthefile(filename)
+ begin
+ fp = File.new(filename,"r")
+ rescue => err
+ STDERR.puts "#{$0}: cannot open #{filename}: #{err}"
+ exit 1
+ end
+end
+
+evalue_filter = ARGV[0].to_f
+fpstrong = openthefile(ARGV[1])
+
+fpstrong.each_line do |line|
+ if not line.match(/^#/)
+ a = line.split(/\s/)
+ evalue = a[a.length - 1].to_f
+ if evalue > evalue_filter
+ STDERR.puts "#{$0}: unexpected line: #{line.chomp}"
+ exit 1
+ end
+ end
+end
diff --git a/scripts/extract-seed.rb b/scripts/extract-seed.rb
new file mode 100755
index 0000000..dcb6303
--- /dev/null
+++ b/scripts/extract-seed.rb
@@ -0,0 +1,18 @@
+#!/usr/bin/env ruby
+
+if ARGV.length != 1
+ STDERR.puts "Usage: #{$0} <inputfile>"
+ exit 1
+end
+
+File.new(ARGV[0],"r").each_line do |line|
+ if not line.match(/^#/)
+ a = line.split(/\s/)
+ if a.length < 13
+ STDERR.puts "line #{line.chomp} contains #{a.length} < 13 columns"
+ exit 1
+ end
+ puts "# seed: #{a[11]} #{a[12]} #{a[10]}"
+ end
+ print line
+end
diff --git a/scripts/fasta.rb b/scripts/fasta.rb
new file mode 100644
index 0000000..5fc84df
--- /dev/null
+++ b/scripts/fasta.rb
@@ -0,0 +1,112 @@
+module Fasta
+
+require 'zlib'
+# require 'codon2aa.rb'
+
+class SequenceEntry
+ def initialize(headline)
+ h = headline.match(/^>(.*)\n/)
+ if h
+ @header = h[1]
+ else
+ STDERR.puts "#{$0}: illegal header #{header}"
+ exit 1
+ end
+ @comment = Array.new()
+ @seqoflines = Array.new()
+ end
+ def add_comment_line(line)
+ @comment.push(line)
+ end
+ def add_sequence_line(line)
+ @seqoflines.push(line.chomp.gsub(/\s/,""))
+ end
+ def set_header(s)
+ @header = s
+ end
+ def write(rc, io, seq_line_width = 70)
+ io.print ">#{@header}"
+ @comment.each do |c|
+ io.print c
+ end
+ s = @seqoflines.join("")
+ if rc
+ s = s.reverse
+ s.tr!("ACGTacgt","TGCAtgca")
+ end
+ b = 0
+ while b < s.size
+ io.puts(s[b..b + seq_line_width - 1])
+ b += seq_line_width
+ end
+ end
+ def get_seqlength()
+ lensum = 0
+ @seqoflines.each do |line|
+ lensum += line.length
+ end
+ return lensum
+ end
+ def get_sequence()
+ return @seqoflines.join("")
+ end
+ def get_header()
+ return @header
+ end
+end
+
+=begin
+ def write_open_reading_frame( offset, io, reverse=false )
+ s = @seqoflines.join("")
+ if reverse
+ s = s.reverse
+ end
+ aaSequence = ""
+ position = offset
+ while position+3 < s.length # enough bases for a codon
+ begin
+ codon = s[ position, 3 ]
+ aa = codon2aa_11( codon )
+ aaSequence += aa
+ rescue => text
+ io.puts text
+ return
+ end
+ position += 3
+ end
+ puts aaSequence
+ end
+=end
+
+def Fasta.read_multi_file(fname) # function for module Fasta
+ begin
+ if fname.match(/\.gz$/)
+ infp = Zlib::GzipReader.open(fname)
+ else
+ infp = File.open(fname,"r")
+ end
+ rescue => err
+ STDERR.print "Could not open file \"#{fname}\": #{err}\n"
+ exit 1
+ end
+ curr_entry = nil
+ infp.each_line do |line|
+ if line.match(/^>/)
+ if not curr_entry.nil?
+ yield curr_entry # deliver current entry to iterator
+ end
+ curr_entry = SequenceEntry.new(line) # create new sequence entry
+ elsif line.match(/^;/) # comment line
+ curr_entry.add_comment_line(line)
+ else
+ curr_entry.add_sequence_line(line)
+ end
+ end
+ if curr_entry.nil?
+ STDERR.puts "#{$0}: assertion in f. #{__FILE__}, l. #{__LINE__} failed"
+ end
+ yield curr_entry
+ infp.close
+end
+
+end # module Fasta
diff --git a/scripts/findfasta.rb b/scripts/findfasta.rb
index 9d7bde6..6112153 100755
--- a/scripts/findfasta.rb
+++ b/scripts/findfasta.rb
@@ -23,8 +23,15 @@ def listdirectory(directory)
end
end
-def listselected(dirname,excludelist)
- suffixes = ["fastq","fasta","fna","fa","fsa.gz","fsa","FASTA.gz","FASTA"]
+def listselected(dirname,excludelist,includefastq,includegzip)
+ suffixes = ["fasta","fna","fa","fsa","FASTA"]
+ if includefastq
+ suffixes.push("fastq")
+ end
+ if includegzip
+ suffixes.push("fsa.gz")
+ suffixes.push("FASTA.gz")
+ end
listdirectory(dirname) do |filename|
suffixes.each do |suffix|
if filename.match(/\.#{suffix}$/) and
@@ -39,6 +46,8 @@ def parseargs(argv)
options = OpenStruct.new
options.withgttestdata = true
options.excludelist = Array.new()
+ options.includefastq = true
+ options.includegzip = true
opts = OptionParser.new()
opts.on("-n","--no-gttestdata","exclude gttestdata") do |x|
options.withgttestdata = false
@@ -49,8 +58,17 @@ def parseargs(argv)
options.excludelist.push(ef)
end
end
+ opts.on("-q","--no-fastq",
+ "exclude files ending with .fastq") do
+ options.includefastq = false
+ end
+ opts.on("-g","--no-gzip",
+ "exclude files ending with .gz") do
+ options.includegzip = false
+ end
opts.on( '-h', '--help', 'Display this screen' ) do
puts "Usage: #{$0} [options]"
+ puts opts
exit 0
end
rest = opts.parse(argv)
@@ -77,7 +95,8 @@ testdata_exclude = ["solid_color_reads.fastq",
if ENV.has_key?("GTDIR")
testdata_dir = "#{ENV["GTDIR"]}/testdata"
- listselected(testdata_dir,testdata_exclude) do |filename|
+ listselected(testdata_dir,testdata_exclude,options.includefastq,
+ options.includegzip) do |filename|
puts filename
end
end
@@ -85,7 +104,8 @@ end
if options.withgttestdata
if ENV.has_key?("GTTESTDATA")
gttestdata_exclude = ["trembl-section.fsa.gz"]
- listselected(ENV["GTTESTDATA"],gttestdata_exclude) do |filename|
+ listselected(ENV["GTTESTDATA"],gttestdata_exclude,options.includefastq,
+ options.includegzip) do |filename|
puts filename
end
end
diff --git a/scripts/gen-display-struct.rb b/scripts/gen-display-struct.rb
new file mode 100755
index 0000000..0ecf47f
--- /dev/null
+++ b/scripts/gen-display-struct.rb
@@ -0,0 +1,226 @@
+#!/usr/bin/env ruby
+
+class String
+ def dot2us
+ return self.gsub(/\./,"_").gsub(/\s/,"")
+ end
+ def format_enum_value
+ return "Gt_" + self.dot2us.capitalize + "_display"
+ end
+end
+
+def keywords(display_options)
+ kws = Array.new()
+ idx = 0
+ max_display_flag_length = 0
+ display_options.each do |arg,helpline|
+ incolumn = if helpline.match(/^display /) then "true" else "false" end
+ kws.push([arg,idx,incolumn])
+ idx += 1
+ if max_display_flag_length < arg.length
+ max_display_flag_length = arg.length
+ end
+ end
+ return kws, max_display_flag_length
+end
+
+def indent(longest,arg)
+ return " " * (longest - arg.length + 1)
+end
+
+def format(longest,helpline)
+ len = longest + 3
+ out = Array.new()
+ helpline.split(/\s/).each do |w|
+ if len + w.length <= 58
+ out.push(w)
+ len += w.length
+ else
+ out.push("\\n\"\n" + " " * 9 + "\"" + " " * (longest+2) + w)
+ len = longest + 1 + w.length
+ end
+ end
+ return out.join(" ").gsub(/ \\n/,"\\n")
+end
+
+TRACE_DELTA = 50
+ALIGNMENT_WIDTH = 60
+
+# The following array defines the keywords which can be used as arguments
+# to option -outfmt, for each Keyword, a helpline is added.
+
+display_options = [
+ ["alignment", "show alignment (possibly followed by =<number> to " +
+ "specify width of alignment columns, default is " +
+ "#{$ALIGNMENT_WDITH})"],
+ ["seed_in_algn","mark the seed in alignment"],
+ ["polinfo", "add polishing information for shown alignment"],
+ ["seed", "abbreviation for seed.len seed.s seed.q"],
+ ["failed_seed", "show the coordinates of a seed extension, which does not " +
+ "satisfy the filter conditions"],
+ ["fstperquery", "output only the first found match per query"],
+ ["tabsep", "separate columns by tabulator, instead of space as default"],
+ ["blast", "output matches in blast format 7 (tabular with comment " +
+ "lines; instead of gap opens, indels are displayed)"],
+ ["gfa2", "output matches in gfa2 format"],
+ ["custom", "output matches in custom format, i.e. no columns are " +
+ "pre-defined; all columns have to be specified by the user"],
+ ["cigar", "display cigar string representing alignment " +
+ "(no distinction between match and mismatch)"],
+ ["cigarX", "display cigar string representing alignment " +
+ "(distinction between match (=) and mismatch (X))"],
+ ["trace", "display trace, i.e. a compact representation of an " +
+ "alignment (possibly followed by =<delta>) to specify the " +
+ "delta-value; default value of delta is #{TRACE_DELTA}"],
+ ["dtrace", "display trace as differences; like trace, but instead " +
+ "of an absolute value x, report the difference " +
+ "delta-x. This leads to smaller numbers and thus " +
+ "a more compact representation"],
+ ["s.len", "display length of match on subject sequence"],
+ ["s.seqnum", "display sequence number of subject sequence"],
+ ["subject id", "display sequence description of subject sequence"],
+ ["s.start", "display start position of match on subject sequence"],
+ ["s.end", "display end position of match on subject sequence"],
+ ["strand", "display strand of match using symbols F (forward) and " +
+ "P (reverse complement)"],
+ ["q.len", "display length of match on query sequence"],
+ ["q.seqnum", "display sequence number of query sequence"],
+ ["query id", "display sequence description of query sequence"],
+ ["q.start", "display start position of match on query sequence"],
+ ["q.end", "display end position of match on query sequence"],
+ ["alignment length", "display length of alignment"],
+ ["mismatches", "display number of mismatches in alignment"],
+ ["indels", "display number of indels in alignment"],
+ ["gap opens", "display number of indels in alignment"],
+ ["score", "display score of match"],
+ ["editdist", "display unit edit distance"],
+ ["identity", "display percent identity of match"],
+ ["seed.len", "display length seed of the match"],
+ ["seed.s", "display start position of seed in subject"],
+ ["seed.q", "display start position of seed in query"],
+ ["s.seqlen", "display length of subject sequence in which match occurs"],
+ ["q.seqlen", "display length of query sequence in which match occurs"],
+ ["evalue", "display evalue"],
+ ["bit score", "display bit score"]
+]
+
+if display_options.length > 64
+ STDERR.puts "#{$0}: maximum number of display options is 64"
+ exit 1
+end
+
+display_options.each do |value|
+ if value.length != 2
+ STDERR.puts "#{$0}: #{value} is incorrect"
+ exit 1
+ end
+end
+
+kws, max_display_flag_length = keywords(display_options)
+
+outfilename = "src/match/se-display.inc"
+begin
+ fpout = File.new(outfilename,"w")
+rescue => err
+ STDERR.puts "#{$0}: cannot create file #{outfilename}"
+ exit 1
+end
+
+fpout.puts "/* This file was generated by #{$0}, do NOT edit. */"
+fpout.puts <<'EOF'
+static GtSEdisplayStruct gt_display_arguments_table[] =
+{
+EOF
+
+kws_sorted = kws.sort {|a,b| a[0] <=> b[0]}
+flag2index = Array.new(kws_sorted.length)
+kws_sorted.each_with_index do |value,idx|
+ flag2index[value[1]] = idx
+end
+
+fpout.puts "/* incolumn is true iff the helptext of the argument begins"
+fpout.puts " with the keyword \"display\" */"
+
+fpout.puts kws_sorted.
+ map {|s,idx,incolumn| " {\"#{s}\", #{s.format_enum_value}, #{incolumn}}"}.join(",\n")
+
+fpout.puts <<EOF
+};
+
+static unsigned int gt_display_flag2index[] = {
+EOF
+
+fpout.puts " " + flag2index.join(",\n ")
+
+fpout.puts <<EOF
+};
+
+const char *gt_querymatch_display_help(void)
+{
+ return "specify what information about the matches to display\\n\"
+EOF
+
+longest = 0
+display_options.each do |arg,helpline|
+ if longest < arg.length
+ longest = arg.length
+ end
+end
+
+display_options.each do |arg,helpline|
+ fpout.puts " " * 9 + "\"#{arg}:#{indent(longest,arg)}" +
+ "#{format(longest,helpline)}\\n\""
+end
+fpout.puts <<'EOF'
+;
+}
+EOF
+
+fpout.puts "#define GT_SE_POSSIBLE_DISPLAY_ARGS \"" +
+ display_options.map{|arg,helpline| arg + "\""}.
+ join("\\\n \", ")
+
+display_options.each do |arg,helpline|
+ if arg == "alignment"
+ next
+ end
+ fpout.puts <<EOF
+
+bool gt_querymatch_#{arg.dot2us}_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,#{arg.format_enum_value});
+}
+EOF
+end
+
+fpout.close_write
+
+outfilename = "src/match/se-display-fwd.inc"
+begin
+ fpout = File.new(outfilename,"w")
+rescue => err
+ STDERR.puts "#{$0}: cannot create file #{outfilename}"
+ exit 1
+end
+
+fpout.puts "/* This file was generated by #{$0}, do NOT edit. */"
+
+fpout.puts "#define GT_DISPLAY_LARGEST_FLAG #{kws.length-1}"
+fpout.puts "#define GT_MAX_DISPLAY_FLAG_LENGTH #{max_display_flag_length}"
+fpout.puts "#define GT_SEED_EXTEND_DEFAULT_ALIGNMENT_WIDTH #{ALIGNMENT_WIDTH}"
+fpout.puts "#define GT_SEED_EXTEND_DEFAULT_TRACE_DELTA #{TRACE_DELTA}"
+
+fpout.puts "typedef enum\n{"
+
+fpout.puts kws.map{|s,idx,incolumn| " #{s.format_enum_value} /* #{idx} */"}.join(",\n")
+
+fpout.puts "} GtSeedExtendDisplay_enum;"
+
+display_options.each do |arg,helpline|
+ if arg != "alignment"
+ fpout.puts <<EOF
+bool gt_querymatch_#{arg.dot2us}_display(const GtSeedExtendDisplayFlag *);
+EOF
+ end
+end
diff --git a/scripts/gen-intsets.rb b/scripts/gen-intsets.rb
index 32b5272..57c7e16 100755
--- a/scripts/gen-intsets.rb
+++ b/scripts/gen-intsets.rb
@@ -522,6 +522,16 @@ const GtIntsetClass* gt_intset_<%=bits%>_class(void)
return this_c;
}
+#define GT_INTSET_TEST_<%=bits%>_BINSEARCH(IDX) \\
+gt_ensure(gt_intset_<%=bits%>_get_test(is, IDX) == arr[IDX]); \\
+gt_ensure(gt_intset_<%=bits%>_get(is, IDX) == arr[IDX]); \\
+gt_ensure( \\
+ gt_intset_<%=bits%>_get_idx_smallest_geq_test(is, arr[IDX] + 1) == \\
+ IDX + 1); \\
+gt_ensure( \\
+ gt_intset_<%=bits%>_get_idx_smallest_geq(is, arr[IDX] + 1) == \\
+ IDX + 1)
+
int gt_intset_<%=bits%>_unit_test(GtError *err)
{
int had_err = 0;
@@ -540,7 +550,7 @@ int gt_intset_<%=bits%>_unit_test(GtError *err)
}
is_size = \
- gt_intset_<%=bits%>_size_of_rep(arr[num_of_elems - 1], num_of_elems);
+gt_intset_<%=bits%>_size_of_rep(arr[num_of_elems - 1], num_of_elems);
if (!had_err) {
if (is_size < (size_t) UINT_MAX) {
@@ -558,23 +568,16 @@ int gt_intset_<%=bits%>_unit_test(GtError *err)
gt_ensure(gt_intset_<%=bits%>_elems_is_valid(is));
gt_ensure(gt_intset_<%=bits%>_secstart_is_valid(is));
- for (idx = 0; !had_err && idx < num_of_elems; idx++) {
- if (arr[idx] != 0 && arr[idx - 1] != (arr[idx] - 1)) {
- gt_ensure(
- gt_intset_<%=bits%>_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
- idx);
- gt_ensure(
- gt_intset_<%=bits%>_get_idx_smallest_geq(is, arr[idx] - 1) ==
- idx);
- }
- gt_ensure(gt_intset_<%=bits%>_get_test(is, idx) == arr[idx]);
- gt_ensure(gt_intset_<%=bits%>_get(is, idx) == arr[idx]);
+ GT_INTSET_TEST_<%=bits%>_BINSEARCH(0);
+ for (idx = 1; !had_err && idx < num_of_elems; idx++) {
+ GtUword to_find = (arr[idx - 1] == (arr[idx] - 1)) ? idx - 1 : idx;
gt_ensure(
- gt_intset_<%=bits%>_get_idx_smallest_geq_test(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_<%=bits%>_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
+ to_find);
gt_ensure(
- gt_intset_<%=bits%>_get_idx_smallest_geq(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_<%=bits%>_get_idx_smallest_geq(is, arr[idx] - 1) ==
+ to_find);
+ GT_INTSET_TEST_<%=bits%>_BINSEARCH(idx);
}
if (!had_err)
had_err = gt_intset_unit_test_notinset(is, 0, arr[0] - 1, err);
diff --git a/scripts/gen-radixsort-ip.rb b/scripts/gen-radixsort-ip.rb
index 0759e1b..2e801a8 100755
--- a/scripts/gen-radixsort-ip.rb
+++ b/scripts/gen-radixsort-ip.rb
@@ -13,16 +13,23 @@ def parseargs(argv)
options.typename = :ulong
ulongpairset = false
uint64keypairset = false
+ flbaset = false
opts = OptionParser.new
opts.on("--ulongpair",
"generate code sorting key/value pairs of ulongs") do |x|
ulongpairset = true
options.typename = :ulongkeyvaluepair
end
- opts.on("--uint64keypair","generate code sorting pairs of uint64_t keys") do |x|
+ opts.on("--uint64keypair",
+ "generate code sorting pairs of uint64_t keys") do |x|
uint64keypairset = true
options.typename = :uint64keypair
end
+ opts.on("--flba",
+ "generate code sorting byte arrays of fixed length") do |x|
+ flbaset = true
+ options.typename = :flba
+ end
rest = opts.parse(argv)
if not rest.empty?
usage(opts,"superfluous arguments")
@@ -31,32 +38,184 @@ def parseargs(argv)
STDERR.puts "#{$0}: cannot combine option --ulongpair and --uint64keypair"
exit 1
end
+ if ulongpairset and flbaset
+ STDERR.puts "#{$0}: cannot combine option --ulongpair and --flba"
+ exit 1
+ end
+ if uint64keypairset and flbaset
+ STDERR.puts "#{$0}: cannot combine option --uint64keypair and --flba"
+ exit 1
+ end
return options
end
-def makekey(options)
+def makekeyname(options)
if options.typename == :ulong
return "ulong"
elsif options.typename == :ulongkeyvaluepair
return "ulongpair"
- else
+ elsif options.typename == :uint64keypair
return "uint64keypair"
+ else
+ return "flba"
end
end
-def maketype(options)
+def makekeyptr(options)
+ return makekeyname(options) + "ptr"
+end
+
+def makebasetype(options)
if options.typename == :ulong
return "GtUword"
elsif options.typename == :ulongkeyvaluepair
return "GtUwordPair"
- else
+ elsif options.typename == :uint64keypair
return "Gtuint64keyPair"
+ else
+ return "uint8_t"
+ end
+end
+
+def makevaluetype(options)
+ if options.typename == :flba
+ return "const " + makebasetype(options) + "*"
+ else
+ return makebasetype(options)
+ end
+end
+
+class String
+ def del_us
+ self.gsub!(/^_/,"")
+ end
+ def del_us_all
+ self.gsub!(/_/,"")
+ end
+end
+
+def declare_tmpvar(options,var)
+ if options.typename == :flba
+ return "/* no decl. */"
+ else
+ return makebasetype(options) + " #{var};"
+ end
+end
+
+def increment(options,var)
+ if options.typename == :flba
+ return "#{var} += rbuf->unitsize"
+ else
+ return "#{var}++"
end
end
-def derefptr(ptr,options,comp="a")
+def tmpvarexpr(options,var)
+ if options.typename == :flba
+ return "rbuf->#{var}_ptr"
+ else
+ return "#{var}"
+ end
+end
+
+def offset(options,expr)
+ if options.typename == :flba
+ return "#{expr} * rbuf->unitsize"
+ else
+ return expr
+ end
+end
+
+def copy_ptr_ptr(options,destptr,sourceptr)
+ if options.typename == :flba
+ return "memcpy(#{destptr},#{sourceptr},rbuf->unitsize)"
+ else
+ return "*#{destptr} = *#{sourceptr}"
+ end
+end
+
+def copy_index_expr(options,arr,idx,expr)
+ if options.typename == :flba
+ if expr.match(/^_/)
+ expr = "rbuf->#{expr.del_us}_ptr"
+ end
+ return "memcpy(#{arr} + (#{idx}) * rbuf->unitsize,\n#{expr},rbuf->unitsize)"
+ else
+ expr.del_us
+ if "#{arr}[#{idx}]".length > 60
+ return "#{arr}[#{idx}]=\n#{expr}"
+ else
+ return "#{arr}[#{idx}] = #{expr}"
+ end
+ end
+end
+
+def copy_var_index(options,var,arr,idx)
+ if options.typename == :flba
+ if var.match(/^_/)
+ var = "rbuf->#{var.del_us}_ptr"
+ end
+ return "memcpy(#{var},#{arr} + (#{idx}) * rbuf->unitsize,\nrbuf->unitsize)"
+ else
+ var.del_us
+ return "#{var} = #{arr}[#{idx}]"
+ end
+end
+
+def copy_var_expr(options,var,expr)
+ if options.typename == :flba
+ if var.match(/^_/)
+ var = "rbuf->#{var.del_us}_ptr"
+ end
+ if expr.match(/^_/)
+ expr = "rbuf->#{expr.del_us}_ptr"
+ end
+ return "memcpy(#{var},#{expr},\nrbuf->unitsize)"
+ else
+ var.del_us
+ expr.del_us
+ return "#{var} = #{expr}"
+ end
+end
+
+def copy_var_ptr(options,var,ptr)
+ if options.typename == :flba
+ return copy_var_expr(options,var,ptr)
+ else
+ var.del_us
+ return "#{var} = *#{ptr}"
+ end
+end
+
+def copy_ptr_expr(options,ptr,expr)
+ if options.typename == :flba
+ return copy_var_expr(options,ptr,expr)
+ else
+ expr.del_us
+ return "*#{ptr} = #{expr}"
+ end
+end
+
+def shiftnext(options)
+ if options.typename == :flba
+ return "shift+1"
+ else
+ return "shift - CHAR_BIT"
+ end
+end
+
+def recursion_continue(options)
+ if options.typename == :flba
+ return "currentstackelem.shift < rbuf->unitsize-1"
+ else
+ return "currentstackelem.shift > 0"
+ end
+end
+
+def derefptr(options,ptr,comp="a")
if m = ptr.match(/^&(\w+)/)
var = m[1]
+ var.del_us
else
var = ptr
end
@@ -72,90 +231,127 @@ def derefptr(ptr,options,comp="a")
else
return "#{var}.#{comp}"
end
- else
+ elsif options.typename == :uint64keypair
if var == ptr
return "#{var}->uint64_#{comp}"
else
return "#{var}.uint64_#{comp}"
end
+ else
+ return ""
end
end
-def radixkey(var,options)
+def radixkey(options,var)
if options.typename == :ulong or options.typename == :ulongkeyvaluepair
- return "GT_RADIX_KEY(UINT8_MAX,rightshift,#{derefptr(var,options)})"
- else
+ return "GT_RADIX_KEY(UINT8_MAX,rightshift,#{derefptr(options,var)})"
+ elsif options.typename == :uint64keypair
return "(rightshift > (sizeof (GtUword) - 1) * CHAR_BIT) ?\n" +
"GT_RADIX_KEY(UINT8_MAX,rightshift - sizeof (GtUword) * CHAR_BIT,\n" +
- "#{derefptr(var,options)}) :\n" +
- "GT_RADIX_KEY(UINT8_MAX,rightshift,#{derefptr(var,options,"b")})"
+ "#{derefptr(options,var)}) :\n" +
+ "GT_RADIX_KEY(UINT8_MAX,rightshift,#{derefptr(options,var,"b")})"
+ else
+ if m = var.match(/^&_(\w+)/)
+ var = "rbuf->#{m[1]}_ptr"
+ end
+ return "#{var}[rightshift]"
end
end
-def compare_smaller(ptr1,ptr2,options)
+def compare_smaller(options,ptr1,ptr2)
if options.typename == :ulong or options.typename == :ulongkeyvaluepair
- return "#{derefptr(ptr1,options)} < #{derefptr(ptr2,options)}"
+ return "#{derefptr(options,ptr1)} < #{derefptr(options,ptr2)}"
+ elsif options.typename == :uint64keypair
+ ptr1.del_us_all
+ ptr2.del_us_all
+ return "gt_radixsort_uint64keypair_smaller(#{ptr1},#{ptr2})"
else
- return "gt_radixsort_compare_smaller(#{ptr1},#{ptr2})"
+ if m = ptr1.match(/^&_(\w+)/)
+ ptr1 = "rbuf->#{m[1]}_ptr"
+ end
+ return "memcmp(#{ptr1},#{ptr2},rbuf->unitsize) < 0"
end
end
options = parseargs(ARGV)
+if options.typename == :flba
+print <<END_OF_FILE
+static #{makebasetype(options)} *gt_radixsort_#{makekeyname(options)}_bin_get(
+ const GtRadixbuffer *rbuf,
+ GtUword binnum)
+{
+ return rbuf->values.#{makekeyptr(options)} +
+ ((binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]) * rbuf->unitsize;
+}
+END_OF_FILE
+else
print <<END_OF_FILE
-static #{maketype(options)} gt_radixsort_#{makekey(options)}_bin_get(
+static #{makebasetype(options)} gt_radixsort_#{makekeyname(options)}_bin_get(
const GtRadixbuffer *rbuf,
GtUword binnum)
{
- return rbuf->values.#{makekey(options)}ptr[(binnum << rbuf->log_bufsize) +
- (GtUword) rbuf->nextidx[binnum]];
+ return rbuf->values.#{makekeyptr(options)}[
+ (binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]];
}
+END_OF_FILE
+end
-static void gt_radixsort_#{makekey(options)}_bin_update(
- #{maketype(options)} *target,
+print <<END_OF_FILE
+static inline void gt_radixsort_#{makekeyname(options)}_bin_update(
+ #{makebasetype(options)} *source,
GtRadixbuffer *rbuf,
GtUword binnum,
- #{maketype(options)} value)
+ #{makevaluetype(options)} value)
{
GtUword binoffset = binnum << rbuf->log_bufsize;
- rbuf->values.#{makekey(options)}ptr[binoffset +
- (GtUword) rbuf->nextidx[binnum]] = value;
+ #{copy_index_expr(options,"rbuf->values.#{makekeyptr(options)}\n",
+ "binoffset + (GtUword) rbuf->nextidx[binnum]",
+ "value")};
if ((GtUword) rbuf->nextidx[binnum] < rbuf->buf_size - 1)
{
rbuf->nextidx[binnum]++;
} else
{
GtUword j;
- #{maketype(options)} *wtargetptr, *rtargetptr, *rend, *valptr;
-
- wtargetptr = target + rbuf->endofbin[binnum] - (rbuf->buf_size - 1);
- rtargetptr = wtargetptr + rbuf->buf_size;
- rend = target + rbuf->startofbin[binnum+1];
- valptr = rbuf->values.#{makekey(options)}ptr + binoffset;
+ #{makebasetype(options)} *wsourceptr, *rsourceptr, *rend, *valptr;
+
+ wsourceptr = source +
+ #{offset(options,"(rbuf->endofbin[binnum] - "+
+ "(rbuf->buf_size - 1))\n")};
+ rsourceptr = wsourceptr + #{offset(options,"rbuf->buf_size")};
+ rend = source + #{offset(options,"rbuf->startofbin[binnum+1]")};
+ valptr = rbuf->values.#{makekeyptr(options)} +
+ #{offset(options,"binoffset")};
for (j=0; j<rbuf->buf_size; j++)
{
- *wtargetptr++ = *valptr;
- if (rtargetptr < rend)
+ #{copy_ptr_ptr(options,"wsourceptr","valptr")};
+ #{increment(options,"wsourceptr")};
+ if (rsourceptr < rend)
{
- *valptr = *rtargetptr++;
+ #{copy_ptr_ptr(options,"valptr","rsourceptr")};
+ #{increment(options,"rsourceptr")};
}
- valptr++;
+ #{increment(options,"valptr")};
}
rbuf->nextidx[binnum] = 0;
}
rbuf->endofbin[binnum]++;
}
-static void gt_radixsort_#{makekey(options)}_cached_shuffle(GtRadixbuffer *rbuf,
- #{maketype(options)} *source,
+static void gt_radixsort_#{makekeyname(options)}_cached_shuffle(GtRadixbuffer *rbuf,
+ #{makebasetype(options)} *source,
GtCountbasetype len,
size_t rightshift)
{
GtUword binoffset, binnum, bufoffset,
nextbin, firstnonemptybin = UINT8_MAX+1;
- GtCountbasetype *count, previouscount, current;
- #{maketype(options)} *sp, *spend = source + len;
+ GtCountbasetype *count, previouscount, currentidx;
+ #{makebasetype(options)} *sourceptr,
+ *sourceend = source + #{offset(options,"len")};
rbuf->countcached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -164,24 +360,25 @@ static void gt_radixsort_#{makekey(options)}_cached_shuffle(GtRadixbuffer *rbuf,
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; #{increment(options,"sourceptr")})
{
- count[#{radixkey("sp",options)}]++;
+ count[#{radixkey(options,"sourceptr")}]++;
}
for (bufoffset = 0, binoffset = 0, binnum = 0; binnum <= UINT8_MAX;
bufoffset += rbuf->buf_size, binoffset += count[binnum], binnum++)
{
- GtUword j;
- const GtUword end = MIN(rbuf->buf_size,(GtUword) count[binnum]);
+ const GtUword elems2copy = MIN(rbuf->buf_size,(GtUword) count[binnum]);
- if (firstnonemptybin == UINT8_MAX+1 && end > 0)
+ if (elems2copy > 0)
{
- firstnonemptybin = binnum;
- }
- for (j=0; j<end; j++)
- {
- rbuf->values.#{makekey(options)}ptr[bufoffset + j] =
- source[binoffset + j];
+ if (firstnonemptybin == UINT8_MAX+1)
+ {
+ firstnonemptybin = binnum;
+ }
+ memcpy(rbuf->values.
+ #{makekeyptr(options)} + #{offset(options,"bufoffset")},
+ source + #{offset(options,"binoffset")},
+ #{offset(options,"(sizeof *source * elems2copy)")});
}
}
previouscount = count[0];
@@ -189,35 +386,38 @@ static void gt_radixsort_#{makekey(options)}_cached_shuffle(GtRadixbuffer *rbuf,
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0, binnum = firstnonemptybin;
- current < len; binnum = nextbin - 1)
+ for (currentidx = 0, binnum = firstnonemptybin;
+ currentidx < len; binnum = nextbin - 1)
{
- #{maketype(options)} currentvalue =
- gt_radixsort_#{makekey(options)}_bin_get(rbuf,binnum);
+ #{declare_tmpvar(options,"tmpvalue")}
+ #{copy_var_expr(options,"_tmpvalue","gt_radixsort_#{makekeyname(options)}_bin_get(rbuf,binnum)")};
while (true)
{
- binnum = #{radixkey("¤tvalue",options)};
- if (current != rbuf->endofbin[binnum])
+ binnum = #{radixkey(options,"&_tmpvalue")};
+ if (currentidx != rbuf->endofbin[binnum])
{
- #{maketype(options)} tmp = currentvalue;
- currentvalue = gt_radixsort_#{makekey(options)}_bin_get(rbuf,binnum);
- gt_radixsort_#{makekey(options)}_bin_update(source,rbuf,binnum,tmp);
+ #{declare_tmpvar(options,"tmpswap")}
+ #{copy_var_expr(options,"_tmpswap","_tmpvalue")};
+ #{copy_var_expr(options,"_tmpvalue","gt_radixsort_#{makekeyname(options)}_bin_get(rbuf,binnum)")};
+ gt_radixsort_#{makekeyname(options)}_bin_update
+ (source,rbuf,binnum,
+ #{tmpvarexpr(options,"tmpswap")});
} else
{
break;
}
}
- gt_radixsort_#{makekey(options)}_bin_update(source,rbuf,binnum,
- currentvalue);
- current++;
+ gt_radixsort_#{makekeyname(options)}_bin_update(source,rbuf,binnum,
+ #{tmpvarexpr(options,"tmpvalue")});
+ currentidx++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -227,9 +427,9 @@ static void gt_radixsort_#{makekey(options)}_cached_shuffle(GtRadixbuffer *rbuf,
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
for (binnum = 0; binnum <= UINT8_MAX; binnum++)
@@ -238,29 +438,27 @@ static void gt_radixsort_#{makekey(options)}_cached_shuffle(GtRadixbuffer *rbuf,
if (bufleft > 0)
{
- GtUword j;
- #{maketype(options)} *targetptr, *valptr;
+ #{makebasetype(options)} *sourceptr, *valptr;
- valptr =
- rbuf->values.#{makekey(options)}ptr + (binnum << rbuf->log_bufsize);
- targetptr = source + rbuf->startofbin[binnum+1] - bufleft;
- for (j=0; j < bufleft; j++)
- {
- targetptr[j] = valptr[j];
- }
+ valptr = rbuf->values.#{makekeyptr(options)} +
+ #{offset(options,"(binnum << rbuf->log_bufsize)")};
+ sourceptr = source +
+ #{offset(options,"(rbuf->startofbin[binnum+1] - bufleft)")};
+ memcpy(sourceptr,valptr,#{offset(options,"(sizeof *sourceptr * bufleft)")});
}
}
}
-static void gt_radixsort_#{makekey(options)}_uncached_shuffle(
+static void gt_radixsort_#{makekeyname(options)}_uncached_shuffle(
GtRadixbuffer *rbuf,
- #{maketype(options)} *source,
+ #{makebasetype(options)} *source,
GtCountbasetype len,
size_t rightshift)
{
GtUword binnum, nextbin;
- #{maketype(options)} *sp, *spend = source + len;
- GtCountbasetype current, previouscount, *count;
+ GtCountbasetype currentidx, previouscount, *count;
+ #{makebasetype(options)} *sourceptr,
+ *sourceend = source + #{offset(options,"len")};
rbuf->countuncached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -269,45 +467,49 @@ static void gt_radixsort_#{makekey(options)}_uncached_shuffle(
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; #{increment(options,"sourceptr")})
{
- count[#{radixkey("sp",options)}]++;
+ count[#{radixkey(options,"sourceptr")}]++;
}
previouscount = count[0];
rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0; current < len; /* Nothing */)
+ for (currentidx = 0; currentidx < len; /* Nothing */)
{
- #{maketype(options)} currentvalue = source[current];
GtCountbasetype *binptr;
+ #{declare_tmpvar(options,"tmpvalue")}
+ #{copy_var_index(options,"_tmpvalue","source","currentidx")};
while (true)
{
binptr = rbuf->endofbin +
- (#{radixkey("¤tvalue",options)});
- if (current != *binptr)
+ (#{radixkey(options,"&_tmpvalue")});
+ binnum = *binptr;
+ if (currentidx != binnum)
{
- #{maketype(options)} tmp = currentvalue;
- currentvalue = source[*binptr];
- source[*binptr] = tmp;
+ #{declare_tmpvar(options,"tmpswap")}
+ #{copy_var_expr(options,"_tmpswap","_tmpvalue")};
+ #{copy_var_index(options,"_tmpvalue","source","binnum")};
+ #{copy_index_expr(options,"source","binnum","_tmpswap")};
(*binptr)++;
} else
{
break;
}
}
- source[current++] = currentvalue;
+ #{copy_index_expr(options,"source","binnum","_tmpvalue")};
+ currentidx++;
(*binptr)++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -317,57 +519,68 @@ static void gt_radixsort_#{makekey(options)}_uncached_shuffle(
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
}
-static void gt_radixsort_#{makekey(options)}_shuffle(GtRadixbuffer *rbuf,
- #{maketype(options)} *source,
+static void gt_radixsort_#{makekeyname(options)}_shuffle(GtRadixbuffer *rbuf,
+ #{makebasetype(options)} *source,
GtCountbasetype len,
size_t rightshift)
{
gt_assert(rbuf != NULL);
if ((GtUword) len > rbuf->cachesize)
{
- gt_radixsort_#{makekey(options)}_cached_shuffle(rbuf,source,len,rightshift);
+ gt_radixsort_#{makekeyname(options)}_cached_shuffle(rbuf,source,len,rightshift);
} else
{
- gt_radixsort_#{makekey(options)}_uncached_shuffle(rbuf,source,len,
+ gt_radixsort_#{makekeyname(options)}_uncached_shuffle(rbuf,source,len,
rightshift);
}
}
static void
-gt_radixsort_#{makekey(options)}_inplace_insertionsort(#{maketype(options)} *a,
- GtCountbasetype a_size)
+gt_radixsort_#{makekeyname(options)}_inplace_insertionsort(
+ GT_UNUSED GtRadixbuffer *rbuf,
+ #{makebasetype(options)} *arr,
+ GtCountbasetype a_size)
{
- #{maketype(options)} *optr, *iptr, *end = a + a_size;
+ #{makebasetype(options)} *optr,
+ *end = arr + #{offset(options,"a_size")};
- for (optr = a + 1; optr < end; optr++)
+ for (optr = arr + #{offset(options,"1")}; optr < end;
+ #{increment(options,"optr")})
{
- if (#{compare_smaller("optr","(optr-1)",options)})
+ #{makebasetype(options)} *oprevious = optr - #{offset(options,"1")};
+
+ if (#{compare_smaller(options,"optr","oprevious")})
{
- #{maketype(options)} currentElement = *optr;
+ #{makebasetype(options)} *iptr;
+ #{declare_tmpvar(options,"tmpvalue")}
+ #{copy_var_ptr(options,"_tmpvalue","optr")};
- *optr = *(optr-1);
- for (iptr = optr-1;
- iptr > a && #{compare_smaller("¤tElement","(iptr-1)",options)};
- iptr--)
+ #{copy_ptr_ptr(options,"optr","oprevious")};
+ for (iptr = oprevious; iptr > arr; iptr -= #{offset(options,"1")})
{
- *iptr = *(iptr-1);
+ #{makebasetype(options)} *iprevious = iptr - #{offset(options,"1")};
+ if (!(#{compare_smaller(options,"&_tmpvalue","iprevious")}))
+ {
+ break;
+ }
+ #{copy_ptr_ptr(options,"iptr","iprevious")};
}
- *iptr = currentElement;
+ #{copy_ptr_expr(options,"iptr","_tmpvalue")};
}
}
}
-static void gt_radixsort_#{makekey(options)}_process_bin(
+static void gt_radixsort_#{makekeyname(options)}_process_bin(
GtStackGtRadixsort_stackelem *stack,
GtRadixbuffer *rbuf,
- #{maketype(options)} *source,
+ #{makebasetype(options)} *source,
size_t shift)
{
GtUword binnum;
@@ -378,29 +591,32 @@ static void gt_radixsort_#{makekey(options)}_process_bin(
if (width >= (GtCountbasetype) 2)
{
- #{maketype(options)} *ptr = source + rbuf->startofbin[binnum];
+ #{makebasetype(options)} *ptr
+ = source + #{offset(options,"rbuf->startofbin[binnum]")};
if (width == (GtCountbasetype) 2)
{
- if (#{compare_smaller("(ptr+1)","ptr",options)})
+ #{makebasetype(options)} *nextptr = ptr + #{offset(options,1)};
+ if (#{compare_smaller(options,"nextptr","ptr")})
{
- #{maketype(options)} tmp = *ptr;
- *ptr = *(ptr+1);
- *(ptr+1) = tmp;
+ #{declare_tmpvar(options,"tmpswap")}
+ #{copy_var_ptr(options,"_tmpswap","ptr")};
+ #{copy_ptr_ptr(options,"ptr","nextptr")};
+ #{copy_ptr_expr(options,"nextptr","_tmpswap")};
}
} else
{
if (width <= (GtCountbasetype) 32)
{
rbuf->countinsertionsort++;
- gt_radixsort_#{makekey(options)}_inplace_insertionsort(ptr,width);
+ gt_radixsort_#{makekeyname(options)}_inplace_insertionsort(rbuf,ptr,width);
} else
{
GtRadixsort_stackelem tmpstackelem;
- tmpstackelem.left.#{makekey(options)}ptr = ptr;
+ tmpstackelem.left.#{makekeyptr(options)} = ptr;
tmpstackelem.len = width;
- tmpstackelem.shift = shift - CHAR_BIT;
+ tmpstackelem.shift = #{shiftnext(options)};
GT_STACK_PUSH(stack,tmpstackelem);
}
}
@@ -408,7 +624,7 @@ static void gt_radixsort_#{makekey(options)}_process_bin(
}
}
-static void gt_radixsort_#{makekey(options)}_sub_inplace(GtRadixbuffer *rbuf,
+static void gt_radixsort_#{makekeyname(options)}_sub_inplace(GtRadixbuffer *rbuf,
GtStackGtRadixsort_stackelem *stack)
{
GtRadixsort_stackelem currentstackelem;
@@ -416,14 +632,14 @@ static void gt_radixsort_#{makekey(options)}_sub_inplace(GtRadixbuffer *rbuf,
while (!GT_STACK_ISEMPTY(stack))
{
currentstackelem = GT_STACK_POP(stack);
- gt_radixsort_#{makekey(options)}_shuffle(rbuf,
- currentstackelem.left.#{makekey(options)}ptr,
+ gt_radixsort_#{makekeyname(options)}_shuffle(rbuf,
+ currentstackelem.left.#{makekeyptr(options)},
currentstackelem.len,
currentstackelem.shift);
- if (currentstackelem.shift > 0)
+ if (#{recursion_continue(options)})
{
- (void) gt_radixsort_#{makekey(options)}_process_bin(stack,rbuf,
- currentstackelem.left.#{makekey(options)}ptr,
+ (void) gt_radixsort_#{makekeyname(options)}_process_bin(stack,rbuf,
+ currentstackelem.left.#{makekeyptr(options)},
currentstackelem.shift);
}
}
diff --git a/scripts/gen-radixsort-ip.sh b/scripts/gen-radixsort-ip.sh
index 879ab10..5d46a3b 100755
--- a/scripts/gen-radixsort-ip.sh
+++ b/scripts/gen-radixsort-ip.sh
@@ -3,3 +3,4 @@
gen-radixsort-ip.rb > src/core/radixsort-ip-ulong.inc
gen-radixsort-ip.rb --ulongpair > src/core/radixsort-ip-ulongpair.inc
gen-radixsort-ip.rb --uint64keypair > src/core/radixsort-ip-uint64keypair.inc
+gen-radixsort-ip.rb --flb > src/core/radixsort-ip-flba.inc
diff --git a/scripts/gfa2lint.rb b/scripts/gfa2lint.rb
new file mode 100755
index 0000000..a60a3fb
--- /dev/null
+++ b/scripts/gfa2lint.rb
@@ -0,0 +1,148 @@
+#!/usr/bin/env ruby
+
+require "set"
+
+def show_difference(tag,set1,set2)
+ STDERR.puts tag
+ set1.difference(set2).each do |elem|
+ STDERR.puts "#{elem}"
+ end
+end
+
+def lint_trace(trace_delta,ulen,vlen,trace_string)
+ usum = 0
+ vsum = 0
+ trace_string.split(/,/).each do |vspec|
+ usum += trace_delta
+ vsum += vspec.to_i
+ end
+ if vsum != vlen
+ STDERR.puts "#{$0}: #{__method__}: vsum = #{vsum} != #{vlen} = vlen"
+ exit 1
+ end
+ usum -= trace_delta
+ if usum > ulen
+ STDERR.puts "#{$0}: #{__method__}: usum = #{usum} > #{ulen} = ulen"
+ exit 1
+ end
+end
+
+class String
+ def segment_name
+ return self.gsub(/[-+]$/,"")
+ end
+end
+
+set_E_lines = Set.new()
+set_S_lines = Set.new()
+set_S_ids = Set.new()
+set_E_ids = Set.new()
+segment_hash = Hash.new()
+
+if ARGV.length != 1
+ STDERR.puts "Usage: #{$0} <inputfile in gfa2 format>"
+ exit 1
+end
+
+inputfile = ARGV[0]
+trace_delta = nil
+File.new(inputfile,"r").each_line do |line|
+ if line.match(/^E/)
+ e_elems = line.split(/\t/)
+ if e_elems.length != 9
+ STDERR.puts "#{$0}: expect 9 columns in E-lines"
+ exit 1
+ end
+ id = e_elems[1]
+ if set_E_ids.include?(id)
+ STDERR.puts "#{$0}: edge identifier #{id} is not unique"
+ exit 1
+ end
+ set_E_ids.add(id)
+ set_E_lines.add(e_elems[2].segment_name)
+ set_E_lines.add(e_elems[3].segment_name)
+ elsif line.match(/^S/)
+ s_elems = line.split(/\t/)
+ if s_elems.length != 4
+ STDERR.puts "#{$0}: expect 4 columns in S-lines"
+ exit 1
+ end
+ key = s_elems[1]
+ if segment_hash.has_key?(key)
+ STDERR.puts "#{$0}: duplicated segment: #{key}"
+ exit 1
+ end
+ len = s_elems[2].to_i
+ segment = s_elems[3].chomp
+ if segment.length != len
+ STDERR.puts "#{$0}: segment.length = #{segment.length} != #{len} = len"
+ exit 1
+ end
+ segment_hash[key] = len
+ set_S_lines.add(key)
+ id = s_elems[1]
+ if set_S_ids.include?(id)
+ STDERR.puts "#{$0}: segment identifier #{id} is not unique"
+ exit 1
+ end
+ set_S_ids.add(id)
+ elsif line.match(/^H/)
+ if m = line.match(/TS:i:(\d+)/)
+ trace_delta = m[1].to_i
+ end
+ end
+end
+
+if set_S_lines != set_E_lines
+ show_difference("elems in E but not in S",set_E_lines,set_S_lines)
+ show_difference("elems in S but not in E",set_S_lines,set_E_lines)
+ exit 1
+end
+
+linenum = 1
+File.new(inputfile,"r").each_line do |line|
+ if line.match(/^E/)
+ e_elems = line.split(/\t/)
+ lseg = e_elems[2].segment_name
+ lstart = e_elems[4].to_i
+ lend = e_elems[5].to_i
+ if lstart > lend
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "lstart = #{lstart} > #{lend} = lend"
+ exit 1
+ end
+ if not segment_hash.has_key?(lseg)
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "lseg=#{lseg} is not a valid segment name"
+ exit 1
+ end
+ len_lseg = segment_hash[lseg]
+ if lend >= len_lseg
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "lend=#{lend} >= #{len_lseg} = len_lseg"
+ end
+ rseg = e_elems[3].segment_name
+ rstart = e_elems[6].to_i
+ rend = e_elems[7].to_i
+ if rstart > rend
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "rstart = #{rstart} > #{rend} = rend"
+ exit 1
+ end
+ if not segment_hash.has_key?(rseg)
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "rseg=#{rseg} is not a valid segment name"
+ exit 1
+ end
+ len_rseg = segment_hash[rseg]
+ if rend >= len_rseg
+ STDERR.print "#{$0}: file #{inputfile}, line #{linenum}: "
+ STDERR.puts "rend=#{rend} >= #{len_rseg} = len_rseg"
+ end
+ if not trace_delta.nil?
+ lint_trace(trace_delta,lend - lstart + 1,rend - rstart + 1,
+ e_elems[8].chomp)
+ end
+ end
+ linenum += 1
+end
diff --git a/scripts/manyshort-somelong.rb b/scripts/manyshort-somelong.rb
new file mode 100755
index 0000000..5aebd1c
--- /dev/null
+++ b/scripts/manyshort-somelong.rb
@@ -0,0 +1,23 @@
+#!/usr/bin/env ruby
+
+require_relative "cutsequences"
+
+if ARGV.length != 2
+ STDERR.puts "Usage: #{$0} <directory> <numofsequences>"
+ exit 1
+end
+
+directory=ARGV[0]
+numofsequences=ARGV[1].to_i
+minlength=50
+maxlength=50
+
+Dir.entries(directory).each do |filename|
+ if filename.match(/\.fna$/)
+ inputpath = "#{directory}/#{filename}"
+ File.foreach(inputpath) do |line|
+ print line
+ end
+ cutsequences(inputpath,numofsequences,minlength,maxlength)
+ end
+end
diff --git a/scripts/matches-compare.rb b/scripts/matches-compare.rb
new file mode 100755
index 0000000..9e3612c
--- /dev/null
+++ b/scripts/matches-compare.rb
@@ -0,0 +1,396 @@
+#!/usr/bin/env ruby
+
+require "set"
+require "optparse"
+require_relative "SEmatch"
+
+def add_single_match(matchset,m,always_add = false)
+ add_m = true
+ if not always_add
+ to_delete = Array.new()
+ matchset.each do |previous|
+ if match_proper_contained_in(m,previous)
+ if previous[:score] > m[:score]
+ add_m = false
+ end
+ elsif match_proper_contained_in(previous,m)
+ if previous[:score] < m[:score]
+ to_delete.push(previous)
+ end
+ elsif match_is_identical(previous,m) and previous[:score] > m[:score]
+ add_m = false
+ end
+ end
+ to_delete.each do |elem|
+ matchset.delete(elem)
+ end
+ end
+ if add_m
+ matchset.add(m)
+ end
+ max_score = 0
+ matchset.each do |elem|
+ if max_score < elem[:score]
+ max_score = elem[:score]
+ end
+ end
+ return max_score
+end
+
+def convertmatchfile2hash(matchfile,always_add)
+ match_hash = Hash.new()
+ score_hash = Hash.new() {0}
+ sematch = SEmatch.new(matchfile)
+ sematch.each do |m|
+ key = [m[:s_seqnum],m[:q_seqnum]]
+ if not match_hash.has_key?(key)
+ match_hash[key] = Set.new()
+ end
+ score_hash[key] = add_single_match(match_hash[key],m,always_add)
+ end
+ return match_hash, score_hash, sematch.runtime_get(), sematch.spacepeak_get()
+end
+
+def merge_sets(mh0,mh1)
+ seqnumpairkeys = (mh0.keys + mh1.keys).to_set
+ seqnumpairkeys.each do |key|
+ mh0_set = if mh0.has_key?(key) then mh0[key] else Set.new() end
+ mh1_set = if mh1.has_key?(key) then mh1[key] else Set.new() end
+ yield key, mh0_set, mh1_set
+ end
+end
+
+def multi_merge_sets(mh_list)
+ seqnumpairkeys = Set.new()
+ mh_list.each do |mh|
+ mh.keys.each do |key|
+ seqnumpairkeys.add(key)
+ end
+ end
+ seqnumpairkeys.each do |key|
+ mh_sets = Array.new(mh_list.length)
+ mh_list.each_with_index do |mh,idx|
+ mh_sets[idx] = if mh.has_key?(key) then mh[key] else Set.new() end
+ end
+ yield key, mh_sets
+ end
+end
+
+Counters = Struct.new("Counters",:different_seqpairs,
+ :different_matches,
+ :identical_seqpairs,
+ :identical_matches,
+ :mh0larger,
+ :mh1larger,
+ :samesize,
+ :mh0_all_overlap,
+ :mh0_not_all_overlap,
+ :mh1_all_overlap,
+ :mh1_not_all_overlap,
+ :mh0_largerscore,
+ :mh1_largerscore,
+ :samescore,
+ :scorediffdist)
+
+def overlap_in_one_instance(mh0_set,mh1_set)
+ count_overlaps = 0
+ mh0_set.each do |m0|
+ overlaps = false
+ mh1_set.each do |m1|
+ if coords_contained_in(m0[:s_start],m0[:s_end],m1[:s_start],m1[:s_end]) or
+ coords_contained_in(m0[:q_start],m0[:q_end],m1[:q_start],m1[:q_end])
+ overlaps = true
+ break
+ end
+ end
+ if overlaps
+ count_overlaps += 1
+ end
+ end
+ return count_overlaps
+end
+
+def set_show(key,s)
+ if s.empty?
+ puts "# #{key} is empty"
+ else
+ s.each do |elem|
+ puts "# #{key}: #{elem[:origline]}"
+ end
+ end
+end
+
+def hash_difference(argv0,mh0,sh0,argv1,mh1,sh1,maxpercentdiff)
+ counters = Counters.new(0,0,0,0,0,0,0,0,0,0,0,0,0,0,Hash.new() {0})
+ multi_merge_sets([mh0,mh1]) do |key, mh_sets|
+ mh0_set = mh_sets[0]
+ mh1_set = mh_sets[1]
+ if mh0_set == mh1_set
+ counters.identical_matches += mh0_set.size
+ counters.identical_seqpairs += 1
+ else
+ counters.different_seqpairs += 1
+ common = mh0_set.intersection(mh1_set)
+ counters.identical_matches += common.length
+ mh0_set_alone = mh0_set.difference(common)
+ mh1_set_alone = mh1_set.difference(common)
+ counters.different_matches += mh0_set_alone.size + mh1_set_alone.size
+ if mh0_set.size > mh1_set.size
+ counters.mh0larger += 1
+ elsif mh0_set.size < mh1_set.size
+ counters.mh1larger += 1
+ else
+ counters.samesize += 1
+ end
+ overlaps = overlap_in_one_instance(mh1_set,mh0_set)
+ if overlaps == mh1_set.size
+ counters.mh1_all_overlap += 1
+ else
+ counters.mh1_not_all_overlap += 1
+ end
+ overlaps = overlap_in_one_instance(mh0_set,mh1_set)
+ if overlaps == mh0_set.size
+ counters.mh0_all_overlap += 1
+ else
+ counters.mh0_not_all_overlap += 1
+ end
+ multiplier = (100.0+maxpercentdiff)/100.0
+ percentdiff = nil
+ if sh0[key] > sh1[key]
+ if sh0[key] > sh1[key] * multiplier
+ counters.mh0_largerscore += 1
+ else
+ counters.samescore += 1
+ end
+ percentdiff = (100.0 * (sh0[key] - sh1[key]).to_f/sh0[key].to_f).round
+ elsif sh0[key] < sh1[key]
+ if sh0[key] * multiplier < sh1[key]
+ counters.mh1_largerscore += 1
+ mh1_larger = true
+ else
+ counters.samescore += 1
+ end
+ percentdiff = (-100.0 * (sh1[key] - sh0[key]).to_f/sh1[key].to_f).round
+ else
+ percentdiff = 0
+ end
+ set_show("common ",common)
+ set_show("#{argv0} minus common",mh0_set_alone)
+ set_show("#{argv1} minus common",mh1_set_alone)
+ printf("score within %.0f percent difference\n",percentdiff)
+ counters.scorediffdist[percentdiff] += 1
+ puts ""
+ end
+ end
+ return counters
+end
+
+def identical_upto_query(s,t)
+ if s.size != t.size
+ STDERR.puts "#{$0} are of different sizes #{s.size} and #{t.size}"
+ exit 1
+ end
+ s.zip(t).each do |ms,mt|
+ vals = [ms[:s_seqnum],ms[:s_start],ms[:s_end],ms[:q_len],ms[:score],
+ ms[:strand]]
+ valt = [mt[:s_seqnum],mt[:s_start],mt[:s_end],mt[:q_len],mt[:score],
+ if mt[:strand] == "F" then "P" else "F" end]
+ if vals != valt
+ STDERR.puts "#{$0}: vals = #{vals} != #{valt} = valst"
+ exit 1
+ end
+ end
+end
+
+def dist_cummulate(dist)
+ minval = maxval = nil
+ dist.each_pair do |k,v|
+ if minval.nil? or minval > k
+ minval = k
+ end
+ if maxval.nil? or maxval < k
+ maxval = k
+ end
+ end
+ cumdist = Hash.new() {0}
+ sum = 0
+ puts "minval=#{minval},maxval=#{maxval}"
+ (-1).downto(minval).each do |k|
+ if dist.has_key?(k)
+ sum += dist[k]
+ cumdist[k] = sum
+ end
+ end
+ sum = 0
+ 1.upto(maxval).each do |k|
+ if dist.has_key?(k)
+ sum += dist[k]
+ cumdist[k] = sum
+ end
+ end
+ cumdist[0] = dist[0]
+ return cumdist
+end
+
+MCoptions = Struct.new("MCoptions",:pairwise,:ignore_query,:matchfiles,
+ :maxpercentdiff)
+
+def parseargs(argv)
+ options = MCoptions.new(false,false,nil,10.0)
+ opts = OptionParser.new
+ opts.banner = "#{$0} [options] <inputfile>"
+ opts.on("-p","--pairwise","perform pairwise comparison") do |x|
+ options.pairwise = true
+ end
+ opts.on("-i","--ignore-query-positions","comparison, ignoring sequence " +
+ "number and start position " +
+ "on query") do |x|
+ options.ignore_query = true
+ end
+ opts.on("-m","--maxpercent-difference NUMBER",
+ "specify maximum percent of score difference accepted when " +
+ "comparing matches") do |x|
+ options.maxpercentdiff = x.to_f
+ end
+ rest = opts.parse(argv)
+ if rest.length < 2
+ STDERR.puts "Usage: #{$0}: missing input files"
+ exit 1
+ else
+ options.matchfiles = rest
+ end
+ if options.pairwise and options.ignore_query
+ STDERR.puts "#{$0}: options -p and -i exclude each other"
+ exit 1
+ end
+ return options
+end
+
+options = parseargs(ARGV)
+
+numfiles = options.matchfiles.length
+match_hash_tab = Array.new(numfiles)
+score_hash_tab = Array.new(numfiles)
+runtime_tab = Array.new(numfiles)
+spacepeak_tab = Array.new(numfiles)
+always_add = if options.ignore_query then true else false end
+0.upto(numfiles-1).each do |idx|
+ match_hash_tab[idx], score_hash_tab[idx], runtime_tab[idx],
+ spacepeak_tab[idx] = convertmatchfile2hash(options.matchfiles[idx],always_add)
+end
+
+if options.pairwise
+ 0.upto(numfiles-2).each do |idx0|
+ argv0 = options.matchfiles[idx0]
+ (idx0+1).upto(numfiles-1).each do |idx1|
+ argv1 = options.matchfiles[idx1]
+ puts "# #{argv0} vs #{argv1}"
+ counters = hash_difference(argv0,match_hash_tab[idx0],
+ score_hash_tab[idx0],
+ argv1,match_hash_tab[idx1],
+ score_hash_tab[idx1],
+ options.maxpercentdiff)
+ all_seqpairs = counters.identical_seqpairs + counters.different_seqpairs
+ printf("sequence pairs with identical matches %d (%5.2f%%)\n",
+ counters.identical_seqpairs,
+ 100.0 * counters.identical_seqpairs.to_f/all_seqpairs.to_f)
+ printf("sequence pairs with different matches %d (%5.2f%%)\n",
+ counters.different_seqpairs,
+ 100.0 * counters.different_seqpairs.to_f/all_seqpairs.to_f)
+ all_matches = counters.identical_matches + counters.different_matches
+ printf("identical matches %d (%5.2f%%)\n",
+ counters.identical_matches,
+ 100.0 * counters.identical_matches.to_f/all_matches.to_f)
+ printf("different matches %d (%5.2f%%)\n",
+ counters.different_matches,
+ 100.0 * counters.different_matches.to_f/all_matches.to_f)
+
+ puts "sequence pairs for which |#{argv0}| > |#{argv1}|: #{counters.mh0larger}"
+ puts "sequence pairs for which |#{argv1}| > |#{argv0}|: #{counters.mh1larger}"
+ puts "sequence pairs for which |#{argv1}| = |#{argv0}|: #{counters.samesize}"
+
+ puts "sequence pairs with different match sets for which all of #{argv0} overlaps with #{argv1}: #{counters.mh0_all_overlap}"
+ puts "sequence pairs with different match sets for which some of #{argv0} do not overlap with #{argv1}: #{counters.mh0_not_all_overlap}"
+
+ puts "sequence pairs with different match sets for which all of #{argv1} overlaps with #{argv0}: #{counters.mh1_all_overlap}"
+ puts "sequence pairs with different match sets for which some of #{argv1} do not overlaps with #{argv0}: #{counters.mh1_not_all_overlap}"
+
+ puts "sequence pairs with different match sets for which #{argv1} have a larger score than #{argv0}: #{counters.mh1_largerscore}"
+ puts "sequence pairs with different match sets for which #{argv0} have a larger score than #{argv1}: #{counters.mh0_largerscore}"
+ puts "sequence pairs for which #{argv0} have same score as #{argv1}: #{counters.samescore}"
+ puts "same means within #{options.maxpercentdiff} percent difference"
+ cumdist = dist_cummulate(counters.scorediffdist)
+ puts "# cummulative distribution"
+ cumdist.sort.each do |k,v|
+ puts "#{k}\t#{v}"
+ end
+ end
+ end
+elsif options.ignore_query
+ multi_merge_sets(match_hash_tab) do |key,mh_sets|
+ mh_sets.each_with_index do |s,sidx|
+ mh_sets.each_with_index do |t,tidx|
+ if sidx < tidx
+ identical_upto_query(s,t)
+ end
+ end
+ end
+ end
+else
+ contained = Array.new(numfiles) {0}
+ step = 10
+ bestscore = Array.new(numfiles) {Array.new(100/step+1) {0}}
+ totalsetsize = 0
+ numsets = 0
+ mh_set_combined = Set.new()
+ multi_merge_sets(match_hash_tab) do |key,mh_sets|
+ max_score = 0
+ mh_sets.each do |mh_set|
+ mh_set.each do |m|
+ max_score = add_single_match(mh_set_combined,m)
+ end
+ end
+ mh_sets.each_with_index do |mh_set,midx|
+ inse = mh_set_combined.intersection(mh_set)
+ contained[midx] += inse.size
+ if score_hash_tab[midx][key] > max_score
+ STDERR.puts "midx #{midx}: score_hash[#{key}]=" +
+ "#{score_hash_tab[midx][key]} > #{max_score}=max_score"
+ exit(1)
+ end
+ if score_hash_tab[midx][key] > 0
+ diff = (100 * (max_score - score_hash_tab[midx][key]).to_f/max_score.to_f).round
+ bestscore[midx][diff/step] += 1
+ else
+ bestscore[midx][100/step] += 1
+ end
+ end
+ numsets += 1
+ totalsetsize += mh_set_combined.size
+ mh_set_combined.clear()
+ end
+ result = Array.new()
+ length_of_longest = 0
+ 0.upto(numfiles-1).each do |idx|
+ result.push([bestscore[idx][0],idx])
+ if length_of_longest < options.matchfiles[idx].length
+ length_of_longest = options.matchfiles[idx].length
+ end
+ end
+ column_header = Range.new(step,100).step(step).to_a.map {|x| if x < 100 then " lt#{x}" else "lt#{x}" end}
+ printf("%*s\t%5s\t%s\t nil\t time\tspace\n",length_of_longest,"options","cont",column_header.join("\t"))
+ result.sort.each do |cont,idx|
+ printf("%*s\t%5.2f",length_of_longest,options.matchfiles[idx],
+ 100.0 * cont.to_f/totalsetsize.to_f)
+ sumpercentage = 0.0
+ 0.upto(100/step-1).each do |diff|
+ bestpercentage = 100.0 * bestscore[idx][diff].to_f/numsets.to_f
+ sumpercentage += bestpercentage
+ printf("\t%5.2f",sumpercentage)
+ end
+ printf("\t%5.2f\t%.2f\t%.2f",
+ 100.0 * bestscore[idx][100/step].to_f/numsets.to_f,
+ runtime_tab[idx],spacepeak_tab[idx])
+ puts ""
+ end
+end
diff --git a/scripts/matches2ani.rb b/scripts/matches2ani.rb
new file mode 100755
index 0000000..61b760b
--- /dev/null
+++ b/scripts/matches2ani.rb
@@ -0,0 +1,52 @@
+#!/usr/bin/env ruby
+#
+# calculation of average nucleotid identity (ANI) analogous to http://mummer.sourceforge.net/
+# - implementation based on SEmatch class
+# - inputfile: file with local alignments, one alignments in each line (seed_extend output)
+# - requires s_len, q_len and identity fields
+#
+# author: Annika Seidel
+# author: Stefan Kurtz, simplification by removing /100 in loop,
+# added checks for keys in hash
+# date: 08.05.17
+
+require_relative "SEmatch"
+
+def accumulate_ani_values(filename)
+ miter = SEmatch.new(filename)
+ sqSumIdy = 0.0
+ sqSumLen = 0
+ miter.each do |m|
+ if not m.has_key?(:s_len)
+ STDERR.puts "#{$0}: cannot determine length of match on subject"
+ exit 1
+ end
+ s_len = m[:s_len]
+ if not m.has_key?(:q_len)
+ STDERR.puts "#{$0}: cannot determine length of match on query"
+ exit 1
+ end
+ q_len = m[:q_len]
+ if not m.has_key?(:identity)
+ STDERR.puts "#{$0}: cannot determine identity of match"
+ exit 1
+ end
+ # printf("%.2f %d %d\n",m[:identity],s_len,q_len)
+ sqSumIdy += m[:identity] * (s_len + q_len);
+ sqSumLen += s_len + q_len
+ end
+ return sqSumIdy, sqSumLen
+end
+
+if ARGV.length != 1
+ STDERR.puts "Usage: #{$0} <file with local alignments>"
+ exit 1
+end
+# TODO: filter
+sqSumIdy, sqSumLen = accumulate_ani_values(ARGV[0])
+print "sum_similarity=#{sqSumIdy}\tsum_aligned=#{sqSumLen}\tani="
+if sqSumLen > 0
+ printf("%.4f\n",sqSumIdy/sqSumLen.to_f)
+else
+ puts "0"
+end
diff --git a/scripts/mk_ft_longest_common.rb b/scripts/mk_ft_longest_common.rb
new file mode 100755
index 0000000..d841494
--- /dev/null
+++ b/scripts/mk_ft_longest_common.rb
@@ -0,0 +1,258 @@
+#!/usr/bin/env ruby
+
+def gen_access_raw(mode,structvar,pre)
+ if mode == "bytes"
+ return "*#{pre}ptr"
+ elsif mode == "twobit"
+ return "gt_twobitencoding_char_at_pos(\n" +
+ " " * 30 + "#{structvar}->twobitencoding,\n" +
+ " " * 30 + "#{pre}ptr)"
+ elsif mode == "encseq"
+ return "gt_encseq_get_encoded_char(#{structvar}->encseq,\n" +
+ " " * 20 + "#{pre}ptr,\n" +
+ " " * 20 + "GT_READMODE_FORWARD)"
+ else
+ return "gt_sequenceobject_esr_get(#{structvar},#{pre}ptr)"
+ end
+end
+
+def gen_compare(a_mode,b_mode,wildcard,complement)
+ access_v = gen_access_raw(b_mode,"vseq","v")
+ splitter = if access_v.length > 10 then ("\n" + " " * 12) else " " end
+ cmp_expr = (if complement then ("GT_COMPLEMENTBASE(") else "" end) +
+ "#{access_v}" +
+ (if complement then ")" else "" end) + ")\n" +
+ " " * 10 + "break"
+ if wildcard
+ return "const GtUchar cu = #{gen_access_raw(a_mode,"useq","u")};\n" +
+ " " * 8 + "if (cu == WILDCARD ||" + splitter + "cu !=" + splitter +
+ cmp_expr
+ else
+ return "if (#{gen_access_raw(a_mode,"useq","u")} !=" + splitter +
+ cmp_expr
+ end
+end
+
+def gen_suffix(wildcard)
+ if wildcard
+ return "_wildcard"
+ else
+ return ""
+ end
+end
+
+def gen_func_name(a_mode,b_mode,wildcard)
+ return "ft_longest_common_#{a_mode}_#{b_mode}#{gen_suffix(wildcard)}"
+end
+
+def gen_ptr_assign(mode,pre,left2right)
+ if mode == "bytes"
+ if left2right
+ return "#{pre}seq->bytesequenceptr + #{pre}seq->offset + #{pre}start; " +
+ "#{pre}step = 1"
+ else
+ return "#{pre}seq->bytesequenceptr + #{pre}seq->offset - #{pre}start; " +
+ "#{pre}step = -1"
+ end
+ else
+ if left2right
+ if mode != "encseq_reader"
+ return "#{pre}seq->offset + #{pre}start; #{pre}step = 1"
+ else
+ return "#{pre}start"
+ end
+ else
+ if mode != "encseq_reader"
+ return "#{pre}seq->offset - #{pre}start; #{pre}step = -1"
+ else
+ return "#{pre}start"
+ end
+ end
+ end
+end
+
+def gen_ptr_set(mode,pre)
+ return ["\n if (#{pre}seq->read_seq_left2right)",
+ "{",
+ " #{pre}ptr = #{gen_ptr_assign(mode,pre,true)};",
+ "} else",
+ "{",
+ " #{pre}ptr = #{gen_ptr_assign(mode,pre,false)};",
+ "}"].join("\n ")
+end
+
+def gen_minsub(pre)
+ other = if pre == "u" then "v" else "u" end
+ return ["\n GtUword minsubstringlength = #{other}start + #{pre}seq->substringlength - #{pre}start;",
+ "if (#{other}seq->substringlength < minsubstringlength)",
+ "{",
+ " minsubstringlength = #{other}seq->substringlength;",
+ "}"].join("\n ")
+end
+
+def gen_minsubstringlength_decl(a_mode,b_mode)
+ minmatch_decl = ["\n GtUword minsubstringlength = useq->substringlength - ustart;",
+ "if (vseq->substringlength < useq->insubstringlength)",
+ "{",
+ " minsubstringlength = vseq->substringlength - vstart;",
+ "}"].join("\n ") +
+ gen_ptr_set(a_mode,"u") +
+ gen_ptr_set(b_mode,"v")
+ if a_mode == "encseq_reader"
+ if b_mode == "encseq_reader"
+ return "GtUword uptr = ustart, vptr = vstart;" +
+ gen_minsub("v")
+ elsif b_mode == "bytes"
+ return "GtUword uptr = ustart; const GtUchar *vptr; int vstep;" +
+ gen_minsub("v") +
+ gen_ptr_set(b_mode,"v")
+ else
+ return "GtUword uptr = ustart, vptr; int vstep;" +
+ gen_minsub("v") +
+ gen_ptr_set(b_mode,"v")
+ end
+ elsif b_mode == "encseq_reader"
+ if a_mode == "bytes"
+ return "const GtUchar *uptr; int ustep; GtUword vptr = vstart;" +
+ gen_minsub("u") +
+ gen_ptr_set(a_mode,"u")
+ else
+ return "GtUword uptr; int ustep; GtUword vptr = vstart;" +
+ gen_minsub("u") +
+ gen_ptr_set(a_mode,"u")
+ end
+ else
+ minmatch_decl = [" GtUword minsubstringlength = useq->substringlength - ustart,",
+ "matchlength = 0;",
+ "if (vseq->substringlength - vstart < minsubstringlength)",
+ "{",
+ " minsubstringlength = vseq->substringlength - vstart;",
+ "}"].join("\n ") +
+ gen_ptr_set(a_mode,"u") +
+ gen_ptr_set(b_mode,"v")
+
+ if a_mode == "bytes"
+ if b_mode == "bytes"
+ return "const GtUchar *uptr, *vptr; int ustep, vstep;\n" +
+ minmatch_decl
+ else
+ return "const GtUchar *uptr; GtUword vptr; int ustep, vstep;\n" +
+ minmatch_decl
+ end
+ else
+ if b_mode == "bytes"
+ return "GtUword uptr; const GtUchar *vptr; int ustep, vstep;\n" +
+ minmatch_decl
+ else
+ return "GtUword uptr, vptr; int ustep, vstep;\n" +
+ minmatch_decl
+ end
+ end
+ end
+end
+
+def gen_ptr_incr(mode,pre)
+ if mode == "encseq_reader"
+ return "#{pre}ptr++"
+ else
+ return "#{pre}ptr += #{pre}step"
+ end
+end
+
+def gen_matchlength_inc(a_mode,b_mode)
+ if a_mode == "encseq_reader" or b_mode == "encseq_reader"
+ return ""
+ else
+ return "matchlength++;"
+ end
+end
+
+def gen_smaller(a_mode,b_mode)
+ if a_mode == "encseq_reader"
+ return "uptr"
+ elsif b_mode == "encseq_reader"
+ return "vptr"
+ else
+ return "matchlength"
+ end
+end
+
+def gen_return_matchlength(a_mode,b_mode)
+ if a_mode == "encseq_reader"
+ return "uptr - ustart"
+ elsif b_mode == "encseq_reader"
+ return "vptr - vstart"
+ else
+ return "matchlength"
+ end
+end
+
+def longestcommonfunc(a_mode,b_mode,wildcard)
+ puts <<EOF
+static GtUword #{gen_func_name(a_mode,b_mode,wildcard)}(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ #{gen_minsubstringlength_decl(a_mode,b_mode)}
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ #{gen_compare(a_mode,b_mode,wildcard,true)};
+ #{gen_ptr_incr(a_mode,"u")};
+ #{gen_ptr_incr(b_mode,"v")};#{gen_matchlength_inc(a_mode,b_mode)}
+ } while (#{gen_smaller(a_mode,b_mode)} < minsubstringlength);
+ } else
+ {
+ do
+ {
+ #{gen_compare(a_mode,b_mode,wildcard,false)};
+ #{gen_ptr_incr(a_mode,"u")};
+ #{gen_ptr_incr(b_mode,"v")};#{gen_matchlength_inc(a_mode,b_mode)}
+ } while (#{gen_smaller(a_mode,b_mode)} < minsubstringlength);
+ }
+ return #{gen_return_matchlength(a_mode,b_mode)};
+ }
+ return 0;
+}
+EOF
+end
+
+first = true
+func_list = Array.new()
+modes = ["twobit","encseq_reader","encseq","bytes"]
+[false,true].each do |wildcard|
+ modes.each do |a_mode|
+ modes.each do |b_mode|
+ if first
+ first = false
+ else
+ puts ""
+ end
+ longestcommonfunc(a_mode,b_mode,wildcard)
+ func_list.push(gen_func_name(a_mode,b_mode,wildcard))
+ end
+ end
+end
+
+firstwildcard = nil
+firstfunc = true
+puts "\nGtLongestCommonFunc ft_longest_common_func_tab[] =\n{"
+func_list.each_with_index do |func_name,idx|
+ if firstwildcard.nil? and func_name.match(/_wildcard/)
+ firstwildcard = idx
+ end
+ if firstfunc
+ firstfunc = false
+ else
+ puts ","
+ end
+ print " /* #{idx} */ #{func_name}"
+end
+puts "\n};"
+puts "const int ft_longest_common_num_modes = #{modes.length};"
+puts "const int ft_longest_common_func_first_wildcard = #{firstwildcard};"
diff --git a/scripts/print_sequence.rb b/scripts/print_sequence.rb
new file mode 100644
index 0000000..dd09ddf
--- /dev/null
+++ b/scripts/print_sequence.rb
@@ -0,0 +1,7 @@
+def print_sequence(seq,width,fpout = STDOUT)
+ idx = 0
+ while idx < seq.length
+ fpout.puts "#{seq[idx,width]}"
+ idx += width
+ end
+end
diff --git a/scripts/reverse-complement.rb b/scripts/reverse-complement.rb
new file mode 100755
index 0000000..3271c3b
--- /dev/null
+++ b/scripts/reverse-complement.rb
@@ -0,0 +1,19 @@
+#!/usr/bin/env ruby
+
+require_relative "fasta.rb"
+require_relative "print_sequence.rb"
+
+def reverse_complement(seq)
+ return seq.reverse.tr("ACGTacgt","TGCAtgca")
+end
+
+if ARGV.length != 1
+ STDERR.puts "Usage: #{$0} <inputfile in fasta format>"
+ exit 1
+end
+
+Fasta.read_multi_file(ARGV[0]) do |seqentry|
+ puts ">#{seqentry.get_header()}"
+ rc = reverse_complement(seqentry.get_sequence())
+ print_sequence(rc,70)
+end
diff --git a/scripts/run-se-da.sh b/scripts/run-se-da.sh
index 0f896de..7c22ab4 100755
--- a/scripts/run-se-da.sh
+++ b/scripts/run-se-da.sh
@@ -41,7 +41,7 @@ fi
rm -f ${reference}.db
${MYERSPROG}/DAZZ_DB/fasta2DB ${reference}.db ${reference}.fasta
-if test ${queryfile} != ""
+if test "${queryfile}" != ""
then
query=`basename $queryfile`
scripts/convert2myersformat.rb ${queryfile} > ${query}.fasta
@@ -70,7 +70,7 @@ else
fi
bin/gt seed_extend -ii ${reference} ${qiioption} -t ${maxfreq} -l ${minlen} \
- -seedlength 14 -minidentity ${minidentity} -seed-display \
+ -seedlength 14 -minidentity ${minidentity} -outfmt seed \
-v -overlappingseeds -bias-parameters -no-reverse \
-history 60 > ${outputprefix}-se.matches
rm -f ${query}.ssp ${query}.fasta ${query}.esq
diff --git a/scripts/se-permutation.rb b/scripts/se-permutation.rb
new file mode 100755
index 0000000..6ba8d99
--- /dev/null
+++ b/scripts/se-permutation.rb
@@ -0,0 +1,45 @@
+#!/usr/bin/env ruby
+
+require_relative "SEmatch"
+
+if ARGV.length != 2
+ STDERR.puts "#{$0} <matchfile1> <matchfile2>"
+ exit 1
+end
+sematchlist = Array.new(2) {Array.new()}
+
+0.upto(1).each do |idx|
+ sematch = SEmatch.new(ARGV[idx])
+ sematch.each do |m|
+ sematchlist[idx].push(m)
+ end
+end
+
+if sematchlist[0].length != sematchlist[1].length
+ STDERR.puts "sematchlist[0].length = #{sematchlist[0].length} != " +
+ "#{sematchlist[1].length} = sematchlist[1].length"
+ exit 1
+end
+
+0.upto(sematchlist[0].length-1).each do |idx|
+ m0 = sematchlist[0][idx]
+ m1 = sematchlist[1][idx]
+ m1.each_pair do |k,v|
+ if k == :origline
+ next
+ end
+ if not m0.has_key?(k)
+ STDERR.puts "#{$0}: match #{idx}: missing key #{k} in #{ARGV[0]}"
+ exit 1
+ end
+ if m0[k] != v
+ STDERR.puts "#{$0}: match #{idx}: key #{k}: has values #{m0[k]} != #{v}"
+ exit 1
+ end
+ end
+end
+if sematchlist[0].length > 0
+ keycount = sematchlist[1][0].length
+ puts "#{sematchlist[0].length} matches with #{keycount} columns processed"
+end
+puts "#{ARGV[1]} is a subset of the columns of #{ARGV[0]}"
diff --git a/scripts/seeds2maxmatches.rb b/scripts/seeds2maxmatches.rb
new file mode 100755
index 0000000..d8fda5b
--- /dev/null
+++ b/scripts/seeds2maxmatches.rb
@@ -0,0 +1,95 @@
+#!/usr/bin/env ruby
+
+def diag(val)
+ return val.bend - val.aend
+end
+
+def compare_seeds(val1,val2)
+ diff1 = diag(val1)
+ diff2 = diag(val2)
+ if diff1 < diff2
+ return -1
+ end
+ if diff1 > diff2
+ return 1
+ end
+ if val1[1] < val2[1]
+ return -1
+ end
+ if val1[1] > val2[1]
+ return 1
+ end
+ return 0
+end
+
+Maxmatch = Struct.new("Maxmatch",:aend,:bend,:len)
+
+def compare_maxmatches(val1,val2)
+ if val1.bend < val2.bend
+ return -1
+ end
+ if val1.bend > val2.bend
+ return 1
+ end
+ if val1.aend < val2.aend
+ return -1
+ end
+ if val1.aend > val2.aend
+ return 1
+ end
+ return 0
+end
+
+seeds = Array.new()
+seedlength = 15
+STDIN.each_line do |line|
+ a = line.split(/\s/)
+ seeds.push(Maxmatch.new(a[0].to_i,a[1].to_i,seedlength))
+end
+maxmatches = Array.new()
+previous = nil
+seeds.sort {|a,b| compare_seeds(a,b)}.each do |val|
+ if not previous.nil?
+ if diag(previous) == diag(val) and
+ previous.aend + 1 == val.aend and
+ previous.bend + 1 == val.bend
+ previous.aend += 1
+ previous.bend += 1
+ previous.len += 1
+ else
+ extension = previous.len - seedlength
+ if extension < 0
+ STDERR.puts "not expected"
+ exit 1
+ end
+ maxmatches.push(Maxmatch.new(previous.aend - extension,
+ previous.bend - extension,
+ extension))
+ previous = val
+ end
+ else
+ previous = val
+ end
+end
+if not previous.nil?
+ extension = previous.len - seedlength
+ if extension < 0
+ STDERR.puts "not expected"
+ exit 1
+ end
+ maxmatches.push(Maxmatch.new(previous.aend - extension,
+ previous.bend - extension,
+ extension))
+end
+
+sumextensions = 0
+maxmatches.sort {|a,b| compare_maxmatches(a,b)}.each do |val|
+ sumextensions += val.len
+ puts "#{val.aend} #{val.bend} #{val.len}"
+end
+puts "# #{seeds.length} seeds"
+puts "# #{maxmatches.length} maxmatches"
+if sumextensions + maxmatches.length != seeds.length
+ STDERR.puts "not expected"
+ exit 1
+end
diff --git a/scripts/sensitivity-test.rb b/scripts/sensitivity-test.rb
index ea97ef0..1d41615 100755
--- a/scripts/sensitivity-test.rb
+++ b/scripts/sensitivity-test.rb
@@ -3,7 +3,7 @@
require 'optparse'
require 'ostruct'
require 'set'
-require_relative 'convert2myersformat'
+require_relative 'fasta'
def min(a,b)
return [a,b].sort.first
@@ -208,7 +208,7 @@ def callseedextend(mincoverage,indexname,inputfile,destfile,minidentity,length,
end
makesystemcall("#{gtcall()} seed_extend -t 21 -no-reverse " +
"-seedlength #{seedlength} -minidentity #{minidentity} " +
- "-seed-display -extendgreedy -overlappingseeds -ii #{indexname}" +
+ "-outfmt seed -extendgreedy -overlappingseeds -ii #{indexname}" +
(if bias then " -bias-parameters" else "" end) +
(if withalignment then " -a" else "" end) +
(if weakends then " -weakends" else "" end) +
diff --git a/scripts/sim-read-mapping.sh b/scripts/sim-read-mapping.sh
index f807d3e..119f75e 100755
--- a/scripts/sim-read-mapping.sh
+++ b/scripts/sim-read-mapping.sh
@@ -14,11 +14,10 @@ numreads=$1
inputfile=$2
readlength=150
readset=reads.fa
-outfile1=greedy-noweak-mye.tsv
-outfile2=greedy-weak-mye.tsv
-outfile3=greedy-noweak-nomye.tsv
-outfile4=greedy-weak-nomye.tsv
-mason_bin="../mason2/bin"
+outfile_nw_m=greedy-noweak-mye.tsv
+outfile_w_m=greedy-weak-mye.tsv
+outfile_nw_nm=greedy-noweak-nomye.tsv
+outfile_w_nm=greedy-weak-nomye.tsv
gt_bin="./bin"
#da_bin="../myers/"
@@ -29,59 +28,56 @@ $gt_bin/gt encseq encode -indexname reference -sds no -md5 no -des no ${inputfil
#$da_bin/DAZZ_DB/fasta2DB reference.db reference.fasta
#inputfile=reference.fasta
-for minid in {70..99}; do printf "\t%d" $minid; done > $outfile1
-for minid in {70..99}; do printf "\t%d" $minid; done > $outfile2
-for minid in {70..99}; do printf "\t%d" $minid; done > $outfile3
-for minid in {70..99}; do printf "\t%d" $minid; done > $outfile4
+for minid in {70..99}; do printf "\t%d" $minid; done > $outfile_nw_m
+for minid in {70..99}; do printf "\t%d" $minid; done > $outfile_w_m
+for minid in {70..99}; do printf "\t%d" $minid; done > $outfile_nw_nm
+for minid in {70..99}; do printf "\t%d" $minid; done > $outfile_w_nm
for err in {0..30}
do
- printf "\n%d" $err >> $outfile1
- printf "\n%d" $err >> $outfile2
- printf "\n%d" $err >> $outfile3
- printf "\n%d" $err >> $outfile4
+ printf "\n%d" $err >> $outfile_nw_m
+ printf "\n%d" $err >> $outfile_w_m
+ printf "\n%d" $err >> $outfile_nw_nm
+ printf "\n%d" $err >> $outfile_w_nm
indel=$(echo "scale=6; ${err}/3000"|bc)
misma=$(echo "scale=6; ${err}/100-2*${indel}"|bc)
- $mason_bin/mason_simulator -ir $inputfile -n $numreads -o ${readset} \
+ mason_simulator -ir $inputfile -n $numreads -o ${readset} \
--illumina-read-length ${readlength} --embed-read-info \
--illumina-prob-mismatch $misma \
--illumina-prob-deletion $indel \
- --illumina-prob-insert $indel
+ --illumina-prob-insert $indel \
+ --seq-strands forward
$gt_bin/gt encseq encode -indexname query -sds no -md5 no -des no ${readset}
#$gt_bin/../scripts/convert2myersformat.rb $readset > query.fasta
#$da_bin/DAZZ_DB/fasta2DB query.db query.fasta
for minid in {70..99}
do
- $gt_bin/gt seed_extend -l ${minlength} -v -seedlength 14 -maxfreq 20 -bias-parameters \
- -ii reference -qii query -minidentity $minid > tmp.matches
+ common="-l ${minlength} -v -seedlength 14 -ii reference -qii query -minidentity $minid"
+ $gt_bin/gt seed_extend ${common} -bias-parameters > tmp.matches
#$da_bin/DALIGNER/daligner -l${minlength} -I -A -Y -k14 -t21 -e0.${minid} \
# query.db reference.db > tmp.matches
#grep '^#' tmp.matches
- sensitivity=`./collect-mappings.rb ${numreads} tmp.matches`
- printf "\t${sensitivity}" >> $outfile1
+ sensitivity=`./collect-mappings.rb ${numreads} tmp.matches | grep -v '^#'`
+ printf "\t${sensitivity}" >> $outfile_nw_m
rm -f tmp.matches *.las
- $gt_bin/gt seed_extend -l ${minlength} -v -seedlength 14 -maxfreq 20 -bias-parameters \
- -ii reference -qii query -minidentity $minid -weakends > tmp.matches
- sensitivity=`./collect-mappings.rb ${numreads} tmp.matches`
- printf "\t${sensitivity}" >> $outfile2
+ $gt_bin/gt seed_extend ${common} -weakends -bias-parameters > tmp.matches
+ sensitivity=`./collect-mappings.rb ${numreads} tmp.matches | grep -v '^#'`
+ printf "\t${sensitivity}" >> $outfile_w_m
rm -f tmp.matches *.las
- $gt_bin/gt seed_extend -l ${minlength} -v -seedlength 14 -maxfreq 20 \
- -ii reference -qii query -minidentity $minid > tmp.matches
- sensitivity=`./collect-mappings.rb ${numreads} tmp.matches`
- printf "\t${sensitivity}" >> $outfile3
+ $gt_bin/gt seed_extend ${common} > tmp.matches
+ sensitivity=`./collect-mappings.rb ${numreads} tmp.matches | grep -v '^#'`
+ printf "\t${sensitivity}" >> $outfile_nw_nm
rm -f tmp.matches *.las
- $gt_bin/gt seed_extend -l ${minlength} -v -seedlength 14 -maxfreq 20 \
- -ii reference -qii query -minidentity $minid -weakends > tmp.matches
- sensitivity=`./collect-mappings.rb ${numreads} tmp.matches`
- printf "\t${sensitivity}" >> $outfile4
+ $gt_bin/gt seed_extend ${common} -weakends > tmp.matches
+ sensitivity=`./collect-mappings.rb ${numreads} tmp.matches | grep -v '^#'`
+ printf "\t${sensitivity}" >> $outfile_w_nm
rm -f tmp.matches *.las
done
rm -f ${readset} query.*
done
rm -f reference.*
-
diff --git a/scripts/single-read-mapping.sh b/scripts/single-read-mapping.sh
new file mode 100755
index 0000000..5fbe5b5
--- /dev/null
+++ b/scripts/single-read-mapping.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+set -e -x
+
+if test $# -ne 4
+then
+ echo "Usage: $0 <numreads> <inputfile> <mincoverage> <seedlength>"
+ exit 1
+fi
+numreads=$1
+inputfile=$2
+mincoverage=$3
+seedlength=$4
+readlength=150
+maxfreq=14
+minidentity=95
+readset=reads-${numreads}-ill-def.fa
+scripts/simulate-reads.rb -n $numreads -l ${readlength} -i ${inputfile}
+
+env -i bin/gt encseq encode -indexname query-idx ${readset}
+env -i bin/gt encseq encode -indexname reference-idx ${inputfile}
+minlength=`expr ${readlength} \* ${mincoverage}`
+minlength=`expr ${minlength} \/ 100`
+common="-v -ii reference-idx -qii query-idx --no-reverse -outfmt fstperquery -l ${minlength} -minidentity ${minidentity} -seedlength ${seedlength}"
+env -i bin/gt seed_extend ${common} > tmp.matches
+scripts/collect-mappings.rb ${readset} tmp.matches
+env -i bin/gt seed_extend ${common} -maxmat 2 > tmp-maxmat.matches
+scripts/collect-mappings.rb ${readset} tmp-maxmat.matches
+env -i bin/gt seed_extend ${common} -maxmat 2 -use-apos > tmp-maxmat-apos.matches
+scripts/collect-mappings.rb ${readset} tmp-maxmat-apos.matches
diff --git a/scripts/skmake.rb b/scripts/skmake.rb
index 153a1c5..efee009 100755
--- a/scripts/skmake.rb
+++ b/scripts/skmake.rb
@@ -31,7 +31,7 @@ def parseargs(argv)
options.m64 = true
options.speed = false
options.prof = false
- options.jobs = 4
+ options.jobs = 1
options.fileargs = nil
options.threads = true
options.sketch = false
@@ -68,11 +68,11 @@ def parseargs(argv)
end
def makecompilerflags(fp,options)
- if not ENV.has_key?("systemdef") or ENV["systemdef"] == "Darwin"
- extracpp = ""
- else
- wrapmemcpy="wrapmemcpy=yes"
- extracpp = "-U_FORTIFY_SOURCE -D_GNU_SOURCE"
+ wrapmemcpy=""
+ extracpp = ""
+ if ENV.has_key?("systemdef") and ENV["systemdef"] != "Darwin"
+ # wrapmemcpy="wrapmemcpy=yes"
+ # extracpp = "CPPFLAGS='-U_FORTIFY_SOURCE -D_GNU_SOURCE -fno-stack-protector'"
end
fp.print "all:\n\t\${MAKE} -j #{options.jobs} #{wrapmemcpy} with-sqlite=no"
# fp.print " CFLAGS+=-fstrict-aliasing"
@@ -96,7 +96,7 @@ def makecompilerflags(fp,options)
else
fp.print " cairo=no"
end
- fp.print " CPPFLAGS='-fno-stack-protector #{extracpp}' CC='ccache " + ENV["CC"] + "'"
+ fp.print " #{extracpp} popcnt=yes CC='ccache " + ENV["CC"] + "'"
if not options.fileargs.nil?
filenames=options.fileargs.join(" ")
fp.puts " #{filenames}"
@@ -122,4 +122,5 @@ if File.exists?('LocalMakefile.previous') and
exit 1
end
+sleep(1)
system("make -f LocalMakefile")
diff --git a/scripts/travis_installdeps.sh b/scripts/travis_installdeps.sh
new file mode 100755
index 0000000..f0b0efa
--- /dev/null
+++ b/scripts/travis_installdeps.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+echo $TRAVIS_OS_NAME
+if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+ sudo apt-get update -q
+ sudo apt-get install ncbi-blast+ gcc-multilib -y
+ sudo apt-get install binutils-mingw-w64-i686 gcc-mingw-w64-i686 -y
+ sudo apt-get install binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 -y
+else
+ brew update
+ brew install pango cairo
+ brew install homebrew/science/blast
+fi
diff --git a/scripts/alloutputoptions.rb b/scripts/turnwheel.rb
old mode 100755
new mode 100644
similarity index 55%
copy from scripts/alloutputoptions.rb
copy to scripts/turnwheel.rb
index 92c06fa..bdf7d67
--- a/scripts/alloutputoptions.rb
+++ b/scripts/turnwheel.rb
@@ -1,25 +1,14 @@
-#!/usr/bin/env ruby
-
-def turnwheels(outlist)
- numofalphabets = outlist.length
+def turnwheels(asizes)
+ numofalphabets = asizes.length
wheelspace = Array.new
alphasizes = Array.new
0.upto(numofalphabets-1) do |z|
- alphasizes[z] = 2
+ alphasizes[z] = asizes[z]
wheelspace[z] = 0
end
z = numofalphabets-1
- while true
- output = false
- 0.upto(numofalphabets-1) do |i|
- if wheelspace[i] == 1
- output = true
- print " #{outlist[i]}"
- end
- end
- if output
- puts ""
- end
+ loop do
+ yield wheelspace
stop = false
while not stop
wheelspace[z] = wheelspace[z]+1
@@ -36,5 +25,3 @@ def turnwheels(outlist)
end
end
end
-
-turnwheels(["-tis","-suf","-bwt","-lcp"])
diff --git a/src/annotationsketch/custom_track_gc_content.c b/src/annotationsketch/custom_track_gc_content.c
index ef0d0f4..694c98b 100644
--- a/src/annotationsketch/custom_track_gc_content.c
+++ b/src/annotationsketch/custom_track_gc_content.c
@@ -125,13 +125,13 @@ int gt_custom_track_gc_content_sketch(GtCustomTrack *ct, GtGraphics *graphics,
gt_graphics_get_xmargins(graphics)+ 5,
start_ypos
+ gt_graphics_get_text_height(graphics)/2 - 1,
- "100\%");
+ "100%%");
gt_graphics_draw_text(graphics,
gt_graphics_get_xmargins(graphics)+ 5,
start_ypos
+ ctgc->height
+ gt_graphics_get_text_height(graphics)/2 - 1,
- "0\%");
+ "0%%");
}
gt_graphics_draw_horizontal_line(graphics,
gt_graphics_get_xmargins(graphics),
diff --git a/src/core/accspecialrange.gen b/src/core/accspecialrange.gen
index 65a1b33..9211537 100644
--- a/src/core/accspecialrange.gen
+++ b/src/core/accspecialrange.gen
@@ -260,6 +260,56 @@ static int GT_APPENDINT(fillSWtable)(GtEncseq *encseq,
return 0;
}
+static void GT_APPENDINT(gt_ssps_in_page_append)
+ (GtUword *arr,
+ const GT_APPENDINT(GtSWtable) *swtable,
+ GtUword offset,
+ GtUword first,
+ GtUword last)
+{
+ GtUword idx, *ptr;
+
+ for (idx = first, ptr = arr; idx <= last; idx++, ptr++)
+ {
+ *ptr = offset + (GtUword) swtable->positions[idx];
+ }
+}
+
+static GtUword *GT_APPENDINT(gt_all_ssps_get)(
+ const GT_APPENDINT(GtSWtable) *swtable)
+{
+ GtUword endpos0, endpos1, pgnum, offset = 0, *ssptab, *arr;
+
+ if (swtable->numofpositionstostore == 0)
+ {
+ return NULL;
+ }
+ gt_assert(swtable->numofpages > 0 && swtable->endidxinpage != NULL);
+ /* allocate one extra byte to allow inplace transformation into sequence
+ length */
+ ssptab = gt_malloc(sizeof *ssptab * (swtable->numofpositionstostore+1));
+ arr = ssptab;
+ for (pgnum=0; pgnum < swtable->numofpages; pgnum++)
+ {
+ if (pgnum == 0)
+ {
+ endpos0 = 0;
+ } else
+ {
+ endpos0 = swtable->endidxinpage[pgnum-1];
+ }
+ endpos1 = swtable->endidxinpage[pgnum];
+ if (endpos0 < endpos1)
+ {
+ GT_APPENDINT(gt_ssps_in_page_append)(arr,swtable,offset,endpos0,
+ endpos1-1);
+ arr += endpos1 - endpos0;
+ }
+ offset += 1UL + swtable->maxrangevalue;
+ }
+ return ssptab;
+}
+
#ifdef GT_RANGEDEBUG
static void GT_APPENDINT(showSWtablewithpages)
diff --git a/src/core/alphabet.c b/src/core/alphabet.c
index bd72ae5..d9e2236 100644
--- a/src/core/alphabet.c
+++ b/src/core/alphabet.c
@@ -36,7 +36,30 @@
#include "core/xansi_api.h"
#define ALPHABET_GUESS_MAX_LENGTH 5000
-#define ALPHABET_GUESS_PROTEIN_CHARS "LIFEQPlifeqpXZ*-"
+/* To guess if a sequence is a protein sequence we check if it contains
+ symbols specific for amino acids. Specific means that the symbols
+ do not denote a nucleotide, or a set of nucleotides according to the
+ IUPAC definition. So we have the following symbols denoting
+ amino acids:
+
+ LVIFKREDAGSTNQYWPHMCXUBZ
+
+ where the last four denote a wildcard.
+
+ We have the following symbols to denote a nucleotide or a set of
+ nucleotides:
+
+ ACGTUNSYWRKVBDHM
+
+ If we subtract the latter from the former we get
+
+ LIFEQPXZ
+
+ Adding the stop symbols * and -, and allowing lower case notation,
+ we get the list of characters specific for amino acids.
+*/
+
+#define ALPHABET_GUESS_PROTEIN_CHARS "LIFEQPlifeqpXZxz*-"
struct GtAlphabet {
unsigned int domainsize, /* size of domain of symbolmap */
diff --git a/src/core/arraydef.h b/src/core/arraydef.h
index 5ba00c1..bec4c99 100644
--- a/src/core/arraydef.h
+++ b/src/core/arraydef.h
@@ -20,7 +20,7 @@
#include <inttypes.h>
#include "core/assert_api.h"
-#include "core/ma.h"
+#include "core/ma_api.h"
#include "core/types_api.h"
/*
@@ -60,16 +60,19 @@
*(A) = *(B)
/*
- GT_CHECKARRAYSPACE checks if the integer nextfree##T
- points to an index for which the space is not allocated yet. If this is
- the case, the number of cells allocated is incremented by L. The
- contents of the previously filled array elements is of course maintained.
+ GT_CHECKARRAYSPACE checks if the next (L) cells in the array have
+ been allocated. If this is not the case, then the number of cells
+ allocated is incremented by ADD, which must not be smaller than (L). The
+ contents of the previously filled array elements is of course.
*/
-#define GT_CHECKARRAYSPACE(A,TYPE,L)\
+
+#define GT_CHECKARRAYSPACE_GENERIC(A,TYPE,L,ADD)\
do {\
- if ((A)->nextfree##TYPE >= (A)->allocated##TYPE)\
+ if ((A)->nextfree##TYPE + (L) >= (A)->allocated##TYPE)\
{\
- (A)->allocated##TYPE += L;\
+ GtUword add_cells = (ADD);\
+ gt_assert((L) <= add_cells);\
+ (A)->allocated##TYPE += add_cells;\
(A)->space##TYPE = (TYPE *) gt_realloc_mem((A)->space##TYPE,\
sizeof (TYPE) *\
(A)->allocated##TYPE,\
@@ -79,21 +82,20 @@
} while (false)
/*
+ GT_CHECKARRAYSPACE checks if the integer nextfree##T
+ points to an index for which the space is not allocated yet. If this is
+ the case, the number of cells allocated is incremented by L. The
+ contents of the previously filled array elements is of course maintained.
+*/
+#define GT_CHECKARRAYSPACE(A,TYPE,L)\
+ GT_CHECKARRAYSPACE_GENERIC(A,TYPE,0,L)
+
+/*
The next macro is a variation of GT_CHECKARRAYSPACE, which checks if the next
L cells have been allocated. If not, then this is done.
*/
#define GT_CHECKARRAYSPACEMULTI(A,TYPE,L)\
- do {\
- if ((A)->nextfree##TYPE + (L) >= (A)->allocated##TYPE)\
- {\
- (A)->allocated##TYPE += L;\
- (A)->space##TYPE = (TYPE *) gt_realloc_mem((A)->space##TYPE,\
- sizeof (TYPE) *\
- (A)->allocated##TYPE,\
- __FILE__, __LINE__);\
- }\
- gt_assert((A)->space##TYPE != NULL);\
- } while (false)
+ GT_CHECKARRAYSPACE_GENERIC(A,TYPE,L,L)
/*
This macro checks the space and delivers a pointer P
@@ -134,6 +136,7 @@
*/
GT_DECLAREARRAYSTRUCT(GtUchar);
GT_DECLAREARRAYSTRUCT(GtUword);
+GT_DECLAREARRAYSTRUCT(int);
GT_DECLAREARRAYSTRUCT(char);
GT_DECLAREARRAYSTRUCT(uint32_t);
GT_DECLAREARRAYSTRUCT(uint64_t);
diff --git a/src/core/bitbuffer.c b/src/core/bitbuffer.c
index 642b2fd..d0275c6 100644
--- a/src/core/bitbuffer.c
+++ b/src/core/bitbuffer.c
@@ -16,121 +16,330 @@
*/
#include "core/ma_api.h"
+#include "core/unused_api.h"
#include "core/assert_api.h"
+#include "core/intbits.h"
#include "bitbuffer.h"
-#define GT_BITSINBYTEBUFFER 64U
-
struct GtBitbuffer
{
- unsigned int remainingbitsinbuffer,
- bitsperentry;
uint64_t currentbitbuffer,
numberofallvalues;
- FILE *outfp;
+ GtBitcount_type remainingbitsinbuffer,
+ bitsperentry,
+ bitsinbuffer;
+ uint8_t readvalue;
+ uint8_t currentuint8;
+ FILE *fp;
};
-GtBitbuffer *gt_bitbuffer_new(FILE *outfp,unsigned int bitsperentry)
+GtBitbuffer *gt_bitbuffer_FILE_new(FILE *outfp,GtBitcount_type bitsperentry)
{
- GtBitbuffer *bitbuffer = gt_malloc(sizeof *bitbuffer);
+ GtBitbuffer *bb = gt_malloc(sizeof *bb);
+ if (outfp != NULL)
+ {
+ bb->bitsinbuffer = (GtBitcount_type) sizeof bb->currentbitbuffer;
+ } else
+ {
+ gt_assert(bitsperentry == 0);
+ bb->bitsinbuffer = (GtBitcount_type) CHAR_BIT;
+ }
if (bitsperentry > 0)
{
uint8_t bitsperentry8 = (uint8_t) bitsperentry;
uint64_t writtenbits = 0;
- gt_assert(bitsperentry < GT_BITSINBYTEBUFFER && outfp != NULL);
+ gt_assert(outfp != NULL);
(void) fwrite(&writtenbits,sizeof writtenbits,(size_t) 1,outfp);
(void) fwrite(&bitsperentry8,sizeof bitsperentry8,(size_t) 1,outfp);
}
- bitbuffer->numberofallvalues = 0;
- bitbuffer->bitsperentry = bitsperentry;
- bitbuffer->currentbitbuffer = 0;
- bitbuffer->outfp = outfp;
- bitbuffer->remainingbitsinbuffer = GT_BITSINBYTEBUFFER;
- return bitbuffer;
+ bb->numberofallvalues = 0;
+ bb->bitsperentry = bitsperentry;
+ bb->currentbitbuffer = 0;
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
+ bb->currentuint8 = 0;
+ bb->fp = outfp;
+ return bb;
}
-void gt_bitbuffer_next_value(GtBitbuffer *bb, GtUword value,
- unsigned int bitsforvalue)
+GtBitbuffer *gt_bitbuffer_new(void)
{
- unsigned int bits2store = bitsforvalue;
+ return gt_bitbuffer_FILE_new(NULL,0);
+}
+void gt_bitbuffer_generic_write_FILE(GtBitbuffer *bb,
+ GtUword value,
+ GtBitcount_type bitsforvalue)
+{
+ GtBitcount_type bits2store = bitsforvalue;
+
+ gt_assert(bb != NULL && bitsforvalue <= bb->bitsinbuffer);
bb->numberofallvalues++;
while (true)
{
gt_assert(bits2store > 0);
if (bb->remainingbitsinbuffer >= bits2store)
{
- bb->currentbitbuffer |= (uint64_t) ((value >> (bitsforvalue-bits2store) )
- << (GT_BITSINBYTEBUFFER-bb->remainingbitsinbuffer));
bb->remainingbitsinbuffer -= bits2store;
+ bb->currentbitbuffer |= (uint64_t)
+ ((value & ((1UL << bits2store) - 1))
+ << bb->remainingbitsinbuffer);
break;
}
- if (bb->remainingbitsinbuffer == 0)
+ if (bb->remainingbitsinbuffer == 0) /* buffer full */
{
(void) fwrite(&bb->currentbitbuffer,sizeof bb->currentbitbuffer,
- (size_t) 1,bb->outfp);
+ (size_t) 1,bb->fp);
+ bb->currentbitbuffer = 0;
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
+ } else
+ {
+ gt_assert(bits2store > bb->remainingbitsinbuffer);
+ bits2store -= bb->remainingbitsinbuffer;
+ bb->currentbitbuffer
+ |= ((uint64_t) value >> bb->remainingbitsinbuffer);
+ bb->remainingbitsinbuffer = 0;
+ }
+ }
+}
+
+/*#define SHOWCURRENT\
+ gt_bitsequence_tostring(buffer,bb->currentbitbuffer);\
+ printf("line %3d: remain=%hu,bits=%hu\nBB=%s\n",__LINE__,\
+ bb->remainingbitsinbuffer,bitsforvalue,buffer)*/
+#define SHOWCURRENT /* Nothing */
+
+GtUword gt_bitbuffer_write_bytestring(GtBitbuffer *bb,
+ uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GT_UNUSED GtUword bytestring_length,
+ GtUword value,
+ GtBitcount_type bitsforvalue)
+{
+ GtBitcount_type bits2store = bitsforvalue;
+
+ gt_assert(bb != NULL && bb->fp == NULL);
+ bb->numberofallvalues++;
+ SHOWCURRENT;
+ while (true)
+ {
+ gt_assert(bits2store > 0);
+ if (bb->remainingbitsinbuffer >= bits2store)
+ {
+ bb->remainingbitsinbuffer -= bits2store;
+ bb->currentbitbuffer |= (uint64_t)
+ ((value & ((1UL << bits2store) - 1)) << bb->remainingbitsinbuffer);
+ SHOWCURRENT;
+ break;
+ }
+ if (bb->remainingbitsinbuffer == 0) /* buffer full */
+ {
+ SHOWCURRENT;
+ gt_assert(bytestring_offset < bytestring_length &&
+ bb->currentbitbuffer <= UINT8_MAX);
+ bytestring[bytestring_offset++] = (uint8_t) bb->currentbitbuffer;
bb->currentbitbuffer = 0;
- bb->remainingbitsinbuffer = GT_BITSINBYTEBUFFER;
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
} else
{
- gt_assert(value < (1UL << bits2store));
- bb->currentbitbuffer |= ((uint64_t) value >> (bitsforvalue-bits2store) )
- << (GT_BITSINBYTEBUFFER-bb->remainingbitsinbuffer);
+ gt_assert(bits2store > bb->remainingbitsinbuffer);
bits2store -= bb->remainingbitsinbuffer;
+ bb->currentbitbuffer |= ((uint64_t) value >> bits2store) & UINT8_MAX;
bb->remainingbitsinbuffer = 0;
+ SHOWCURRENT;
}
}
+ return bytestring_offset;
+}
+
+GtUword gt_bitbuffer_write_bytestring_bf(GtBitbuffer *bb,
+ uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GT_UNUSED GtUword bytestring_length,
+ GtUword value,
+ GtBitcount_type bitsforvalue)
+{
+ int shift;
+
+ gt_assert(bitsforvalue > 0);
+ for (shift = (int) (bitsforvalue-1); shift >= 0; shift--)
+ {
+ if (bb->remainingbitsinbuffer == 0)
+ {
+ gt_assert(bytestring_offset < bytestring_length);
+ bytestring[bytestring_offset++] = bb->currentuint8;
+ bb->currentuint8 = 0;
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
+ }
+ if (value & (1UL << shift))
+ {
+ bb->currentuint8 |= (1 << (bb->remainingbitsinbuffer-1));
+ }
+ bb->remainingbitsinbuffer--;
+ }
+ return bytestring_offset;
+}
+
+void gt_bitbuffer_write_FILE(GtBitbuffer *bb, GtUword value,
+ GtBitcount_type bitsforvalue)
+{
+ gt_assert(bb != NULL);
+ (void) gt_bitbuffer_generic_write_FILE(bb, value,bitsforvalue);
}
-void gt_bitbuffer_next_fixed_bits_value (GtBitbuffer *bb, GtUword value)
+void gt_bitbuffer_write_fixed_bits_FILE (GtBitbuffer *bb, GtUword value)
{
- gt_assert(bb->bitsperentry > 0);
- gt_bitbuffer_next_value (bb, value, bb->bitsperentry);
+ gt_assert(bb != NULL && bb->bitsperentry > 0);
+ gt_bitbuffer_write_FILE(bb, value, bb->bitsperentry);
}
-void gt_bitbuffer_next_uint32tab(GtBitbuffer *bb,const uint32_t *tab,
- GtUword len)
+void gt_bitbuffer_write_uint32tab_FILE(GtBitbuffer *bb,const uint32_t *tab,
+ GtUword len)
{
const uint32_t *uintptr;
- gt_assert (tab != NULL);
+ gt_assert (bb != NULL && tab != NULL);
for (uintptr = tab; uintptr < tab + len; uintptr++)
{
- gt_bitbuffer_next_fixed_bits_value (bb, (GtUword) *uintptr);
+ gt_bitbuffer_write_fixed_bits_FILE (bb, (GtUword) *uintptr);
}
}
-void gt_bitbuffer_next_ulongtab(GtBitbuffer *bb,
- const GtUword *tab,
- GtUword len)
+void gt_bitbuffer_write_ulongtab_FILE(GtBitbuffer *bb,
+ const GtUword *tab,
+ GtUword len)
{
const GtUword *ulongptr;
- gt_assert (tab != NULL);
+ gt_assert (bb != NULL && tab != NULL);
for (ulongptr = tab; ulongptr < tab + len; ulongptr++)
{
- gt_bitbuffer_next_fixed_bits_value (bb, *ulongptr);
+ gt_bitbuffer_write_fixed_bits_FILE(bb, *ulongptr);
}
}
-void gt_bitbuffer_delete(GtBitbuffer *bb)
+void gt_bitbuffer_flush(bool bruteforce,GtBitbuffer *bb,uint8_t *bytestring)
{
- if (bb->outfp != NULL)
+ gt_assert(bb != NULL);
+ if (bb->remainingbitsinbuffer < bb->bitsinbuffer)
{
- if (bb->remainingbitsinbuffer < GT_BITSINBYTEBUFFER)
+ if (bb->fp != NULL)
{
+ gt_assert(!bruteforce && bytestring == NULL);
(void) fwrite(&bb->currentbitbuffer,
sizeof bb->currentbitbuffer,
- (size_t) 1,bb->outfp);
+ (size_t) 1,bb->fp);
+ if (bb->bitsperentry > 0)
+ {
+ uint64_t writtenbits = bb->numberofallvalues * bb->bitsperentry;
+ (void) fseek(bb->fp,0,SEEK_SET);
+ (void) fwrite(&writtenbits,sizeof writtenbits,(size_t) 1,bb->fp);
+ }
+ } else
+ {
+ if (bruteforce)
+ {
+ *bytestring = bb->currentuint8;
+ } else
+ {
+ gt_assert(bb->fp == NULL && bb->currentbitbuffer <= UINT8_MAX);
+ *bytestring = (uint8_t) bb->currentbitbuffer;
+ }
+ }
+ }
+ bb->currentbitbuffer = 0;
+ bb->currentuint8 = 0;
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
+}
+
+void gt_bitbuffer_delete(GtBitbuffer *bb)
+{
+ if (bb != NULL)
+ {
+ if (bb->fp != NULL)
+ {
+ gt_bitbuffer_flush(false,bb,NULL);
+ }
+ gt_free(bb);
+ }
+}
+
+void gt_bitbuffer_reset_for_read(GtBitbuffer *bb)
+{
+ gt_assert(bb != NULL);
+ bb->remainingbitsinbuffer = 0;
+}
+
+GtUword gt_bitbuffer_read_bytestring(GtBitbuffer *bb,
+ GtUword *value,
+ const uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GtBitcount_type bitsforvalue)
+{
+ unsigned int bits2read = bitsforvalue;
+
+ gt_assert(bb != NULL && bb->fp == NULL && bytestring != NULL);
+ while (true)
+ {
+ if (bb->remainingbitsinbuffer == 0)
+ {
+ bb->readvalue = bytestring[bytestring_offset++];
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
+ }
+ if (bb->remainingbitsinbuffer >= bits2read)
+ {
+ bb->remainingbitsinbuffer -= bits2read;
+ if (bits2read < bb->bitsinbuffer)
+ {
+ bb->currentbitbuffer
+ |= (uint64_t) (bb->readvalue >> bb->remainingbitsinbuffer) &
+ ((((uint64_t) 1) << bits2read) - 1);
+ gt_assert(bb->currentbitbuffer < (1UL << bitsforvalue));
+ } else
+ {
+ bb->currentbitbuffer |= bb->readvalue;
+ }
+ *value = (GtUword) bb->currentbitbuffer;
+ bb->currentbitbuffer = 0;
+ break;
+ } else
+ {
+ bits2read -= bb->remainingbitsinbuffer;
+ bb->currentbitbuffer
+ |= ((((uint64_t) bb->readvalue) &
+ ((((uint64_t) 1) << bb->remainingbitsinbuffer) - 1))
+ << bits2read);
+ bb->remainingbitsinbuffer = 0;
+ }
+ }
+ return bytestring_offset;
+}
+
+GtUword gt_bitbuffer_read_bytestring_bf(GtBitbuffer *bb,
+ GtUword *value,
+ const uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GtBitcount_type bitsforvalue)
+{
+ int shift;
+
+ gt_assert(bb != NULL && bb->fp == NULL && bytestring != NULL);
+ gt_assert(bitsforvalue > 0);
+ for (shift = (int) (bitsforvalue - 1); shift >= 0; shift--)
+ {
+ if (bb->remainingbitsinbuffer == 0)
+ {
+ bb->readvalue = bytestring[bytestring_offset++];
+ bb->remainingbitsinbuffer = bb->bitsinbuffer;
}
- if (bb->bitsperentry > 0)
+ bb->remainingbitsinbuffer--;
+ if (bb->readvalue & (1 << bb->remainingbitsinbuffer))
{
- uint64_t writtenbits = bb->numberofallvalues * bb->bitsperentry;
- (void) fseek(bb->outfp,0,SEEK_SET);
- (void) fwrite(&writtenbits,sizeof writtenbits,(size_t) 1,bb->outfp);
+ bb->currentbitbuffer |= (((uint64_t) 1) << shift);
}
}
- gt_free(bb);
+ *value = (GtUword) bb->currentbitbuffer;
+ bb->currentbitbuffer = 0;
+ return bytestring_offset;
}
diff --git a/src/core/bitbuffer.h b/src/core/bitbuffer.h
index c2d9c64..24bd0d7 100644
--- a/src/core/bitbuffer.h
+++ b/src/core/bitbuffer.h
@@ -21,6 +21,7 @@
#include <inttypes.h>
#include <stdio.h>
#include "core/types_api.h"
+#include "core/unused_api.h"
/* The <GtBitbuffer> class provides means to sequentially write bit-compressed
integer arrays into a file. */
@@ -28,33 +29,80 @@ typedef struct GtBitbuffer GtBitbuffer;
/* Creates a new <GtBitbuffer> for output to <outfp>.
<bitsperentry> specifies the number of bits per entry if
- greater than 0. In this case a header is written in the input file
+ greater than 0. In this case, a header is written in the input file
consisting of a <uint64_t>-value specifying the number of elements
written and a <uint8_t> value specifying the number of bits per
entry. If <bitsperentry> is 0, then no header is written and
the number of bits for the value to be written has to be specified
for each call of <gt_bitbuffer_next_value()>. */
-GtBitbuffer* gt_bitbuffer_new(FILE *outfp, unsigned int bitsperentry);
+
+typedef uint16_t GtBitcount_type;
+
+GtBitbuffer *gt_bitbuffer_FILE_new(FILE *outfp,GtBitcount_type bitsperentry);
+
+/* Creates a new <GtBitbuffer> which does not output the stream of
+ uint64_t values to a FILE pointer, but to a uint8_t-buffer specified
+ with each call of the next_value function */
+
+GtBitbuffer *gt_bitbuffer_new(void);
/* Appends GtUword <value> of <bitsforvalue> bits to <bb>. */
-void gt_bitbuffer_next_value(GtBitbuffer *bb, GtUword value,
- unsigned int bitsforvalue);
+void gt_bitbuffer_write_FILE(GtBitbuffer *bb, GtUword value,
+ GtBitcount_type bitsforvalue);
+
+/* when the bits need to go to a bytestring rather than a FILE pointer,
+ the following function can be used */
+
+void gt_bitbuffer_generic_write_FILE(GtBitbuffer *bb,
+ GtUword value,
+ GtBitcount_type bitsforvalue);
+
+GtUword gt_bitbuffer_write_bytestring(GtBitbuffer *bb,
+ uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GT_UNUSED GtUword bytestring_length,
+ GtUword value,
+ GtBitcount_type bitsforvalue);
+
+GtUword gt_bitbuffer_write_bytestring_bf(GtBitbuffer *bb,
+ uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GT_UNUSED GtUword bytestring_length,
+ GtUword value,
+ GtBitcount_type bitsforvalue);
/* Appends GtUword <value> to <bb>. Requires that <bb> has been created
with a <bitsperentry> value > 0. */
-void gt_bitbuffer_next_fixed_bits_value(GtBitbuffer *bb,
- GtUword value);
+void gt_bitbuffer_write_fixed_bits_FILE(GtBitbuffer *bb,
+ GtUword value);
/* Appends unsigned 32-bit integer array <tab> of length <len> to <bb>. */
-void gt_bitbuffer_next_uint32tab(GtBitbuffer *bb, const uint32_t *tab,
- GtUword len);
+void gt_bitbuffer_write_uint32tab_FILE(GtBitbuffer *bb, const uint32_t *tab,
+ GtUword len);
/* Appends GtUword integer array <tab> of length <len> to <bb>. */
-void gt_bitbuffer_next_ulongtab(GtBitbuffer *bb,
- const GtUword *tab,
- GtUword len);
+
+void gt_bitbuffer_write_ulongtab_FILE(GtBitbuffer *bb,
+ const GtUword *tab,
+ GtUword len);
+
+void gt_bitbuffer_flush(bool bruteforce,GtBitbuffer *bb,uint8_t *bytestring);
/* Deletes <bb> and frees all associated memory. */
void gt_bitbuffer_delete(GtBitbuffer *bb);
+GtUword gt_bitbuffer_read_bytestring(GtBitbuffer *bb,
+ GtUword *value,
+ const uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GtBitcount_type bitsforvalue);
+
+GtUword gt_bitbuffer_read_bytestring_bf(GtBitbuffer *bb,
+ GtUword *value,
+ const uint8_t *bytestring,
+ GtUword bytestring_offset,
+ GtBitcount_type bitsforvalue);
+
+void gt_bitbuffer_reset_for_read(GtBitbuffer *bb);
+
#endif
diff --git a/src/core/bitpackstringsimpleop.h b/src/core/bitpackstringsimpleop.h
index 8d7d0d3..ef78230 100644
--- a/src/core/bitpackstringsimpleop.h
+++ b/src/core/bitpackstringsimpleop.h
@@ -397,6 +397,15 @@ gt_bsGetBit(constBitString str, BitOffset pos)
return (*p & 1 << (bitElemBits - bitTop - 1))?1:0;
}
+/* we use the buildin_popcount if a GNU compatible compiler is used
+ and the compiler option -mpopcnt is on. */
+#if defined (__GNUC__) && defined (__POPCNT__)
+static inline unsigned
+bitCountUInt32(uint32_t v)
+{
+ return __builtin_popcount(v);
+}
+#else
/*
* the following helper function counts the bits set in a 32 bit int
* see http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
@@ -411,5 +420,5 @@ bitCountUInt32(uint32_t v)
return (((v + (v >> 4)) & (uint32_t)0xF0F0F0FUL) *
(uint32_t)0x1010101UL) >> 24; /* count */
}
-
+#endif
#endif
diff --git a/src/core/colorspace.h b/src/core/colorspace.h
index d940ca3..b849145 100644
--- a/src/core/colorspace.h
+++ b/src/core/colorspace.h
@@ -21,8 +21,10 @@
#include "core/error_api.h"
#include "core/str_api.h"
-/*decode a color space coded <color_string> and writes the decoded
- plain text string to <result> */
+/* Colorspace module */
+
+/* Decode a color space coded <color_string> and writes the decoded
+ plain text string to <result> */
int gt_colorspace_decode_string(GtStr *color_string,
GtStr *result,
GtError *err);
diff --git a/src/core/csvline_reader.c b/src/core/csvline_reader.c
new file mode 100644
index 0000000..c67dc97
--- /dev/null
+++ b/src/core/csvline_reader.c
@@ -0,0 +1,302 @@
+/*
+ Copyright (c) 2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include "core/arraydef.h"
+#include "core/csvline_reader.h"
+
+struct GtCsvlineReader
+{
+ GtArraychar line;
+ GtArrayGtUword columnoffset;
+ struct
+ {
+ GtArraychar alphabet;
+ GtUword *charcount;
+ } dist;
+ bool empty;
+ char separator;
+};
+
+GtCsvlineReader *gt_csvline_reader_new(void)
+{
+ GtCsvlineReader *csvline_reader = gt_malloc(sizeof *csvline_reader);
+ gt_assert(csvline_reader != NULL);
+ GT_INITARRAY(&csvline_reader->line,char);
+ GT_INITARRAY(&csvline_reader->dist.alphabet,char);
+ GT_INITARRAY(&csvline_reader->columnoffset,GtUword);
+ csvline_reader->empty = true;
+ csvline_reader->separator = 0;
+ csvline_reader->dist.charcount
+ = gt_calloc(UCHAR_MAX+1,sizeof *csvline_reader->dist.charcount);
+ return csvline_reader;
+}
+
+static void csvline_reader_append_char(GtCsvlineReader *csvline_reader,char cc)
+{
+ GT_STOREINARRAY(&csvline_reader->line,char,1024UL,cc);
+ if (csvline_reader->dist.charcount[(int) cc] == 0)
+ {
+ GT_STOREINARRAY(&csvline_reader->dist.alphabet,char,256UL,cc);
+ }
+ csvline_reader->dist.charcount[(int) cc]++;
+}
+
+void gt_csvline_reader_delete(GtCsvlineReader *csvline_reader)
+{
+ if (csvline_reader != NULL)
+ {
+ GT_FREEARRAY(&csvline_reader->columnoffset,GtUword);
+ GT_FREEARRAY(&csvline_reader->line,char);
+ GT_FREEARRAY(&csvline_reader->dist.alphabet,char);
+ gt_free(csvline_reader->dist.charcount);
+ gt_free(csvline_reader);
+ }
+}
+
+void gt_csvline_reader_clear(GtCsvlineReader *csvline_reader)
+{
+ GtUword idx;
+
+ csvline_reader->line.nextfreechar = 0;
+ for (idx = 0; idx < csvline_reader->dist.alphabet.nextfreechar; idx++)
+ {
+ char cc = csvline_reader->dist.alphabet.spacechar[idx];
+ csvline_reader->dist.charcount[(int) cc] = 0;
+ }
+ csvline_reader->dist.alphabet.nextfreechar = 0;
+ for (idx = 0; idx <= UCHAR_MAX; idx++)
+ {
+ gt_assert(csvline_reader->dist.charcount[idx] == 0);
+ }
+ csvline_reader->columnoffset.nextfreeGtUword = 0;
+ csvline_reader->empty = true;
+}
+
+bool gt_csvline_reader_next(GtCsvlineReader *csvline_reader,
+ FILE *inputfp,char separator)
+{
+ gt_assert(csvline_reader != NULL);
+ gt_csvline_reader_clear(csvline_reader);
+ csvline_reader->separator = separator;
+ while (true)
+ {
+ int cc = fgetc(inputfp);
+
+ if (cc == EOF)
+ {
+ break;
+ }
+ if (cc == '\n')
+ {
+ csvline_reader_append_char(csvline_reader,'\0');
+ return true;
+ }
+ if (cc == csvline_reader->separator)
+ {
+ csvline_reader_append_char(csvline_reader,cc);
+ GT_CHECKARRAYSPACE(&csvline_reader->columnoffset,GtUword,1024);
+ csvline_reader->columnoffset.spaceGtUword[csvline_reader->
+ columnoffset.nextfreeGtUword++]
+ = csvline_reader->line.nextfreechar;
+ } else
+ {
+ if (csvline_reader->empty && !isspace(cc))
+ {
+ csvline_reader->empty = false;
+ }
+ csvline_reader_append_char(csvline_reader,cc);
+ }
+ }
+ return false;
+}
+
+bool gt_csvline_reader_white_space_line(const GtCsvlineReader *csvline_reader)
+{
+ return csvline_reader->empty;
+}
+
+GtCsvcolumn gt_csvline_reader_column(const GtCsvlineReader *csvline_reader,
+ GtUword colnum)
+{
+ GtCsvcolumn col;
+
+ gt_assert(csvline_reader != NULL &&
+ !gt_csvline_reader_white_space_line(csvline_reader));
+ if (colnum == 0)
+ {
+ gt_assert(csvline_reader->line.nextfreechar >= 2UL);
+ col.content = csvline_reader->line.spacechar;
+ } else
+ {
+ gt_assert(colnum - 1 < csvline_reader->columnoffset.nextfreeGtUword);
+ col.content = csvline_reader->line.spacechar +
+ csvline_reader->columnoffset.spaceGtUword[colnum-1];
+ }
+ if (colnum == 0)
+ {
+ col.width = csvline_reader->columnoffset.spaceGtUword[colnum] - 1;
+ } else
+ {
+ if (colnum == csvline_reader->columnoffset.nextfreeGtUword)
+ {
+ col.width = csvline_reader->line.nextfreechar -
+ csvline_reader->columnoffset.spaceGtUword[colnum-1] - 1;
+ } else
+ {
+ col.width = csvline_reader->columnoffset.spaceGtUword[colnum] -
+ csvline_reader->columnoffset.spaceGtUword[colnum-1] - 1;
+ }
+ }
+ return col;
+}
+
+void gt_csvline_reader_check(const GtCsvlineReader *csvline_reader)
+{
+ GtUword idx, bfdist[UCHAR_MAX+1] = {0};
+
+ for (idx = 0; idx < csvline_reader->line.nextfreechar; idx++)
+ {
+ bfdist[(int) csvline_reader->line.spacechar[idx]]++;
+ }
+ for (idx = 0; idx <= UCHAR_MAX; idx++)
+ {
+ if (bfdist[idx] != csvline_reader->dist.charcount[idx])
+ {
+ fprintf(stderr,"%s\nidx=" GT_WU ",bfdist=" GT_WU " != "
+ GT_WU " = chardist\n",
+ csvline_reader->line.spacechar,idx,bfdist[idx],
+ csvline_reader->dist.charcount[idx]);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ }
+}
+
+GtUword gt_csvline_reader_column_number(const GtCsvlineReader *csvline_reader)
+{
+ if (gt_csvline_reader_white_space_line(csvline_reader))
+ {
+ return 0;
+ }
+ return csvline_reader->columnoffset.nextfreeGtUword + 1;
+}
+
+void gt_csvline_reader_dist_only_for_column(GtCsvlineReader *csvline_reader,
+ GtUword colnum)
+{
+ GtUword idx, write_idx,
+ numofcols = gt_csvline_reader_column_number(csvline_reader);
+
+ gt_assert(numofcols > 0 && colnum < numofcols &&
+ csvline_reader->dist.charcount[(int) csvline_reader->separator]
+ == numofcols - 1);
+ csvline_reader->dist.charcount[(int) csvline_reader->separator] = 0;
+ gt_assert(csvline_reader->dist.charcount[(int) '\0'] == 1);
+ csvline_reader->dist.charcount[(int) '\0'] = 0;
+ for (idx = 0; idx < numofcols; idx++)
+ {
+ if (idx != colnum)
+ {
+ GtCsvcolumn col = gt_csvline_reader_column(csvline_reader,idx);
+ GtUword j;
+
+ for (j = 0; j < col.width; j++)
+ {
+ char currentcc = col.content[j];
+ gt_assert(csvline_reader->dist.charcount[(int) currentcc] > 0);
+ csvline_reader->dist.charcount[(int) currentcc]--;
+ }
+ }
+ }
+ for (idx = 0, write_idx = 0;
+ idx < csvline_reader->dist.alphabet.nextfreechar; idx++)
+ {
+ char currentcc = csvline_reader->dist.alphabet.spacechar[idx];
+ if (csvline_reader->dist.charcount[(int) currentcc] > 0)
+ {
+ if (write_idx < idx)
+ {
+ csvline_reader->dist.alphabet.spacechar[write_idx] = currentcc;
+ }
+ write_idx++;
+ }
+ }
+ csvline_reader->dist.alphabet.nextfreechar = write_idx;
+}
+
+void gt_csvline_reader_dist_check(const GtCsvlineReader *csvline_reader,
+ const char *string,GtUword len)
+{
+ GtUword idx, numchars = 0, dist_tab[UCHAR_MAX+1] = {0};
+
+ for (idx = 0; idx < len; idx++)
+ {
+ dist_tab[(int) string[idx]]++;
+ }
+ for (idx = 0; idx <= UCHAR_MAX; idx++)
+ {
+ gt_assert(dist_tab[idx] == csvline_reader->dist.charcount[idx]);
+ if (csvline_reader->dist.charcount[idx] > 0)
+ {
+ numchars++;
+ }
+ }
+#ifndef NDEBUG
+ gt_assert(numchars == csvline_reader->dist.alphabet.nextfreechar);
+ for (idx = 0; idx < numchars; idx++)
+ {
+ char cc = csvline_reader->dist.alphabet.spacechar[idx];
+ gt_assert(csvline_reader->dist.charcount[(int) cc] > 0);
+ }
+#endif
+}
+
+void gt_csvline_reader_dist_show(const GtCsvlineReader *csvline_reader)
+{
+ GtUword idx;
+
+ for (idx = 0; idx < csvline_reader->dist.alphabet.nextfreechar; idx++)
+ {
+ char cc = csvline_reader->dist.alphabet.spacechar[idx];
+ printf("%c/" GT_WU,cc,csvline_reader->dist.charcount[(int) cc]);
+ if (idx + 1 < csvline_reader->dist.alphabet.nextfreechar)
+ {
+ printf("%c",csvline_reader->separator);
+ } else
+ {
+ printf("\n");
+ }
+ }
+}
+
+void gt_csvline_reader_dist_accumulate(GtUword *charcount,
+ GT_UNUSED GtUword max_character,
+ const GtCsvlineReader *csvline_reader)
+{
+ GtUword idx;
+
+ for (idx = 0; idx < csvline_reader->dist.alphabet.nextfreechar; idx++)
+ {
+ char cc = csvline_reader->dist.alphabet.spacechar[idx];
+ gt_assert(cc <= max_character);
+ charcount[(int) cc] += csvline_reader->dist.charcount[(int) cc];
+ }
+}
diff --git a/src/core/csvline_reader.h b/src/core/csvline_reader.h
new file mode 100644
index 0000000..f452ede
--- /dev/null
+++ b/src/core/csvline_reader.h
@@ -0,0 +1,85 @@
+/*
+ Copyright (c) 2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef CSVLINE_READER_H
+#define CSVLINE_READER_H
+#include <stdbool.h>
+#include "core/types_api.h"
+#include "core/unused_api.h"
+
+/* Objects of the <GtCsvlineReader> represents the machinery to
+ read files consisting of columns separated by a single separator
+ character, aka comma separated values.
+ The object does not save the lines, but uses the same
+ internal structures for each line. So the user is responsible to
+ save the contents appropriately. A <GtCsvlineReader>-reader reads each
+ character of a line exactly once and maintains the character
+ distribution for the entire line. */
+typedef struct GtCsvlineReader GtCsvlineReader;
+/* returns an empty reader. We do not pass a file pointer here
+ since we want to be able to read different files one after the
+ other, so that only the next-method gets the file pointer. */
+GtCsvlineReader *gt_csvline_reader_new(void);
+/* delete the reader */
+void gt_csvline_reader_delete(GtCsvlineReader *csvline_reader);
+/* clear the internal state, i.e. everything is set as if nothing was
+ read yet. */
+void gt_csvline_reader_clear(GtCsvlineReader *csvline_reader);
+/* try to read the next line via the <FILE>-pointer <inputfp> and use the
+ <separator> to separate the columns. Return <true> on success
+ and store the line in <csvline_reader>. If there is no more
+ line left, return <false>. */
+bool gt_csvline_reader_next(GtCsvlineReader *csvline_reader,
+ FILE *inputfp,char separator);
+/* Each column of a line is represented by the following struct.
+ The content of the return column is NOT a \0-terminated string. */
+typedef struct
+{
+ const char *content; /* content of the column */
+ GtUword width; /* number of character column consists of */
+} GtCsvcolumn;
+
+/* Return the number of columns of the current line read by
+ <csvline_reader>. */
+GtUword gt_csvline_reader_column_number(const GtCsvlineReader *csvline_reader);
+/* Return the column with the given number <colnum>. Columns are counted
+ from 0. A <colnum> not in the proper range leads to a failed assertion. */
+GtCsvcolumn gt_csvline_reader_column(const GtCsvlineReader *csvline_reader,
+ GtUword colnum);
+/* Return <true> iff the current line only contains white spaces. */
+bool gt_csvline_reader_white_space_line(const GtCsvlineReader *csvline_reader);
+/* While the <GtCsvlineReader>-reader maintains the distribution of the
+ characters for the entire line, it is often required to obtain the
+ character distribution for a single column, whose number is not known
+ when reading the line. In such a situation the following method can
+ be used. It subtracts the contribution of the characters in all columns
+ except for the column number <colnum>, from the character distribution.
+ In this way, the remaining distribution is the one for the
+ specified column. The original distribution is not saved.
+ This method is efficient for cases where the
+ chosen column is much longer than all the other columns of the line. */
+void gt_csvline_reader_dist_only_for_column(GtCsvlineReader *csvline_reader,
+ GtUword colnum);
+/* We currently only provide a single method to access the character
+ distribution. The following method adds the character distribution
+ of the current line the to array pointed to by <charcount>. This must
+ be an array one longer than the <max_character> parameter.
+ So <UCHAR_MAX+1> is an appropriate size of the array. */
+void gt_csvline_reader_dist_accumulate(GtUword *charcount,
+ GT_UNUSED GtUword max_character,
+ const GtCsvlineReader *csvline_reader);
+#endif
diff --git a/src/core/encseq.c b/src/core/encseq.c
index 514d5a8..b3bbe50 100644
--- a/src/core/encseq.c
+++ b/src/core/encseq.c
@@ -710,9 +710,9 @@ bool gt_encseq_contains_special(const GtEncseq *encseq,
static void showGtRange(const GtRange *range)
{
if (range->start + 1 == range->end)
- printf(""GT_WU"", range->start);
+ printf(GT_WU, range->start);
else
- printf(""GT_WU", "GT_WU"", range->start, range->end);
+ printf(GT_WU ", " GT_WU, range->start, range->end);
}
#endif
@@ -1946,7 +1946,7 @@ void gt_encseq_delete(GtEncseq *encseq)
if (encseq->mappedptr != NULL) {
if (encseq->bitpackarray != NULL) {
/* store points to some subarea of the region mapped by mappedptr:
- therefor we have to set it to NULL to prevent that it is freed */
+ therefore we have to set it to NULL to prevent that it is freed */
BITPACKARRAYSTOREVAR(encseq->bitpackarray) = NULL;
bitpackarray_delete(encseq->bitpackarray);
encseq->bitpackarray = NULL;
@@ -2128,7 +2128,7 @@ static void showallSWtablewithpages(GtEncseqAccessType sat,
}
}
-static void showallSWtables(const GtEncseq *encseq)
+void showallSWtables(const GtEncseq *encseq)
{
if (encseq->accesstype_via_utables) {
if (encseq->has_wildcardranges) {
@@ -3194,6 +3194,44 @@ static GtUword gt_encseq_seqstartpos_viautables(const GtEncseq *encseq,
}
}
+GtUword *gt_all_sequence_separators_get(const GtEncseq *encseq)
+{
+ switch (encseq->satsep) {
+ case GT_ACCESS_TYPE_UCHARTABLES:
+ return gt_all_ssps_get_uchar(&encseq->ssptab.st_uchar);
+ case GT_ACCESS_TYPE_USHORTTABLES:
+ return gt_all_ssps_get_uint16(&encseq->ssptab.st_uint16);
+ case GT_ACCESS_TYPE_UINT32TABLES:
+ return gt_all_ssps_get_uint32(&encseq->ssptab.st_uint32);
+ default: return NULL; /* which means that all sequences are of the
+ same length */
+ }
+}
+
+GtUword *gt_all_sequence_lengths_get(const GtEncseq *encseq)
+{
+ GtUword idx, previousstart = 0,
+ *ssptab = gt_all_sequence_separators_get(encseq);
+ const GtUword numofsequences = gt_encseq_num_of_sequences(encseq),
+ totallength = gt_encseq_total_length(encseq);;
+
+ if (ssptab == NULL)
+ {
+ return NULL; /* all sequences are of the same length */
+ }
+ gt_assert(numofsequences > 0);
+ for (idx = 0; idx < numofsequences - 1; idx++)
+ {
+ GtUword nextsep = ssptab[idx];
+ gt_assert(previousstart < nextsep);
+ ssptab[idx] = nextsep - previousstart;
+ previousstart = nextsep + 1;
+ }
+ gt_assert(previousstart < totallength);
+ ssptab[idx] = totallength - previousstart;
+ return ssptab;
+}
+
static bool containsSWViatables(const GtEncseq *encseq,
GtEncseqReader *esr,
GtUword startpos,
@@ -5061,7 +5099,7 @@ static void updatesumranges(GtUword key, GtUint64 value,
+= currentspecialrangevalue(key, distvalue, (GtUword) UINT32_MAX);
updatesumrangeinfo->realranges += distvalue;
gt_logger_log(updatesumrangeinfo->logger,
- "%sranges of length "GT_WU"="GT_WU"",
+ "%sranges of length " GT_WU "=" GT_WU,
updatesumrangeinfo->kind, key, distvalue);
}
@@ -5488,7 +5526,7 @@ static int gt_inputfiles2sequencekeyvalues(const char *indexname,
#if !(defined (_LP64) || defined (_WIN64))
#define MAXSFXLENFOR32BIT 4294000000UL
if (currentpos > MAXSFXLENFOR32BIT) {
- gt_error_set(err, "input sequence must not be longer than "GT_WU"",
+ gt_error_set(err, "input sequence must not be longer than " GT_WU,
MAXSFXLENFOR32BIT);
haserr = true;
break;
@@ -7105,7 +7143,7 @@ static void checkextractunitatpos(const GtEncseq *encseq,
twobitencodingstoppos);
extract2bitenc_bruteforce(fwd, &ptbe2, encseq, startpos);
if (ptbe1.unitsnotspecial != ptbe2.unitsnotspecial) {
- fprintf(stderr, "fwd=%s, complement=%s: pos "GT_WU""
+ fprintf(stderr, "fwd=%s, complement=%s: pos " GT_WU
": fast.unitsnotspecial = %u "
" != %u = brute.unitsnotspecial\n",
fwd ? "true" : "false",
@@ -7157,7 +7195,7 @@ static void checkextractspecialbits(const GtEncseq *encseq, bool fwd)
char buffer[GT_INTWORDSIZE+1];
gt_bitsequence_tostring(buffer, spbits2);
- fprintf(stderr, "%sextractspecialbits at startpos "GT_WU""
+ fprintf(stderr, "%sextractspecialbits at startpos " GT_WU
" (unitsnotspecial=%u)\n correct=%s!=\n",
fwd ? "fwd" : "rev",
startpos, unitsnotspecial, buffer);
@@ -7287,7 +7325,7 @@ static void showcharacterdistribution(const GtEncseq *encseq, GtLogger *logger)
numofchars = gt_alphabet_num_of_chars(encseq->alpha);
gt_assert(encseq->headerptr.characterdistribution != NULL);
for (idx=0; idx<numofchars; idx++) {
- gt_logger_log(logger, "occurrences(%c)="GT_WU"",
+ gt_logger_log(logger, "occurrences(%c)=" GT_WU,
(int) gt_alphabet_pretty_symbol(encseq->alpha, idx),
gt_encseq_charcount(encseq, (GtUchar) idx));
}
@@ -7309,21 +7347,21 @@ void gt_encseq_show_features(const GtEncseq *encseq,
effectivelength));
}
}
- gt_logger_log(logger, "totallength="GT_WU"",
+ gt_logger_log(logger, "totallength=" GT_WU,
gt_encseq_total_length(encseq));
- gt_logger_log(logger, "numofsequences="GT_WU"",
+ gt_logger_log(logger, "numofsequences=" GT_WU,
encseq->logicalnumofdbsequences);
- gt_logger_log(logger, "specialcharacters="GT_WU"",
+ gt_logger_log(logger, "specialcharacters=" GT_WU,
gt_encseq_specialcharacters(encseq));
- gt_logger_log(logger, "specialranges="GT_WU"",
+ gt_logger_log(logger, "specialranges=" GT_WU,
gt_encseq_specialranges(encseq));
- gt_logger_log(logger, "realspecialranges="GT_WU"",
+ gt_logger_log(logger, "realspecialranges=" GT_WU,
gt_encseq_realspecialranges(encseq));
- gt_logger_log(logger, "wildcards="GT_WU"",
+ gt_logger_log(logger, "wildcards=" GT_WU,
gt_encseq_wildcards(encseq));
- gt_logger_log(logger, "wildcardranges="GT_WU"",
+ gt_logger_log(logger, "wildcardranges=" GT_WU,
gt_encseq_wildcardranges(encseq));
- gt_logger_log(logger, "realwildcardranges="GT_WU"",
+ gt_logger_log(logger, "realwildcardranges=" GT_WU,
gt_encseq_realwildcardranges(encseq));
gt_assert(encseq->headerptr.characterdistribution != NULL);
@@ -7716,8 +7754,8 @@ static void runscanatpostrial(const GtEncseq *encseq,
ccra = gt_encseq_get_encoded_char(encseq, pos, readmode);
ccsr = gt_encseq_reader_next_encoded_char(esr);
if (ccra != ccsr) {
- fprintf(stderr, "startpos = "GT_WU""
- " access=%s, mode=%s: position="GT_WU""
+ fprintf(stderr, "startpos = " GT_WU
+ " access=%s, mode=%s: position="GT_WU
": random access (correct) = %u != %u = "
" sequential read (wrong)\n",
startpos,
@@ -7844,7 +7882,7 @@ static int testfullscan(const GtStrArray *filenametab,
ccra = gt_encseq_get_encoded_char(encseq, pos, readmode);
if (filenametab != NULL && readmode == GT_READMODE_FORWARD) {
if (ccscan != ccra) {
- gt_error_set(err, "access=%s, position="GT_WU""
+ gt_error_set(err, "access=%s, position=" GT_WU
": scan (readnextchar) = %u != "
"%u = random access",
gt_encseq_accessname(encseq),
@@ -7857,7 +7895,7 @@ static int testfullscan(const GtStrArray *filenametab,
}
ccsr = gt_encseq_reader_next_encoded_char(esr);
if (ccra != ccsr) {
- gt_error_set(err, "access=%s, mode=%s: position="GT_WU""
+ gt_error_set(err, "access=%s, mode=%s: position="GT_WU
": random access = %u != %u = sequential read",
gt_encseq_accessname(encseq),
gt_readmode_show(readmode),
@@ -7873,7 +7911,7 @@ static int testfullscan(const GtStrArray *filenametab,
}
if (!haserr) {
if (pos != totallength) {
- gt_error_set(err, "sequence length must be "GT_WU" but is "GT_WU"",
+ gt_error_set(err, "sequence length must be "GT_WU" but is " GT_WU,
totallength, pos);
haserr = true;
}
@@ -7896,14 +7934,14 @@ int gt_encseq_check_minmax(const GtEncseq *encseq, GtError *err)
for (i = 0UL; !had_err && i < gt_encseq_num_of_sequences(encseq); i++) {
if (min > gt_encseq_seqlength(encseq, i)) {
gt_error_set(err, "sequence "GT_WU" has length "GT_WU", but "
- "indexed minimum is "
- ""GT_WU"", i, gt_encseq_seqlength(encseq, i), min);
+ "indexed minimum is " GT_WU, i,
+ gt_encseq_seqlength(encseq, i), min);
had_err = -1;
}
if (!had_err && max < gt_encseq_seqlength(encseq, i)) {
gt_error_set(err, "sequence "GT_WU" has length "GT_WU", but "
- "indexed maximum is "
- ""GT_WU"", i, gt_encseq_seqlength(encseq, i), max);
+ "indexed maximum is " GT_WU, i,
+ gt_encseq_seqlength(encseq, i), max);
had_err = -1;
}
}
diff --git a/src/core/encseq.h b/src/core/encseq.h
index e4d6b47..e7c1c94 100644
--- a/src/core/encseq.h
+++ b/src/core/encseq.h
@@ -518,13 +518,30 @@ GtUword gt_encseq_equallength(const GtEncseq *encseq);
given <encseq>. */
GtMD5Tab* gt_encseq_get_md5_tab(const GtEncseq *encseq, GtError *err);
-/* for a given array of at least one separator positions */
+/* for a given array of at least one separator positions, store the
+ ssptab in the file indexname.ssp */
int gt_encseq_seppos2ssptab(const char *indexname,
GtUword totallength,
GtUword numofdbsequences,
const GtUword *seppostab,
GtError *err);
+/* for a given <Gtencseq>-object whicht represents sequences not all
+ of the same length, return an array of all separator positions.
+ If all sequences are of the same length, then return <NULL>. This
+ last case holds, for example, if the <GtEncseq>-object holds only
+ one sequence. */
+
+GtUword *gt_all_sequence_separators_get(const GtEncseq *encseq);
+
+/* for a given <Gtencseq>-object whicht represents sequences not all
+ of the same length, return an array of all sequences lengths.
+ If all sequences are of the same length, then return <NULL>. This
+ last case holds, for example, if the <GtEncseq>-object holds only
+ one sequence. */
+
+GtUword *gt_all_sequence_lengths_get(const GtEncseq *encseq);
+
/* The following functions are for testing */
#ifndef NDEBUG
diff --git a/src/core/fptr_api.h b/src/core/fptr_api.h
index 35005cd..0c5180f 100644
--- a/src/core/fptr_api.h
+++ b/src/core/fptr_api.h
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2006-2008 Gordon Gremme <gremme@@zbh.uni-hamburg.de>
+ Copyright (c) 2006-2008 Gordon Gremme <gremme at zbh.uni-hamburg.de>
Copyright (c) 2006-2008 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
diff --git a/src/core/gtdatapath.c b/src/core/gtdatapath.c
index f28402f..ef33daa 100644
--- a/src/core/gtdatapath.c
+++ b/src/core/gtdatapath.c
@@ -20,6 +20,7 @@
#include "core/compat.h"
#include "core/fileutils.h"
#include "core/gtdatapath.h"
+#include "core/log_api.h"
#ifndef _WIN32
#define GTDATADIR "/gtdata"
@@ -35,10 +36,14 @@ static const char* GTDATA_DEFAULT_PATHS[]
"/usr/local/share/genometools" GTDATADIR,
NULL };
+static const char* GTDATA_RELATIVE_SEARCH_PATHS[]
+ = { UPDIR "/share/genometools" GTDATADIR,
+ NULL };
+
GtStr* gt_get_gtdata_path(const char *prog, GtError *err)
{
GtStr *path;
- const char **defaultpath;
+ const char **defaultpath, **spath;
int had_err = 0;
gt_error_check(err);
gt_assert(prog);
@@ -55,6 +60,14 @@ GtStr* gt_get_gtdata_path(const char *prog, GtError *err)
if (gt_file_exists_and_is_dir(gt_str_get(path)))
return path;
}
+ for (spath = GTDATA_RELATIVE_SEARCH_PATHS; *spath; spath++) {
+ had_err = gt_file_find_exec_in_path(path, prog, err);
+ if (!had_err) {
+ gt_str_append_cstr(path, *spath);
+ if (gt_file_exists_and_is_dir(gt_str_get(path)))
+ return path;
+ }
+ }
for (defaultpath = GTDATA_DEFAULT_PATHS; *defaultpath; defaultpath++) {
gt_str_reset(path);
gt_str_append_cstr(path, *defaultpath);
diff --git a/src/core/mail_address.h b/src/core/mail_address.h
index 8923fd0..c1f746d 100644
--- a/src/core/mail_address.h
+++ b/src/core/mail_address.h
@@ -18,6 +18,6 @@
#ifndef MAIL_ADDRESS_H
#define MAIL_ADDRESS_H
-#define GT_MAIL_ADDRESS "<gt-users at genometools.org>"
+#define GT_MAIL_ADDRESS "https://github.com/genometools/genometools/issues"
#endif
diff --git a/src/core/radix_sort.c b/src/core/radix_sort.c
index d03fd01..e3a22d3 100644
--- a/src/core/radix_sort.c
+++ b/src/core/radix_sort.c
@@ -50,6 +50,7 @@
#include <stdint.h>
#include <string.h>
#include <limits.h>
+#include "core/unused_api.h"
#include "core/array2dim_api.h"
#include "core/assert_api.h"
#include "core/divmodmul.h"
@@ -234,6 +235,7 @@ typedef union
GtUword *ulongptr;
GtUwordPair *ulongpairptr;
Gtuint64keyPair *uint64keypairptr;
+ uint8_t *flbaptr; /* fixed length byte array */
} GtRadixvalues;
typedef struct
@@ -254,80 +256,106 @@ typedef struct
int log_bufsize;
GtRadixelemtype elemtype;
GtRadixvalues values;
- size_t size;
+ size_t size, unitsize;
+ uint8_t *tmpvalue_ptr, *tmpswap_ptr;
} GtRadixbuffer;
static GtRadixbuffer *gt_radixbuffer_new(GtRadixelemtype elemtype)
{
- GtRadixbuffer *buf;
-
- buf = gt_malloc(sizeof *buf);
- buf->size = sizeof *buf;
- buf->log_bufsize = 5;
- buf->buf_size = 1UL << buf->log_bufsize;
- gt_assert(buf->buf_size <= UINT8_MAX);
- buf->cachesize = (UINT8_MAX+1) << buf->log_bufsize;
- buf->elemtype = elemtype;
+ GtRadixbuffer *rbuf;
+ size_t thissize;
+
+ rbuf = gt_malloc(sizeof *rbuf);
+ rbuf->size = sizeof *rbuf;
+ rbuf->log_bufsize = 5;
+ rbuf->buf_size = 1UL << rbuf->log_bufsize;
+ gt_assert(rbuf->buf_size <= UINT8_MAX);
+ rbuf->cachesize = (UINT8_MAX+1) << rbuf->log_bufsize;
+ rbuf->elemtype = elemtype;
+ if (elemtype <= GtRadixelemtypeGtuint64keyPair)
+ {
+ rbuf->unitsize = 0;
+ } else
+ {
+ rbuf->unitsize = (size_t) elemtype -
+ (size_t) GtRadixelemtypeGtuint64keyPair;
+ }
+ rbuf->tmpvalue_ptr = rbuf->tmpswap_ptr = NULL;
if (elemtype == GtRadixelemtypeGtUwordPair)
{
- buf->values.ulongpairptr = gt_malloc(sizeof *buf->values.ulongpairptr *
- buf->cachesize);
- buf->size += sizeof (*buf->values.ulongpairptr) * buf->cachesize;
+ thissize = sizeof (*rbuf->values.ulongpairptr) * rbuf->cachesize;
+ rbuf->values.ulongpairptr = gt_malloc(thissize);
} else
{
if (elemtype == GtRadixelemtypeGtUword)
{
- buf->values.ulongptr = gt_malloc(sizeof *buf->values.ulongptr *
- buf->cachesize);
- buf->size += sizeof *buf->values.ulongptr * buf->cachesize;
+ thissize = sizeof *rbuf->values.ulongptr * rbuf->cachesize;
+ rbuf->values.ulongptr = gt_malloc(thissize);
} else
{
- buf->values.uint64keypairptr
- = gt_malloc(sizeof *buf->values.uint64keypairptr *
- buf->cachesize);
- buf->size += sizeof *buf->values.uint64keypairptr *
- buf->cachesize;
+ if (elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ thissize = sizeof *rbuf->values.uint64keypairptr * rbuf->cachesize;
+ rbuf->values.uint64keypairptr = gt_malloc(thissize);
+ } else
+ {
+ rbuf->tmpvalue_ptr = gt_malloc(rbuf->unitsize);
+ rbuf->tmpswap_ptr = gt_malloc(rbuf->unitsize);
+ thissize = sizeof *rbuf->values.flbaptr * rbuf->unitsize *
+ rbuf->cachesize;
+ rbuf->values.flbaptr = gt_malloc(thissize);
+ thissize += 2 * rbuf->unitsize;
+ }
}
}
- buf->startofbin = gt_malloc(sizeof *buf->startofbin * (UINT8_MAX + 2));
- buf->size += sizeof *buf->startofbin * (UINT8_MAX + 2);
- buf->endofbin = gt_malloc(sizeof *buf->endofbin * (UINT8_MAX + 1));
- buf->size += sizeof *buf->endofbin * (UINT8_MAX + 1);
- buf->nextidx = gt_malloc(sizeof *buf->nextidx * (UINT8_MAX + 1));
- buf->size += sizeof *buf->nextidx * (UINT8_MAX + 1);
- buf->countcached = buf->countuncached = buf->countinsertionsort = 0;
- return buf;
+ rbuf->size += thissize;
+ rbuf->startofbin = gt_malloc(sizeof *rbuf->startofbin * (UINT8_MAX + 2));
+ rbuf->size += sizeof *rbuf->startofbin * (UINT8_MAX + 2);
+ rbuf->endofbin = gt_malloc(sizeof *rbuf->endofbin * (UINT8_MAX + 1));
+ rbuf->size += sizeof *rbuf->endofbin * (UINT8_MAX + 1);
+ rbuf->nextidx = gt_malloc(sizeof *rbuf->nextidx * (UINT8_MAX + 1));
+ rbuf->size += sizeof *rbuf->nextidx * (UINT8_MAX + 1);
+ rbuf->countcached = rbuf->countuncached = rbuf->countinsertionsort = 0;
+ return rbuf;
}
-static size_t gt_radixbuffer_size(const GtRadixbuffer *buf)
+static size_t gt_radixbuffer_size(const GtRadixbuffer *rbuf)
{
- return buf->size;
+ return rbuf->size;
}
-static void gt_radixbuffer_delete(GtRadixbuffer *buf)
+static void gt_radixbuffer_delete(GtRadixbuffer *rbuf)
{
- gt_assert(buf != NULL);
- if (buf->elemtype == GtRadixelemtypeGtUwordPair)
+ gt_assert(rbuf != NULL);
+ if (rbuf->elemtype == GtRadixelemtypeGtUwordPair)
{
- gt_free(buf->values.ulongpairptr);
+ gt_free(rbuf->values.ulongpairptr);
} else
{
- if (buf->elemtype == GtRadixelemtypeGtUword)
+ if (rbuf->elemtype == GtRadixelemtypeGtUword)
{
- gt_free(buf->values.ulongptr);
+ gt_free(rbuf->values.ulongptr);
} else
{
- gt_free(buf->values.uint64keypairptr);
+ if (rbuf->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_free(rbuf->values.uint64keypairptr);
+ } else
+ {
+ gt_free(rbuf->tmpvalue_ptr);
+ gt_free(rbuf->tmpswap_ptr);
+ gt_free(rbuf->values.flbaptr);
+ }
}
}
- gt_free(buf->nextidx);
- gt_free(buf->startofbin);
- gt_free(buf->endofbin);
- gt_free(buf);
+ gt_free(rbuf->nextidx);
+ gt_free(rbuf->startofbin);
+ gt_free(rbuf->endofbin);
+ gt_free(rbuf);
}
-static bool gt_radixsort_compare_smaller(const Gtuint64keyPair *ptr1,
- const Gtuint64keyPair *ptr2)
+static bool gt_radixsort_uint64keypair_smaller(const Gtuint64keyPair *ptr1,
+ const Gtuint64keyPair *ptr2)
{
return (ptr1->uint64_a < ptr2->uint64_a ||
(ptr1->uint64_a == ptr2->uint64_a && ptr1->uint64_b < ptr2->uint64_b))
@@ -337,6 +365,7 @@ static bool gt_radixsort_compare_smaller(const Gtuint64keyPair *ptr1,
#include "core/radixsort-ip-ulong.inc"
#include "core/radixsort-ip-ulongpair.inc"
#include "core/radixsort-ip-uint64keypair.inc"
+#include "core/radixsort-ip-flba.inc"
#ifdef GT_THREADS_ENABLED
typedef struct
@@ -359,8 +388,14 @@ static void *gt_radixsort_thread_caller(void *data)
gt_radixsort_ulong_sub_inplace(threadinfo->rbuf,&threadinfo->stack);
} else
{
- gt_radixsort_uint64keypair_sub_inplace(threadinfo->rbuf,
- &threadinfo->stack);
+ if (threadinfo->rbuf->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_radixsort_uint64keypair_sub_inplace(threadinfo->rbuf,
+ &threadinfo->stack);
+ } else
+ {
+ gt_radixsort_flba_sub_inplace(threadinfo->rbuf,&threadinfo->stack);
+ }
}
}
return NULL;
@@ -395,29 +430,33 @@ static GtRadixsortinfo *gt_radixsort_new(GtRadixelemtype elemtype,
radixsortinfo->maxlen = maxlen;
if (maxlen > 0)
{
+ size_t thissize;
+
if (elemtype == GtRadixelemtypeGtUwordPair)
{
- radixsortinfo->sortspace.ulongpairptr
- = gt_malloc(sizeof *radixsortinfo->sortspace.ulongpairptr * maxlen);
- radixsortinfo->size += sizeof *radixsortinfo->sortspace.ulongpairptr
- * maxlen;
+ thissize = sizeof *radixsortinfo->sortspace.ulongpairptr * maxlen;
+ radixsortinfo->sortspace.ulongpairptr = gt_malloc(thissize);
} else
{
if (elemtype == GtRadixelemtypeGtUword)
{
- radixsortinfo->sortspace.ulongptr
- = gt_malloc(sizeof *radixsortinfo->sortspace.ulongptr * maxlen);
- radixsortinfo->size += sizeof *radixsortinfo->sortspace.ulongptr
- * maxlen;
+ thissize = sizeof *radixsortinfo->sortspace.ulongptr * maxlen;
+ radixsortinfo->sortspace.ulongptr = gt_malloc(thissize);
} else
{
- radixsortinfo->sortspace.uint64keypairptr
- = gt_malloc(sizeof *radixsortinfo->sortspace.uint64keypairptr
- * maxlen);
- radixsortinfo->size
- += sizeof *radixsortinfo->sortspace.uint64keypairptr * maxlen;
+ if (elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ thissize = sizeof *radixsortinfo->sortspace.uint64keypairptr * maxlen;
+ radixsortinfo->sortspace.uint64keypairptr = gt_malloc(thissize);
+ } else
+ {
+ thissize = sizeof *radixsortinfo->sortspace.flbaptr *
+ radixsortinfo->rbuf->unitsize * maxlen;
+ radixsortinfo->sortspace.flbaptr = gt_malloc(thissize);
+ }
}
}
+ radixsortinfo->size += thissize;
}
GT_STACK_INIT(&radixsortinfo->stack,32UL);
radixsortinfo->size += sizeof radixsortinfo->stack;
@@ -466,6 +505,12 @@ GtRadixsortinfo *gt_radixsort_new_uint64keypair(GtUword maxlen)
return gt_radixsort_new(GtRadixelemtypeGtuint64keyPair,maxlen);
}
+GtRadixsortinfo *gt_radixsort_new_flba(GtUword maxlen,size_t unitsize)
+{
+ gt_assert(unitsize > 0);
+ return gt_radixsort_new(GtRadixelemtypeGtuint64keyPair + unitsize,maxlen);
+}
+
size_t gt_radixsort_size(const GtRadixsortinfo *radixsortinfo)
{
return radixsortinfo->size;
@@ -503,7 +548,13 @@ void gt_radixsort_delete(GtRadixsortinfo *radixsortinfo)
gt_free(radixsortinfo->sortspace.ulongptr);
} else
{
- gt_free(radixsortinfo->sortspace.uint64keypairptr);
+ if (radixsortinfo->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_free(radixsortinfo->sortspace.uint64keypairptr);
+ } else
+ {
+ gt_free(radixsortinfo->sortspace.flbaptr);
+ }
}
}
}
@@ -528,12 +579,19 @@ GtUword gt_radixsort_max_num_of_entries_uint64keypair(size_t memlimit)
return (GtUword) memlimit/sizeof(Gtuint64keyPair);
}
+GtUword gt_radixsort_max_num_of_entries_flba(size_t memlimit,size_t unitsize)
+{
+ gt_assert(unitsize > 0);
+ return (GtUword) memlimit/(sizeof(uint8_t) * unitsize);
+}
+
static void gt_radixsort_inplace(GtRadixsortinfo *radixsortinfo,
GtRadixvalues *radixvalues,
GtUword len)
{
const size_t shift = (sizeof (GtUword) - 1) * CHAR_BIT;
const size_t doubleshift = (2 * sizeof (GtUword) - 1) * CHAR_BIT;
+ const size_t flba_index = 0;
#ifdef GT_THREADS_ENABLED
const unsigned int threads = GT_THREADS_JOBS;
#else
@@ -561,9 +619,17 @@ static void gt_radixsort_inplace(GtRadixsortinfo *radixsortinfo,
(GtCountbasetype) len,shift);
} else
{
- gt_radixsort_uint64keypair_shuffle(radixsortinfo->rbuf,
- radixvalues->uint64keypairptr,
- (GtCountbasetype) len,doubleshift);
+ if (radixsortinfo->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_radixsort_uint64keypair_shuffle(radixsortinfo->rbuf,
+ radixvalues->uint64keypairptr,
+ (GtCountbasetype) len,doubleshift);
+ } else
+ {
+ gt_radixsort_flba_shuffle(radixsortinfo->rbuf,
+ radixvalues->flbaptr,
+ (GtCountbasetype) len,flba_index);
+ }
}
}
GT_STACK_MAKEEMPTY(&radixsortinfo->stack);
@@ -582,10 +648,19 @@ static void gt_radixsort_inplace(GtRadixsortinfo *radixsortinfo,
radixvalues->ulongptr,shift);
} else
{
- gt_radixsort_uint64keypair_process_bin(&radixsortinfo->stack,
- radixsortinfo->rbuf,
- radixvalues->uint64keypairptr,
- doubleshift);
+ if (radixsortinfo->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_radixsort_uint64keypair_process_bin(&radixsortinfo->stack,
+ radixsortinfo->rbuf,
+ radixvalues->uint64keypairptr,
+ doubleshift);
+ } else
+ {
+ gt_radixsort_flba_process_bin(&radixsortinfo->stack,
+ radixsortinfo->rbuf,
+ radixvalues->flbaptr,
+ flba_index);
+ }
}
}
if (threads == 1U || radixsortinfo->stack.nextfree < (GtUword) threads)
@@ -602,8 +677,15 @@ static void gt_radixsort_inplace(GtRadixsortinfo *radixsortinfo,
&radixsortinfo->stack);
} else
{
- gt_radixsort_uint64keypair_sub_inplace(radixsortinfo->rbuf,
- &radixsortinfo->stack);
+ if (radixsortinfo->elemtype == GtRadixelemtypeGtuint64keyPair)
+ {
+ gt_radixsort_uint64keypair_sub_inplace(radixsortinfo->rbuf,
+ &radixsortinfo->stack);
+ } else
+ {
+ gt_radixsort_flba_sub_inplace(radixsortinfo->rbuf,
+ &radixsortinfo->stack);
+ }
}
}
} else
@@ -676,6 +758,17 @@ void gt_radixsort_inplace_Gtuint64keyPair(Gtuint64keyPair *source,GtUword len)
gt_radixsort_delete(radixsortinfo);
}
+void gt_radixsort_inplace_flba(uint8_t *source,GtUword len,size_t unitsize)
+{
+ GtRadixvalues radixvalues;
+ GtRadixsortinfo *radixsortinfo;
+
+ radixsortinfo = gt_radixsort_new_flba(0,unitsize);
+ radixvalues.flbaptr = source;
+ gt_radixsort_inplace(radixsortinfo,&radixvalues,len);
+ gt_radixsort_delete(radixsortinfo);
+}
+
void gt_radixsort_inplace_sort(GtRadixsortinfo *radixsortinfo,GtUword len)
{
gt_radixsort_inplace(radixsortinfo,&radixsortinfo->sortspace,len);
@@ -699,3 +792,13 @@ Gtuint64keyPair *gt_radixsort_space_uint64keypair(
gt_assert(radixsortinfo->elemtype == GtRadixelemtypeGtUwordPair);
return radixsortinfo->sortspace.uint64keypairptr;
}
+
+size_t gt_radixsort_bits(GtUword maxvalue)
+{
+ return (size_t) ceil(log2((double) maxvalue));
+}
+
+size_t gt_radixsort_bits2bytes(size_t bits)
+{
+ return bits/CHAR_BIT + ((bits % CHAR_BIT == 0) ? 0 : 1);
+}
diff --git a/src/core/radix_sort.h b/src/core/radix_sort.h
index db387de..b3af27f 100644
--- a/src/core/radix_sort.h
+++ b/src/core/radix_sort.h
@@ -129,4 +129,15 @@ Gtuint64keyPair* gt_radixsort_space_uint64keypair(
/* Delete a <GtRadixsortinfo> object. */
void gt_radixsort_delete(GtRadixsortinfo *radixsortinfo);
+/* XXX: to be documented */
+GtUword gt_radixsort_max_num_of_entries_flba(size_t memlimit,size_t unitsize);
+
+void gt_radixsort_inplace_flba(uint8_t *source,GtUword len,size_t unitsize);
+
+size_t gt_radixsort_flba_unitsize(GtUword maxvalue);
+
+size_t gt_radixsort_bits(GtUword maxvalue);
+
+size_t gt_radixsort_bits2bytes(size_t bits);
+
#endif
diff --git a/src/core/radixsort-ip-flba.inc b/src/core/radixsort-ip-flba.inc
new file mode 100644
index 0000000..a5fe048
--- /dev/null
+++ b/src/core/radixsort-ip-flba.inc
@@ -0,0 +1,364 @@
+static uint8_t *gt_radixsort_flba_bin_get(
+ const GtRadixbuffer *rbuf,
+ GtUword binnum)
+{
+ return rbuf->values.flbaptr +
+ ((binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]) * rbuf->unitsize;
+}
+static inline void gt_radixsort_flba_bin_update(
+ uint8_t *source,
+ GtRadixbuffer *rbuf,
+ GtUword binnum,
+ const uint8_t* value)
+{
+ GtUword binoffset = binnum << rbuf->log_bufsize;
+
+ memcpy(rbuf->values.flbaptr
+ + (binoffset + (GtUword) rbuf->nextidx[binnum]) * rbuf->unitsize,
+value,rbuf->unitsize);
+ if ((GtUword) rbuf->nextidx[binnum] < rbuf->buf_size - 1)
+ {
+ rbuf->nextidx[binnum]++;
+ } else
+ {
+ GtUword j;
+ uint8_t *wsourceptr, *rsourceptr, *rend, *valptr;
+
+ wsourceptr = source +
+ (rbuf->endofbin[binnum] - (rbuf->buf_size - 1))
+ * rbuf->unitsize;
+ rsourceptr = wsourceptr + rbuf->buf_size * rbuf->unitsize;
+ rend = source + rbuf->startofbin[binnum+1] * rbuf->unitsize;
+ valptr = rbuf->values.flbaptr +
+ binoffset * rbuf->unitsize;
+ for (j=0; j<rbuf->buf_size; j++)
+ {
+ memcpy(wsourceptr,valptr,rbuf->unitsize);
+ wsourceptr += rbuf->unitsize;
+ if (rsourceptr < rend)
+ {
+ memcpy(valptr,rsourceptr,rbuf->unitsize);
+ rsourceptr += rbuf->unitsize;
+ }
+ valptr += rbuf->unitsize;
+ }
+ rbuf->nextidx[binnum] = 0;
+ }
+ rbuf->endofbin[binnum]++;
+}
+
+static void gt_radixsort_flba_cached_shuffle(GtRadixbuffer *rbuf,
+ uint8_t *source,
+ GtCountbasetype len,
+ size_t rightshift)
+{
+ GtUword binoffset, binnum, bufoffset,
+ nextbin, firstnonemptybin = UINT8_MAX+1;
+ GtCountbasetype *count, previouscount, currentidx;
+ uint8_t *sourceptr,
+ *sourceend = source + len * rbuf->unitsize;
+
+ rbuf->countcached++;
+ count = rbuf->startofbin; /* use same memory for count and startofbin */
+ for (binnum = 0; binnum <= UINT8_MAX; binnum++)
+ {
+ count[binnum] = 0;
+ rbuf->nextidx[binnum] = 0;
+ }
+ for (sourceptr = source; sourceptr < sourceend; sourceptr += rbuf->unitsize)
+ {
+ count[sourceptr[rightshift]]++;
+ }
+ for (bufoffset = 0, binoffset = 0, binnum = 0; binnum <= UINT8_MAX;
+ bufoffset += rbuf->buf_size, binoffset += count[binnum], binnum++)
+ {
+ const GtUword elems2copy = MIN(rbuf->buf_size,(GtUword) count[binnum]);
+
+ if (elems2copy > 0)
+ {
+ if (firstnonemptybin == UINT8_MAX+1)
+ {
+ firstnonemptybin = binnum;
+ }
+ memcpy(rbuf->values.
+ flbaptr + bufoffset * rbuf->unitsize,
+ source + binoffset * rbuf->unitsize,
+ (sizeof *source * elems2copy) * rbuf->unitsize);
+ }
+ }
+ previouscount = count[0];
+ rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
+ nextbin = 0;
+ for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
+ {
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
+ previouscount = count[binnum];
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
+ }
+ /* to simplify compution of bin end */
+ rbuf->startofbin[UINT8_MAX+1] = len;
+ for (currentidx = 0, binnum = firstnonemptybin;
+ currentidx < len; binnum = nextbin - 1)
+ {
+ /* no decl. */
+ memcpy(rbuf->tmpvalue_ptr,gt_radixsort_flba_bin_get(rbuf,binnum),
+rbuf->unitsize);
+ while (true)
+ {
+ binnum = rbuf->tmpvalue_ptr[rightshift];
+ if (currentidx != rbuf->endofbin[binnum])
+ {
+ /* no decl. */
+ memcpy(rbuf->tmpswap_ptr,rbuf->tmpvalue_ptr,
+rbuf->unitsize);
+ memcpy(rbuf->tmpvalue_ptr,gt_radixsort_flba_bin_get(rbuf,binnum),
+rbuf->unitsize);
+ gt_radixsort_flba_bin_update
+ (source,rbuf,binnum,
+ rbuf->tmpswap_ptr);
+ } else
+ {
+ break;
+ }
+ }
+ gt_radixsort_flba_bin_update(source,rbuf,binnum,
+ rbuf->tmpvalue_ptr);
+ currentidx++;
+ /* skip over empty bins */
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
+ {
+ nextbin++;
+ }
+ /* skip over full bins */
+ while (nextbin <= UINT8_MAX &&
+ rbuf->endofbin[nextbin-1] == rbuf->startofbin[nextbin])
+ {
+ nextbin++;
+ }
+ if (currentidx < rbuf->endofbin[nextbin-1])
+ {
+ currentidx = rbuf->endofbin[nextbin-1];
+ }
+ }
+ for (binnum = 0; binnum <= UINT8_MAX; binnum++)
+ {
+ GtUword bufleft = (GtUword) rbuf->nextidx[binnum];
+
+ if (bufleft > 0)
+ {
+ uint8_t *sourceptr, *valptr;
+
+ valptr = rbuf->values.flbaptr +
+ (binnum << rbuf->log_bufsize) * rbuf->unitsize;
+ sourceptr = source +
+ (rbuf->startofbin[binnum+1] - bufleft) * rbuf->unitsize;
+ memcpy(sourceptr,valptr,(sizeof *sourceptr * bufleft) * rbuf->unitsize);
+ }
+ }
+}
+
+static void gt_radixsort_flba_uncached_shuffle(
+ GtRadixbuffer *rbuf,
+ uint8_t *source,
+ GtCountbasetype len,
+ size_t rightshift)
+{
+ GtUword binnum, nextbin;
+ GtCountbasetype currentidx, previouscount, *count;
+ uint8_t *sourceptr,
+ *sourceend = source + len * rbuf->unitsize;
+
+ rbuf->countuncached++;
+ count = rbuf->startofbin; /* use same memory for count and startofbin */
+ for (binnum = 0; binnum <= UINT8_MAX; binnum++)
+ {
+ count[binnum] = 0;
+ rbuf->nextidx[binnum] = 0;
+ }
+ for (sourceptr = source; sourceptr < sourceend; sourceptr += rbuf->unitsize)
+ {
+ count[sourceptr[rightshift]]++;
+ }
+ previouscount = count[0];
+ rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
+ nextbin = 0;
+ for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
+ {
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
+ previouscount = count[binnum];
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
+ }
+ /* to simplify compution of bin end */
+ rbuf->startofbin[UINT8_MAX+1] = len;
+ for (currentidx = 0; currentidx < len; /* Nothing */)
+ {
+ GtCountbasetype *binptr;
+ /* no decl. */
+ memcpy(rbuf->tmpvalue_ptr,source + (currentidx) * rbuf->unitsize,
+rbuf->unitsize);
+
+ while (true)
+ {
+ binptr = rbuf->endofbin +
+ (rbuf->tmpvalue_ptr[rightshift]);
+ binnum = *binptr;
+ if (currentidx != binnum)
+ {
+ /* no decl. */
+ memcpy(rbuf->tmpswap_ptr,rbuf->tmpvalue_ptr,
+rbuf->unitsize);
+ memcpy(rbuf->tmpvalue_ptr,source + (binnum) * rbuf->unitsize,
+rbuf->unitsize);
+ memcpy(source + (binnum) * rbuf->unitsize,
+rbuf->tmpswap_ptr,rbuf->unitsize);
+ (*binptr)++;
+ } else
+ {
+ break;
+ }
+ }
+ memcpy(source + (binnum) * rbuf->unitsize,
+rbuf->tmpvalue_ptr,rbuf->unitsize);
+ currentidx++;
+ (*binptr)++;
+ /* skip over empty bins */
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
+ {
+ nextbin++;
+ }
+ /* skip over full bins */
+ while (nextbin <= UINT8_MAX &&
+ rbuf->endofbin[nextbin-1] == rbuf->startofbin[nextbin])
+ {
+ nextbin++;
+ }
+ if (currentidx < rbuf->endofbin[nextbin-1])
+ {
+ currentidx = rbuf->endofbin[nextbin-1];
+ }
+ }
+}
+
+static void gt_radixsort_flba_shuffle(GtRadixbuffer *rbuf,
+ uint8_t *source,
+ GtCountbasetype len,
+ size_t rightshift)
+{
+ gt_assert(rbuf != NULL);
+ if ((GtUword) len > rbuf->cachesize)
+ {
+ gt_radixsort_flba_cached_shuffle(rbuf,source,len,rightshift);
+ } else
+ {
+ gt_radixsort_flba_uncached_shuffle(rbuf,source,len,
+ rightshift);
+ }
+}
+
+static void
+gt_radixsort_flba_inplace_insertionsort(
+ GT_UNUSED GtRadixbuffer *rbuf,
+ uint8_t *arr,
+ GtCountbasetype a_size)
+{
+ uint8_t *optr,
+ *end = arr + a_size * rbuf->unitsize;
+
+ for (optr = arr + 1 * rbuf->unitsize; optr < end;
+ optr += rbuf->unitsize)
+ {
+ uint8_t *oprevious = optr - 1 * rbuf->unitsize;
+
+ if (memcmp(optr,oprevious,rbuf->unitsize) < 0)
+ {
+ uint8_t *iptr;
+ /* no decl. */
+ memcpy(rbuf->tmpvalue_ptr,optr,
+rbuf->unitsize);
+
+ memcpy(optr,oprevious,rbuf->unitsize);
+ for (iptr = oprevious; iptr > arr; iptr -= 1 * rbuf->unitsize)
+ {
+ uint8_t *iprevious = iptr - 1 * rbuf->unitsize;
+ if (!(memcmp(rbuf->tmpvalue_ptr,iprevious,rbuf->unitsize) < 0))
+ {
+ break;
+ }
+ memcpy(iptr,iprevious,rbuf->unitsize);
+ }
+ memcpy(iptr,rbuf->tmpvalue_ptr,
+rbuf->unitsize);
+ }
+ }
+}
+
+static void gt_radixsort_flba_process_bin(
+ GtStackGtRadixsort_stackelem *stack,
+ GtRadixbuffer *rbuf,
+ uint8_t *source,
+ size_t shift)
+{
+ GtUword binnum;
+
+ for (binnum = 0; binnum <= UINT8_MAX; binnum++)
+ {
+ GtCountbasetype width = rbuf->endofbin[binnum] - rbuf->startofbin[binnum];
+
+ if (width >= (GtCountbasetype) 2)
+ {
+ uint8_t *ptr
+ = source + rbuf->startofbin[binnum] * rbuf->unitsize;
+
+ if (width == (GtCountbasetype) 2)
+ {
+ uint8_t *nextptr = ptr + 1 * rbuf->unitsize;
+ if (memcmp(nextptr,ptr,rbuf->unitsize) < 0)
+ {
+ /* no decl. */
+ memcpy(rbuf->tmpswap_ptr,ptr,
+rbuf->unitsize);
+ memcpy(ptr,nextptr,rbuf->unitsize);
+ memcpy(nextptr,rbuf->tmpswap_ptr,
+rbuf->unitsize);
+ }
+ } else
+ {
+ if (width <= (GtCountbasetype) 32)
+ {
+ rbuf->countinsertionsort++;
+ gt_radixsort_flba_inplace_insertionsort(rbuf,ptr,width);
+ } else
+ {
+ GtRadixsort_stackelem tmpstackelem;
+
+ tmpstackelem.left.flbaptr = ptr;
+ tmpstackelem.len = width;
+ tmpstackelem.shift = shift+1;
+ GT_STACK_PUSH(stack,tmpstackelem);
+ }
+ }
+ }
+ }
+}
+
+static void gt_radixsort_flba_sub_inplace(GtRadixbuffer *rbuf,
+ GtStackGtRadixsort_stackelem *stack)
+{
+ GtRadixsort_stackelem currentstackelem;
+
+ while (!GT_STACK_ISEMPTY(stack))
+ {
+ currentstackelem = GT_STACK_POP(stack);
+ gt_radixsort_flba_shuffle(rbuf,
+ currentstackelem.left.flbaptr,
+ currentstackelem.len,
+ currentstackelem.shift);
+ if (currentstackelem.shift < rbuf->unitsize-1)
+ {
+ (void) gt_radixsort_flba_process_bin(stack,rbuf,
+ currentstackelem.left.flbaptr,
+ currentstackelem.shift);
+ }
+ }
+}
diff --git a/src/core/radixsort-ip-uint64keypair.inc b/src/core/radixsort-ip-uint64keypair.inc
index 31dea7f..4783390 100644
--- a/src/core/radixsort-ip-uint64keypair.inc
+++ b/src/core/radixsort-ip-uint64keypair.inc
@@ -2,38 +2,44 @@ static Gtuint64keyPair gt_radixsort_uint64keypair_bin_get(
const GtRadixbuffer *rbuf,
GtUword binnum)
{
- return rbuf->values.uint64keypairptr[(binnum << rbuf->log_bufsize) +
- (GtUword) rbuf->nextidx[binnum]];
+ return rbuf->values.uint64keypairptr[
+ (binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]];
}
-
-static void gt_radixsort_uint64keypair_bin_update(
- Gtuint64keyPair *target,
+static inline void gt_radixsort_uint64keypair_bin_update(
+ Gtuint64keyPair *source,
GtRadixbuffer *rbuf,
GtUword binnum,
Gtuint64keyPair value)
{
GtUword binoffset = binnum << rbuf->log_bufsize;
- rbuf->values.uint64keypairptr[binoffset +
- (GtUword) rbuf->nextidx[binnum]] = value;
+ rbuf->values.uint64keypairptr
+[binoffset + (GtUword) rbuf->nextidx[binnum]]=
+value;
if ((GtUword) rbuf->nextidx[binnum] < rbuf->buf_size - 1)
{
rbuf->nextidx[binnum]++;
} else
{
GtUword j;
- Gtuint64keyPair *wtargetptr, *rtargetptr, *rend, *valptr;
+ Gtuint64keyPair *wsourceptr, *rsourceptr, *rend, *valptr;
- wtargetptr = target + rbuf->endofbin[binnum] - (rbuf->buf_size - 1);
- rtargetptr = wtargetptr + rbuf->buf_size;
- rend = target + rbuf->startofbin[binnum+1];
- valptr = rbuf->values.uint64keypairptr + binoffset;
+ wsourceptr = source +
+ (rbuf->endofbin[binnum] - (rbuf->buf_size - 1))
+;
+ rsourceptr = wsourceptr + rbuf->buf_size;
+ rend = source + rbuf->startofbin[binnum+1];
+ valptr = rbuf->values.uint64keypairptr +
+ binoffset;
for (j=0; j<rbuf->buf_size; j++)
{
- *wtargetptr++ = *valptr;
- if (rtargetptr < rend)
+ *wsourceptr = *valptr;
+ wsourceptr++;
+ if (rsourceptr < rend)
{
- *valptr = *rtargetptr++;
+ *valptr = *rsourceptr;
+ rsourceptr++;
}
valptr++;
}
@@ -49,8 +55,9 @@ static void gt_radixsort_uint64keypair_cached_shuffle(GtRadixbuffer *rbuf,
{
GtUword binoffset, binnum, bufoffset,
nextbin, firstnonemptybin = UINT8_MAX+1;
- GtCountbasetype *count, previouscount, current;
- Gtuint64keyPair *sp, *spend = source + len;
+ GtCountbasetype *count, previouscount, currentidx;
+ Gtuint64keyPair *sourceptr,
+ *sourceend = source + len;
rbuf->countcached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -59,27 +66,28 @@ static void gt_radixsort_uint64keypair_cached_shuffle(GtRadixbuffer *rbuf,
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
count[(rightshift > (sizeof (GtUword) - 1) * CHAR_BIT) ?
GT_RADIX_KEY(UINT8_MAX,rightshift - sizeof (GtUword) * CHAR_BIT,
-sp->uint64_a) :
-GT_RADIX_KEY(UINT8_MAX,rightshift,sp->uint64_b)]++;
+sourceptr->uint64_a) :
+GT_RADIX_KEY(UINT8_MAX,rightshift,sourceptr->uint64_b)]++;
}
for (bufoffset = 0, binoffset = 0, binnum = 0; binnum <= UINT8_MAX;
bufoffset += rbuf->buf_size, binoffset += count[binnum], binnum++)
{
- GtUword j;
- const GtUword end = MIN(rbuf->buf_size,(GtUword) count[binnum]);
+ const GtUword elems2copy = MIN(rbuf->buf_size,(GtUword) count[binnum]);
- if (firstnonemptybin == UINT8_MAX+1 && end > 0)
- {
- firstnonemptybin = binnum;
- }
- for (j=0; j<end; j++)
+ if (elems2copy > 0)
{
- rbuf->values.uint64keypairptr[bufoffset + j] =
- source[binoffset + j];
+ if (firstnonemptybin == UINT8_MAX+1)
+ {
+ firstnonemptybin = binnum;
+ }
+ memcpy(rbuf->values.
+ uint64keypairptr + bufoffset,
+ source + binoffset,
+ (sizeof *source * elems2copy));
}
}
previouscount = count[0];
@@ -87,38 +95,41 @@ GT_RADIX_KEY(UINT8_MAX,rightshift,sp->uint64_b)]++;
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0, binnum = firstnonemptybin;
- current < len; binnum = nextbin - 1)
+ for (currentidx = 0, binnum = firstnonemptybin;
+ currentidx < len; binnum = nextbin - 1)
{
- Gtuint64keyPair currentvalue =
- gt_radixsort_uint64keypair_bin_get(rbuf,binnum);
+ Gtuint64keyPair tmpvalue;
+ tmpvalue = gt_radixsort_uint64keypair_bin_get(rbuf,binnum);
while (true)
{
binnum = (rightshift > (sizeof (GtUword) - 1) * CHAR_BIT) ?
GT_RADIX_KEY(UINT8_MAX,rightshift - sizeof (GtUword) * CHAR_BIT,
-currentvalue.uint64_a) :
-GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.uint64_b);
- if (current != rbuf->endofbin[binnum])
+tmpvalue.uint64_a) :
+GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue.uint64_b);
+ if (currentidx != rbuf->endofbin[binnum])
{
- Gtuint64keyPair tmp = currentvalue;
- currentvalue = gt_radixsort_uint64keypair_bin_get(rbuf,binnum);
- gt_radixsort_uint64keypair_bin_update(source,rbuf,binnum,tmp);
+ Gtuint64keyPair tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = gt_radixsort_uint64keypair_bin_get(rbuf,binnum);
+ gt_radixsort_uint64keypair_bin_update
+ (source,rbuf,binnum,
+ tmpswap);
} else
{
break;
}
}
gt_radixsort_uint64keypair_bin_update(source,rbuf,binnum,
- currentvalue);
- current++;
+ tmpvalue);
+ currentidx++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -128,9 +139,9 @@ GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.uint64_b);
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
for (binnum = 0; binnum <= UINT8_MAX; binnum++)
@@ -139,16 +150,13 @@ GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.uint64_b);
if (bufleft > 0)
{
- GtUword j;
- Gtuint64keyPair *targetptr, *valptr;
+ Gtuint64keyPair *sourceptr, *valptr;
- valptr =
- rbuf->values.uint64keypairptr + (binnum << rbuf->log_bufsize);
- targetptr = source + rbuf->startofbin[binnum+1] - bufleft;
- for (j=0; j < bufleft; j++)
- {
- targetptr[j] = valptr[j];
- }
+ valptr = rbuf->values.uint64keypairptr +
+ (binnum << rbuf->log_bufsize);
+ sourceptr = source +
+ (rbuf->startofbin[binnum+1] - bufleft);
+ memcpy(sourceptr,valptr,(sizeof *sourceptr * bufleft));
}
}
}
@@ -160,8 +168,9 @@ static void gt_radixsort_uint64keypair_uncached_shuffle(
size_t rightshift)
{
GtUword binnum, nextbin;
- Gtuint64keyPair *sp, *spend = source + len;
- GtCountbasetype current, previouscount, *count;
+ GtCountbasetype currentidx, previouscount, *count;
+ Gtuint64keyPair *sourceptr,
+ *sourceend = source + len;
rbuf->countuncached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -170,51 +179,55 @@ static void gt_radixsort_uint64keypair_uncached_shuffle(
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
count[(rightshift > (sizeof (GtUword) - 1) * CHAR_BIT) ?
GT_RADIX_KEY(UINT8_MAX,rightshift - sizeof (GtUword) * CHAR_BIT,
-sp->uint64_a) :
-GT_RADIX_KEY(UINT8_MAX,rightshift,sp->uint64_b)]++;
+sourceptr->uint64_a) :
+GT_RADIX_KEY(UINT8_MAX,rightshift,sourceptr->uint64_b)]++;
}
previouscount = count[0];
rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0; current < len; /* Nothing */)
+ for (currentidx = 0; currentidx < len; /* Nothing */)
{
- Gtuint64keyPair currentvalue = source[current];
GtCountbasetype *binptr;
+ Gtuint64keyPair tmpvalue;
+ tmpvalue = source[currentidx];
while (true)
{
binptr = rbuf->endofbin +
((rightshift > (sizeof (GtUword) - 1) * CHAR_BIT) ?
GT_RADIX_KEY(UINT8_MAX,rightshift - sizeof (GtUword) * CHAR_BIT,
-currentvalue.uint64_a) :
-GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.uint64_b));
- if (current != *binptr)
+tmpvalue.uint64_a) :
+GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue.uint64_b));
+ binnum = *binptr;
+ if (currentidx != binnum)
{
- Gtuint64keyPair tmp = currentvalue;
- currentvalue = source[*binptr];
- source[*binptr] = tmp;
+ Gtuint64keyPair tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = source[binnum];
+ source[binnum] = tmpswap;
(*binptr)++;
} else
{
break;
}
}
- source[current++] = currentvalue;
+ source[binnum] = tmpvalue;
+ currentidx++;
(*binptr)++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -224,9 +237,9 @@ GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.uint64_b));
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
}
@@ -248,25 +261,36 @@ static void gt_radixsort_uint64keypair_shuffle(GtRadixbuffer *rbuf,
}
static void
-gt_radixsort_uint64keypair_inplace_insertionsort(Gtuint64keyPair *a,
- GtCountbasetype a_size)
+gt_radixsort_uint64keypair_inplace_insertionsort(
+ GT_UNUSED GtRadixbuffer *rbuf,
+ Gtuint64keyPair *arr,
+ GtCountbasetype a_size)
{
- Gtuint64keyPair *optr, *iptr, *end = a + a_size;
+ Gtuint64keyPair *optr,
+ *end = arr + a_size;
- for (optr = a + 1; optr < end; optr++)
+ for (optr = arr + 1; optr < end;
+ optr++)
{
- if (gt_radixsort_compare_smaller(optr,(optr-1)))
+ Gtuint64keyPair *oprevious = optr - 1;
+
+ if (gt_radixsort_uint64keypair_smaller(optr,oprevious))
{
- Gtuint64keyPair currentElement = *optr;
+ Gtuint64keyPair *iptr;
+ Gtuint64keyPair tmpvalue;
+ tmpvalue = *optr;
- *optr = *(optr-1);
- for (iptr = optr-1;
- iptr > a && gt_radixsort_compare_smaller(¤tElement,(iptr-1));
- iptr--)
+ *optr = *oprevious;
+ for (iptr = oprevious; iptr > arr; iptr -= 1)
{
- *iptr = *(iptr-1);
+ Gtuint64keyPair *iprevious = iptr - 1;
+ if (!(gt_radixsort_uint64keypair_smaller(&tmpvalue,iprevious)))
+ {
+ break;
+ }
+ *iptr = *iprevious;
}
- *iptr = currentElement;
+ *iptr = tmpvalue;
}
}
}
@@ -285,22 +309,25 @@ static void gt_radixsort_uint64keypair_process_bin(
if (width >= (GtCountbasetype) 2)
{
- Gtuint64keyPair *ptr = source + rbuf->startofbin[binnum];
+ Gtuint64keyPair *ptr
+ = source + rbuf->startofbin[binnum];
if (width == (GtCountbasetype) 2)
{
- if (gt_radixsort_compare_smaller((ptr+1),ptr))
+ Gtuint64keyPair *nextptr = ptr + 1;
+ if (gt_radixsort_uint64keypair_smaller(nextptr,ptr))
{
- Gtuint64keyPair tmp = *ptr;
- *ptr = *(ptr+1);
- *(ptr+1) = tmp;
+ Gtuint64keyPair tmpswap;
+ tmpswap = *ptr;
+ *ptr = *nextptr;
+ *nextptr = tmpswap;
}
} else
{
if (width <= (GtCountbasetype) 32)
{
rbuf->countinsertionsort++;
- gt_radixsort_uint64keypair_inplace_insertionsort(ptr,width);
+ gt_radixsort_uint64keypair_inplace_insertionsort(rbuf,ptr,width);
} else
{
GtRadixsort_stackelem tmpstackelem;
diff --git a/src/core/radixsort-ip-ulong.inc b/src/core/radixsort-ip-ulong.inc
index 6517221..a4db317 100644
--- a/src/core/radixsort-ip-ulong.inc
+++ b/src/core/radixsort-ip-ulong.inc
@@ -2,38 +2,44 @@ static GtUword gt_radixsort_ulong_bin_get(
const GtRadixbuffer *rbuf,
GtUword binnum)
{
- return rbuf->values.ulongptr[(binnum << rbuf->log_bufsize) +
- (GtUword) rbuf->nextidx[binnum]];
+ return rbuf->values.ulongptr[
+ (binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]];
}
-
-static void gt_radixsort_ulong_bin_update(
- GtUword *target,
+static inline void gt_radixsort_ulong_bin_update(
+ GtUword *source,
GtRadixbuffer *rbuf,
GtUword binnum,
GtUword value)
{
GtUword binoffset = binnum << rbuf->log_bufsize;
- rbuf->values.ulongptr[binoffset +
- (GtUword) rbuf->nextidx[binnum]] = value;
+ rbuf->values.ulongptr
+[binoffset + (GtUword) rbuf->nextidx[binnum]]=
+value;
if ((GtUword) rbuf->nextidx[binnum] < rbuf->buf_size - 1)
{
rbuf->nextidx[binnum]++;
} else
{
GtUword j;
- GtUword *wtargetptr, *rtargetptr, *rend, *valptr;
+ GtUword *wsourceptr, *rsourceptr, *rend, *valptr;
- wtargetptr = target + rbuf->endofbin[binnum] - (rbuf->buf_size - 1);
- rtargetptr = wtargetptr + rbuf->buf_size;
- rend = target + rbuf->startofbin[binnum+1];
- valptr = rbuf->values.ulongptr + binoffset;
+ wsourceptr = source +
+ (rbuf->endofbin[binnum] - (rbuf->buf_size - 1))
+;
+ rsourceptr = wsourceptr + rbuf->buf_size;
+ rend = source + rbuf->startofbin[binnum+1];
+ valptr = rbuf->values.ulongptr +
+ binoffset;
for (j=0; j<rbuf->buf_size; j++)
{
- *wtargetptr++ = *valptr;
- if (rtargetptr < rend)
+ *wsourceptr = *valptr;
+ wsourceptr++;
+ if (rsourceptr < rend)
{
- *valptr = *rtargetptr++;
+ *valptr = *rsourceptr;
+ rsourceptr++;
}
valptr++;
}
@@ -49,8 +55,9 @@ static void gt_radixsort_ulong_cached_shuffle(GtRadixbuffer *rbuf,
{
GtUword binoffset, binnum, bufoffset,
nextbin, firstnonemptybin = UINT8_MAX+1;
- GtCountbasetype *count, previouscount, current;
- GtUword *sp, *spend = source + len;
+ GtCountbasetype *count, previouscount, currentidx;
+ GtUword *sourceptr,
+ *sourceend = source + len;
rbuf->countcached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -59,24 +66,25 @@ static void gt_radixsort_ulong_cached_shuffle(GtRadixbuffer *rbuf,
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
- count[GT_RADIX_KEY(UINT8_MAX,rightshift,*sp)]++;
+ count[GT_RADIX_KEY(UINT8_MAX,rightshift,*sourceptr)]++;
}
for (bufoffset = 0, binoffset = 0, binnum = 0; binnum <= UINT8_MAX;
bufoffset += rbuf->buf_size, binoffset += count[binnum], binnum++)
{
- GtUword j;
- const GtUword end = MIN(rbuf->buf_size,(GtUword) count[binnum]);
+ const GtUword elems2copy = MIN(rbuf->buf_size,(GtUword) count[binnum]);
- if (firstnonemptybin == UINT8_MAX+1 && end > 0)
- {
- firstnonemptybin = binnum;
- }
- for (j=0; j<end; j++)
+ if (elems2copy > 0)
{
- rbuf->values.ulongptr[bufoffset + j] =
- source[binoffset + j];
+ if (firstnonemptybin == UINT8_MAX+1)
+ {
+ firstnonemptybin = binnum;
+ }
+ memcpy(rbuf->values.
+ ulongptr + bufoffset,
+ source + binoffset,
+ (sizeof *source * elems2copy));
}
}
previouscount = count[0];
@@ -84,35 +92,38 @@ static void gt_radixsort_ulong_cached_shuffle(GtRadixbuffer *rbuf,
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0, binnum = firstnonemptybin;
- current < len; binnum = nextbin - 1)
+ for (currentidx = 0, binnum = firstnonemptybin;
+ currentidx < len; binnum = nextbin - 1)
{
- GtUword currentvalue =
- gt_radixsort_ulong_bin_get(rbuf,binnum);
+ GtUword tmpvalue;
+ tmpvalue = gt_radixsort_ulong_bin_get(rbuf,binnum);
while (true)
{
- binnum = GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue);
- if (current != rbuf->endofbin[binnum])
+ binnum = GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue);
+ if (currentidx != rbuf->endofbin[binnum])
{
- GtUword tmp = currentvalue;
- currentvalue = gt_radixsort_ulong_bin_get(rbuf,binnum);
- gt_radixsort_ulong_bin_update(source,rbuf,binnum,tmp);
+ GtUword tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = gt_radixsort_ulong_bin_get(rbuf,binnum);
+ gt_radixsort_ulong_bin_update
+ (source,rbuf,binnum,
+ tmpswap);
} else
{
break;
}
}
gt_radixsort_ulong_bin_update(source,rbuf,binnum,
- currentvalue);
- current++;
+ tmpvalue);
+ currentidx++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -122,9 +133,9 @@ static void gt_radixsort_ulong_cached_shuffle(GtRadixbuffer *rbuf,
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
for (binnum = 0; binnum <= UINT8_MAX; binnum++)
@@ -133,16 +144,13 @@ static void gt_radixsort_ulong_cached_shuffle(GtRadixbuffer *rbuf,
if (bufleft > 0)
{
- GtUword j;
- GtUword *targetptr, *valptr;
+ GtUword *sourceptr, *valptr;
- valptr =
- rbuf->values.ulongptr + (binnum << rbuf->log_bufsize);
- targetptr = source + rbuf->startofbin[binnum+1] - bufleft;
- for (j=0; j < bufleft; j++)
- {
- targetptr[j] = valptr[j];
- }
+ valptr = rbuf->values.ulongptr +
+ (binnum << rbuf->log_bufsize);
+ sourceptr = source +
+ (rbuf->startofbin[binnum+1] - bufleft);
+ memcpy(sourceptr,valptr,(sizeof *sourceptr * bufleft));
}
}
}
@@ -154,8 +162,9 @@ static void gt_radixsort_ulong_uncached_shuffle(
size_t rightshift)
{
GtUword binnum, nextbin;
- GtUword *sp, *spend = source + len;
- GtCountbasetype current, previouscount, *count;
+ GtCountbasetype currentidx, previouscount, *count;
+ GtUword *sourceptr,
+ *sourceend = source + len;
rbuf->countuncached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -164,45 +173,49 @@ static void gt_radixsort_ulong_uncached_shuffle(
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
- count[GT_RADIX_KEY(UINT8_MAX,rightshift,*sp)]++;
+ count[GT_RADIX_KEY(UINT8_MAX,rightshift,*sourceptr)]++;
}
previouscount = count[0];
rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0; current < len; /* Nothing */)
+ for (currentidx = 0; currentidx < len; /* Nothing */)
{
- GtUword currentvalue = source[current];
GtCountbasetype *binptr;
+ GtUword tmpvalue;
+ tmpvalue = source[currentidx];
while (true)
{
binptr = rbuf->endofbin +
- (GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue));
- if (current != *binptr)
+ (GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue));
+ binnum = *binptr;
+ if (currentidx != binnum)
{
- GtUword tmp = currentvalue;
- currentvalue = source[*binptr];
- source[*binptr] = tmp;
+ GtUword tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = source[binnum];
+ source[binnum] = tmpswap;
(*binptr)++;
} else
{
break;
}
}
- source[current++] = currentvalue;
+ source[binnum] = tmpvalue;
+ currentidx++;
(*binptr)++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -212,9 +225,9 @@ static void gt_radixsort_ulong_uncached_shuffle(
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
}
@@ -236,25 +249,36 @@ static void gt_radixsort_ulong_shuffle(GtRadixbuffer *rbuf,
}
static void
-gt_radixsort_ulong_inplace_insertionsort(GtUword *a,
- GtCountbasetype a_size)
+gt_radixsort_ulong_inplace_insertionsort(
+ GT_UNUSED GtRadixbuffer *rbuf,
+ GtUword *arr,
+ GtCountbasetype a_size)
{
- GtUword *optr, *iptr, *end = a + a_size;
+ GtUword *optr,
+ *end = arr + a_size;
- for (optr = a + 1; optr < end; optr++)
+ for (optr = arr + 1; optr < end;
+ optr++)
{
- if (*optr < *(optr-1))
+ GtUword *oprevious = optr - 1;
+
+ if (*optr < *oprevious)
{
- GtUword currentElement = *optr;
+ GtUword *iptr;
+ GtUword tmpvalue;
+ tmpvalue = *optr;
- *optr = *(optr-1);
- for (iptr = optr-1;
- iptr > a && currentElement < *(iptr-1);
- iptr--)
+ *optr = *oprevious;
+ for (iptr = oprevious; iptr > arr; iptr -= 1)
{
- *iptr = *(iptr-1);
+ GtUword *iprevious = iptr - 1;
+ if (!(tmpvalue < *iprevious))
+ {
+ break;
+ }
+ *iptr = *iprevious;
}
- *iptr = currentElement;
+ *iptr = tmpvalue;
}
}
}
@@ -273,22 +297,25 @@ static void gt_radixsort_ulong_process_bin(
if (width >= (GtCountbasetype) 2)
{
- GtUword *ptr = source + rbuf->startofbin[binnum];
+ GtUword *ptr
+ = source + rbuf->startofbin[binnum];
if (width == (GtCountbasetype) 2)
{
- if (*(ptr+1) < *ptr)
+ GtUword *nextptr = ptr + 1;
+ if (*nextptr < *ptr)
{
- GtUword tmp = *ptr;
- *ptr = *(ptr+1);
- *(ptr+1) = tmp;
+ GtUword tmpswap;
+ tmpswap = *ptr;
+ *ptr = *nextptr;
+ *nextptr = tmpswap;
}
} else
{
if (width <= (GtCountbasetype) 32)
{
rbuf->countinsertionsort++;
- gt_radixsort_ulong_inplace_insertionsort(ptr,width);
+ gt_radixsort_ulong_inplace_insertionsort(rbuf,ptr,width);
} else
{
GtRadixsort_stackelem tmpstackelem;
diff --git a/src/core/radixsort-ip-ulongpair.inc b/src/core/radixsort-ip-ulongpair.inc
index e784ffb..4eae2a6 100644
--- a/src/core/radixsort-ip-ulongpair.inc
+++ b/src/core/radixsort-ip-ulongpair.inc
@@ -2,38 +2,44 @@ static GtUwordPair gt_radixsort_ulongpair_bin_get(
const GtRadixbuffer *rbuf,
GtUword binnum)
{
- return rbuf->values.ulongpairptr[(binnum << rbuf->log_bufsize) +
- (GtUword) rbuf->nextidx[binnum]];
+ return rbuf->values.ulongpairptr[
+ (binnum << rbuf->log_bufsize) +
+ (GtUword) rbuf->nextidx[binnum]];
}
-
-static void gt_radixsort_ulongpair_bin_update(
- GtUwordPair *target,
+static inline void gt_radixsort_ulongpair_bin_update(
+ GtUwordPair *source,
GtRadixbuffer *rbuf,
GtUword binnum,
GtUwordPair value)
{
GtUword binoffset = binnum << rbuf->log_bufsize;
- rbuf->values.ulongpairptr[binoffset +
- (GtUword) rbuf->nextidx[binnum]] = value;
+ rbuf->values.ulongpairptr
+[binoffset + (GtUword) rbuf->nextidx[binnum]]=
+value;
if ((GtUword) rbuf->nextidx[binnum] < rbuf->buf_size - 1)
{
rbuf->nextidx[binnum]++;
} else
{
GtUword j;
- GtUwordPair *wtargetptr, *rtargetptr, *rend, *valptr;
+ GtUwordPair *wsourceptr, *rsourceptr, *rend, *valptr;
- wtargetptr = target + rbuf->endofbin[binnum] - (rbuf->buf_size - 1);
- rtargetptr = wtargetptr + rbuf->buf_size;
- rend = target + rbuf->startofbin[binnum+1];
- valptr = rbuf->values.ulongpairptr + binoffset;
+ wsourceptr = source +
+ (rbuf->endofbin[binnum] - (rbuf->buf_size - 1))
+;
+ rsourceptr = wsourceptr + rbuf->buf_size;
+ rend = source + rbuf->startofbin[binnum+1];
+ valptr = rbuf->values.ulongpairptr +
+ binoffset;
for (j=0; j<rbuf->buf_size; j++)
{
- *wtargetptr++ = *valptr;
- if (rtargetptr < rend)
+ *wsourceptr = *valptr;
+ wsourceptr++;
+ if (rsourceptr < rend)
{
- *valptr = *rtargetptr++;
+ *valptr = *rsourceptr;
+ rsourceptr++;
}
valptr++;
}
@@ -49,8 +55,9 @@ static void gt_radixsort_ulongpair_cached_shuffle(GtRadixbuffer *rbuf,
{
GtUword binoffset, binnum, bufoffset,
nextbin, firstnonemptybin = UINT8_MAX+1;
- GtCountbasetype *count, previouscount, current;
- GtUwordPair *sp, *spend = source + len;
+ GtCountbasetype *count, previouscount, currentidx;
+ GtUwordPair *sourceptr,
+ *sourceend = source + len;
rbuf->countcached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -59,24 +66,25 @@ static void gt_radixsort_ulongpair_cached_shuffle(GtRadixbuffer *rbuf,
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
- count[GT_RADIX_KEY(UINT8_MAX,rightshift,sp->a)]++;
+ count[GT_RADIX_KEY(UINT8_MAX,rightshift,sourceptr->a)]++;
}
for (bufoffset = 0, binoffset = 0, binnum = 0; binnum <= UINT8_MAX;
bufoffset += rbuf->buf_size, binoffset += count[binnum], binnum++)
{
- GtUword j;
- const GtUword end = MIN(rbuf->buf_size,(GtUword) count[binnum]);
+ const GtUword elems2copy = MIN(rbuf->buf_size,(GtUword) count[binnum]);
- if (firstnonemptybin == UINT8_MAX+1 && end > 0)
- {
- firstnonemptybin = binnum;
- }
- for (j=0; j<end; j++)
+ if (elems2copy > 0)
{
- rbuf->values.ulongpairptr[bufoffset + j] =
- source[binoffset + j];
+ if (firstnonemptybin == UINT8_MAX+1)
+ {
+ firstnonemptybin = binnum;
+ }
+ memcpy(rbuf->values.
+ ulongpairptr + bufoffset,
+ source + binoffset,
+ (sizeof *source * elems2copy));
}
}
previouscount = count[0];
@@ -84,35 +92,38 @@ static void gt_radixsort_ulongpair_cached_shuffle(GtRadixbuffer *rbuf,
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0, binnum = firstnonemptybin;
- current < len; binnum = nextbin - 1)
+ for (currentidx = 0, binnum = firstnonemptybin;
+ currentidx < len; binnum = nextbin - 1)
{
- GtUwordPair currentvalue =
- gt_radixsort_ulongpair_bin_get(rbuf,binnum);
+ GtUwordPair tmpvalue;
+ tmpvalue = gt_radixsort_ulongpair_bin_get(rbuf,binnum);
while (true)
{
- binnum = GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.a);
- if (current != rbuf->endofbin[binnum])
+ binnum = GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue.a);
+ if (currentidx != rbuf->endofbin[binnum])
{
- GtUwordPair tmp = currentvalue;
- currentvalue = gt_radixsort_ulongpair_bin_get(rbuf,binnum);
- gt_radixsort_ulongpair_bin_update(source,rbuf,binnum,tmp);
+ GtUwordPair tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = gt_radixsort_ulongpair_bin_get(rbuf,binnum);
+ gt_radixsort_ulongpair_bin_update
+ (source,rbuf,binnum,
+ tmpswap);
} else
{
break;
}
}
gt_radixsort_ulongpair_bin_update(source,rbuf,binnum,
- currentvalue);
- current++;
+ tmpvalue);
+ currentidx++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -122,9 +133,9 @@ static void gt_radixsort_ulongpair_cached_shuffle(GtRadixbuffer *rbuf,
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
for (binnum = 0; binnum <= UINT8_MAX; binnum++)
@@ -133,16 +144,13 @@ static void gt_radixsort_ulongpair_cached_shuffle(GtRadixbuffer *rbuf,
if (bufleft > 0)
{
- GtUword j;
- GtUwordPair *targetptr, *valptr;
+ GtUwordPair *sourceptr, *valptr;
- valptr =
- rbuf->values.ulongpairptr + (binnum << rbuf->log_bufsize);
- targetptr = source + rbuf->startofbin[binnum+1] - bufleft;
- for (j=0; j < bufleft; j++)
- {
- targetptr[j] = valptr[j];
- }
+ valptr = rbuf->values.ulongpairptr +
+ (binnum << rbuf->log_bufsize);
+ sourceptr = source +
+ (rbuf->startofbin[binnum+1] - bufleft);
+ memcpy(sourceptr,valptr,(sizeof *sourceptr * bufleft));
}
}
}
@@ -154,8 +162,9 @@ static void gt_radixsort_ulongpair_uncached_shuffle(
size_t rightshift)
{
GtUword binnum, nextbin;
- GtUwordPair *sp, *spend = source + len;
- GtCountbasetype current, previouscount, *count;
+ GtCountbasetype currentidx, previouscount, *count;
+ GtUwordPair *sourceptr,
+ *sourceend = source + len;
rbuf->countuncached++;
count = rbuf->startofbin; /* use same memory for count and startofbin */
@@ -164,45 +173,49 @@ static void gt_radixsort_ulongpair_uncached_shuffle(
count[binnum] = 0;
rbuf->nextidx[binnum] = 0;
}
- for (sp = source; sp < spend; sp++)
+ for (sourceptr = source; sourceptr < sourceend; sourceptr++)
{
- count[GT_RADIX_KEY(UINT8_MAX,rightshift,sp->a)]++;
+ count[GT_RADIX_KEY(UINT8_MAX,rightshift,sourceptr->a)]++;
}
previouscount = count[0];
rbuf->startofbin[0] = rbuf->endofbin[0] = 0;
nextbin = 0;
for (binnum = 1UL; binnum <= UINT8_MAX; binnum++)
{
- GtCountbasetype tmp = rbuf->startofbin[binnum-1] + previouscount;
+ GtCountbasetype temp = rbuf->startofbin[binnum-1] + previouscount;
previouscount = count[binnum];
- rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = tmp;
+ rbuf->startofbin[binnum] = rbuf->endofbin[binnum] = temp;
}
/* to simplify compution of bin end */
rbuf->startofbin[UINT8_MAX+1] = len;
- for (current = 0; current < len; /* Nothing */)
+ for (currentidx = 0; currentidx < len; /* Nothing */)
{
- GtUwordPair currentvalue = source[current];
GtCountbasetype *binptr;
+ GtUwordPair tmpvalue;
+ tmpvalue = source[currentidx];
while (true)
{
binptr = rbuf->endofbin +
- (GT_RADIX_KEY(UINT8_MAX,rightshift,currentvalue.a));
- if (current != *binptr)
+ (GT_RADIX_KEY(UINT8_MAX,rightshift,tmpvalue.a));
+ binnum = *binptr;
+ if (currentidx != binnum)
{
- GtUwordPair tmp = currentvalue;
- currentvalue = source[*binptr];
- source[*binptr] = tmp;
+ GtUwordPair tmpswap;
+ tmpswap = tmpvalue;
+ tmpvalue = source[binnum];
+ source[binnum] = tmpswap;
(*binptr)++;
} else
{
break;
}
}
- source[current++] = currentvalue;
+ source[binnum] = tmpvalue;
+ currentidx++;
(*binptr)++;
/* skip over empty bins */
- while (nextbin <= UINT8_MAX && current >= rbuf->startofbin[nextbin])
+ while (nextbin <= UINT8_MAX && currentidx >= rbuf->startofbin[nextbin])
{
nextbin++;
}
@@ -212,9 +225,9 @@ static void gt_radixsort_ulongpair_uncached_shuffle(
{
nextbin++;
}
- if (current < rbuf->endofbin[nextbin-1])
+ if (currentidx < rbuf->endofbin[nextbin-1])
{
- current = rbuf->endofbin[nextbin-1];
+ currentidx = rbuf->endofbin[nextbin-1];
}
}
}
@@ -236,25 +249,36 @@ static void gt_radixsort_ulongpair_shuffle(GtRadixbuffer *rbuf,
}
static void
-gt_radixsort_ulongpair_inplace_insertionsort(GtUwordPair *a,
- GtCountbasetype a_size)
+gt_radixsort_ulongpair_inplace_insertionsort(
+ GT_UNUSED GtRadixbuffer *rbuf,
+ GtUwordPair *arr,
+ GtCountbasetype a_size)
{
- GtUwordPair *optr, *iptr, *end = a + a_size;
+ GtUwordPair *optr,
+ *end = arr + a_size;
- for (optr = a + 1; optr < end; optr++)
+ for (optr = arr + 1; optr < end;
+ optr++)
{
- if (optr->a < (optr-1)->a)
+ GtUwordPair *oprevious = optr - 1;
+
+ if (optr->a < oprevious->a)
{
- GtUwordPair currentElement = *optr;
+ GtUwordPair *iptr;
+ GtUwordPair tmpvalue;
+ tmpvalue = *optr;
- *optr = *(optr-1);
- for (iptr = optr-1;
- iptr > a && currentElement.a < (iptr-1)->a;
- iptr--)
+ *optr = *oprevious;
+ for (iptr = oprevious; iptr > arr; iptr -= 1)
{
- *iptr = *(iptr-1);
+ GtUwordPair *iprevious = iptr - 1;
+ if (!(tmpvalue.a < iprevious->a))
+ {
+ break;
+ }
+ *iptr = *iprevious;
}
- *iptr = currentElement;
+ *iptr = tmpvalue;
}
}
}
@@ -273,22 +297,25 @@ static void gt_radixsort_ulongpair_process_bin(
if (width >= (GtCountbasetype) 2)
{
- GtUwordPair *ptr = source + rbuf->startofbin[binnum];
+ GtUwordPair *ptr
+ = source + rbuf->startofbin[binnum];
if (width == (GtCountbasetype) 2)
{
- if ((ptr+1)->a < ptr->a)
+ GtUwordPair *nextptr = ptr + 1;
+ if (nextptr->a < ptr->a)
{
- GtUwordPair tmp = *ptr;
- *ptr = *(ptr+1);
- *(ptr+1) = tmp;
+ GtUwordPair tmpswap;
+ tmpswap = *ptr;
+ *ptr = *nextptr;
+ *nextptr = tmpswap;
}
} else
{
if (width <= (GtCountbasetype) 32)
{
rbuf->countinsertionsort++;
- gt_radixsort_ulongpair_inplace_insertionsort(ptr,width);
+ gt_radixsort_ulongpair_inplace_insertionsort(rbuf,ptr,width);
} else
{
GtRadixsort_stackelem tmpstackelem;
diff --git a/src/core/str.c b/src/core/str.c
index 5864924..b880417 100644
--- a/src/core/str.c
+++ b/src/core/str.c
@@ -251,6 +251,13 @@ GtStr* gt_str_ref(GtStr *s)
return s;
}
+/* The body of of the following two functions is identical except for the
+ following:
+ gt_str_read_next_line uses gt_xfgetc while
+ gt_str_read_next_line_generic uses gt_file_xfgetc
+ Also gt_str_read_next_line_generic does not assert <fpin> != NULL
+*/
+
int gt_str_read_next_line(GtStr *s, FILE *fpin)
{
int cc;
diff --git a/src/core/str.h b/src/core/str.h
index be11902..b423a4d 100644
--- a/src/core/str.h
+++ b/src/core/str.h
@@ -31,6 +31,8 @@ void gt_str_clip_suffix(GtStr *s, char c);
is returned, otherwise 0. <str> should be empty, or the next line will be
concatenated to its content. */
int gt_str_read_next_line(GtStr *str, FILE *fpin);
+/* Read the next line via a <GtFile>-object, but otherwise behave as
+ the previous function. */
int gt_str_read_next_line_generic(GtStr*, GtFile*);
int gt_str_unit_test(GtError*);
diff --git a/src/core/timer.c b/src/core/timer.c
index 5182fc7..fe3cb84 100644
--- a/src/core/timer.c
+++ b/src/core/timer.c
@@ -65,7 +65,7 @@ GtTimer* gt_timer_new_with_progress_description(const char* desc)
return t;
}
-void gt_timer_start(GtTimer *t)
+void gt_timer_start(GT_WIN32_UNUSED GtTimer *t)
{
#ifndef _WIN32
gt_assert(t);
@@ -81,7 +81,7 @@ void gt_timer_start(GtTimer *t)
#endif
}
-void gt_timer_stop(GtTimer *t)
+void gt_timer_stop(GT_WIN32_UNUSED GtTimer *t)
{
gt_assert(t);
#ifndef _WIN32
@@ -132,7 +132,9 @@ static int timeval_add(struct timeval *result,
}
#endif
-void gt_timer_show_formatted(GtTimer *t, const char *fmt, FILE *fp)
+void gt_timer_show_formatted(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED const char *fmt,
+ GT_WIN32_UNUSED FILE *fp)
{
#ifndef _WIN32
struct timeval elapsed_tv;
@@ -152,7 +154,25 @@ void gt_timer_show_formatted(GtTimer *t, const char *fmt, FILE *fp)
#endif
}
-void gt_timer_get_formatted(GtTimer *t, const char *fmt, GtStr *str)
+GtWord gt_timer_elapsed_usec(GT_WIN32_UNUSED GtTimer *t)
+{
+#ifndef _WIN32
+ struct timeval elapsed_tv;
+ if (t->state == TIMER_RUNNING)
+ gt_timer_stop(t);
+ gt_assert(t->state == TIMER_STOPPED);
+ timeval_subtract(&elapsed_tv, &t->stop_tv, &t->gstart_tv);
+ return (GtWord) (elapsed_tv.tv_usec + elapsed_tv.tv_sec * 1000000L);
+#else
+ /* XXX */
+ fprintf(stderr, "gt_elapsed_usec() not implemented\n");
+ exit(EXIT_FAILURE);
+#endif
+}
+
+void gt_timer_get_formatted(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED const char *fmt,
+ GT_WIN32_UNUSED GtStr *str)
{
#ifndef _WIN32
struct timeval elapsed_tv;
@@ -202,7 +222,9 @@ static void gt_timer_print_progress_report(GtTimer *t,
}
#endif
-void gt_timer_show_progress(GtTimer *t, const char *desc, FILE *fp)
+void gt_timer_show_progress(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED const char *desc,
+ GT_WIN32_UNUSED FILE *fp)
{
#ifndef _WIN32
gt_timer_show_progress_formatted(t, fp, "%s", desc);
@@ -213,7 +235,9 @@ void gt_timer_show_progress(GtTimer *t, const char *desc, FILE *fp)
#endif
}
-void gt_timer_show_progress_formatted(GtTimer *t, FILE *fp, const char *desc,
+void gt_timer_show_progress_formatted(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED FILE *fp,
+ GT_WIN32_UNUSED const char *desc,
...)
{
#ifndef _WIN32
@@ -229,8 +253,10 @@ void gt_timer_show_progress_formatted(GtTimer *t, FILE *fp, const char *desc,
#endif
}
-void gt_timer_show_progress_va(GtTimer *t, FILE *fp, const char *desc,
- va_list ap)
+void gt_timer_show_progress_va(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED FILE *fp,
+ GT_WIN32_UNUSED const char *desc,
+ GT_WIN32_UNUSED va_list ap)
{
#ifndef _WIN32
char buf[BUFSIZ];
@@ -259,7 +285,8 @@ void gt_timer_show_progress_va(GtTimer *t, FILE *fp, const char *desc,
#endif
}
-void gt_timer_show_progress_final(GtTimer *t, FILE *fp)
+void gt_timer_show_progress_final(GT_WIN32_UNUSED GtTimer *t,
+ GT_WIN32_UNUSED FILE *fp)
{
#ifndef _WIN32
struct timeval elapsed_tv, elapsed_user_tv, elapsed_sys_tv;
diff --git a/src/core/timer_api.h b/src/core/timer_api.h
index 6bf2764..41b6b38 100644
--- a/src/core/timer_api.h
+++ b/src/core/timer_api.h
@@ -46,6 +46,9 @@ void gt_timer_show(GtTimer *timer, FILE *fp);
with: elapsed seconds, elapsed microseconds, used usertime in seconds, system
time in seconds. The output is written to <fp>. The timer is then stopped. */
void gt_timer_show_formatted(GtTimer *timer, const char *fmt, FILE *fp);
+/* return usec of time from start to stop of giben timer. The timer is then
+ stopped. */
+GtWord gt_timer_elapsed_usec(GtTimer *t);
/* Like <gt_timer_show_formatted()>, but appends the output to <str>. */
void gt_timer_get_formatted(GtTimer *t, const char *fmt, GtStr *str);
/* Output the current state of <timer> on <fp> since the last call of
diff --git a/src/core/unused_api.h b/src/core/unused_api.h
index 62e0a13..f0b7040 100644
--- a/src/core/unused_api.h
+++ b/src/core/unused_api.h
@@ -25,4 +25,10 @@
#define GT_UNUSED \
__attribute__ ((unused)) /*@unused@*/
+#ifndef _WIN32
+#define GT_WIN32_UNUSED /* Nothing */
+#else
+#define GT_WIN32_UNUSED GT_UNUSED
+#endif
+
#endif
diff --git a/src/extended/alignment.c b/src/extended/alignment.c
index 4fea675..976b45e 100644
--- a/src/extended/alignment.c
+++ b/src/extended/alignment.c
@@ -41,13 +41,9 @@ struct GtAlignment {
const GtUchar *u,
*v;
GtMultieoplist *eops;
- const Polishing_info *pol_info;
GtUword ulen,
vlen,
- alilen,
- useedoffset,
- seedlen;
- bool seed_display, withpolcheck;
+ alilen;
};
#define GAPSYMBOL '-'
@@ -64,10 +60,7 @@ GtAlignment* gt_alignment_new(void)
alignment->aligned_range_v.end = 0;
alignment->eops = gt_multieoplist_new();
alignment->u = alignment->v = NULL;
- alignment->pol_info = NULL;
alignment->alilen = alignment->ulen = alignment->vlen = 0;
- alignment->useedoffset = alignment->seedlen = 0;
- alignment->seed_display = alignment->withpolcheck = false;
return alignment;
}
@@ -174,8 +167,6 @@ void gt_alignment_reset(GtAlignment *alignment)
gt_assert(alignment != NULL);
gt_multieoplist_reset(alignment->eops);
alignment->alilen = 0;
- alignment->useedoffset = 0;
- alignment->seedlen = 0;
}
void gt_alignment_remove_last(GtAlignment *alignment)
@@ -534,34 +525,6 @@ static unsigned int gt_alignment_show_advance(unsigned int pos,
return 0;
}
-#define GT_UPDATE_POSITIVE_INFO(ISMATCH)\
- if (alignment->pol_info != NULL)\
- {\
- if (prefix_positive < max_history && prefix_positive_sum >= 0)\
- {\
- if (ISMATCH)\
- {\
- prefix_positive_sum += alignment->pol_info->match_score;\
- } else\
- {\
- prefix_positive_sum -= alignment->pol_info->difference_score;\
- }\
- if (prefix_positive_sum >= 0)\
- {\
- prefix_positive++;\
- }\
- }\
- if (suffix_bits_used < max_history)\
- {\
- suffix_bits_used++;\
- }\
- suffix_bits >>= 1;\
- if (ISMATCH)\
- {\
- suffix_bits |= set_mask;\
- }\
- }
-
void gt_alignment_show_generic(GtUchar *buffer,
bool downcase,
const GtAlignment *alignment,
@@ -571,21 +534,10 @@ void gt_alignment_show_generic(GtUchar *buffer,
GtUchar wildcardshow)
{
GtMultieop meop;
- GtUword idx_eop, idx_u = 0, idx_v = 0, meoplen, alignmentlength = 0,
- suffix_bits_used = 0, prefix_positive = 0, pol_size = 0,
- firstseedcolumn = GT_UWORD_MAX,
- lastseedcolumn = GT_UWORD_MAX;
- const GtUword max_history = 64;
+ GtUword idx_eop, idx_u = 0, idx_v = 0, meoplen;
unsigned int pos = 0;
GtUchar *topbuf = buffer, *midbuf = NULL, *lowbuf = NULL;
- GtWord prefix_positive_sum = 0;
- uint64_t suffix_bits = 0, set_mask = 0;
- if (alignment->pol_info != NULL)
- {
- pol_size = GT_MULT2(alignment->pol_info->cut_depth);
- set_mask = ((uint64_t) 1) << (max_history - 1);
- }
gt_assert(alignment != NULL && (characters == NULL || !downcase));
topbuf[width] = '\n';
midbuf = topbuf + width + 1;
@@ -626,32 +578,12 @@ void gt_alignment_show_generic(GtUchar *buffer,
}
if (is_match)
{
- if (alignment->useedoffset <= idx_u &&
- idx_u < alignment->useedoffset + alignment->seedlen)
- {
- if (alignment->seed_display)
- {
- midbuf[pos] = (GtUchar) '+';
- } else
- {
- midbuf[pos] = (GtUchar) MATCHSYMBOL;
- }
- if (firstseedcolumn == GT_UWORD_MAX)
- {
- firstseedcolumn = alignmentlength;
- }
- lastseedcolumn = alignmentlength;
- } else
- {
- midbuf[pos] = (GtUchar) MATCHSYMBOL;
- }
+ midbuf[pos] = (GtUchar) MATCHSYMBOL;
} else
{
midbuf[pos] = (GtUchar) MISMATCHSYMBOL;
}
pos = gt_alignment_show_advance(pos,width,topbuf,fp);
- GT_UPDATE_POSITIVE_INFO(is_match);
- alignmentlength++;
idx_u++;
idx_v++;
}
@@ -671,8 +603,6 @@ void gt_alignment_show_generic(GtUchar *buffer,
midbuf[pos] = (GtUchar) MISMATCHSYMBOL;
lowbuf[pos] = (GtUchar) GAPSYMBOL;
pos = gt_alignment_show_advance(pos,width,topbuf,fp);
- GT_UPDATE_POSITIVE_INFO(false);
- alignmentlength++;
}
break;
case Insertion:
@@ -690,8 +620,6 @@ void gt_alignment_show_generic(GtUchar *buffer,
lowbuf[pos] = b;
}
pos = gt_alignment_show_advance(pos,width,topbuf,fp);
- GT_UPDATE_POSITIVE_INFO(false);
- alignmentlength++;
}
break;
}
@@ -712,69 +640,6 @@ void gt_alignment_show_generic(GtUchar *buffer,
lowbuf[pos] = '\n';
fwrite(lowbuf,sizeof *lowbuf,pos+1,fp);
}
- if (alignment->pol_info != NULL)
- {
- GtUword suffix_positive;
- GtWord suffix_positive_sum = 0;
- bool startpolished = false, endpolished = false;
-
- for (suffix_positive = 0; suffix_positive < suffix_bits_used;
- suffix_positive++)
- {
- suffix_positive_sum += ((suffix_bits & set_mask)
- ? alignment->pol_info->match_score
- : -alignment->pol_info->difference_score);
- if (suffix_positive_sum < 0)
- {
- break;
- }
- set_mask >>= 1;
- }
- gt_assert(prefix_positive <= alignmentlength &&
- prefix_positive <= alignmentlength);
- if (prefix_positive >= pol_size || prefix_positive == alignmentlength ||
- firstseedcolumn < pol_size)
- {
- startpolished = true;
- }
- if (suffix_positive >= pol_size || suffix_positive == alignmentlength ||
- (lastseedcolumn != GT_UWORD_MAX &&
- lastseedcolumn + pol_size > alignmentlength))
- {
- endpolished = true;
- }
- fprintf(fp, "# polishing(m=" GT_WD ",d=" GT_WD ",p=" GT_WU
- "): " GT_WU "/" GT_WU,
- alignment->pol_info->match_score,
- -alignment->pol_info->difference_score,
- pol_size,
- prefix_positive,
- suffix_positive);
- if (firstseedcolumn < pol_size)
- {
- fprintf(fp, ", seed_on_start");
- }
- if (lastseedcolumn + pol_size > alignmentlength)
- {
- fprintf(fp, ", seed_on_end");
- }
- if (alignment->withpolcheck)
- {
- fprintf(fp, "\n");
- gt_assert(startpolished && endpolished);
- } else
- {
- if (!startpolished)
- {
- fprintf(fp, ", start not polished");
- }
- if (!endpolished)
- {
- fprintf(fp, ", end not polished");
- }
- fprintf(fp, "\n");
- }
- }
}
void gt_alignment_exact_show(GtUchar *buffer,
@@ -945,14 +810,6 @@ void gt_alignment_delete(GtAlignment *alignment)
gt_free(alignment);
}
-void gt_alignment_set_seedoffset(GtAlignment *alignment,
- GtUword useedoffset,
- GtUword seedlen)
-{
- alignment->useedoffset = useedoffset;
- alignment->seedlen = seedlen;
-}
-
void gt_alignment_clone(const GtAlignment *alignment_from,
GtAlignment *alignment_to)
{
@@ -968,21 +825,6 @@ void gt_alignment_clone(const GtAlignment *alignment_from,
alignment_to->alilen = alignment_from->alilen;
}
-void gt_alignment_polished_ends(GtAlignment *alignment,
- const Polishing_info *pol_info,
- bool withpolcheck)
-{
- gt_assert(alignment != NULL);
- alignment->pol_info = pol_info;
- alignment->withpolcheck = withpolcheck;
-}
-
-void gt_alignment_seed_display_set(GtAlignment *alignment)
-{
- gt_assert(alignment != NULL);
- alignment->seed_display = true;
-}
-
int gt_alignment_unit_test(GtError *err)
{
static char u[] = "acgtagatatatagat",
diff --git a/src/extended/alignment.h b/src/extended/alignment.h
index db54bd6..d33d814 100644
--- a/src/extended/alignment.h
+++ b/src/extended/alignment.h
@@ -1,4 +1,5 @@
/*
+ Copyright (c) 2016 Stefan Kurtz <stefan.kurtz at zbh.uni-hamburg.de>
Copyright (c) 2015 Annika Seidel <annika.seidel at studium.uni-hamburg.de>
Copyright (c) 2006-2007 Gordon Gremme <gordon at gremme.org>
Copyright (c) 2006-2015 Center for Bioinformatics, University of Hamburg
@@ -24,8 +25,6 @@
#include "core/types_api.h"
#include "core/error_api.h"
#include "core/score_matrix.h"
-#include "core/unused_api.h"
-#include "match/ft-polish.h"
#include "extended/multieoplist.h"
/* the GtAlignment class (an object has to be constructed backwards) */
@@ -130,16 +129,6 @@ void gt_alignment_show_multieop_list(const GtAlignment *alignment,
int gt_alignment_unit_test(GtError *err);
void gt_alignment_delete(GtAlignment *alignment);
-void gt_alignment_polished_ends(GtAlignment *alignment,
- const Polishing_info *pol_info,
- bool withpolcheck);
-
-void gt_alignment_set_seedoffset(GtAlignment *alignment,
- GtUword useedoffset,
- GtUword seedlen);
-
-void gt_alignment_seed_display_set(GtAlignment *alignment);
-
void gt_alignment_clone(const GtAlignment *alignment_from,
GtAlignment *alignment_to);
diff --git a/src/extended/assembly_stats_calculator.c b/src/extended/assembly_stats_calculator.c
index f4657ca..e0bcaf8 100644
--- a/src/extended/assembly_stats_calculator.c
+++ b/src/extended/assembly_stats_calculator.c
@@ -15,6 +15,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include "core/array_api.h"
#include "core/compat.h"
#include "core/disc_distri_api.h"
#include "core/format64.h"
@@ -29,6 +30,7 @@ struct GtAssemblyStatsCalculator
GtUword maxlength;
GtUword genome_length;
GtDiscDistri *lengths;
+ GtArray *nstats;
};
GtAssemblyStatsCalculator *gt_assembly_stats_calculator_new(void)
@@ -42,6 +44,7 @@ GtAssemblyStatsCalculator *gt_assembly_stats_calculator_new(void)
asc->minlength = 0;
asc->maxlength = 0;
asc->genome_length = 0;
+ asc->nstats = gt_array_new(sizeof (GtUword));
return asc;
}
@@ -50,6 +53,7 @@ void gt_assembly_stats_calculator_delete(GtAssemblyStatsCalculator *asc)
if (asc != NULL)
{
gt_disc_distri_delete(asc->lengths);
+ gt_array_delete(asc->nstats);
gt_free(asc);
}
}
@@ -77,7 +81,7 @@ void gt_assembly_stats_calculator_set_genome_length(
#define NOF_LIMITS 5
-#define MAX_NOF_NSTATS 4
+#define MAX_NOF_NSTATS 10
typedef struct
{
char *name[MAX_NOF_NSTATS];
@@ -94,7 +98,8 @@ typedef struct
third_quartile,
three_fourth_num;
GtUword nvalue[MAX_NOF_NSTATS],
- lvalue[MAX_NOF_NSTATS];
+ lvalue[MAX_NOF_NSTATS],
+ val[MAX_NOF_NSTATS];
unsigned int nofstats;
} Nstats;
@@ -134,8 +139,9 @@ static void calcNstats(GtUword key, GtUint64 value,
}
}
-#define initNstat(INDEX, NAME, LENGTH)\
+#define initNstat(INDEX, NAME, VAL, LENGTH)\
nstats.name[INDEX] = (NAME);\
+ nstats.val[INDEX] = VAL;\
nstats.min[INDEX] = (GtUint64) (LENGTH);\
nstats.nvalue[INDEX] = 0;\
nstats.lvalue[INDEX] = 0;\
@@ -169,6 +175,48 @@ GtUword gt_assembly_stats_calculator_nstat(GtAssemblyStatsCalculator *asc,
return nstats.nvalue[0];
}
+int gt_assembly_stats_calculator_register_nstat(GtAssemblyStatsCalculator *asc,
+ GtUword n, GtError *err)
+{
+ GtUword i;
+ bool present;
+ gt_assert(asc != NULL && n > 0);
+
+ if (n > 100) {
+ gt_error_set(err, "invalid N value " GT_WU ", must be <= 100", n);
+ return -1;
+ }
+
+ if (gt_array_size(asc->nstats) == MAX_NOF_NSTATS) {
+ gt_error_set(err, "Limit of N statistics reached (%d)", MAX_NOF_NSTATS);
+ return -1;
+ }
+
+ present = false;
+ for (i = 0; i < gt_array_size(asc->nstats); i++) {
+ if ((*(GtUword*) gt_array_get(asc->nstats, i)) == n) {
+ present = true;
+ break;
+ }
+ }
+ if (!present) {
+ gt_array_add(asc->nstats, n);
+ }
+
+ return 0;
+}
+
+static int gt_assembly_stats_calculator_cmp_nstat(const void *v1,
+ const void *v2) {
+ GtUword u1 = *(GtUword*) v1;
+ GtUword u2 = *(GtUword*) v2;
+ if (u1 < u2)
+ return -1;
+ if (u1 == u2)
+ return 0;
+ return 1;
+}
+
void gt_assembly_stats_calculator_show(GtAssemblyStatsCalculator *asc,
GtLogger *logger)
{
@@ -176,13 +224,26 @@ void gt_assembly_stats_calculator_show(GtAssemblyStatsCalculator *asc,
unsigned int i;
gt_assert(asc != NULL);
+
+ /* defaults are N50/N80 */
+ if (gt_array_size(asc->nstats) == 0) {
+ gt_assembly_stats_calculator_register_nstat(asc, 50, NULL);
+ gt_assembly_stats_calculator_register_nstat(asc, 80, NULL);
+ }
+
nstats.nofstats = 0;
- initNstat(0, "50: ", asc->sumlength * 0.5);
- initNstat(1, "80: ", asc->sumlength * 0.8);
- if (asc->genome_length > 0)
- {
- initNstat(2, "G50:", asc->genome_length * 0.5);
- initNstat(3, "G80:", asc->genome_length * 0.8);
+ gt_array_sort_stable(asc->nstats, gt_assembly_stats_calculator_cmp_nstat);
+ for (i = 0; i < gt_array_size(asc->nstats); i++) {
+ GtUword v = *(GtUword*) gt_array_get(asc->nstats, i);
+ initNstat(i, "", v, (GtUint64) (asc->sumlength * ((float) v / 100U)));
+ }
+ if (asc->genome_length > 0) {
+ GtUword j;
+ for (j = 0; j < gt_array_size(asc->nstats); j++) {
+ GtUword v = *(GtUword*) gt_array_get(asc->nstats, j);
+ initNstat(i + j, "G", v,
+ (GtUint64) (asc->genome_length * ((float) v / 100U)));
+ }
}
initLimit(0, 500ULL);
@@ -242,17 +303,17 @@ void gt_assembly_stats_calculator_show(GtAssemblyStatsCalculator *asc,
{
if (nstats.nvalue[i] > 0)
{
- gt_logger_log(logger, "N%s "GT_WU"", nstats.name[i],
- nstats.nvalue[i]);
- gt_logger_log(logger, "L%s "GT_WU"", nstats.name[i],
- nstats.lvalue[i]);
+ gt_logger_log(logger, "N%s%02d "GT_WU"", nstats.name[i],
+ (int) nstats.val[i], nstats.nvalue[i]);
+ gt_logger_log(logger, "L%s%02d "GT_WU"", nstats.name[i],
+ (int) nstats.val[i], nstats.lvalue[i]);
}
else
{
- gt_logger_log(logger, "N%s n.a.",
- nstats.name[i]);
- gt_logger_log(logger, "L%s n.a.",
- nstats.name[i]);
+ gt_logger_log(logger, "N%s%02d n.a.",
+ nstats.name[i], (int) nstats.val[i]);
+ gt_logger_log(logger, "L%s%02d n.a.",
+ nstats.name[i], (int) nstats.val[i]);
}
}
}
diff --git a/src/extended/assembly_stats_calculator.h b/src/extended/assembly_stats_calculator.h
index 424c97a..e0ce6b4 100644
--- a/src/extended/assembly_stats_calculator.h
+++ b/src/extended/assembly_stats_calculator.h
@@ -18,6 +18,7 @@
#ifndef ASSEMBLY_STATS_CALCULATOR_H
#define ASSEMBLY_STATS_CALCULATOR_H
+#include "core/error_api.h"
#include "core/logger.h"
#include "core/types_api.h"
@@ -46,6 +47,10 @@ GtUword gt_assembly_stats_calculator_nstat(
GtAssemblyStatsCalculator *asc,
GtUword n);
+int gt_assembly_stats_calculator_register_nstat(
+ GtAssemblyStatsCalculator *asc,
+ GtUword n, GtError *err);
+
/* Set the genome length for the GtAssemblyStatsCalculator <asc>;
this is not necessary, but if the genome length is set;
then the NG/LG statistics can also be computed;
diff --git a/src/extended/blast_process_call.h b/src/extended/blast_process_call.h
index e5362ee..ac3d11d 100644
--- a/src/extended/blast_process_call.h
+++ b/src/extended/blast_process_call.h
@@ -27,23 +27,23 @@ typedef struct GtBlastProcessCall GtBlastProcessCall;
/* Returns new <GtBlastProcessCall> object calling blastall for nucleotide
sequences.
- blastall has to be installed in PATH or GT_BLAST_PATH has to be set to the
+ Blastall has to be installed in PATH or GT_BLAST_PATH has to be set to the
correct path. */
GtBlastProcessCall* gt_blast_process_call_new_all_nucl(void);
/* Returns new <GtBlastProcessCall> object calling blastn.
- blastn has to be installed in PATH or GT_BLAST_PATH has to be set to the
+ Blastn has to be installed in PATH or GT_BLAST_PATH has to be set to the
correct path. */
GtBlastProcessCall* gt_blast_process_call_new_nucl(void);
/* Returns new <GtBlastProcessCall> object calling blastall for protein
sequences.
- blastall has to be installed in PATH or GT_BLAST_PATH has to be set to the
+ Blastall has to be installed in PATH or GT_BLAST_PATH has to be set to the
correct path. */
GtBlastProcessCall* gt_blast_process_call_new_all_prot(void);
/* Returns new <GtBlastProcessCall> object calling blastp.
- blastp has to be installed in PATH or GT_BLAST_PATH has to be set to the
+ Blastp has to be installed in PATH or GT_BLAST_PATH has to be set to the
correct path. */
GtBlastProcessCall* gt_blast_process_call_new_prot(void);
diff --git a/src/extended/compressed_bitsequence.h b/src/extended/compressed_bitsequence.h
index 619d198..496b30c 100644
--- a/src/extended/compressed_bitsequence.h
+++ b/src/extended/compressed_bitsequence.h
@@ -40,18 +40,18 @@ GtCompressedBitsequence* gt_compressed_bitsequence_new(GtBitsequence *bitseq,
GtUword num_of_bits);
/* Returns 0 or 1 according to the bit at <position> in <cbs>. Note that
- <position> has to be smaller than the length of <cbs>. */
+ <position> has to be smaller than the length of <cbs>. */
int gt_compressed_bitsequence_access(
GtCompressedBitsequence *cbs,
GtUword position);
-/* Returns the number of 1 bits in <cbs> upto and including <position>. Note
+/* Returns the number of 1 bits in <cbs> up to and including <position>. Note
that <position> has to be smaller than the length of <cbs>. */
GtUword gt_compressed_bitsequence_rank_1(
GtCompressedBitsequence *cbs,
GtUword position);
-/* Returns the number of 0 bits in <cbs> upto and including <position>. Note
+/* Returns the number of 0 bits in <cbs> up to and including <position>. Note
that <position> has to be smaller than the length of <cbs>. */
GtUword gt_compressed_bitsequence_rank_0(
GtCompressedBitsequence *cbs,
diff --git a/src/extended/condenseq.c b/src/extended/condenseq.c
index 6cabac3..5a098bf 100644
--- a/src/extended/condenseq.c
+++ b/src/extended/condenseq.c
@@ -224,13 +224,13 @@ static GtCondenseq *condenseq_new_empty(const GtAlphabet *alph)
condenseq->alphabet = gt_alphabet_ref((GtAlphabet *) alph);
condenseq->buffsize =
- condenseq->ldb_allocated =
- condenseq->ldb_nelems =
+ condenseq->lds_allocated =
+ condenseq->lds_nelems =
condenseq->orig_len =
condenseq->orig_num_seq =
condenseq->ubuffsize =
- condenseq->udb_allocated =
- condenseq->udb_nelems = 0;
+ condenseq->uds_allocated =
+ condenseq->uds_nelems = 0;
condenseq->id_len = GT_UNDEF_UWORD;
@@ -263,12 +263,12 @@ GtCondenseq *gt_condenseq_new(const GtEncseq *orig_es, GtLogger *logger)
GtUword gt_condenseq_num_links(const GtCondenseq *condenseq)
{
- return condenseq->ldb_nelems;
+ return condenseq->lds_nelems;
}
GtUword gt_condenseq_num_uniques(const GtCondenseq *condenseq)
{
- return condenseq->udb_nelems;
+ return condenseq->uds_nelems;
}
GtUword gt_condenseq_total_link_len(const GtCondenseq *condenseq)
@@ -276,7 +276,7 @@ GtUword gt_condenseq_total_link_len(const GtCondenseq *condenseq)
GtUword total = 0,
i;
- for (i = 0; i < condenseq->ldb_nelems; i++) {
+ for (i = 0; i < condenseq->lds_nelems; i++) {
total += condenseq->links[i].len;
}
@@ -309,24 +309,24 @@ GtUword gt_condenseq_array_size_increase(GtUword allocated)
return allocated;
}
-static inline void condenseq_udb_resize(GtCondenseq *condenseq)
+static inline void condenseq_uds_resize(GtCondenseq *condenseq)
{
- if (condenseq->udb_nelems == condenseq->udb_allocated) {
- condenseq->udb_allocated =
- gt_condenseq_array_size_increase(condenseq->udb_allocated);
+ if (condenseq->uds_nelems == condenseq->uds_allocated) {
+ condenseq->uds_allocated =
+ gt_condenseq_array_size_increase(condenseq->uds_allocated);
condenseq->uniques = gt_realloc(condenseq->uniques,
- (size_t) condenseq->udb_allocated *
+ (size_t) condenseq->uds_allocated *
sizeof (*condenseq->uniques));
}
}
-static inline void condenseq_ldb_resize(GtCondenseq *condenseq)
+static inline void condenseq_lds_resize(GtCondenseq *condenseq)
{
- if (condenseq->ldb_nelems == condenseq->ldb_allocated) {
- condenseq->ldb_allocated =
- gt_condenseq_array_size_increase(condenseq->ldb_allocated);
+ if (condenseq->lds_nelems == condenseq->lds_allocated) {
+ condenseq->lds_allocated =
+ gt_condenseq_array_size_increase(condenseq->lds_allocated);
condenseq->links = gt_realloc(condenseq->links,
- (size_t) condenseq->ldb_allocated *
+ (size_t) condenseq->lds_allocated *
sizeof (*condenseq->links));
}
}
@@ -337,52 +337,52 @@ void gt_condenseq_add_unique_to_db(GtCondenseq *condenseq,
{
gt_assert(len != 0);
/* if previous unique and this one are not consecutive, add the new one */
- if (condenseq->udb_nelems == 0 ||
- condenseq->uniques[condenseq->udb_nelems - 1].orig_startpos +
- condenseq->uniques[condenseq->udb_nelems - 1].len != orig_startpos) {
- gt_assert(condenseq->udb_nelems == 0 ||
- condenseq->uniques[condenseq->udb_nelems - 1].orig_startpos +
- condenseq->uniques[condenseq->udb_nelems - 1].len <
+ if (condenseq->uds_nelems == 0 ||
+ condenseq->uniques[condenseq->uds_nelems - 1].orig_startpos +
+ condenseq->uniques[condenseq->uds_nelems - 1].len != orig_startpos) {
+ gt_assert(condenseq->uds_nelems == 0 ||
+ condenseq->uniques[condenseq->uds_nelems - 1].orig_startpos +
+ condenseq->uniques[condenseq->uds_nelems - 1].len <
orig_startpos);
- gt_assert(condenseq->ldb_nelems == 0 ||
- condenseq->links[condenseq->ldb_nelems - 1].orig_startpos +
- condenseq->links[condenseq->ldb_nelems - 1].len <=
+ gt_assert(condenseq->lds_nelems == 0 ||
+ condenseq->links[condenseq->lds_nelems - 1].orig_startpos +
+ condenseq->links[condenseq->lds_nelems - 1].len <=
orig_startpos);
- condenseq_udb_resize(condenseq);
- condenseq->uniques[condenseq->udb_nelems].orig_startpos = orig_startpos;
- condenseq->uniques[condenseq->udb_nelems].len = len;
- condenseq->uniques[condenseq->udb_nelems].links.spaceuint32_t = NULL;
- condenseq->udb_nelems++;
+ condenseq_uds_resize(condenseq);
+ condenseq->uniques[condenseq->uds_nelems].orig_startpos = orig_startpos;
+ condenseq->uniques[condenseq->uds_nelems].len = len;
+ condenseq->uniques[condenseq->uds_nelems].links.spaceuint32_t = NULL;
+ condenseq->uds_nelems++;
}
else {
- condenseq->uniques[condenseq->udb_nelems - 1].len += len;
+ condenseq->uniques[condenseq->uds_nelems - 1].len += len;
}
}
void gt_condenseq_add_link_to_db(GtCondenseq *condenseq, GtCondenseqLink link)
{
- condenseq_ldb_resize(condenseq);
+ condenseq_lds_resize(condenseq);
gt_assert(condenseq->links != NULL);
- gt_assert(condenseq->ldb_nelems == 0 ||
- condenseq->links[condenseq->ldb_nelems - 1].orig_startpos +
- condenseq->links[condenseq->ldb_nelems - 1].len <=
+ gt_assert(condenseq->lds_nelems == 0 ||
+ condenseq->links[condenseq->lds_nelems - 1].orig_startpos +
+ condenseq->links[condenseq->lds_nelems - 1].len <=
link.orig_startpos);
- gt_assert(condenseq->udb_nelems == 0 ||
- condenseq->uniques[condenseq->udb_nelems - 1].orig_startpos +
- condenseq->uniques[condenseq->udb_nelems - 1].len <=
+ gt_assert(condenseq->uds_nelems == 0 ||
+ condenseq->uniques[condenseq->uds_nelems - 1].orig_startpos +
+ condenseq->uniques[condenseq->uds_nelems - 1].len <=
link.orig_startpos);
- condenseq->links[condenseq->ldb_nelems] = link;
- condenseq->ldb_nelems++;
+ condenseq->links[condenseq->lds_nelems] = link;
+ condenseq->lds_nelems++;
}
void gt_condenseq_delete(GtCondenseq *condenseq)
{
if (condenseq != NULL) {
GtUword i;
- for (i = 0; i < condenseq->ldb_nelems; i++) {
+ for (i = 0; i < condenseq->lds_nelems; i++) {
gt_editscript_delete(condenseq->links[i].editscript);
}
- for (i = 0; i < condenseq->udb_nelems; i++) {
+ for (i = 0; i < condenseq->uds_nelems; i++) {
GT_FREEARRAY(&(condenseq->uniques[i].links), uint32_t);
}
gt_alphabet_delete(condenseq->alphabet);
@@ -461,37 +461,37 @@ static int condenseq_io(GtCondenseq *condenseq,
if (!had_err)
had_err = gt_condenseq_io_one(condenseq->orig_num_seq);
if (!had_err)
- had_err = gt_condenseq_io_one(condenseq->ldb_nelems);
+ had_err = gt_condenseq_io_one(condenseq->lds_nelems);
if (!had_err) {
- if (condenseq->ldb_nelems == 0) {
+ if (condenseq->lds_nelems == 0) {
gt_warning("compression of condenseq did not succeed in finding any "
"compressable similarities, maybe the input is to small or "
"the chosen parameters should be reconsidered.");
}
if (condenseq->links == NULL) {
- condenseq->links = gt_calloc((size_t) condenseq->ldb_nelems,
+ condenseq->links = gt_calloc((size_t) condenseq->lds_nelems,
sizeof (*condenseq->links));
- condenseq->ldb_allocated = condenseq->ldb_nelems;
+ condenseq->lds_allocated = condenseq->lds_nelems;
}
- had_err = gt_condenseq_io_one(condenseq->udb_nelems);
+ had_err = gt_condenseq_io_one(condenseq->uds_nelems);
}
if (!had_err) {
- gt_assert(condenseq->udb_nelems > 0);
+ gt_assert(condenseq->uds_nelems > 0);
if (condenseq->uniques == NULL) {
condenseq->uniques = gt_malloc(sizeof (*condenseq->uniques) *
- condenseq->udb_nelems );
- condenseq->udb_allocated = condenseq->udb_nelems;
+ condenseq->uds_nelems );
+ condenseq->uds_allocated = condenseq->uds_nelems;
}
}
- for (idx = 0; !had_err && idx < condenseq->ldb_nelems; idx++) {
+ for (idx = 0; !had_err && idx < condenseq->lds_nelems; idx++) {
had_err = condenseq_linkentry_io(&condenseq->links[idx], fp, io_func, err);
}
- for (idx = 0; !had_err && idx < condenseq->udb_nelems; idx++) {
+ for (idx = 0; !had_err && idx < condenseq->uds_nelems; idx++) {
had_err = condenseq_uniqueentry_io(&condenseq->uniques[idx], fp, io_func,
err);
}
@@ -561,19 +561,19 @@ GtCondenseq *gt_condenseq_new_from_file(const char *indexname,
gt_assert(condenseq->links);
gt_fa_fclose(fp);
/*create link array for each unique entry*/
- for (i = 0; i < condenseq->udb_nelems; i++) {
+ for (i = 0; i < condenseq->uds_nelems; i++) {
GT_INITARRAY(&(condenseq->uniques[i].links),uint32_t);
}
/* check for overflows */
- if (condenseq->ldb_nelems > (GtUword) ((uint32_t) 0 - (uint32_t) 1)) {
+ if (condenseq->lds_nelems > (GtUword) ((uint32_t) 0 - (uint32_t) 1)) {
gt_error_set(err, "Overflow, to many link-elements. Can't be stored");
had_err = -1;
}
/* iterate through link entrys and store ids in corresponding unique
entry array */
- for (i = 0; !had_err && (GtUword) i < condenseq->ldb_nelems; i++) {
+ for (i = 0; !had_err && (GtUword) i < condenseq->lds_nelems; i++) {
GtUword uid = condenseq->links[i].unique_id;
- gt_assert(uid < condenseq->udb_nelems);
+ gt_assert(uid < condenseq->uds_nelems);
GT_STOREINARRAY(&(condenseq->uniques[uid].links),
uint32_t,
10,
@@ -626,9 +626,9 @@ static GtUword condenseq_links_position_binsearch(const GtCondenseq *condenseq,
GtUword position)
{
GtWord idx, low, high;
- gt_assert(condenseq && condenseq->ldb_nelems > 0);
+ gt_assert(condenseq && condenseq->lds_nelems > 0);
low = (GtWord) -1;
- gt_safe_assign(high, condenseq->ldb_nelems);
+ gt_safe_assign(high, condenseq->lds_nelems);
idx = GT_DIV2(low + high);
while (high - low > (GtWord) 1) {
if (position < condenseq->links[idx].orig_startpos) {
@@ -641,16 +641,16 @@ static GtUword condenseq_links_position_binsearch(const GtCondenseq *condenseq,
}
if (low > (GtWord) -1 && condenseq->links[idx].orig_startpos <= position)
return (GtUword) idx;
- return condenseq->ldb_nelems;
+ return condenseq->lds_nelems;
}
GtUword gt_condenseq_uniques_position_binsearch(const GtCondenseq *condenseq,
GtUword position)
{
GtWord idx, low, high;
- gt_assert(condenseq && condenseq->udb_nelems > 0);
+ gt_assert(condenseq && condenseq->uds_nelems > 0);
low = (GtWord) -1;
- gt_safe_assign(high, condenseq->udb_nelems);
+ gt_safe_assign(high, condenseq->uds_nelems);
idx = GT_DIV2(low + high);
while (high - low > (GtWord) 1) {
if (position < condenseq->uniques[idx].orig_startpos) {
@@ -663,7 +663,7 @@ GtUword gt_condenseq_uniques_position_binsearch(const GtCondenseq *condenseq,
}
if (low > (GtWord) -1 && condenseq->uniques[idx].orig_startpos <= position)
return (GtUword) idx;
- return condenseq->udb_nelems;
+ return condenseq->uds_nelems;
}
static GtUword condenseq_unique_extract_encoded(const GtCondenseq *cs,
@@ -738,7 +738,7 @@ const GtUchar *gt_condenseq_extract_encoded_range(GtCondenseq *condenseq,
GtCondenseqLink *link = NULL;
GtCondenseqUnique *unique = NULL;
- gt_assert(condenseq && condenseq->udb_nelems != 0);
+ gt_assert(condenseq && condenseq->uds_nelems != 0);
gt_assert(condenseq->uniques[0].orig_startpos == 0);
gt_assert(range.start <= range.end);
gt_assert(range.end < condenseq->orig_len);
@@ -763,7 +763,7 @@ const GtUchar *gt_condenseq_extract_encoded_range(GtCondenseq *condenseq,
if (unique->orig_startpos + unique->len <= range.start) {
uniqueid++;
- if (uniqueid == condenseq->udb_nelems)
+ if (uniqueid == condenseq->uds_nelems)
unique = NULL;
else {
unique = &condenseq->uniques[uniqueid];
@@ -771,16 +771,16 @@ const GtUchar *gt_condenseq_extract_encoded_range(GtCondenseq *condenseq,
}
}
- if (condenseq->ldb_nelems != 0) {
+ if (condenseq->lds_nelems != 0) {
linkid = condenseq_links_position_binsearch(condenseq, range.start);
- if (linkid == condenseq->ldb_nelems)
+ if (linkid == condenseq->lds_nelems)
linkid = 0;
link = &condenseq->links[linkid];
}
if (link != NULL &&
link->orig_startpos + link->len <= range.start) {
linkid++;
- if (linkid == condenseq->ldb_nelems)
+ if (linkid == condenseq->lds_nelems)
link = NULL;
else {
link = &condenseq->links[linkid];
@@ -802,7 +802,7 @@ const GtUchar *gt_condenseq_extract_encoded_range(GtCondenseq *condenseq,
buf + buffoffset,
range.start + buffoffset,
range.end);
- if (++uniqueid == condenseq->udb_nelems)
+ if (++uniqueid == condenseq->uds_nelems)
unique = NULL;
else {
unique = &condenseq->uniques[uniqueid];
@@ -815,7 +815,7 @@ const GtUchar *gt_condenseq_extract_encoded_range(GtCondenseq *condenseq,
buf + buffoffset,
range.start + buffoffset,
range.end);
- if (++linkid == condenseq->ldb_nelems)
+ if (++linkid == condenseq->lds_nelems)
link = NULL;
else {
link = &condenseq->links[linkid];
@@ -892,7 +892,7 @@ gt_condenseq_convert_unique_range_to_global(const GtCondenseq *condenseq,
GtRange ret;
GtCondenseqUnique *unique;
gt_assert(condenseq != NULL);
- gt_assert(unique_id < condenseq->udb_nelems);
+ gt_assert(unique_id < condenseq->uds_nelems);
unique = &condenseq->uniques[unique_id];
ret.start = unique->orig_startpos + range.start;
ret.end = unique->orig_startpos + range.end;
@@ -949,7 +949,7 @@ GtUword gt_condenseq_each_redundant_range(
GtRange extract;
gt_assert(condenseq != NULL);
- gt_assert(uid < condenseq->udb_nelems);
+ gt_assert(uid < condenseq->uds_nelems);
gt_assert(urange.start <= urange.end);
unique = &condenseq->uniques[uid];
@@ -1062,7 +1062,7 @@ int gt_condenseq_output_to_gff3(const GtCondenseq *condenseq,
(GtUword) 1, GT_STRAND_BOTH);
fnode = (GtFeatureNode*) node;
gt_feature_node_set_source(fnode, source);
- for (idx = 0; !had_err && idx < condenseq->udb_nelems; ++idx) {
+ for (idx = 0; !had_err && idx < condenseq->uds_nelems; ++idx) {
GtCondenseqUnique uq = condenseq->uniques[idx];
if (seqend <= uq.orig_startpos) {
const char *desc;
@@ -1096,7 +1096,7 @@ int gt_condenseq_output_to_gff3(const GtCondenseq *condenseq,
gt_str_append_cstr(id, "L");
name_len = gt_str_length(name);
seqend = 0;
- for (idx = 0; !had_err && idx < condenseq->ldb_nelems; ++idx) {
+ for (idx = 0; !had_err && idx < condenseq->lds_nelems; ++idx) {
GtCondenseqLink link = condenseq->links[idx];
if (seqend <= link.orig_startpos) {
const char *desc;
@@ -1145,7 +1145,7 @@ GtDiscDistri *gt_condenseq_unique_length_dist(const GtCondenseq *condenseq)
GtUword idx;
GtDiscDistri *res = gt_disc_distri_new();
- for (idx = 0; idx < condenseq->udb_nelems; idx++) {
+ for (idx = 0; idx < condenseq->uds_nelems; idx++) {
gt_disc_distri_add(res, condenseq->uniques[idx].len);
}
return res;
@@ -1156,7 +1156,7 @@ GtDiscDistri *gt_condenseq_link_length_dist(const GtCondenseq *condenseq)
GtUword idx;
GtDiscDistri *res = gt_disc_distri_new();
- for (idx = 0; idx < condenseq->ldb_nelems; idx++) {
+ for (idx = 0; idx < condenseq->lds_nelems; idx++) {
gt_disc_distri_add(res, condenseq->links[idx].len);
}
return res;
@@ -1167,7 +1167,7 @@ GtDiscDistri *gt_condenseq_link_comp_dist(const GtCondenseq *condenseq)
GtUword idx;
GtDiscDistri *res = gt_disc_distri_new();
- for (idx = 0; idx < condenseq->ldb_nelems; idx++) {
+ for (idx = 0; idx < condenseq->lds_nelems; idx++) {
GtEditscript *es = condenseq->links[idx].editscript;
GtUword vlen;
size_t size;
@@ -1186,7 +1186,7 @@ GtUword gt_condenseq_unique_range_to_seqrange(const GtCondenseq *condenseq,
GtCondenseqUnique uq;
gt_assert(condenseq != NULL);
- gt_assert(uid < condenseq->udb_nelems);
+ gt_assert(uid < condenseq->uds_nelems);
uq = condenseq->uniques[uid];
seqnum = gt_condenseq_pos2seqnum(condenseq, uq.orig_startpos);
@@ -1204,7 +1204,7 @@ GtUword gt_condenseq_unique_range_to_seqrange(const GtCondenseq *condenseq,
GtCondenseqLink lk;
gt_assert(condenseq != NULL);
- gt_assert(lid < condenseq->ldb_nelems);
+ gt_assert(lid < condenseq->lds_nelems);
lk = condenseq->links[lid];
seqnum = gt_condenseq_pos2seqnum(condenseq, lk.orig_startpos);
@@ -1217,7 +1217,7 @@ GtUword gt_condenseq_unique_range_to_seqrange(const GtCondenseq *condenseq,
const GtEditscript *gt_condenseq_link_editscript(const GtCondenseq *condenseq,
GtUword lid)
{
- gt_assert(lid < condenseq->ldb_nelems);
+ gt_assert(lid < condenseq->lds_nelems);
return condenseq->links[lid].editscript;
}
@@ -1230,7 +1230,7 @@ GtUword gt_condenseq_count_relevant_uniques(const GtCondenseq *condenseq,
unsigned int min_align_len)
{
GtUword idx, count = 0;
- for (idx = 0; idx < condenseq->udb_nelems; idx++) {
+ for (idx = 0; idx < condenseq->uds_nelems; idx++) {
if (condenseq->uniques[idx].len >= min_align_len)
count++;
}
@@ -1244,14 +1244,14 @@ GtUword gt_condenseq_size(const GtCondenseq *condenseq,
GtUword *descriptions,
GtUword *separators) {
GtUword idx;
- *uniques = condenseq->udb_nelems * sizeof (*condenseq->uniques);
- for (idx = 0; idx < condenseq->udb_nelems; idx++) {
+ *uniques = condenseq->uds_nelems * sizeof (*condenseq->uniques);
+ for (idx = 0; idx < condenseq->uds_nelems; idx++) {
*uniques += condenseq->uniques[idx].links.allocateduint32_t *
sizeof (*condenseq->uniques[idx].links.spaceuint32_t);
}
- *links = condenseq->ldb_nelems * sizeof (*condenseq->links);
+ *links = condenseq->lds_nelems * sizeof (*condenseq->links);
*editscripts = 0;
- for (idx = 0; idx < condenseq->ldb_nelems; idx++)
+ for (idx = 0; idx < condenseq->lds_nelems; idx++)
*editscripts += gt_editscript_size(condenseq->links[idx].editscript);
*descriptions = condenseq->ids_total_len;
*descriptions += gt_intset_size_of_struct(condenseq->sdstab);
diff --git a/src/extended/condenseq.h b/src/extended/condenseq.h
index 5805041..dd35e78 100644
--- a/src/extended/condenseq.h
+++ b/src/extended/condenseq.h
@@ -37,10 +37,10 @@ typedef struct GtCondenseq GtCondenseq;
/* Return new <GtCondenseq> object filled with data read from file with basename
<indexname>.
- Returns <NULL> on error, or fails if read/file access failes. */
+ Returns <NULL> on error, or fails if read/file access fails. */
GtCondenseq* gt_condenseq_new_from_file(const char *indexname,
GtLogger *logger, GtError *err);
-/* Write <condenseq> to File <fp>, fails hard on io-error, returns error value
+/* Write <condenseq> to File <fp>, fails hard on IO-error, returns error value
and sets <err> accordingly on data errors. */
int gt_condenseq_write(GtCondenseq *condenseq, FILE* fp,
GtError *err);
@@ -75,7 +75,7 @@ GtUword gt_condenseq_seqstartpos(const GtCondenseq *condenseq,
const char* gt_condenseq_description(const GtCondenseq *condenseq,
GtUword *desclen,
GtUword seqnum);
-/* Returns the lenght of sequence <seqnum> from <condenseq> */
+/* Returns the length of sequence <seqnum> from <condenseq> */
GtUword gt_condenseq_seqlength(const GtCondenseq *condenseq,
GtUword seqnum);
/* Returns the encoded representation of the <id>s sequence of
@@ -159,7 +159,7 @@ GtUword gt_condenseq_count_relevant_uniques(
const GtCondenseq *condenseq,
unsigned int min_align_len);
/* return size in bytes of the <condenseq>, other parameters will be set to the
- sise in bytes of the various elements. where <links> does not contain the
+ size in bytes of the various elements. Where <links> does not contain the
size of the included editscript, but only the pointer to it. */
GtUword gt_condenseq_size(const GtCondenseq *condenseq,
GtUword *uniques,
@@ -171,13 +171,13 @@ GtUword gt_condenseq_size(const GtCondenseq *condenseq,
link ranges as experimental_features */
int gt_condenseq_output_to_gff3(const GtCondenseq *condenseq,
GtError *err);
-/* Returns a distripution of the lengths of the unique elements. */
+/* Returns a distribution of the lengths of the unique elements. */
GtDiscDistri* gt_condenseq_unique_length_dist(
const GtCondenseq *condenseq);
-/* Returns a distripution of the lengths of the link elements. */
+/* Returns a distribution of the lengths of the link elements. */
GtDiscDistri* gt_condenseq_link_length_dist(const GtCondenseq *condenseq);
-/* Returns a distripution of the compression ratios of all editscripts. */
+/* Returns a distribution of the compression ratios of all editscripts. */
GtDiscDistri* gt_condenseq_link_comp_dist(const GtCondenseq *condenseq);
/* Returns the original seqnum from which the unique with <uid> derives, changes
diff --git a/src/extended/condenseq_creator.c b/src/extended/condenseq_creator.c
index 152e08d..3cdda5f 100644
--- a/src/extended/condenseq_creator.c
+++ b/src/extended/condenseq_creator.c
@@ -60,7 +60,7 @@ static GtUword ces_c_xdrops = 0;
}
typedef struct GtCondenseqCreatorDiagonal {
- GtUword d, i;
+ GtUword d, j;
} CesCDiag;
typedef struct GtCondenseqCreatorFullDiags {
@@ -189,22 +189,22 @@ static inline GtUword ces_c_diags_get(CesCDiags *diags, GtUword d,
}
if (diags->sparse != NULL) {
CesCDiag *overwrite = NULL,
- *ow_tree = NULL;
+ *ow_tree = NULL;
CesCDiag key;
key.d = d;
overwrite = ces_c_diags_bs_lseq(diags->sparse, d);
if (overwrite >= diags->sparse->space) {
if (overwrite->d == d) {
*diag = overwrite;
- s_ret = overwrite->i;
+ s_ret = overwrite->j;
}
else {
- if (overwrite->i == GT_UNDEF_UWORD)
+ if (overwrite->j == GT_UNDEF_UWORD)
*diag = overwrite;
ow_tree = gt_rbtree_find(diags->sparse->add_tree, &key);
if (ow_tree != NULL) {
gt_assert(ow_tree->d == d);
- s_ret = ow_tree->i;
+ s_ret = ow_tree->j;
*diag = ow_tree;
}
}
@@ -213,7 +213,7 @@ static inline GtUword ces_c_diags_get(CesCDiags *diags, GtUword d,
ow_tree = gt_rbtree_find(diags->sparse->add_tree, &key);
if (ow_tree != NULL) {
gt_assert(ow_tree->d == d);
- s_ret = ow_tree->i;
+ s_ret = ow_tree->j;
*diag = ow_tree;
}
}
@@ -255,7 +255,7 @@ static inline void ces_c_sparse_diags_add(CesCSparseDiags *diags)
gt_assert(d_src < diags->space || d_src->d < diag->d);
/* insert */
d_dest->d = diag->d;
- d_dest->i = diag->i;
+ d_dest->j = diag->j;
d_dest--;
diags->add_nextfree--;
diag = gt_rbtree_iter_prev(diags->add_iterator);
@@ -339,7 +339,7 @@ static void ces_c_sparse_diags_clean(GtCondenseqCreator *ces_c)
*d_src = diags->space,
*end = diags->space + diags->nextfree;
while (d_src < end) {
- if (d_src->i != GT_UNDEF_UWORD) {
+ if (d_src->j != GT_UNDEF_UWORD) {
*d_dest = *d_src;
d_dest++;
}
@@ -356,7 +356,7 @@ static void ces_c_sparse_diags_clean(GtCondenseqCreator *ces_c)
static inline void ces_c_diags_set(GtCondenseqCreator *ces_c,
GtUword d,
- GtUword i, GtUword i_min,
+ GtUword j, GtUword j_min,
CesCDiag *overwrite)
{
CesCDiags *diags = ces_c->diagonals;
@@ -367,18 +367,18 @@ static inline void ces_c_diags_set(GtCondenseqCreator *ces_c,
if (diags->full != NULL) {
CesCFullDiags *fdiags = diags->full;
if (fdiags->space[d] == GT_UNDEF_UWORD ||
- fdiags->space[d] < i_min ||
- fdiags->space[d] + ces_c->kmersize - 1 < i)
- fdiags->space[d] = i;
+ fdiags->space[d] < j_min ||
+ fdiags->space[d] + ces_c->kmersize - 1 < j)
+ fdiags->space[d] = j;
}
if (diags->sparse != NULL) {
CesCSparseDiags *sdiags = diags->sparse;
if (overwrite != NULL) {
overwrite->d = d;
- if (overwrite->i == GT_UNDEF_UWORD ||
- overwrite->i < i_min ||
- overwrite->i + ces_c->kmersize - 1 < i)
- overwrite->i = i;
+ if (overwrite->j == GT_UNDEF_UWORD ||
+ overwrite->j < j_min ||
+ overwrite->j + ces_c->kmersize - 1 < j)
+ overwrite->j = j;
}
else {
GT_UNUSED bool nodecreated;
@@ -388,7 +388,7 @@ static inline void ces_c_diags_set(GtCondenseqCreator *ces_c,
ces_c_sparse_diags_clean(ces_c);
ces_c_sparse_diags_add(sdiags);
}
- sdiags->add_space[sdiags->add_nextfree].i = i;
+ sdiags->add_space[sdiags->add_nextfree].j = j;
sdiags->add_space[sdiags->add_nextfree].d = d;
(void) gt_rbtree_search(sdiags->add_tree,
&sdiags->add_space[sdiags->add_nextfree],
@@ -402,22 +402,24 @@ static inline void ces_c_diags_set(GtCondenseqCreator *ces_c,
}
static void ces_c_sparse_diags_mark(CesCSparseDiags *diags,
- GtUword i_max,
+ GtUword j_max,
GtUword d_min,
GtUword d)
{
- /* move to end of block (last diagonal that was valid for this j or
- smaller) only a few steps? Do not cross current d! */
- CesCDiag *d_ptr = ces_c_diags_bs_lseq(diags, d_min);
-
- /* mark all within same i-range after block as deleted */
- /* do not cross current d! */
- while (d_ptr >= diags->space &&
- d_ptr->d > d &&
- d_ptr->i <= i_max) {/* old diag of last block */
- d_ptr->i = GT_UNDEF_UWORD;
- diags->marked++;
- d_ptr--;
+ if (diags != NULL) {
+ /* move to end of block (last diagonal that was valid for this i or
+ smaller) only a few steps? Do not cross current d! */
+ CesCDiag *d_ptr = ces_c_diags_bs_lseq(diags, d_min);
+
+ /* mark all within same j-range after block as deleted */
+ /* do not cross current d! */
+ while (d_ptr >= diags->space &&
+ d_ptr->d > d &&
+ d_ptr->j <= j_max) {/* old diag of last block */
+ d_ptr->j = GT_UNDEF_UWORD;
+ diags->marked++;
+ d_ptr--;
+ }
}
}
@@ -450,12 +452,14 @@ static void ces_c_xdrop_init(GtXdropArbitraryscores *scores,
} \
while (false)
-/* .end is exclusive!!! */
+/* .end is exclusive!!!
+ i and j are somewhat reversed. i is the subject, j is the query
+*/
static int ces_c_xdrop(GtCondenseqCreator *ces_c,
GtUword i,
GtUword j,
- GtRange seed_bounds,
- GtRange match_bounds,
+ GtRange query_bounds,
+ GtRange subject_bounds,
GtUword unique_id,
GtCondenseqLink *best_link,
GtUword *best_match,
@@ -466,17 +470,17 @@ static int ces_c_xdrop(GtCondenseqCreator *ces_c,
GtCondenseqCreatorXdrop *xdrop = &ces_c->xdrop;
const bool forward = true;
- gt_assert(match_bounds.start <= i);
- gt_assert(i + ces_c->kmersize - 1 < match_bounds.end);
+ gt_assert(subject_bounds.start <= i);
+ gt_assert(i + ces_c->kmersize - 1 < subject_bounds.end);
/* left xdrop */
- if (seed_bounds.start < j && match_bounds.start < i) {
+ if (query_bounds.start < j && subject_bounds.start < i) {
gt_seqabstract_reinit_encseq(!forward,
GT_READMODE_FORWARD,
xdrop->unique_seq_bwd,
ces_c->input_es,
- i - match_bounds.start,
- match_bounds.start);
+ i - subject_bounds.start,
+ subject_bounds.start);
ces_c_xdrops++;
gt_evalxdroparbitscoresextend(!forward,
&left_xdrop,
@@ -485,13 +489,13 @@ static int ces_c_xdrop(GtCondenseqCreator *ces_c,
xdrop->current_seq_bwd,
xdrop->xdropscore);
}
- /* right xdrop (i < match_bounds.end by assertion) */
- if (j < seed_bounds.end) {
+ /* right xdrop (i < subject_bounds.end by assertion) */
+ if (j < query_bounds.end) {
gt_seqabstract_reinit_encseq(forward,
GT_READMODE_FORWARD,
xdrop->unique_seq_fwd,
ces_c->input_es,
- match_bounds.end - i,
+ subject_bounds.end - i,
i);
ces_c_xdrops++;
gt_evalxdroparbitscoresextend(forward,
@@ -520,10 +524,10 @@ static int ces_c_xdrop(GtCondenseqCreator *ces_c,
xdrop->best_right_res = xdrop->right_xdrop_res;
xdrop->right_xdrop_res = swap;
- GT_CES_LENCHECK((i - left_xdrop.ivalue) - match_bounds.start);
+ GT_CES_LENCHECK((i - left_xdrop.ivalue) - subject_bounds.start);
if (!had_err) {
/* left started att i-1 */
- best_link->unique_offset = (i - left_xdrop.ivalue) - match_bounds.start;
+ best_link->unique_offset = (i - left_xdrop.ivalue) - subject_bounds.start;
GT_CES_LENCHECK(xdrop->left->jvalue + xdrop->right->jvalue);
}
if (!had_err) {
@@ -552,13 +556,27 @@ static int ces_c_xdrop(GtCondenseqCreator *ces_c,
#define GT_CES_C_MIN_POS_NUM_CUTOFF (GtUword) 30
+/*
+ i
+ ┌──────────────→ query
+ │
+ │
+ j │ ╲ k-mer
+ │ ╲
+ │ ╲
+ │
+ ↓
+ subject
+ second k-mer-hit: i',j'
+ i = querypos, j = subjectpos
+*/
static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
GtCondenseqLink *best_link,
GtError *err)
{
int had_err = 0;
- GtRange seed_bounds,
- match_bounds;
+ GtRange query_bounds,
+ subject_bounds;
GtKmerStartpos match_positions;
GtCondenseqCreatorWindow *win = &ces_c->window;
GtCondenseqCreatorXdrop *xdrop = &ces_c->xdrop;
@@ -569,8 +587,8 @@ static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
unsigned int idx_win;
GtXdropbest empty = {0,0,0,0,0};
const bool forward = true;
- match_bounds.end =
- match_bounds.start = 0;
+ subject_bounds.end =
+ subject_bounds.start = 0;
*xdrop->left = empty;
*xdrop->right = empty;
@@ -581,18 +599,16 @@ static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
if (match_positions.no_positions == 0 ||
ces_c->window.count != ces_c->windowsize)
return had_err;
- /* make sure the mean is not from one value (only one kmer has positions in
- db) */
-
- /* get bounds for current .end is exclusive */
- seed_bounds.start = ces_c->current_orig_start;
- seed_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
- gt_assert(seed_bounds.start <= querypos);
- if (!(querypos <= seed_bounds.end - ces_c->windowsize)) {
+
+ /* get bounds for current, .end is exclusive */
+ query_bounds.start = ces_c->current_orig_start;
+ query_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
+ gt_assert(query_bounds.start <= querypos);
+ if (!(querypos <= query_bounds.end - ces_c->windowsize)) {
gt_error_set(err, "querypos: " GT_WU ", not smaller end (" GT_WU
") - windowsize (%u) (xdrop calls: " GT_WU " )",
querypos,
- seed_bounds.end,
+ query_bounds.end,
ces_c->windowsize,
ces_c_xdrops);
had_err = -1;
@@ -603,20 +619,20 @@ static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
win->idxs[idx_win] = 0;
}
- if (seed_bounds.start < querypos) {
+ if (query_bounds.start < querypos) {
gt_seqabstract_reinit_encseq(!forward,
GT_READMODE_FORWARD,
xdrop->current_seq_bwd,
ces_c->input_es,
- querypos - seed_bounds.start,
- seed_bounds.start);
+ querypos - query_bounds.start,
+ query_bounds.start);
}
- if (querypos < seed_bounds.end) {
+ if (querypos < query_bounds.end) {
gt_seqabstract_reinit_encseq(forward,
GT_READMODE_FORWARD,
xdrop->current_seq_fwd,
ces_c->input_es,
- seed_bounds.end - querypos,
+ query_bounds.end - querypos,
querypos);
}
}
@@ -630,53 +646,56 @@ static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
GtUword subjectpos = match_positions.startpos[idx_cur],
new_uid = match_positions.unique_ids[idx_cur];
/* end == subjectpos should not be possible as this would be a separator */
- if (match_bounds.end <= subjectpos || match_bounds.end == 0) {
- gt_assert(new_uid != ces_c->ces->udb_nelems);
- match_bounds.start = ces_c->ces->uniques[new_uid].orig_startpos;
- match_bounds.end = match_bounds.start +
+ if (subject_bounds.end <= subjectpos || subject_bounds.end == 0) {
+ gt_assert(new_uid != ces_c->ces->uds_nelems);
+ subject_bounds.start = ces_c->ces->uniques[new_uid].orig_startpos;
+ subject_bounds.end = subject_bounds.start +
ces_c->ces->uniques[new_uid].len;
- gt_assert(match_bounds.start <= subjectpos &&
- subjectpos + ces_c->kmersize <= match_bounds.end);
+ gt_assert(subject_bounds.start <= subjectpos &&
+ subjectpos + ces_c->kmersize <= subject_bounds.end);
}
/* check if new position is already covered by current best alignment */
if (best_match == GT_UNDEF_UWORD ||
- /* ivalue is a length -> best + ivalue is outside of best alignment */
+ /* ivalue is a length (within unique) -> best + ivalue is outside of
+ best alignment */
subjectpos >= best_match + xdrop->right->ivalue) {
/* start with search for right hit at end of window */
for (idx_win = ces_c->windowsize - 1;
!had_err && !found && idx_win >= ces_c->kmersize;
idx_win--) {
- GtKmerStartpos i_primes;
- i_primes.startpos =
+ GtKmerStartpos j_primes;
+ j_primes.startpos =
win->pos_arrs[GT_CONDENSEQ_CREATOR_WINDOWIDX(win, idx_win)].startpos;
- i_primes.no_positions =
+ j_primes.no_positions =
win->pos_arrs[GT_CONDENSEQ_CREATOR_WINDOWIDX(win,
idx_win)].no_positions;
/* If 0, there are no known match_positions for kmer at this window
position. */
- if (i_primes.no_positions != 0) {
- GtUword i_prime_idx;
+ if (j_primes.no_positions != 0) {
+ GtUword j_prime_idx = win->idxs[idx_win],
+ j_prime = j_primes.startpos[j_prime_idx];
+ /* advance to at least the window */
+ while (j_prime_idx < j_primes.no_positions &&
+ subjectpos + ces_c->kmersize - 1 > j_prime) {
+ j_prime_idx++;
+ j_prime = j_primes.startpos[j_prime_idx];
+ }
+ /* hit within window? */
+ if (j_prime_idx < j_primes.no_positions &&
+ subjectpos + ces_c->windowsize > j_prime) {
+ found = true;
+ had_err = ces_c_xdrop(ces_c,
+ subjectpos, querypos,
+ query_bounds,
+ subject_bounds,
+ new_uid,
+ best_link,
+ &best_match,
+ err);
+ }
/* within each position array, remember last highest position, start
there, because subjectpos increases each iteration */
- for (i_prime_idx = win->idxs[idx_win];
- !had_err && !found && i_prime_idx < i_primes.no_positions;
- i_prime_idx++) {
- GtUword i_prime = i_primes.startpos[i_prime_idx];
- if (i_prime > subjectpos + ces_c->windowsize)
- break;
- if (i_prime > subjectpos + ces_c->kmersize - 1) {
- found = true;
- had_err = ces_c_xdrop(ces_c,
- subjectpos, querypos,
- seed_bounds,
- match_bounds,
- new_uid,
- best_link,
- &best_match,
- err);
- }
- }
- win->idxs[idx_win] = i_prime_idx;
+ win->idxs[idx_win] = j_prime_idx;
}
}
}
@@ -686,8 +705,8 @@ static int ces_c_extend_seeds_window(GtCondenseqCreator *ces_c,
if (best_link->len < ces_c->min_align_len)
best_link->len = 0;
else {
- gt_assert(best_link->orig_startpos >= seed_bounds.start);
- gt_assert(best_link->orig_startpos + best_link->len <= seed_bounds.end);
+ gt_assert(best_link->orig_startpos >= query_bounds.start);
+ gt_assert(best_link->orig_startpos + best_link->len <= query_bounds.end);
}
}
return had_err;
@@ -698,22 +717,22 @@ static int ces_c_extend_seeds_brute_force(GtCondenseqCreator *ces_c,
GtError *err)
{
int had_err = 0;
- GtRange seed_bounds,
- match_bounds;
+ GtRange query_bounds,
+ subject_bounds;
GtKmerStartpos match_positions;
GtCondenseqCreatorWindow *win = &ces_c->window;
GtCondenseqCreatorXdrop *xdrop = &ces_c->xdrop;
GtUword best_match = GT_UNDEF_UWORD,
idx_cur,
- j = ces_c->main_pos;
+ querypos = ces_c->main_pos;
const bool forward = true;
GtXdropbest empty = {0,0,0,0,0};
*xdrop->left = empty;
*xdrop->right = empty;
- match_bounds.end =
- match_bounds.start = 0;
+ subject_bounds.end =
+ subject_bounds.start = 0;
match_positions = win->pos_arrs[GT_CONDENSEQ_CREATOR_LAST_WIN(win)];
@@ -721,43 +740,43 @@ static int ces_c_extend_seeds_brute_force(GtCondenseqCreator *ces_c,
return had_err;
/* get bounds for current */
- seed_bounds.start = ces_c->current_orig_start;
- seed_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
+ query_bounds.start = ces_c->current_orig_start;
+ query_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
- if (seed_bounds.start < j) {
+ if (query_bounds.start < querypos) {
gt_seqabstract_reinit_encseq(!forward,
GT_READMODE_FORWARD,
xdrop->current_seq_bwd,
ces_c->input_es,
- j - seed_bounds.start,
- seed_bounds.start);
+ querypos - query_bounds.start,
+ query_bounds.start);
}
- if (j < seed_bounds.end) {
+ if (querypos < query_bounds.end) {
gt_seqabstract_reinit_encseq(forward,
GT_READMODE_FORWARD,
xdrop->current_seq_fwd,
ces_c->input_es,
- seed_bounds.end - j,
- j);
+ query_bounds.end - querypos,
+ querypos);
}
for (idx_cur = 0;
!had_err && idx_cur < match_positions.no_positions;
++idx_cur) {
- GtUword i = match_positions.startpos[idx_cur],
+ GtUword subjectpos = match_positions.startpos[idx_cur],
new_id = match_positions.unique_ids[idx_cur];
- if (match_bounds.end < i || match_bounds.end == 0) {
- gt_assert(new_id != ces_c->ces->udb_nelems);
- match_bounds.start = ces_c->ces->uniques[new_id].orig_startpos;
- match_bounds.end = match_bounds.start +
+ if (subject_bounds.end < subjectpos || subject_bounds.end == 0) {
+ gt_assert(new_id != ces_c->ces->uds_nelems);
+ subject_bounds.start = ces_c->ces->uniques[new_id].orig_startpos;
+ subject_bounds.end = subject_bounds.start +
ces_c->ces->uniques[new_id].len;
- gt_assert(match_bounds.start <= i &&
- i + ces_c->kmersize <= match_bounds.end);
+ gt_assert(subject_bounds.start <= subjectpos &&
+ subjectpos + ces_c->kmersize <= subject_bounds.end);
}
had_err = ces_c_xdrop(ces_c,
- i, j,
- seed_bounds,
- match_bounds,
+ subjectpos, querypos,
+ query_bounds,
+ subject_bounds,
new_id,
best_link,
&best_match,
@@ -768,8 +787,8 @@ static int ces_c_extend_seeds_brute_force(GtCondenseqCreator *ces_c,
if (best_link->len < ces_c->min_align_len)
best_link->len = 0;
else {
- gt_assert(best_link->orig_startpos >= seed_bounds.start);
- gt_assert(best_link->orig_startpos + best_link->len <= seed_bounds.end);
+ gt_assert(best_link->orig_startpos >= query_bounds.start);
+ gt_assert(best_link->orig_startpos + best_link->len <= query_bounds.end);
}
}
return had_err;
@@ -780,124 +799,111 @@ static int ces_c_extend_seeds_diags(GtCondenseqCreator *ces_c,
GtError *err)
{
int had_err = 0;
- GtRange seed_bounds,
- match_bounds = {0,0};
- GtKmerStartpos match_positions;
+ GtRange query_bounds,
+ subject_bounds = {0,0};
+ GtKmerStartpos subject_positions;
GtCondenseqCreatorWindow *win = &ces_c->window;
GtCondenseqCreatorXdrop *xdrop = &ces_c->xdrop;
CesCDiags *diags = ces_c->diagonals;
GtUword best_match = GT_UNDEF_UWORD,
- i_idx, j,
- old_mid_i = GT_UNDEF_UWORD;
+ subject_idx, querypos;
GtXdropbest empty = {0,0,0,0,0};
const bool forward = true;
*xdrop->left = empty;
*xdrop->right = empty;
- match_bounds.end = 0;
+ subject_bounds.end = 0;
- match_positions = win->pos_arrs[GT_CONDENSEQ_CREATOR_LAST_WIN(win)];
+ subject_positions = win->pos_arrs[GT_CONDENSEQ_CREATOR_LAST_WIN(win)];
- if (match_positions.no_positions == 0)
+ /* nothing there or window not full */
+ if (subject_positions.no_positions == 0 ||
+ ces_c->window.count != ces_c->windowsize)
return had_err;
- j = ces_c->main_pos;
+ querypos = ces_c->main_pos;
/* get bounds for current */
- seed_bounds.start = ces_c->current_orig_start;
- seed_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
+ query_bounds.start = ces_c->current_orig_start;
+ query_bounds.end = ces_c->current_seq_start + ces_c->current_seq_len;
#ifdef GT_CONDENSEQ_LIMIT
- match_positions.no_positions =
- match_positions.no_positions > GT_CONDENSEQ_LIMIT ?
+ subject_positions.no_positions =
+ subject_positions.no_positions > GT_CONDENSEQ_LIMIT ?
GT_CONDENSEQ_LIMIT :
- match_positions.no_positions;
+ subject_positions.no_positions;
#endif
- for (i_idx = 0;
- !had_err && i_idx < match_positions.no_positions;
- ++i_idx) {
- /* j = current position, i match positions in uniques, right part of seed
- pair */
+ for (subject_idx = 0;
+ !had_err && subject_idx < subject_positions.no_positions;
+ ++subject_idx) {
GtUword d,
- i = match_positions.startpos[i_idx],
- new_id = match_positions.unique_ids[i_idx],
- i_prime;
+ subjectpos = subject_positions.startpos[subject_idx],
+ new_id = subject_positions.unique_ids[subject_idx],
+ j_prime;
CesCDiag *overwrite_diag = NULL;
- gt_assert(i < j);
- d = j - i;
+ gt_assert(subjectpos < querypos);
+ d = querypos - subjectpos;
- if (match_bounds.end < i || match_bounds.end == 0) {
- if (match_bounds.end != 0 && diags->sparse != NULL) {
+ if (subject_bounds.end < subjectpos || subject_bounds.end == 0) {
+ if (subject_bounds.end != 0) {
ces_c_sparse_diags_mark(diags->sparse,
- match_bounds.end,
- j - match_bounds.end,
+ subject_bounds.end,
+ querypos - subject_bounds.end,
d);
}
- gt_assert(new_id != ces_c->ces->udb_nelems);
- match_bounds.start = ces_c->ces->uniques[new_id].orig_startpos;
- match_bounds.end = match_bounds.start +
+ gt_assert(new_id != ces_c->ces->uds_nelems);
+ subject_bounds.start = ces_c->ces->uniques[new_id].orig_startpos;
+ subject_bounds.end = subject_bounds.start +
ces_c->ces->uniques[new_id].len;
- gt_assert(match_bounds.start <= i &&
- i + ces_c->kmersize <= match_bounds.end);
+ gt_assert(subject_bounds.start <= subjectpos &&
+ subjectpos + ces_c->kmersize <= subject_bounds.end);
}
- /* check for previous hit on diagonal within this block. */
- if ((i_prime = ces_c_diags_get(diags, d,
+ if ((j_prime = ces_c_diags_get(diags, d,
&overwrite_diag)) != GT_UNDEF_UWORD &&
- i_prime >= match_bounds.start &&
- seed_bounds.start + ces_c->windowsize <= j) {
+ j_prime >= subject_bounds.start) {
GtUword distance;
-
- gt_assert(i_prime < i);
- distance = i - i_prime;
+ gt_assert(j_prime < subjectpos);
+ distance = subjectpos - j_prime;
if (distance > (GtUword) ces_c->kmersize &&
distance <= (GtUword) ces_c->windowsize) {
- GtUword j_prime,
- midpoint_seed_i,
- midpoint_seed_j,
- midpoint_offset = GT_DIV2(distance);
-
- /* as j > j' and d = j - i = j' - i', j' = d + i' can not overflow */
- j_prime = d + i_prime;
-
- midpoint_seed_j = j_prime + midpoint_offset;
- midpoint_seed_i = i_prime + midpoint_offset;
- /* i and i_prime are from the same unique sequences.
- midpoint_seed_j position has to be outside of the current
- best alignment. (only checks for '>' because the previous j was
- smaller) */
+ GtUword i_prime;
+
+ /* as querypos > i' and d = querypos - subjectpos = i' - j',
+ i' = d + j' can not overflow */
+ i_prime = d + j_prime;
+ gt_assert(i_prime >= query_bounds.start);
+ gt_assert(i_prime <= query_bounds.end);
+
+ /* subjectpos and j_prime are from the same unique sequences.
+ j' position has to be outside of the current best alignment. (only
+ checks for '>' because the previous querypos was smaller) */
if (best_match == GT_UNDEF_UWORD ||
- midpoint_seed_j > best_match + xdrop->right->jvalue) {
- gt_assert(midpoint_seed_j >= seed_bounds.start);
- gt_assert(midpoint_seed_j <= seed_bounds.end);
- if (old_mid_i != midpoint_seed_i) {
- old_mid_i = midpoint_seed_i;
- if (seed_bounds.start < midpoint_seed_j) {
- gt_seqabstract_reinit_encseq(!forward,
- GT_READMODE_FORWARD,
- xdrop->current_seq_bwd,
- ces_c->input_es,
- midpoint_seed_j -
- seed_bounds.start,
- seed_bounds.start);
- }
- if (midpoint_seed_j < seed_bounds.end) {
- gt_seqabstract_reinit_encseq(forward,
- GT_READMODE_FORWARD,
- xdrop->current_seq_fwd,
- ces_c->input_es,
- seed_bounds.end - midpoint_seed_j,
- midpoint_seed_j);
- }
+ j_prime > best_match + xdrop->right->ivalue) {
+ if (query_bounds.start < i_prime) {
+ gt_seqabstract_reinit_encseq(!forward,
+ GT_READMODE_FORWARD,
+ xdrop->current_seq_bwd,
+ ces_c->input_es,
+ i_prime - query_bounds.start,
+ query_bounds.start);
+ }
+ if (i_prime < query_bounds.end) {
+ gt_seqabstract_reinit_encseq(forward,
+ GT_READMODE_FORWARD,
+ xdrop->current_seq_fwd,
+ ces_c->input_es,
+ query_bounds.end - i_prime,
+ i_prime);
}
had_err = ces_c_xdrop(ces_c,
- midpoint_seed_i, midpoint_seed_j,
- seed_bounds,
- match_bounds,
+ j_prime, i_prime,
+ query_bounds,
+ subject_bounds,
new_id,
best_link,
&best_match,
@@ -905,16 +911,16 @@ static int ces_c_extend_seeds_diags(GtCondenseqCreator *ces_c,
}
}
}
- ces_c_diags_set(ces_c, d, i, match_bounds.start, overwrite_diag);
+ ces_c_diags_set(ces_c, d, subjectpos, subject_bounds.start, overwrite_diag);
}
#ifdef GT_CONDENSEQ_CREATOR_DIAGS_DEBUG
if (diags->full != NULL) {
- gt_log_log("J: " GT_WU " FULL", j);
- for (i_idx = 0; i_idx < diags->full->nextfree; i_idx++) {
- if (diags->full->space[i_idx] != GT_UNDEF_UWORD)
+ gt_log_log("I: " GT_WU " FULL", querypos);
+ for (subject_idx = 0; subject_idx < diags->full->nextfree; subject_idx++) {
+ if (diags->full->space[subject_idx] != GT_UNDEF_UWORD)
gt_log_log("D: " GT_WU ", I: " GT_WU,
- i_idx, diags->full->space[i_idx]);
+ subject_idx, diags->full->space[subject_idx]);
}
}
if (diags->sparse != NULL) {
@@ -925,19 +931,21 @@ static int ces_c_extend_seeds_diags(GtCondenseqCreator *ces_c,
gt_rbtree_iter_new_from_first(diags->sparse->add_tree);
gt_rbtree_iter_reset_from_first(diags->sparse->add_iterator);
iter = diags->sparse->add_iterator;
- gt_log_log("J: " GT_WU " array:", j);
- for (i_idx = 0; i_idx < diags->sparse->nextfree; i_idx++) {
- if (diags->sparse->space[i_idx].i != GT_UNDEF_UWORD)
- gt_log_log("D: " GT_WU ", I: " GT_WU,
- diags->sparse->space[i_idx].d,
- diags->sparse->space[i_idx].i);
+ gt_log_log("I: " GT_WU " array:", querypos);
+ for (subject_idx = 0;
+ subject_idx < diags->sparse->nextfree;
+ subject_idx++) {
+ if (diags->sparse->space[subject_idx].j != GT_UNDEF_UWORD)
+ gt_log_log("D: " GT_WU ", J: " GT_WU,
+ diags->sparse->space[subject_idx].d,
+ diags->sparse->space[subject_idx].j);
else
- gt_log_log("D: " GT_WU ", I: X", diags->sparse->space[i_idx].d);
+ gt_log_log("D: " GT_WU ", J: X", diags->sparse->space[subject_idx].d);
}
gt_log_log("tree:");
diag = gt_rbtree_iter_data(iter);
while (diag != NULL) {
- gt_log_log("D: " GT_WU ", I: " GT_WU, diag->d, diag->i);
+ gt_log_log("D: " GT_WU ", J: " GT_WU, diag->d, diag->j);
diag = gt_rbtree_iter_next(iter);
}
}
@@ -947,8 +955,8 @@ static int ces_c_extend_seeds_diags(GtCondenseqCreator *ces_c,
if (best_link->len < ces_c->min_align_len)
best_link->len = 0;
else {
- gt_assert(best_link->orig_startpos >= seed_bounds.start);
- gt_assert(best_link->orig_startpos + best_link->len <= seed_bounds.end);
+ gt_assert(best_link->orig_startpos >= query_bounds.start);
+ gt_assert(best_link->orig_startpos + best_link->len <= query_bounds.end);
}
}
return had_err;
@@ -1236,7 +1244,7 @@ static void ces_c_add_kmers(GtCondenseqCreator *ces_c,
gt_assert(start < end);
if (start + ces_c->min_align_len <= end)
gt_kmer_database_add_interval(ces_c->kmer_db, start, end - 1,
- ces_c->ces->udb_nelems - 1);
+ ces_c->ces->uds_nelems - 1);
}
static CesCState ces_c_handle_seqend(GtCondenseqCreator *ces_c,
@@ -1574,8 +1582,8 @@ static int ces_c_analyse(GtCondenseqCreator *ces_c, GtTimer *timer,
gt_log_log(GT_WU " kmer positions in unique (kmer_db)",
gt_kmer_database_get_kmer_count(ces_c->kmer_db));
gt_log_log(GT_WU " times xdrop was called", ces_c_xdrops);
- gt_log_log(GT_WU " uniques", ces_c->ces->udb_nelems);
- gt_log_log(GT_WU " links", ces_c->ces->ldb_nelems);
+ gt_log_log(GT_WU " uniques", ces_c->ces->uds_nelems);
+ gt_log_log(GT_WU " links", ces_c->ces->lds_nelems);
if (gt_showtime_enabled()) {
if (percentile + 1 <= 100)
gt_timer_show_progress_formatted(timer, stderr,
@@ -1607,7 +1615,7 @@ static void ces_c_write_unique_fasta(GtCondenseqCreator *ces_c, FILE *fp)
char *buffer = NULL;
unsigned int buffsize = 0;
GtCondenseqUnique current;
- for (idx = 0; idx < ces_c->ces->udb_nelems; ++idx) {
+ for (idx = 0; idx < ces_c->ces->uds_nelems; ++idx) {
current = ces_c->ces->uniques[idx];
gt_assert(current.len != 0);
if (gt_log_enabled()) {
@@ -1723,11 +1731,11 @@ int gt_condenseq_creator_create(GtCondenseqCreator *condenseq_creator,
if (!had_err) {
if (gt_showtime_enabled())
gt_timer_show_progress(timer, "write data, alphabet", stderr);
- gt_log_log(GT_WU " kmer positons in final kmer_db",
+ gt_log_log(GT_WU " kmer positions in final kmer_db",
gt_kmer_database_get_kmer_count(condenseq_creator->kmer_db));
gt_log_log(GT_WU " xdrop calls.", ces_c_xdrops);
- gt_log_log(GT_WU " uniques", condenseq_creator->ces->udb_nelems);
- gt_log_log(GT_WU " links", condenseq_creator->ces->ldb_nelems);
+ gt_log_log(GT_WU " uniques", condenseq_creator->ces->uds_nelems);
+ gt_log_log(GT_WU " links", condenseq_creator->ces->lds_nelems);
gt_log_log(GT_WU " bytes in final kmer_db",
gt_kmer_database_get_used_size(condenseq_creator->kmer_db));
gt_log_log(GT_WU " bytes allocated for kmer_db",
diff --git a/src/extended/condenseq_creator.h b/src/extended/condenseq_creator.h
index d04876e..cd110b0 100644
--- a/src/extended/condenseq_creator.h
+++ b/src/extended/condenseq_creator.h
@@ -55,7 +55,7 @@ int gt_condenseq_creator_create(
GtLogger *kdb_logger,
GtError *err);
/* This option turns of optimized seed extension. Every seed is used for xdrop
- without filtering. And no cutoff is used for number of considered kmer
+ without filtering. And no cutoff is used for number of considered k-mer
positions.
Consider this to be a development option for benchmarking purpose.
Disables diagonals and filtered extension. */
@@ -83,25 +83,25 @@ void gt_condenseq_creator_enable_full_diagonals(
effect as gt_condenseq_creator_enable_opt(). */
void gt_condenseq_creator_disable_full_diagonals(
GtCondenseqCreator *condenseq_creator);
-/* If a kmer appears more often than <cutoff_value> in the unique data it won't
+/* If a k-mer appears more often than <cutoff_value> in the unique data it won't
be used to find new alignments, because it likely has a low chance to find
new alignments. */
void gt_condenseq_creator_set_cutoff(
GtCondenseqCreator *condenseq_creator,
GtUword cutoff_value);
-/* If this option is used every kmer in the unique data will be used to find new
- alignments. */
+/* If this option is used every k-mer in the unique data will be used
+ to find new alignments. */
void gt_condenseq_creator_disable_cutoff(
GtCondenseqCreator *condenseq_creator);
/* If this option is set the <cutoff_value> will be deduced by the current mean
- value of kmers in the unique data. */
+ value of k-mers in the unique data. */
void gt_condenseq_creator_use_mean_cutoff(
GtCondenseqCreator *condenseq_creator);
-/* If this option is set only <cutoff_value> many kmers will be saved to find
+/* If this option is set only <cutoff_value> many k-mers will be saved to find
alignments. Only works when a cutoff is set. */
void gt_condenseq_creator_disable_prune(
GtCondenseqCreator *condenseq_creator);
-/* This option specifies which fraction of the mean value of each kmer in the
+/* This option specifies which fraction of the mean value of each k-mer in the
unique data is used to calculate a current <cutoff_value> (mean/<fraction>.*/
void gt_condenseq_creator_set_mean_fraction(
GtCondenseqCreator *condenseq_creator,
diff --git a/src/extended/condenseq_rep.h b/src/extended/condenseq_rep.h
index 4d0a291..17dae94 100644
--- a/src/extended/condenseq_rep.h
+++ b/src/extended/condenseq_rep.h
@@ -71,13 +71,13 @@ struct GtCondenseq {
GtUword buffsize,
id_len, /* GT_UNDEF_UWORD if sdstab != NULL */
ids_total_len,
- ldb_allocated,
- ldb_nelems,
+ lds_allocated,
+ lds_nelems,
orig_len,
orig_num_seq,
ubuffsize,
- udb_allocated,
- udb_nelems;
+ uds_allocated,
+ uds_nelems;
};
/* Returns a new GtCondenseq object, which is empty and can be filled by
@@ -85,7 +85,7 @@ struct GtCondenseq {
GtCondenseq* gt_condenseq_new(const GtEncseq *orig_es, GtLogger *logger);
/* Returns index of the unique element with the biggest orig_startpos smaller
- than <position>. if smallest is larger: return first. */
+ than <position>. If smallest is larger: return first. */
GtUword gt_condenseq_uniques_position_binsearch(
const GtCondenseq *condenseq,
GtUword position);
diff --git a/src/extended/condenseq_search_arguments.h b/src/extended/condenseq_search_arguments.h
index 20ed334..b84a571 100644
--- a/src/extended/condenseq_search_arguments.h
+++ b/src/extended/condenseq_search_arguments.h
@@ -23,6 +23,8 @@
#include "core/str_api.h"
#include "extended/condenseq.h"
+/* The <GtCondenseqSearchArguments> class represents some general options used
+ by all implemented search tools that search on GtCondenseq. */
typedef struct GtCondenseqSearchArguments GtCondenseqSearchArguments;
/* Returns a new <GtCondenseqSearchArguments> object */
diff --git a/src/extended/editscript.c b/src/extended/editscript.c
index 904607e..1562ff2 100644
--- a/src/extended/editscript.c
+++ b/src/extended/editscript.c
@@ -169,6 +169,8 @@ static inline void editscript_space_add_length(GtEditscript *es,
/* scheme: [1111][x][x][x][x] first store consecutive ones for each element
needed, (like elias gamma) then store the value split up to chunks of
element size */
+ /* Idea: this could be made faster with lookup-tables for the filling of most
+ significant bits. */
uint32_t num_elems = 0,
shift;
GtBitsequence tmp = value;
@@ -178,24 +180,29 @@ static inline void editscript_space_add_length(GtEditscript *es,
editscript_space_add_next(es, fillpos, tmp);
}
else {
+ /* count the number elements needed */
while (tmp != 0) {
num_elems++;
tmp >>= es->entry_size;
}
- /* number of one bits corresponds to num of elements needed */
- tmp = (GtBitsequence) (1 << num_elems) - 1;
- while ((tmp & GT_EDITSCRIPT_FIRSTMASK(es)) != 0) {
- /* add ~0 (full) elements */
+
+ /* write number of entries in unary */
+ tmp = num_elems;
+ /* write full 1-entries */
+ while (tmp >= es->entry_size) {
editscript_space_add_next(es, fillpos, GT_EDITSCRIPT_FULLMASK(es));
- tmp >>= es->entry_size;
+ tmp -= es->entry_size;
}
if (tmp != 0) {
- /* move bits to front */
- while ((tmp & GT_EDITSCRIPT_FIRSTMASK(es)) == 0) {
- tmp <<= 1;
- }
+ /* write tmp 1 bits at most siginficant positions, e.g. entry_size=4,
+ tmp=3: [1110]
+ left shift by number of zeros, mask with entry_size 1bits.
+ */
+ tmp = (GT_EDITSCRIPT_FULLMASK(es) << (es->entry_size - tmp)) &
+ GT_EDITSCRIPT_FULLMASK(es);
}
- /* either add remaining bits or one zero element to seperated */
+ /* tmp contains either the remaining bits or one zero element to seperated
+ */
editscript_space_add_next(es, fillpos, tmp);
/* store actual value */
@@ -216,31 +223,38 @@ editscript_space_get_length(const GtEditscript *es,
{
GtBitsequence ret = 0,
elem = 0,
+ part_elem = 0,
num_elems = 0;
- num_elems = elem = editscript_space_get_next(es, pos);
+ elem = editscript_space_get_next(es, pos);
(*elems_used)++;
/* first bit not set, the value itself. */
if ((elem & GT_EDITSCRIPT_FIRSTMASK(es)) == 0) {
return elem;
}
+ /* first bit is set, cosecutive 1-bits represent number of elements to read */
while (elem == GT_EDITSCRIPT_FULLMASK(es)) {
+ num_elems += es->entry_size;
elem = editscript_space_get_next(es, pos);
(*elems_used)++;
- if (elem != 0) {
- num_elems <<= es->entry_size;
- num_elems |= elem;
- }
}
- /* move bits to right, max entry_size steps. */
- while ((num_elems & 1) == 0) {
- num_elems >>= 1;
+ /* elem is not full with 1 bits, but some most significant bits are set equal
+ to number of elements to read, iterate over 1 bits, read elements of number
+ while we do so. */
+ while ((elem & GT_EDITSCRIPT_FIRSTMASK(es)) != 0) {
+ elem <<= 1;
+ part_elem = editscript_space_get_next(es, pos);
+ (*elems_used)++;
+ ret <<= es->entry_size;
+ ret |= part_elem;
}
+ /* more elements to read as has been indicated by full 1-bit elems from above
+ */
while (num_elems != 0) {
- num_elems >>= 1;
- ret <<= es->entry_size;
+ num_elems--;
elem = editscript_space_get_next(es, pos);
(*elems_used)++;
+ ret <<= es->entry_size;
ret |= elem;
}
return ret;
diff --git a/src/extended/editscript.h b/src/extended/editscript.h
index 35fa784..7941b8f 100644
--- a/src/extended/editscript.h
+++ b/src/extended/editscript.h
@@ -32,39 +32,45 @@
reversed. */
typedef struct GtEditscript GtEditscript;
+/* Class <GtEditscriptBuilder> is used to fill a <GtEditscript> one operation a
+ time. We recommend to use the function gt_editscript_new_with_sequences() to
+ fill the <GtEditscript> object directly. Operations are added left to right,
+ not as in <GtAlignment> or <GtMultieop> classes! */
+typedef struct GtEditscriptBuilder GtEditscriptBuilder;
+
/* Returns new empty <GtEditscript> object. */
-GtEditscript* gt_editscript_new(GtAlphabet *alphabet);
+GtEditscript* gt_editscript_new(GtAlphabet *alphabet);
/* print out a string representing the editscript */
-void gt_editscript_show(const GtEditscript *editscript,
- GtAlphabet *alphabet);
+void gt_editscript_show(const GtEditscript *editscript,
+ GtAlphabet *alphabet);
/* Delete content of <editscript> */
-void gt_editscript_reset(GtEditscript *editscript);
+void gt_editscript_reset(GtEditscript *editscript);
/* Returns new <GtEditscript> object and fills it with <encseq> as "second" or v
sequence and <multieops> representing the edit operations when aligned to a
sequence u. <start> and <dir> define where sequence v starts within
<encseq>. Expects <multieops> to be in reverse (right to left) order. */
-GtEditscript* gt_editscript_new_with_sequences(const GtEncseq *encseq,
- GtMultieoplist *multieops,
- GtUword start,
- GtReadmode dir);
+GtEditscript* gt_editscript_new_with_sequences(const GtEncseq *encseq,
+ GtMultieoplist *multieops,
+ GtUword start,
+ GtReadmode dir);
/* Sets <match> <mismatch> <insertion> and <deletion> to the number of
occurrences of those edit operations within the <editscript> */
-void gt_editscript_get_stats(const GtEditscript *editscript,
- GtUword *match,
- GtUword *mismatch,
- GtUword *insertion,
- GtUword *deletion);
+void gt_editscript_get_stats(const GtEditscript *editscript,
+ GtUword *match,
+ GtUword *mismatch,
+ GtUword *insertion,
+ GtUword *deletion);
/* Returns the length of the target sequence v. */
-GtUword gt_editscript_get_target_len(const GtEditscript *editscript);
+GtUword gt_editscript_get_target_len(const GtEditscript *editscript);
/* Returns the length of the source sequence u. */
-GtUword gt_editscript_get_source_len(const GtEditscript *editscript);
+GtUword gt_editscript_get_source_len(const GtEditscript *editscript);
/* Returns the length of the target subsequence of v that corresponds to u
starting at <srcfrom> with length <srclen>. */
-GtUword gt_editscript_get_target_subseq_len(
+GtUword gt_editscript_get_target_subseq_len(
const GtEditscript *editscript,
GtUword srcfrom,
GtUword srclen);
@@ -74,24 +80,24 @@ GtUword gt_editscript_get_target_subseq_len(
alignment, <buffer> will be resized and <bufsize> set accordingly. If
<buffer> is NULL, space will be allocated and <bufsize> set.
Returns the number of <GtUchar>s written to buffer. */
-GtUword gt_editscript_get_sequence(const GtEditscript *editscript,
- const GtEncseq *encseq,
- GtUword start,
- GtReadmode dir,
- GtUchar **buffer,
- GtUword *bufsize);
+GtUword gt_editscript_get_sequence(const GtEditscript *editscript,
+ const GtEncseq *encseq,
+ GtUword start,
+ GtReadmode dir,
+ GtUchar **buffer,
+ GtUword *bufsize);
/* Transform sequence u defined by <start> and <dir> in <encseq> using the edit
operations in <editscript> and stores the result in <buffer> which has to be
large enough to hold v (the resulting sequence). Extracts only positions
<vfrompos> to <vtopos> (inclusive) relative to v.
Returns the number of <GtUchar>s written to buffer. */
-GtUword gt_editscript_get_sub_sequence_v(const GtEditscript *editscript,
- const GtEncseq *encseq,
- GtUword start,
- GtReadmode dir,
- GtUword vfrompos,
- GtUword vtopos,
- GtUchar *buffer);
+GtUword gt_editscript_get_sub_sequence_v(const GtEditscript *editscript,
+ const GtEncseq *encseq,
+ GtUword start,
+ GtReadmode dir,
+ GtUword vfrompos,
+ GtUword vtopos,
+ GtUchar *buffer);
/* Transform sequence u defined by <start> and <dir> in <encseq> using the edit
operations in <editscript> and stores the result in <buffer> of size
<bufsize>. As the length of the corresponding v can not be known in an
@@ -100,32 +106,26 @@ GtUword gt_editscript_get_sub_sequence_v(const GtEditscript *editscript,
Extracts only positions <ufrompos> to <utopos> (inclusive) relative to start
of u.
Returns the number of <GtUchar>s written to buffer. */
-GtUword gt_editscript_get_sub_sequence_u(const GtEditscript *editscript,
- const GtEncseq *encseq,
- GtUword start,
- GtReadmode dir,
- GtUword ufrompos,
- GtUword utopos,
- GtUchar **buffer,
- GtUword *bufsize);
+GtUword gt_editscript_get_sub_sequence_u(const GtEditscript *editscript,
+ const GtEncseq *encseq,
+ GtUword start,
+ GtReadmode dir,
+ GtUword ufrompos,
+ GtUword utopos,
+ GtUchar **buffer,
+ GtUword *bufsize);
/* Read or write to/from File, depending on <editscript>. If <NULL>, it
allocates memory for a new <GtEditscript> object and tries to fill it from
file <fp>. If not <NULL> it writs the content of <editscript> to <fp>.
Returns <NULL> on error, in which case <editscript> will be deleted and <err>
will be set. */
-GtEditscript* gt_editscript_io(GtEditscript *editscript, FILE *fp,
+GtEditscript* gt_editscript_io(GtEditscript *editscript, FILE *fp,
GtError *err);
/* Returns the size of the <editscript> in bytes in memory. */
-size_t gt_editscript_size(const GtEditscript *editscript);
+size_t gt_editscript_size(const GtEditscript *editscript);
/* Free all memory associated with <editscript> */
-void gt_editscript_delete(GtEditscript *editscript);
-
-/* Class <GtEditscriptBuilder> is used to fill a <GtEditscript> one operation a
- time. We recommend to use the function gt_editscript_new_with_sequences() to
- fill the <GtEditscript> object directly. Operations are added left to right,
- not as in <GtAlignment> or <GtMultieop> classes! */
-typedef struct GtEditscriptBuilder GtEditscriptBuilder;
+void gt_editscript_delete(GtEditscript *editscript);
/* Returns new <GtEditscriptBuilder> object */
GtEditscriptBuilder *gt_editscript_builder_new(GtEditscript *editscript);
diff --git a/src/extended/elias_gamma.h b/src/extended/elias_gamma.h
index 0acce69..538823c 100644
--- a/src/extended/elias_gamma.h
+++ b/src/extended/elias_gamma.h
@@ -29,7 +29,7 @@
typedef struct GtEliasGammaBitwiseDecoder GtEliasGammaBitwiseDecoder;
/* Encodes the given positive integer <x>, writes it to a new <GtBittab> object
- and returns it. Expects x > 0. To encode 0 just add 1 to all numbers to
+ and returns it. Expects <x> > 0. To encode 0 just add 1 to all numbers to
encode. */
GtBittab* gt_elias_gamma_encode(GtUword x);
diff --git a/src/extended/encdesc.c b/src/extended/encdesc.c
index b223799..9fcf44c 100644
--- a/src/extended/encdesc.c
+++ b/src/extended/encdesc.c
@@ -44,7 +44,6 @@
#include "extended/encdesc_header_io.h"
#include "extended/encdesc_rep.h"
#include "extended/huffcode.h"
-#include "extended/rbtree.h"
#include "extended/sampling.h"
#define GT_ENCDESC_ARRAY_RESIZE 50
diff --git a/src/extended/encdesc_header_io.h b/src/extended/encdesc_header_io.h
index d6a52cf..b608bf6 100644
--- a/src/extended/encdesc_header_io.h
+++ b/src/extended/encdesc_header_io.h
@@ -21,6 +21,8 @@
#include "core/error_api.h"
#include "extended/encdesc.h"
+/* GtEncdescHeaderIO module */
+
/* Write header information of <encdesc> to <FILE> <fp>.
Returns 0 on success, 1 on error, sets <err> accordingly.
TODO DW this function does more than that, it sets some bool within the
diff --git a/src/extended/fasta_header_iterator.h b/src/extended/fasta_header_iterator.h
index 4892169..5dd4579 100644
--- a/src/extended/fasta_header_iterator.h
+++ b/src/extended/fasta_header_iterator.h
@@ -21,14 +21,18 @@
#include "core/str_array_api.h"
#include "extended/cstr_iterator_rep.h"
-/* implements <GtCstrIterator> */
+/* The <GtFastaHeaderIterator> class, implements <GtCstrIterator> */
typedef struct GtFastaHeaderIterator GtFastaHeaderIterator;
const GtCstrIteratorClass* gt_fasta_header_iterator_class(void);
+/* Returns new <GtCstrIterator> which will allow to iterate over the fasta
+ headers of file(s) <filenametab>. Returns <NULL> on error. */
GtCstrIterator* gt_fasta_header_iterator_new(GtStrArray *filenametab,
GtError *err);
+/* Tests if <GSI> is a <GtFastaHeaderIterator> and returns the meta class object
+ or <NULL> if the class is not a <GtFastaHeaderIterator>. */
#define gt_fasta_header_iterator_cast(GSI) \
gt_cstr_iterator_cast(gt_fasta_header_iterator_class(), GSI)
#endif
diff --git a/src/extended/gff3_escaping.c b/src/extended/gff3_escaping.c
index fd1d469..5170620 100644
--- a/src/extended/gff3_escaping.c
+++ b/src/extended/gff3_escaping.c
@@ -178,23 +178,23 @@ int gt_gff3_escaping_unit_test(GtError *err)
/* test allowed chars, need not be escaped but should be unescaped */
for (i = ' '; !had_err && i < 0x7F; i++) {
- char code[4];
- snprintf(code, 4, "%%%02X", i);
+ char code[10];
+ snprintf(code, 10, "%%%02X", i);
had_err = test_single_escaping((char) i, code, false, true, err);
}
/* control characters, must be escaped and unescaped */
for (i = 1; !had_err && i < ' '; i++) {
- char code[4];
- snprintf(code, 4, "%%%02X", i);
+ char code[10];
+ snprintf(code, 10, "%%%02X", i);
had_err = test_single_escaping((char) i, code, true, true, err);
}
/* non-hex codes (e.g. '%ZS') should be ignored altogether */
for (i = 0x7F; !had_err && i <= 0xFF; i++) {
- char code[10];
- snprintf(code, 10, "foo%%%Xbar", i);
- had_err = gt_gff3_unescape(unescaped, code, 10, err);
+ char code[16];
+ snprintf(code, 16, "foo%%%Xbar", i);
+ had_err = gt_gff3_unescape(unescaped, code, 16, err);
gt_ensure(!strcmp(gt_str_get(unescaped), code));
gt_str_reset(unescaped);
}
diff --git a/src/extended/gff3_parser.c b/src/extended/gff3_parser.c
index 3613a18..9d29f15 100644
--- a/src/extended/gff3_parser.c
+++ b/src/extended/gff3_parser.c
@@ -998,10 +998,27 @@ static int compare_other_attribute(const char *attr_name, GtFeatureNode *new_gf,
GtFeatureNode *old_gf, const char *id,
GtGFF3Parser *parser, GtError *err)
{
+ const char *old_attr_val = NULL,
+ *new_attr_val = NULL;
gt_error_check(err);
gt_assert(attr_name && new_gf && old_gf && parser);
- if (strcmp(gt_feature_node_get_attribute(new_gf, attr_name),
- gt_feature_node_get_attribute(old_gf, attr_name))) {
+ old_attr_val = gt_feature_node_get_attribute(old_gf, attr_name);
+ new_attr_val = gt_feature_node_get_attribute(new_gf, attr_name);
+ if (!old_attr_val || !new_attr_val) {
+ gt_error_set(err, "the multi-feature with %s \"%s\" on line %u in file "
+ "\"%s\" does not share attribute '%s' with its counterpart "
+ "on line %u ('%s' vs. '%s')",
+ GT_GFF_ID, id,
+ gt_genome_node_get_line_number((GtGenomeNode*) new_gf),
+ gt_genome_node_get_filename((GtGenomeNode*) new_gf),
+ attr_name,
+ gt_genome_node_get_line_number((GtGenomeNode*) old_gf),
+ (new_attr_val ? new_attr_val : "<missing>"),
+ (old_attr_val ? old_attr_val : "<missing>"));
+ return -1;
+ }
+ gt_assert(new_attr_val && old_attr_val);
+ if (strcmp(new_attr_val, old_attr_val)) {
if (parser->tidy && !strcmp(attr_name, GT_GFF_PARENT)) {
tidy_multi_feature_with_different_parent(new_gf, old_gf, id,
parser->feature_info);
diff --git a/src/extended/huffcode.h b/src/extended/huffcode.h
index f90ce0f..d9a480f 100644
--- a/src/extended/huffcode.h
+++ b/src/extended/huffcode.h
@@ -124,7 +124,7 @@ typedef int (*GtHuffmanDecoderGetMemFunc) (GtBitsequence **bitsequence,
part of mmaped space. <mem_func> will be called initially to get the first
chunk of data.
This type of encoder is helpful if the encoded data is sampled or read in
- chunks from mmapped files. */
+ chunks from mmaped files. */
GtHuffmanDecoder* gt_huffman_decoder_new_from_memory(
GtHuffman *huffman,
GtHuffmanDecoderGetMemFunc mem_func,
diff --git a/src/extended/intset.h b/src/extended/intset.h
index 461616b..1d7fd62 100644
--- a/src/extended/intset.h
+++ b/src/extended/intset.h
@@ -74,7 +74,7 @@ size_t gt_intset_size_of_rep(GtIntset *intset);
size_t gt_intset_best_memory_size(GtUword maxelement, GtUword num_of_elems);
/* Write <intset> to file <fp>. Fails with exit on IO-error. Returns NULL if
- data error occures and writes it to <err>, <intset> will be deleted at that
+ data error occurs and writes it to <err>, <intset> will be deleted at that
point. */
GtIntset* gt_intset_write(GtIntset *intset, FILE *fp, GtError *err);
diff --git a/src/extended/intset_16.c b/src/extended/intset_16.c
index 7e5a446..be53b02 100644
--- a/src/extended/intset_16.c
+++ b/src/extended/intset_16.c
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
@@ -469,6 +469,16 @@ const GtIntsetClass* gt_intset_16_class(void)
return this_c;
}
+#define GT_INTSET_TEST_16_BINSEARCH(IDX) \
+gt_ensure(gt_intset_16_get_test(is, IDX) == arr[IDX]); \
+gt_ensure(gt_intset_16_get(is, IDX) == arr[IDX]); \
+gt_ensure( \
+ gt_intset_16_get_idx_smallest_geq_test(is, arr[IDX] + 1) == \
+ IDX + 1); \
+gt_ensure( \
+ gt_intset_16_get_idx_smallest_geq(is, arr[IDX] + 1) == \
+ IDX + 1)
+
int gt_intset_16_unit_test(GtError *err)
{
int had_err = 0;
@@ -486,7 +496,7 @@ int gt_intset_16_unit_test(GtError *err)
arr[idx] = arr[idx - 1] + gt_rand_max(stepsize) + 1;
}
- is_size = gt_intset_16_size_of_rep(arr[num_of_elems - 1], num_of_elems);
+ is_size = gt_intset_16_size_of_rep(arr[num_of_elems - 1], num_of_elems);
if (!had_err) {
if (is_size < (size_t) UINT_MAX) {
@@ -503,23 +513,16 @@ int gt_intset_16_unit_test(GtError *err)
gt_ensure(gt_intset_16_elems_is_valid(is));
gt_ensure(gt_intset_16_secstart_is_valid(is));
- for (idx = 0; !had_err && idx < num_of_elems; idx++) {
- if (arr[idx] != 0 && arr[idx - 1] != (arr[idx] - 1)) {
- gt_ensure(
- gt_intset_16_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
- idx);
- gt_ensure(
- gt_intset_16_get_idx_smallest_geq(is, arr[idx] - 1) ==
- idx);
- }
- gt_ensure(gt_intset_16_get_test(is, idx) == arr[idx]);
- gt_ensure(gt_intset_16_get(is, idx) == arr[idx]);
+ GT_INTSET_TEST_16_BINSEARCH(0);
+ for (idx = 1; !had_err && idx < num_of_elems; idx++) {
+ GtUword to_find = (arr[idx - 1] == (arr[idx] - 1)) ? idx - 1 : idx;
gt_ensure(
- gt_intset_16_get_idx_smallest_geq_test(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_16_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
+ to_find);
gt_ensure(
- gt_intset_16_get_idx_smallest_geq(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_16_get_idx_smallest_geq(is, arr[idx] - 1) ==
+ to_find);
+ GT_INTSET_TEST_16_BINSEARCH(idx);
}
if (!had_err)
had_err = gt_intset_unit_test_notinset(is, 0, arr[0] - 1, err);
diff --git a/src/extended/intset_16.h b/src/extended/intset_16.h
index 95b16f1..aee85b5 100644
--- a/src/extended/intset_16.h
+++ b/src/extended/intset_16.h
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
diff --git a/src/extended/intset_32.c b/src/extended/intset_32.c
index b14bbf3..3d41eb0 100644
--- a/src/extended/intset_32.c
+++ b/src/extended/intset_32.c
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
@@ -469,6 +469,16 @@ const GtIntsetClass* gt_intset_32_class(void)
return this_c;
}
+#define GT_INTSET_TEST_32_BINSEARCH(IDX) \
+gt_ensure(gt_intset_32_get_test(is, IDX) == arr[IDX]); \
+gt_ensure(gt_intset_32_get(is, IDX) == arr[IDX]); \
+gt_ensure( \
+ gt_intset_32_get_idx_smallest_geq_test(is, arr[IDX] + 1) == \
+ IDX + 1); \
+gt_ensure( \
+ gt_intset_32_get_idx_smallest_geq(is, arr[IDX] + 1) == \
+ IDX + 1)
+
int gt_intset_32_unit_test(GtError *err)
{
int had_err = 0;
@@ -486,7 +496,7 @@ int gt_intset_32_unit_test(GtError *err)
arr[idx] = arr[idx - 1] + gt_rand_max(stepsize) + 1;
}
- is_size = gt_intset_32_size_of_rep(arr[num_of_elems - 1], num_of_elems);
+ is_size = gt_intset_32_size_of_rep(arr[num_of_elems - 1], num_of_elems);
if (!had_err) {
if (is_size < (size_t) UINT_MAX) {
@@ -503,23 +513,16 @@ int gt_intset_32_unit_test(GtError *err)
gt_ensure(gt_intset_32_elems_is_valid(is));
gt_ensure(gt_intset_32_secstart_is_valid(is));
- for (idx = 0; !had_err && idx < num_of_elems; idx++) {
- if (arr[idx] != 0 && arr[idx - 1] != (arr[idx] - 1)) {
- gt_ensure(
- gt_intset_32_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
- idx);
- gt_ensure(
- gt_intset_32_get_idx_smallest_geq(is, arr[idx] - 1) ==
- idx);
- }
- gt_ensure(gt_intset_32_get_test(is, idx) == arr[idx]);
- gt_ensure(gt_intset_32_get(is, idx) == arr[idx]);
+ GT_INTSET_TEST_32_BINSEARCH(0);
+ for (idx = 1; !had_err && idx < num_of_elems; idx++) {
+ GtUword to_find = (arr[idx - 1] == (arr[idx] - 1)) ? idx - 1 : idx;
gt_ensure(
- gt_intset_32_get_idx_smallest_geq_test(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_32_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
+ to_find);
gt_ensure(
- gt_intset_32_get_idx_smallest_geq(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_32_get_idx_smallest_geq(is, arr[idx] - 1) ==
+ to_find);
+ GT_INTSET_TEST_32_BINSEARCH(idx);
}
if (!had_err)
had_err = gt_intset_unit_test_notinset(is, 0, arr[0] - 1, err);
diff --git a/src/extended/intset_32.h b/src/extended/intset_32.h
index a0a77bb..21b8134 100644
--- a/src/extended/intset_32.h
+++ b/src/extended/intset_32.h
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
diff --git a/src/extended/intset_8.c b/src/extended/intset_8.c
index c441c1c..ee58514 100644
--- a/src/extended/intset_8.c
+++ b/src/extended/intset_8.c
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
@@ -469,6 +469,16 @@ const GtIntsetClass* gt_intset_8_class(void)
return this_c;
}
+#define GT_INTSET_TEST_8_BINSEARCH(IDX) \
+gt_ensure(gt_intset_8_get_test(is, IDX) == arr[IDX]); \
+gt_ensure(gt_intset_8_get(is, IDX) == arr[IDX]); \
+gt_ensure( \
+ gt_intset_8_get_idx_smallest_geq_test(is, arr[IDX] + 1) == \
+ IDX + 1); \
+gt_ensure( \
+ gt_intset_8_get_idx_smallest_geq(is, arr[IDX] + 1) == \
+ IDX + 1)
+
int gt_intset_8_unit_test(GtError *err)
{
int had_err = 0;
@@ -486,7 +496,7 @@ int gt_intset_8_unit_test(GtError *err)
arr[idx] = arr[idx - 1] + gt_rand_max(stepsize) + 1;
}
- is_size = gt_intset_8_size_of_rep(arr[num_of_elems - 1], num_of_elems);
+ is_size = gt_intset_8_size_of_rep(arr[num_of_elems - 1], num_of_elems);
if (!had_err) {
if (is_size < (size_t) UINT_MAX) {
@@ -503,23 +513,16 @@ int gt_intset_8_unit_test(GtError *err)
gt_ensure(gt_intset_8_elems_is_valid(is));
gt_ensure(gt_intset_8_secstart_is_valid(is));
- for (idx = 0; !had_err && idx < num_of_elems; idx++) {
- if (arr[idx] != 0 && arr[idx - 1] != (arr[idx] - 1)) {
- gt_ensure(
- gt_intset_8_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
- idx);
- gt_ensure(
- gt_intset_8_get_idx_smallest_geq(is, arr[idx] - 1) ==
- idx);
- }
- gt_ensure(gt_intset_8_get_test(is, idx) == arr[idx]);
- gt_ensure(gt_intset_8_get(is, idx) == arr[idx]);
+ GT_INTSET_TEST_8_BINSEARCH(0);
+ for (idx = 1; !had_err && idx < num_of_elems; idx++) {
+ GtUword to_find = (arr[idx - 1] == (arr[idx] - 1)) ? idx - 1 : idx;
gt_ensure(
- gt_intset_8_get_idx_smallest_geq_test(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_8_get_idx_smallest_geq_test(is, arr[idx] - 1) ==
+ to_find);
gt_ensure(
- gt_intset_8_get_idx_smallest_geq(is, arr[idx] + 1) ==
- idx + 1);
+ gt_intset_8_get_idx_smallest_geq(is, arr[idx] - 1) ==
+ to_find);
+ GT_INTSET_TEST_8_BINSEARCH(idx);
}
if (!had_err)
had_err = gt_intset_unit_test_notinset(is, 0, arr[0] - 1, err);
diff --git a/src/extended/intset_8.h b/src/extended/intset_8.h
index 1650794..6f02ce0 100644
--- a/src/extended/intset_8.h
+++ b/src/extended/intset_8.h
@@ -17,7 +17,7 @@
/*
THIS FILE IS GENERATED by
- ./scripts/gen-intsets.rb.
+ scripts/gen-intsets.rb.
DO NOT EDIT.
*/
diff --git a/src/extended/io_function_pointers.h b/src/extended/io_function_pointers.h
index b5f7163..7845f98 100644
--- a/src/extended/io_function_pointers.h
+++ b/src/extended/io_function_pointers.h
@@ -23,8 +23,12 @@
#include "core/error_api.h"
+/* GtIOFunctionPointer module */
+
/* IO function, either reads or writes to file <stream>. Either one of the two
- functions below. */
+ functions below. Used for defining file types or headers using one
+ metafunction for reading and writing, switching the mode depending on which
+ of the functions is used. */
typedef int (*GtIOFunc)(void *ptr, size_t size, size_t nmemb, FILE *stream,
GtError *err);
diff --git a/src/extended/linspace_management.c b/src/extended/linspace_management.c
index 6929542..85559ff 100644
--- a/src/extended/linspace_management.c
+++ b/src/extended/linspace_management.c
@@ -250,11 +250,14 @@ void *gt_linspace_management_get_maxspace(const GtLinspaceManagement
return NULL;
}
-static inline bool check(const GtLinspaceManagement *spacemanager,
+#ifndef NDEBUG
+static bool gt_linspace_management_check_space(
+ const GtLinspaceManagement *spacemanager,
GtUword ulen, GtUword vlen)
{
return ((ulen+1)*(vlen+1)*sizeof(GtUword) <= spacemanager->valueTabsize);
}
+#endif
GtUword **gt_linspace_management_change_to_square(GtLinspaceManagement
*spacemanager,
@@ -262,7 +265,7 @@ GtUword **gt_linspace_management_change_to_square(GtLinspaceManagement
{
GtUword **E;
GtUword idx;
- gt_assert(check(spacemanager, ulen, vlen));
+ gt_assert(gt_linspace_management_check_space(spacemanager, ulen, vlen));
E = gt_linspace_management_get_rTabspace(spacemanager);
*E = gt_linspace_management_get_valueTabspace(spacemanager);
diff --git a/src/extended/match_blast.c b/src/extended/match_blast.c
index 32f8ad1..b1c98b8 100644
--- a/src/extended/match_blast.c
+++ b/src/extended/match_blast.c
@@ -1,6 +1,7 @@
/*
Copyright (c) 2011 Sascha Kastens <mail at skastens.de>
- Copyright (c) 2011 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2016 Annika Seidel <annika.seidel at studium.uni-hamburg.de>
+ Copyright (c) 2011-2016 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -31,7 +32,9 @@ struct GtMatchBlast {
GtMatch parent_instance;
double evalue;
float bitscore;
- GtUword ali_length;
+ GtUword ali_length,
+ mm_num,
+ gap_open_num;
double similarity;
};
@@ -84,6 +87,36 @@ GtMatch* gt_match_blast_new(char *seqid1,
matchb->bitscore = bitscore;
matchb->ali_length = length;
matchb->similarity = similarity;
+ matchb->mm_num = 0;
+ matchb->gap_open_num = 0;
+ return match;
+}
+
+GtMatch* gt_match_blast_new_extended(char *seqid1,
+ char *seqid2,
+ GtUword start_seq1,
+ GtUword end_seq1,
+ GtUword start_seq2,
+ GtUword end_seq2,
+ double evalue,
+ float bitscore,
+ GtUword length,
+ double similarity,
+ GtUword mm_num,
+ GtUword gap_open_num,
+ GtMatchDirection dir)
+{
+ GtMatch *match;
+ GtMatchBlast *matchb;
+ match = gt_match_create(gt_match_blast_class(), start_seq1, end_seq1,
+ start_seq2, end_seq2, seqid1, seqid2, dir);
+ matchb = gt_match_blast_cast(match);
+ matchb->evalue = evalue;
+ matchb->bitscore = bitscore;
+ matchb->ali_length = length;
+ matchb->similarity = similarity;
+ matchb->mm_num = mm_num;
+ matchb->gap_open_num = gap_open_num;
return match;
}
@@ -111,6 +144,18 @@ void gt_match_blast_set_similarity(GtMatchBlast *mb, double similarity)
mb->similarity = similarity;
}
+void gt_match_blast_set_mismatches(GtMatchBlast *mb, GtUword mm_num)
+{
+ gt_assert(mb);
+ mb->mm_num = mm_num;
+}
+
+void gt_match_blast_set_gapopen(GtMatchBlast *mb, GtUword gap_open_num)
+{
+ gt_assert(mb);
+ mb->gap_open_num = gap_open_num;
+}
+
double gt_match_blast_get_evalue(GtMatchBlast *mb)
{
gt_assert(mb);
@@ -134,3 +179,15 @@ double gt_match_blast_get_similarity(GtMatchBlast *mb)
gt_assert(mb);
return mb->similarity;
}
+
+GtUword gt_match_blast_get_mismatches(GtMatchBlast *mb)
+{
+ gt_assert(mb);
+ return mb->mm_num;
+}
+
+GtUword gt_match_blast_get_gapopen(GtMatchBlast *mb)
+{
+ gt_assert(mb);
+ return mb->gap_open_num;
+}
diff --git a/src/extended/match_blast_api.h b/src/extended/match_blast_api.h
index 8bd6500..53b7cd4 100644
--- a/src/extended/match_blast_api.h
+++ b/src/extended/match_blast_api.h
@@ -1,6 +1,7 @@
/*
Copyright (c) 2011 Sascha Kastens <mail at skastens.de>
- Copyright (c) 2011 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2016 Annika Seidel <annika.seidel at studium.uni-hamburg.de>
+ Copyright (c) 2011-2016 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -39,6 +40,27 @@ GtMatch* gt_match_blast_new(char *seqid1,
double similarity,
GtMatchDirection dir);
+/* Creates a new <GtMatch> object meant to store results in the BLAST
+ format. That is, it stores double values <evalue> for match E-values,
+ <bitscore>s and the alignment length <ali_l> in addition to the generic
+ match contents <seqid1>, <seqid2>, <start_seq1>, <start_seq2>, <end_seq1>,
+ and <end_seq2>. In addition to <gt_match_blast_new> it also stores
+ the number of mismatches and the number of gap */
+
+GtMatch* gt_match_blast_new_extended(char *seqid1,
+ char *seqid2,
+ GtUword start_seq1,
+ GtUword end_seq1,
+ GtUword start_seq2,
+ GtUword end_seq2,
+ double evalue,
+ float bitscore,
+ GtUword length,
+ double similarity,
+ GtUword mm_num,
+ GtUword gap_open_num,
+ GtMatchDirection dir);
+
/* Sets <evalue> to be the E-value in <mb>. */
void gt_match_blast_set_evalue(GtMatchBlast *mb, double evalue);
@@ -51,6 +73,12 @@ void gt_match_blast_set_align_length(GtMatchBlast *mb, GtUword length);
/* Sets <similarity> to be the match similarity in <mb>. */
void gt_match_blast_set_similarity(GtMatchBlast *mb, double similarity);
+/* Sets <num to be the number of mismatches in <mb>. */
+void gt_match_blast_set_mismatches(GtMatchBlast *mb, GtUword mm_num);
+
+/* Sets <num> to be the number of gap openings in <mb>. */
+void gt_match_blast_set_gapopen(GtMatchBlast *mb, GtUword gap_open_num);
+
/* Returns the E-value stored in <mb>. */
double gt_match_blast_get_evalue(GtMatchBlast *mb);
@@ -63,4 +91,9 @@ GtUword gt_match_blast_get_align_length(GtMatchBlast *mb);
/* Returns the alignment similarity stored in <mb>. */
double gt_match_blast_get_similarity(GtMatchBlast *mb);
+/* Returns the number of mismatches stored in <mb>. */
+GtUword gt_match_blast_get_mismatches(GtMatchBlast *mb);
+
+/* Returns the number of gap openings stored in <mb>. */
+GtUword gt_match_blast_get_gapopen(GtMatchBlast *mb);
#endif
diff --git a/src/extended/match_iterator_blast.c b/src/extended/match_iterator_blast.c
index e741184..ae4d006 100644
--- a/src/extended/match_iterator_blast.c
+++ b/src/extended/match_iterator_blast.c
@@ -33,8 +33,8 @@
#include "extended/match_iterator_blast.h"
#include "extended/match_iterator_rep.h"
-#define READNUMS 5
-#define READVALUES 10
+#define GT_BLASTITER_READNUMS 7
+#define GT_BLASTITER_READVALUES 12
#define GT_MATCHER_BLAST_CANNOTPARSECOLUMN(S)\
gt_error_set(err, "file %s, line " GT_WU ", column " GT_WU ": %s", \
@@ -70,7 +70,7 @@ static GtMatchIteratorStatus gt_match_iterator_blast_next(GtMatchIterator *mi,
{
gt_assert(mi);
GtUword columncount = 0;
- GtWord storeinteger[READNUMS], tmp;
+ GtWord storeinteger[GT_BLASTITER_READNUMS], tmp;
double e_value;
float bitscore, identity;
bool reverse = false;
@@ -90,14 +90,15 @@ static GtMatchIteratorStatus gt_match_iterator_blast_next(GtMatchIterator *mi,
if (!mib->pvt->process)
fseek(mib->pvt->matchfilep, -1, SEEK_CUR);
readvalues = fscanf(mib->pvt->matchfilep,
- "%s %s %f " GT_WD " %*d %*d " GT_WD " " GT_WD " " GT_WD
- " " GT_WD " %lg %f\n", query_seq, db_seq, &identity,
- &storeinteger[0],
+ "%s %s %f " GT_WD " " GT_WD " " GT_WD " " GT_WD " "
+ GT_WD " " GT_WD " " GT_WD " %lg %f\n",
+ query_seq, db_seq, &identity,
+ &storeinteger[0], &storeinteger[5], &storeinteger[6],
&storeinteger[1], &storeinteger[2], &storeinteger[3],
&storeinteger[4], &e_value, &bitscore);
if (readvalues == EOF)
return GT_MATCHER_STATUS_END;
- if (readvalues != READVALUES)
+ if (readvalues != GT_BLASTITER_READVALUES)
{
GT_MATCHER_BLAST_CANNOTPARSELINE("invalid format");
had_err = -1;
@@ -115,19 +116,20 @@ static GtMatchIteratorStatus gt_match_iterator_blast_next(GtMatchIterator *mi,
i = 0;
} else break;
}
- if ((readvalues = sscanf(buffer, "%s %s %f " GT_WD " %*d %*d " GT_WD " "
- GT_WD " " GT_WD " " GT_WD " %lg " "%f\n",
- query_seq, db_seq, &identity,
- &storeinteger[0],
+ if ((readvalues = sscanf(buffer, "%s %s %f " GT_WD " " GT_WD " " GT_WD " "
+ GT_WD " " GT_WD " " GT_WD " " GT_WD " %lg " "%f\n",
+ query_seq, db_seq, &identity, &storeinteger[0],
+ &storeinteger[5], &storeinteger[6],
&storeinteger[1], &storeinteger[2],
&storeinteger[3], &storeinteger[4], &e_value,
- &bitscore)) != READVALUES) {
+ &bitscore)) != GT_BLASTITER_READVALUES) {
GT_MATCHER_BLAST_CANNOTPARSELINE("invalid format");
had_err = -1;
}
}
- for (columncount = 0; !had_err && columncount < (GtUword) (READNUMS);
+ for (columncount = 0; !had_err &&
+ columncount < (GtUword) (GT_BLASTITER_READNUMS);
columncount++) {
if (storeinteger[columncount] < 0) {
GT_MATCHER_BLAST_CANNOTPARSECOLUMN("non-negative integer expected");
@@ -150,17 +152,20 @@ static GtMatchIteratorStatus gt_match_iterator_blast_next(GtMatchIterator *mi,
storeinteger[3] = storeinteger[4];
storeinteger[4] = tmp;
}
- *match = gt_match_blast_new(query_seq,
- db_seq,
- storeinteger[1],
- storeinteger[2],
- storeinteger[3],
- storeinteger[4],
- e_value,
- bitscore,
- storeinteger[0],
- identity,
- reverse ? GT_MATCH_REVERSE : GT_MATCH_DIRECT);
+ *match = gt_match_blast_new_extended(query_seq,
+ db_seq,
+ storeinteger[1],
+ storeinteger[2],
+ storeinteger[3],
+ storeinteger[4],
+ e_value,
+ bitscore,
+ storeinteger[0],
+ identity,
+ storeinteger[5],
+ storeinteger[6],
+ reverse ? GT_MATCH_REVERSE
+ : GT_MATCH_DIRECT);
mib->pvt->curpos++;
return GT_MATCHER_STATUS_OK;
}
@@ -187,19 +192,23 @@ GtMatchIterator* gt_match_iterator_blast_file_new(const char *matchfile,
mpb->pvt->gtmatchfilep = NULL;
if (!mpb->pvt->matchfilep) {
gt_error_set(err, "could not open %s", matchfile);
+ gt_match_iterator_delete(mp);
return NULL;
}
} else {
mpb->pvt->gtmatchfilep = gt_file_open(mode, matchfile, "r", err);
mpb->pvt->matchfilep = NULL;
- if (!mpb->pvt->gtmatchfilep)
+ if (!mpb->pvt->gtmatchfilep) {
+ gt_match_iterator_delete(mp);
return NULL;
+ }
}
mpb->pvt->matchfile = matchfile;
mpb->pvt->process = false;
return mp;
} else {
gt_error_set(err, "no such file or directory %s", matchfile);
+ gt_match_iterator_delete(mp);
return NULL;
}
}
diff --git a/src/extended/match_iterator_open.c b/src/extended/match_iterator_open.c
index 5a25fbc..5f10962 100644
--- a/src/extended/match_iterator_open.c
+++ b/src/extended/match_iterator_open.c
@@ -30,7 +30,7 @@
#include "extended/match_iterator_open.h"
#include "extended/match_iterator_rep.h"
-#define READNUMS 5
+#define GT_MATCHITER_READNUMS 5
#define GT_MATCHER_OPEN_CANNOTPARSECOLUMN(S)\
gt_error_set(err, "file %s, line " GT_WU ", column " GT_WU ": %s", \
@@ -63,7 +63,7 @@ static GtMatchIteratorStatus gt_match_iterator_open_next(GtMatchIterator *gmpi,
{
GtUword columncount = 0;
int readnums;
- GtWord storeinteger[READNUMS];
+ GtWord storeinteger[GT_MATCHITER_READNUMS];
int had_err = 0, i = 0;
char buffer[BUFSIZ], seqid1[BUFSIZ], seqid2[BUFSIZ], matchtype;
GtMatchIteratorOpen *mpi = gt_match_iterator_open_cast(gmpi);
@@ -89,7 +89,7 @@ static GtMatchIteratorStatus gt_match_iterator_open_next(GtMatchIterator *gmpi,
&storeinteger[4]);
if (readnums == EOF)
return GT_MATCHER_STATUS_END;
- if (readnums != READNUMS + 3)
+ if (readnums != GT_MATCHITER_READNUMS + 3)
{
GT_MATCHER_OPEN_CANNOTPARSELINE("invalid format");
had_err = -1;
@@ -116,13 +116,14 @@ static GtMatchIteratorStatus gt_match_iterator_open_next(GtMatchIterator *gmpi,
seqid2,
&storeinteger[3],
&storeinteger[4])
- != READNUMS + 2) {
+ != GT_MATCHITER_READNUMS + 2) {
GT_MATCHER_OPEN_CANNOTPARSELINE("invalid format");
had_err = -1;
}
}
- for (columncount = 0; !had_err && columncount < (GtUword) (READNUMS);
+ for (columncount = 0; !had_err &&
+ columncount < (GtUword) GT_MATCHITER_READNUMS;
columncount++) {
if (storeinteger[columncount] < 0) {
GT_MATCHER_OPEN_CANNOTPARSECOLUMN("non-negative integer expected");
diff --git a/src/extended/multieoplist.c b/src/extended/multieoplist.c
index 4549154..992aff3 100644
--- a/src/extended/multieoplist.c
+++ b/src/extended/multieoplist.c
@@ -58,7 +58,7 @@ GtMultieoplist *gt_multieoplist_new_with_size(GtUword size)
}
GtMultieoplist *gt_multieoplist_clone(GtMultieoplist *copy,
- GtMultieoplist *source)
+ const GtMultieoplist *source)
{
GtUword i;
gt_assert(source != NULL);
@@ -207,7 +207,7 @@ void gt_multieoplist_remove_last(GtMultieoplist *multieops)
}
}
-GtUword gt_multieoplist_get_repdel_length(GtMultieoplist *multieops)
+GtUword gt_multieoplist_get_repdel_length(const GtMultieoplist *multieops)
{
GtUword len = 0, i;
Eop *space;
@@ -224,7 +224,7 @@ GtUword gt_multieoplist_get_repdel_length(GtMultieoplist *multieops)
return len;
}
-GtUword gt_multieoplist_get_repins_length(GtMultieoplist *multieops)
+GtUword gt_multieoplist_get_repins_length(const GtMultieoplist *multieops)
{
GtUword len = 0, i;
Eop *space;
@@ -241,7 +241,7 @@ GtUword gt_multieoplist_get_repins_length(GtMultieoplist *multieops)
return len;
}
-GtUword gt_multieoplist_get_length(GtMultieoplist *multieops)
+GtUword gt_multieoplist_get_length(const GtMultieoplist *multieops)
{
GtUword len = 0, i;
Eop *space;
@@ -253,9 +253,9 @@ GtUword gt_multieoplist_get_length(GtMultieoplist *multieops)
return len;
}
-GtUword gt_multieoplist_get_num_entries(GtMultieoplist *multieops)
+GtUword gt_multieoplist_get_num_entries(const GtMultieoplist *multieops)
{
- return(multieops->meoplist.nextfreeEop);
+ return multieops->meoplist.nextfreeEop;
}
GtMultieop gt_multieoplist_get_entry(const GtMultieoplist *multieops,
@@ -284,7 +284,7 @@ GtMultieop gt_multieoplist_get_entry(const GtMultieoplist *multieops,
return eop;
}
-void gt_multieoplist_show(GtMultieoplist *multieops, FILE *fp)
+void gt_multieoplist_show(const GtMultieoplist *multieops, FILE *fp)
{
GtUword stepssum,
num = multieops->meoplist.nextfreeEop;
@@ -397,7 +397,7 @@ static GtMultieoplist *gt_multieoplist_io_fp(GtMultieoplist *multieops,
}
GtMultieoplist *gt_multieoplist_io(GtMultieoplist *multieops, FILE *fp,
- GtError *err)
+ GtError *err)
{
if (multieops == NULL) {
multieops = gt_calloc((size_t) 1, sizeof (GtMultieoplist));
diff --git a/src/extended/multieoplist.h b/src/extended/multieoplist.h
index d2f5e66..69b9d14 100644
--- a/src/extended/multieoplist.h
+++ b/src/extended/multieoplist.h
@@ -94,12 +94,12 @@ void gt_multieoplist_remove_last(GtMultieoplist *multieops);
object in that case. <source> may not be NULL!
*/
GtMultieoplist* gt_multieoplist_clone(GtMultieoplist *copy,
- GtMultieoplist *source);
+ const GtMultieoplist *source);
/* Returns the number of <GtMultieop> elements in <multieops>, each of which
- can have <steps> >= 1, therefor this represents not the length of the
+ can have <steps> >= 1, therefore this represents not the length of the
alignment. */
-GtUword gt_multieoplist_get_num_entries(GtMultieoplist *multieops);
+GtUword gt_multieoplist_get_num_entries(const GtMultieoplist *multieops);
/* Returns <GtMultieop> number <index>. */
GtMultieop gt_multieoplist_get_entry(const GtMultieoplist *multieops,
@@ -107,34 +107,34 @@ GtMultieop gt_multieoplist_get_entry(const GtMultieoplist *multieops,
/* Returns sum of <Replacement>, <Match>, <Mismatch> and <Deletion> including
their <steps>. This corresponds to the length of the first sequence. */
-GtUword gt_multieoplist_get_repdel_length(GtMultieoplist *multieops);
+GtUword gt_multieoplist_get_repdel_length(const GtMultieoplist *multieops);
/* Returns sum of <Replacement>, <Match>, <Mismatch> and <Insertion> including
their <steps>. This corresponds to the length of the second sequence. */
-GtUword gt_multieoplist_get_repins_length(GtMultieoplist *multieops);
+GtUword gt_multieoplist_get_repins_length(const GtMultieoplist *multieops);
/* Returns sum of <Replacement>, <Match>, <Mismatch>, <Deletion> and
<Insertion> including their <steps>. This corresponds to the length of the
whole alignment. */
-GtUword gt_multieoplist_get_length(GtMultieoplist *multieops);
+GtUword gt_multieoplist_get_length(const GtMultieoplist *multieops);
/* Print a string representation of <multieops> to <fp> ending with a newline.
For example: [M5,R2,M3,I1,M6] R is equivalent for <Mismatch> and
<Replacement>.
Assumes reverse ordered <GtMultieoplist>. */
-void gt_multieoplist_show(GtMultieoplist *multieops, FILE *fp);
+void gt_multieoplist_show(const GtMultieoplist *multieops, FILE *fp);
/* Returns the combination of two <GtMultieoplist>s. Adds <multieops_to_add> to
- the end of <multieops> (which is usualy the start of the alignment).
+ the end of <multieops> (which is usually the start of the alignment).
<forward> defines if <multieops_to_add> should be read in forward or reverse
- direction. If <multieops_to_add> and <multieops> are from consequtive
+ direction. If <multieops_to_add> and <multieops> are from consecutive
alignments:
[...<-...][...<-...] or [...->...][...->...]
- use true
- if they ar from alignments with the same startpoint:
+ use true.
+ If they are from alignments with the same start point:
[...->...][...<-...]
- use false
- if the layout is like this:
+ use false.
+ If the layout is like this:
[...<-...][...->...]
none of them can be added to the end of the other without reversing one
beforehand. */
diff --git a/src/extended/popcount_tab.h b/src/extended/popcount_tab.h
index 169b191..2f54269 100644
--- a/src/extended/popcount_tab.h
+++ b/src/extended/popcount_tab.h
@@ -24,7 +24,8 @@
/* The <GtPopcountTab> class represents a table of values of a fixed bit
width sorted by their popcount (number of bits set to 1). Values are sorted
by increasing value within one popcount class (set of values with the
- same popcount). */
+ same popcount).
+ The idea was copied from: http://alexbowe.com/popcount-permutations/ */
typedef struct GtPopcountTab GtPopcountTab;
/* Returns <GtPopcountTab> object with tables for unsigned values of
diff --git a/src/extended/ranked_list.c b/src/extended/ranked_list.c
index 911302f..18fb353 100644
--- a/src/extended/ranked_list.c
+++ b/src/extended/ranked_list.c
@@ -23,13 +23,13 @@
#include "core/unused_api.h"
#include "core/yarandom.h"
#include "extended/ranked_list.h"
-#include "extended/rbtree.h"
+/*#include "extended/rbtree.h"*/
struct GtRankedList
{
GtUword currentsize,
maxsize;
- GtRBTree *root;
+ /*GtRBTree *root;*/
GtCompareWithData comparefunction;
GtFree free_func;
void *worstelement,
diff --git a/src/extended/rbtree.c b/src/extended/rbtree.c
index 6553b85..bdc4ff9 100644
--- a/src/extended/rbtree.c
+++ b/src/extended/rbtree.c
@@ -81,7 +81,7 @@ struct GtRBTree
struct GtRBTreeIter
{
- GtRBTree *tree;
+ const GtRBTree *tree;
GtRBTreeNode *it;
GtRBTreeNode *path[HEIGHT_LIMIT];
size_t top;
@@ -172,7 +172,7 @@ void gt_rbtree_clear(GtRBTree *tree)
}
}
-static inline void *gt_rbtree_find_with_cmp_g(GtRBTree *tree, void *key,
+static inline void *gt_rbtree_find_with_cmp_g(const GtRBTree *tree, void *key,
GtCompareWithData cmpfunc,
void *info)
{
@@ -190,7 +190,7 @@ static inline void *gt_rbtree_find_with_cmp_g(GtRBTree *tree, void *key,
return it == NULL ? NULL : it->key;
}
-void *gt_rbtree_find_with_cmp(GtRBTree *tree, void *key,
+void *gt_rbtree_find_with_cmp(const GtRBTree *tree, void *key,
GtCompareWithData cmpfunc, void *info)
{
gt_assert(tree);
@@ -199,7 +199,7 @@ void *gt_rbtree_find_with_cmp(GtRBTree *tree, void *key,
return gt_rbtree_find_with_cmp_g(tree, key, cmpfunc, info);
}
-void *gt_rbtree_find(GtRBTree *tree, void *key)
+void *gt_rbtree_find(const GtRBTree *tree, void *key)
{
gt_assert(tree);
gt_assert(key);
@@ -411,13 +411,13 @@ int gt_rbtree_erase(GtRBTree *tree, void *key)
return rv;
}
-size_t gt_rbtree_size(GtRBTree *tree)
+size_t gt_rbtree_size(const GtRBTree *tree)
{
gt_assert(tree);
return tree->size;
}
-static int gt_rbtree_recurse(GtRBTreeNode *root, GtRBTreeAction action,
+static int gt_rbtree_recurse(const GtRBTreeNode *root, GtRBTreeAction action,
GtUword level, void *actinfo)
{
if (root->link[0] == NULL && root->link[1] == NULL) {
@@ -453,7 +453,8 @@ static int gt_rbtree_recurse(GtRBTreeNode *root, GtRBTreeAction action,
return retcode;\
}
-static int gt_rbtree_recursewithstop(GtRBTreeNode *root, GtRBTreeAction action,
+static int gt_rbtree_recursewithstop(const GtRBTreeNode *root,
+ GtRBTreeAction action,
GtUword level, void *actinfo)
{
int retcode;
@@ -482,7 +483,7 @@ static int gt_rbtree_recursewithstop(GtRBTreeNode *root, GtRBTreeAction action,
return 0;
}
-static int gt_rbtree_recursereverseorder(GtRBTreeNode *root,
+static int gt_rbtree_recursereverseorder(const GtRBTreeNode *root,
GtRBTreeAction action,
GtUword level, void *actinfo)
{
@@ -517,7 +518,7 @@ static int gt_rbtree_recursereverseorder(GtRBTreeNode *root,
return 0;
}
-int gt_rbtree_walk(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
+int gt_rbtree_walk(const GtRBTree *tree, GtRBTreeAction action, void *actinfo)
{
gt_assert(tree);
gt_assert(action);
@@ -529,7 +530,8 @@ int gt_rbtree_walk(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
return 0;
}
-int gt_rbtree_walk_stop(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
+int gt_rbtree_walk_stop(const GtRBTree *tree, GtRBTreeAction action,
+ void *actinfo)
{
gt_assert(tree);
gt_assert(action);
@@ -540,7 +542,8 @@ int gt_rbtree_walk_stop(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
return 0;
}
-int gt_rbtree_walk_reverse(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
+int gt_rbtree_walk_reverse(const GtRBTree *tree, GtRBTreeAction action,
+ void *actinfo)
{
gt_assert(tree);
gt_assert(action);
@@ -552,7 +555,7 @@ int gt_rbtree_walk_reverse(GtRBTree *tree, GtRBTreeAction action, void *actinfo)
return 0;
}
-static inline void* gt_rbtree_minimum_key_for_node(GtRBTreeNode *root)
+static inline void* gt_rbtree_minimum_key_for_node(const GtRBTreeNode *root)
{
if (root == NULL) {
return NULL;
@@ -563,7 +566,7 @@ static inline void* gt_rbtree_minimum_key_for_node(GtRBTreeNode *root)
return root->key;
}
-static inline void* gt_rbtree_maximum_key_for_node(GtRBTreeNode *root)
+static inline void* gt_rbtree_maximum_key_for_node(const GtRBTreeNode *root)
{
if (root == NULL) {
return NULL;
@@ -574,19 +577,19 @@ static inline void* gt_rbtree_maximum_key_for_node(GtRBTreeNode *root)
return root->key;
}
-void* gt_rbtree_minimum_key(GtRBTree *tree)
+void* gt_rbtree_minimum_key(const GtRBTree *tree)
{
gt_assert(tree);
return gt_rbtree_minimum_key_for_node(tree->root);
}
-void* gt_rbtree_maximum_key(GtRBTree *tree)
+void* gt_rbtree_maximum_key(const GtRBTree *tree)
{
gt_assert(tree);
return gt_rbtree_maximum_key_for_node(tree->root);
}
-void* gt_rbtree_root_key(GtRBTree *tree)
+void* gt_rbtree_root_key(const GtRBTree *tree)
{
gt_assert(tree);
if (tree->size == 0 || tree->root == NULL)
@@ -595,7 +598,7 @@ void* gt_rbtree_root_key(GtRBTree *tree)
return tree->root->key;
}
-void* gt_rbtree_previous_key(GtRBTree *tree, void *key,
+void* gt_rbtree_previous_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun, void *cmpinfo)
{
int cmp;
@@ -631,7 +634,7 @@ void* gt_rbtree_previous_key(GtRBTree *tree, void *key,
return found->key;
}
-void* gt_rbtree_previous_equal_key(GtRBTree *tree, void *key,
+void* gt_rbtree_previous_equal_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun, void *cmpinfo)
{
int cmp;
@@ -661,8 +664,8 @@ void* gt_rbtree_previous_equal_key(GtRBTree *tree, void *key,
return found->key;
}
-void* gt_rbtree_next_key(GtRBTree *tree, void *key, GtCompareWithData cmpfun,
- void *cmpinfo)
+void* gt_rbtree_next_key(const GtRBTree *tree, void *key,
+ GtCompareWithData cmpfun, void *cmpinfo)
{
int cmp;
const GtRBTreeNode *current,
@@ -697,7 +700,7 @@ void* gt_rbtree_next_key(GtRBTree *tree, void *key, GtCompareWithData cmpfun,
return found->key;
}
-void* gt_rbtree_next_equal_key(GtRBTree *tree, void *key,
+void* gt_rbtree_next_equal_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun, void *cmpinfo)
{
int cmp;
@@ -727,7 +730,7 @@ void* gt_rbtree_next_equal_key(GtRBTree *tree, void *key,
return found->key;
}
-static inline void *start(GtRBTreeIter *trav, GtRBTree *tree, int dir)
+static inline void *start(GtRBTreeIter *trav, const GtRBTree *tree, int dir)
{
trav->tree = tree;
trav->it = tree->root;
@@ -775,7 +778,7 @@ static inline void *move(GtRBTreeIter *trav, int dir, GT_UNUSED bool strict)
return trav->it == NULL ? NULL : trav->it->key;
}
-GtRBTreeIter* gt_rbtree_iter_new_from_first(GtRBTree *tree)
+GtRBTreeIter* gt_rbtree_iter_new_from_first(const GtRBTree *tree)
{
GtRBTreeIter *trav = gt_malloc(sizeof (GtRBTreeIter));
gt_assert(tree);
@@ -783,7 +786,7 @@ GtRBTreeIter* gt_rbtree_iter_new_from_first(GtRBTree *tree)
return trav;
}
-GtRBTreeIter* gt_rbtree_iter_new_from_last(GtRBTree *tree)
+GtRBTreeIter* gt_rbtree_iter_new_from_last(const GtRBTree *tree)
{
GtRBTreeIter *trav = gt_malloc(sizeof (GtRBTreeIter));
gt_assert(tree);
diff --git a/src/extended/rbtree.h b/src/extended/rbtree.h
index eb7ec7b..1012afd 100644
--- a/src/extended/rbtree.h
+++ b/src/extended/rbtree.h
@@ -48,8 +48,8 @@ void gt_rbtree_delete(GtRBTree *tree);
void gt_rbtree_clear(GtRBTree *tree);
/* Returns <key> if element was found in <tree> and NULL if not */
-void* gt_rbtree_find(GtRBTree *tree, void *key);
-void* gt_rbtree_find_with_cmp(GtRBTree *tree, void *key,
+void* gt_rbtree_find(const GtRBTree *tree, void *key);
+void* gt_rbtree_find_with_cmp(const GtRBTree *tree, void *key,
GtCompareWithData cmpfunc, void *info);
/* inserts <key> into <tree>. If <key> is already present in <tree>, it will not
be changed. */
@@ -66,32 +66,33 @@ void* gt_rbtree_search_with_cmp(GtRBTree *tree, void *key,
/* Remove <key> from <tree>, returns -1 if no such key exists and 0 on success
*/
int gt_rbtree_erase(GtRBTree *tree, void *key);
-size_t gt_rbtree_size(GtRBTree *tree);
-int gt_rbtree_walk(GtRBTree *tree, GtRBTreeAction action,
+size_t gt_rbtree_size(const GtRBTree *tree);
+int gt_rbtree_walk(const GtRBTree *tree, GtRBTreeAction action,
void *actinfo);
-int gt_rbtree_walk_stop(GtRBTree *tree, GtRBTreeAction action,
+int gt_rbtree_walk_stop(const GtRBTree *tree, GtRBTreeAction action,
void *actinfo);
-int gt_rbtree_walk_reverse(GtRBTree *tree, GtRBTreeAction action,
- void *actinfo);
-void* gt_rbtree_minimum_key(GtRBTree *tree);
-void* gt_rbtree_maximum_key(GtRBTree *tree);
-void* gt_rbtree_root_key(GtRBTree *tree);
-void* gt_rbtree_next_key(GtRBTree *tree, void *key,
+int gt_rbtree_walk_reverse(const GtRBTree *tree,
+ GtRBTreeAction action,
+ void *actinfo);
+void* gt_rbtree_minimum_key(const GtRBTree *tree);
+void* gt_rbtree_maximum_key(const GtRBTree *tree);
+void* gt_rbtree_root_key(const GtRBTree *tree);
+void* gt_rbtree_next_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun,
void *cmpinfo);
-void* gt_rbtree_next_equal_key(GtRBTree *tree, void *key,
+void* gt_rbtree_next_equal_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun,
void *cmpinfo);
-void* gt_rbtree_previous_key(GtRBTree *tree, void *key,
+void* gt_rbtree_previous_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun,
void *cmpinfo);
-void* gt_rbtree_previous_equal_key(GtRBTree *tree, void *key,
+void* gt_rbtree_previous_equal_key(const GtRBTree *tree, void *key,
GtCompareWithData cmpfun,
void *cmpinfo);
int gt_rbtree_unit_test(GtError *err);
-GtRBTreeIter* gt_rbtree_iter_new_from_first(GtRBTree *tree);
-GtRBTreeIter* gt_rbtree_iter_new_from_last(GtRBTree *tree);
+GtRBTreeIter* gt_rbtree_iter_new_from_first(const GtRBTree *tree);
+GtRBTreeIter* gt_rbtree_iter_new_from_last(const GtRBTree *tree);
/* Resets the iterator to the first (smallest) element */
void gt_rbtree_iter_reset_from_first(GtRBTreeIter *trav);
/* Resets the iterator to the last (largest) element */
diff --git a/src/extended/rcr.h b/src/extended/rcr.h
index e66cea6..90dc83a 100644
--- a/src/extended/rcr.h
+++ b/src/extended/rcr.h
@@ -30,6 +30,8 @@
typedef struct GtRcrEncoder GtRcrEncoder;
typedef struct GtRcrDecoder GtRcrDecoder;
+/* TODO DW move the bool switches to setter functions like for verbosity */
+
/* Returns a new GtRcrEncoder object. <ref> points to a reference genome,
<filename> is a BAM file containing alignments of short reads to
the reference genome. If <vquals> is true, quality values of read
diff --git a/src/extended/safe_popen.c b/src/extended/safe_popen.c
index 760054e..b228539 100644
--- a/src/extended/safe_popen.c
+++ b/src/extended/safe_popen.c
@@ -22,6 +22,7 @@
#include <sys/wait.h>
#endif
#include "core/ma_api.h"
+#include "core/unused_api.h"
#include "extended/safe_popen.h"
#ifndef _WIN32
@@ -50,9 +51,9 @@ static pid_t safe_fork(void) {
}
#endif
-GtSafePipe *gt_safe_popen(const char *path,
- char *const argv[],
- char *const envp[],
+GtSafePipe *gt_safe_popen(GT_WIN32_UNUSED const char *path,
+ GT_WIN32_UNUSED char *const argv[],
+ GT_WIN32_UNUSED char *const envp[],
GtError *err) {
#ifndef _WIN32
int stdin_pipe[2], stdout_pipe[2], had_err = 0;
@@ -136,7 +137,7 @@ GtSafePipe *gt_safe_popen(const char *path,
#endif
}
-int gt_safe_pclose(GtSafePipe *p) {
+int gt_safe_pclose(GT_WIN32_UNUSED GtSafePipe *p) {
#ifndef _WIN32
int status;
pid_t pid = (pid_t) -1;
diff --git a/src/extended/sam_alignment.h b/src/extended/sam_alignment.h
index 977f4a8..e9e6289 100644
--- a/src/extended/sam_alignment.h
+++ b/src/extended/sam_alignment.h
@@ -26,12 +26,19 @@
#include "core/str_api.h"
#include "core/types_api.h"
+/* The <GtSamAlignment> class is a wrapper around the sam/bam interface. It
+ allows __GenomeTools__-style interaction with sam/bam data. To be used in
+ conjunction with <GtSamfileIterator> */
typedef struct GtSamAlignment GtSamAlignment;
+/* Returns a new (mostly empty) <GtSamAlignment>, use <GtSamfileIterator> to
+ obtain alignments from file */
GtSamAlignment* gt_sam_alignment_new(GtAlphabet *alphabet);
+/* Returns the identifier of <sam_alignment>. */
const char* gt_sam_alignment_identifier(GtSamAlignment *sam_alignment);
+/* Returns a deep copy of <sam_alignment>. */
GtSamAlignment* gt_sam_alignment_clone(GtSamAlignment *sam_alignment);
/* Returns the number of the reference sequence this alignment corresponds to,
@@ -40,25 +47,26 @@ GtSamAlignment* gt_sam_alignment_clone(GtSamAlignment *sam_alignment);
int32_t gt_sam_alignment_ref_num(GtSamAlignment *sam_alignment);
/* Returns the starting position of the alignment in the reference sequence */
-GtUword gt_sam_alignment_pos(GtSamAlignment *sam_alignment);
+GtUword gt_sam_alignment_pos(GtSamAlignment *sam_alignment);
/* Returns the ending position of the alignment in the reference sequence */
-GtUword gt_sam_alignment_rightmost_pos(GtSamAlignment *sam_alignment);
+GtUword gt_sam_alignment_rightmost_pos(GtSamAlignment *sam_alignment);
/* Returns length of read, not length of the alignment */
-GtUword gt_sam_alignment_read_length(GtSamAlignment *sam_alignment);
+GtUword gt_sam_alignment_read_length(GtSamAlignment *sam_alignment);
/* Returns mapping quality value */
-GtUword gt_sam_alignment_mapping_quality(GtSamAlignment *sam_alignment);
+GtUword gt_sam_alignment_mapping_quality(GtSamAlignment *sam_alignment);
/* Returns encoded read sequence from <sam_alignment>. */
const GtUchar* gt_sam_alignment_sequence(GtSamAlignment *sam_alignment);
-/* lower level version of <gt_sam_alignment_sequence> using an external
- * buffer to save the sequence information */
-void gt_sam_alignment_sequence_external_buffer(GtSamAlignment *sam_alignment,
- GtUchar **seq_buffer, GtUword *bufsize);
-
+/* Lower level version of <gt_sam_alignment_sequence> using an external
+ buffer to save the sequence information */
+void gt_sam_alignment_sequence_external_buffer(
+ GtSamAlignment *sam_alignment,
+ GtUchar **seq_buffer,
+ GtUword *bufsize);
/* Returns string of qualities in ASCII format as in Sanger FASTQ for the
read sequence from <sam_alignment>.
The length is the same as the length of the read sequence. */
@@ -68,15 +76,14 @@ const GtUchar* gt_sam_alignment_qualitystring(GtSamAlignment *sam_alignment);
uint16_t gt_sam_alignment_cigar_length(GtSamAlignment *sam_alignment);
/* lower level version of <gt_sam_alignment_qualitystring> using an external
- * buffer to save the sequence information */
-void gt_sam_alignment_qualitystring_external_buffer(
- GtSamAlignment *sam_alignment, GtUchar **qual_buffer,
- GtUword *bufsize);
-
+ buffer to save the sequence information */
+void gt_sam_alignment_qualitystring_external_buffer(
+ GtSamAlignment *sam_alignment,
+ GtUchar **qual_buffer,
+ GtUword *bufsize);
/* Returns the length of CIGAR operation <i> in <sam_alignment>. */
uint32_t gt_sam_alignment_cigar_i_length(GtSamAlignment *sam_alignment,
uint16_t i);
-
/* Returns the type of CIGAR operation <i> in <sam_alignment>.
Type is one of [MIDNSHP=X] (see sam/bam format documentation for details) */
unsigned char gt_sam_alignment_cigar_i_operation(
@@ -86,22 +93,61 @@ unsigned char gt_sam_alignment_cigar_i_operation(
documentation. */
uint32_t gt_sam_alignment_flag(GtSamAlignment *sam_alignment);
-/* Checks the flag and returns true if bit is set in flag of <sam_alignment>.
- See sam/bam fileformat documentation for explanation of meaning of bits. */
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_paired(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_proper_paired(
GtSamAlignment *sam_alignment);
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_unmapped(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_mate_is_unmapped(
GtSamAlignment *sam_alignment);
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_reverse(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_mate_is_reverse(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_read1(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_read2(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_secondary(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_has_qc_failure(GtSamAlignment *sam_alignment);
+
+/* Checks the flag and returns true if corresponding bit is set in flag of
+ <sam_alignment>.
+ See sam/bam file format documentation for explanation of meaning of bits. */
bool gt_sam_alignment_is_optical_pcr_duplicate(
GtSamAlignment *sam_alignment);
-
+/* Free all memory of <sam_alignment>. */
void gt_sam_alignment_delete(GtSamAlignment *sam_alignment);
#endif
diff --git a/src/extended/sam_query_name_iterator.h b/src/extended/sam_query_name_iterator.h
index b0de051..eaade73 100644
--- a/src/extended/sam_query_name_iterator.h
+++ b/src/extended/sam_query_name_iterator.h
@@ -23,7 +23,7 @@
#include "extended/samfile_iterator.h"
/* implements <GtCstrIterator> */
-/* iterates over the identifiers of all mapped alignments in a sam/bam file */
+/* Iterates over the identifiers of all mapped alignments in a sam/bam file */
typedef struct GtSamQueryNameIterator GtSamQueryNameIterator;
const GtCstrIteratorClass* gt_sam_query_name_iterator_class(void);
@@ -33,6 +33,8 @@ GtCstrIterator* gt_sam_query_name_iterator_new(
GtSamfileIterator *s_iter,
GtError *err);
+/* Tests if <GSI> is a <GtSamQueryNameIterator> and returns the meta class
+ object or <NULL> if the class is not a <GtSamQueryNameIterator>. */
#define gt_sam_query_name_iterator_cast(GSI) \
gt_cstr_iterator_cast(gt_sam_query_name_iterator_class(), GSI)
#endif
diff --git a/src/extended/samfile_iterator.h b/src/extended/samfile_iterator.h
index 2adad7d..4961027 100644
--- a/src/extended/samfile_iterator.h
+++ b/src/extended/samfile_iterator.h
@@ -31,7 +31,7 @@ GtSamfileIterator* gt_samfile_iterator_new_bam(const char *filename,
GtAlphabet *alphabet,
GtError *err);
-/* Returns new <GtSamfileIterator> fo a SAM-file. Parameter <auxfilename> can be
+/* Returns new <GtSamfileIterator> of a SAM-file. Parameter <auxfilename> can be
NULL, but then the samfile has to contain header information. Otherwise it
should be the name of a file containing the list of references as produced by
'samtools faidx ref.fa'. Holds a new reference to <alphabet>. */
diff --git a/src/extended/scorehandler.c b/src/extended/scorehandler.c
index 1e128be..1e4c7f0 100644
--- a/src/extended/scorehandler.c
+++ b/src/extended/scorehandler.c
@@ -90,6 +90,18 @@ GtWord gt_scorehandler_get_gapscore(const GtScoreHandler *scorehandler)
return scorehandler->gap_extension;
}
+GtWord gt_scorehandler_get_matchscore(const GtScoreHandler *scorehandler)
+{
+ gt_assert(scorehandler != NULL);
+ return scorehandler->matchscore;
+}
+
+GtWord gt_scorehandler_get_mismatchscore(const GtScoreHandler *scorehandler)
+{
+ gt_assert(scorehandler != NULL);
+ return scorehandler->mismatchscore;
+}
+
GtWord gt_scorehandler_get_replacement(const GtScoreHandler *scorehandler,
GtUchar a, GtUchar b)
{
diff --git a/src/extended/scorehandler.h b/src/extended/scorehandler.h
index 18d2e54..f4505e8 100644
--- a/src/extended/scorehandler.h
+++ b/src/extended/scorehandler.h
@@ -48,6 +48,10 @@ GtWord gt_scorehandler_get_gap_opening(const GtScoreHandler
/* Return gapscore value for the given <scorehandler>. */
GtWord gt_scorehandler_get_gapscore(const GtScoreHandler
*scorehandler);
+/* Return matchscore value for the given <scorehandler>. */
+GtWord gt_scorehandler_get_matchscore(const GtScoreHandler *scorehandler);
+/* Return mismatchscore value for the given <scorehandler>. */
+GtWord gt_scorehandler_get_mismatchscore(const GtScoreHandler *scorehandler);
/* Return replacement score value for the given characters <a> and <b>. */
GtWord gt_scorehandler_get_replacement(const GtScoreHandler
*scorehandler,
diff --git a/src/extended/wtree.h b/src/extended/wtree.h
index 0470412..3a32e18 100644
--- a/src/extended/wtree.h
+++ b/src/extended/wtree.h
@@ -23,7 +23,9 @@
/* Abstract class GtWtree,
Used to store sequences or Permutations.
Each implementation must implement a function for mapping <GtWtreeSymbol> to
- the implementation-specific alphabet symbol. */
+ the implementation-specific alphabet symbol.
+ Based on R. Grossi and A. Gupta and J. Vitter: High-Order Entropy-Compressed
+ Text Indexes. */
typedef struct GtWtree GtWtree;
/* Type used by GtWtree to represent symbols */
@@ -38,7 +40,8 @@ GtWtree* gt_wtree_ref(GtWtree *wtree);
GtWtreeSymbol gt_wtree_access(GtWtree *wtree,
GtUword pos);
-/* Returns the number of symbols <symbol> in the prefix of <wtree> upto position
+/* Returns the number of symbols <symbol> in the prefix of <wtree> up to
+ position
<pos>. Note that <pos> < length of <wtree>.
Returns ULONG_MAX if function is not implemented. */
GtUword gt_wtree_rank(GtWtree *wtree,
diff --git a/src/extended/wtree_encseq.c b/src/extended/wtree_encseq.c
index 20282fc..c06cb18 100644
--- a/src/extended/wtree_encseq.c
+++ b/src/extended/wtree_encseq.c
@@ -84,7 +84,7 @@ static GtWtreeSymbol gt_wtree_encseq_access_rec(GtWtreeEncseq *we,
if (bit == 0) {
pos = gt_compressed_bitsequence_rank_0(we->c_bits, node_start + pos) -
- zero_rank_prefix - 1; /*convert count (rank) to positon */
+ zero_rank_prefix - 1; /*convert count (rank) to position */
alpha_end = middle;
node_start += we->parent_instance.members->length;
node_size = left_child_size;
@@ -96,7 +96,7 @@ static GtWtreeSymbol gt_wtree_encseq_access_rec(GtWtreeEncseq *we,
one_rank_prefix =
gt_compressed_bitsequence_rank_1(we->c_bits, node_start - 1);
pos = gt_compressed_bitsequence_rank_1(we->c_bits, node_start + pos) -
- one_rank_prefix - 1; /*convert count (rank) to positon */
+ one_rank_prefix - 1; /*convert count (rank) to position */
alpha_start = middle + 1;
node_size =
gt_compressed_bitsequence_rank_1(we->c_bits,
diff --git a/src/gtt.c b/src/gtt.c
index f9ae073..d98777c 100644
--- a/src/gtt.c
+++ b/src/gtt.c
@@ -87,6 +87,7 @@
#include "ltr/gt_ltrdigest.h"
#include "ltr/gt_ltrharvest.h"
#include "ltr/ltrdigest_pbs_visitor.h"
+#include "match/karlin_altschul_stat.h"
#include "match/rdj-spmlist.h"
#include "match/rdj-strgraph.h"
#include "match/shu-encseq-gc.h"
@@ -320,6 +321,7 @@ GtHashmap* gtt_unit_tests(void)
gt_encseq_builder_unit_test);
gt_hashmap_add(unit_tests, "encseq gc module", gt_encseq_gc_unit_test);
gt_hashmap_add(unit_tests, "evaluator class", gt_evaluator_unit_test);
+ gt_hashmap_add(unit_tests, "evalue module", gt_evalue_unit_test);
gt_hashmap_add(unit_tests, "feature node iterator example",
gt_feature_node_iterator_example);
gt_hashmap_add(unit_tests, "feature node class", gt_feature_node_unit_test);
@@ -336,6 +338,8 @@ GtHashmap* gtt_unit_tests(void)
gt_hashmap_add(unit_tests, "huffman coding class", gt_huffman_unit_test);
gt_hashmap_add(unit_tests, "interval tree class", gt_interval_tree_unit_test);
gt_hashmap_add(unit_tests, "intset classes", gt_intset_unit_test);
+ gt_hashmap_add(unit_tests, "karlin altschul class",
+ gt_karlin_altschul_stat_unit_test);
gt_hashmap_add(unit_tests, "kmer_database class", gt_kmer_database_unit_test);
gt_hashmap_add(unit_tests, "Lua serializer module",
gt_lua_serializer_unit_test);
diff --git a/src/match/asqg_writer.c b/src/match/asqg_writer.c
index 4ee94ff..f5d419d 100644
--- a/src/match/asqg_writer.c
+++ b/src/match/asqg_writer.c
@@ -114,7 +114,7 @@ static inline void gt_asqg_writer_show_edge_line(GtFile *file,
seqlen1, start2, end2, seqlen2, revcompl ? '1' : '0', edist);
}
-void gt_spmproc_show_asgq(GtUword suffix_readnum,
+void gt_spmproc_show_asqg(GtUword suffix_readnum,
GtUword prefix_readnum, GtUword length,
bool suffixseq_direct, bool prefixseq_direct, void *asqg_writer)
{
diff --git a/src/match/asqg_writer.h b/src/match/asqg_writer.h
index f6dbcd8..041f1bb 100644
--- a/src/match/asqg_writer.h
+++ b/src/match/asqg_writer.h
@@ -51,7 +51,7 @@ int gt_asqg_writer_show_vertices(GtAsqgWriter *aw,
GtError *err);
/* Writes an edge using Readjoiner SPM information. */
-void gt_spmproc_show_asgq(GtUword suffix_readnum,
+void gt_spmproc_show_asqg(GtUword suffix_readnum,
GtUword prefix_readnum,
GtUword length,
bool suffixseq_direct,
diff --git a/src/match/chain2dim.c b/src/match/chain2dim.c
index 3016f3e..f298244 100644
--- a/src/match/chain2dim.c
+++ b/src/match/chain2dim.c
@@ -1533,7 +1533,11 @@ void gt_chain_fastchaining(const GtChain2Dimmode *chainmode,
} else
{
gt_chain2dim_chainingboundarycases(chainmode, chain, matchtable);
- chainprocessor(cpinfo,matchtable,chain);
+ if (chainmode->chainkind != LOCALCHAININGTHRESHOLD ||
+ matchtable->matches[0].weight >= chainmode->minimumscore)
+ {
+ chainprocessor(cpinfo,matchtable,chain);
+ }
retval = 0;
}
/* retval is not reported. */
@@ -1785,11 +1789,10 @@ void gt_chain_extractchainelem(GtChain2Dimmatchvalues *value,
void gt_chain_printchainelem(FILE *outfp,const GtChain2Dimmatchvalues *value)
{
- fprintf(outfp,
- ""GT_WU" "GT_WU" "GT_WU" "GT_WU""
- " "GT_WD"\n",value->startpos[0],
- value->endpos[0],
- value->startpos[1],
- value->endpos[1],
- value->weight);
+ fprintf(outfp,GT_WU " " GT_WU " " GT_WU " " GT_WU " " GT_WD "\n",
+ value->startpos[0],
+ value->endpos[0],
+ value->startpos[1],
+ value->endpos[1],
+ value->weight);
}
diff --git a/src/match/chainofin.c b/src/match/chainofin.c
index f9268de..794b7bf 100644
--- a/src/match/chainofin.c
+++ b/src/match/chainofin.c
@@ -22,7 +22,7 @@
#include "core/types_api.h"
#include "chain2dim.h"
-#define READNUMS 5
+#define GT_CHAININPUT_READNUMS 5
#define CANNOTPARSELINE(S)\
gt_error_set(err,"matchfile \"%s\", line "GT_WU", column "GT_WU": %s",\
@@ -58,7 +58,7 @@ GtChain2Dimmatchtable *gt_chain_analyzeopenformatfile(double weightfactor,
{
GtChain2Dimmatchtable *matchtable;
GtUword linenum;
- GtWord storeinteger[READNUMS];
+ GtWord storeinteger[GT_CHAININPUT_READNUMS];
FILE *matchfp;
bool haserr = false;
GtChain2Dimmatchvalues fragment;
@@ -78,11 +78,12 @@ GtChain2Dimmatchtable *gt_chain_analyzeopenformatfile(double weightfactor,
&storeinteger[1],
&storeinteger[2],
&storeinteger[3],
- &storeinteger[4]) == READNUMS; linenum++)
+ &storeinteger[4]) == GT_CHAININPUT_READNUMS;
+ linenum++)
{
GtUword countcolumns;
- for (countcolumns = 0; countcolumns < (GtUword) (READNUMS-1);
+ for (countcolumns = 0; countcolumns < (GtUword) (GT_CHAININPUT_READNUMS-1);
countcolumns++)
{
if (storeinteger[countcolumns] < 0)
diff --git a/src/match/diagband-struct.c b/src/match/diagband-struct.c
new file mode 100644
index 0000000..4983d63
--- /dev/null
+++ b/src/match/diagband-struct.c
@@ -0,0 +1,349 @@
+/*
+ Copyright (c) 2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2017 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include <string.h>
+#include "core/ma_api.h"
+#include "core/assert_api.h"
+#include "core/unused_api.h"
+#include "core/str_api.h"
+#include "core/minmax.h"
+#include "core/intbits.h"
+#include "match/diagband-struct.h"
+
+/* called with real bpos */
+#define GT_DIAGBANDSEED_DIAGONALBAND(AMAXLEN,LOGDIAGBANDWIDTH,APOS,BPOS)\
+ (GT_DIAGBANDSEED_DIAGONAL(AMAXLEN,APOS,BPOS) >> (LOGDIAGBANDWIDTH))
+
+GtUword gt_diagband_struct_num_diagbands(GtUword amaxlen,GtUword bmaxlen,
+ GtUword logdiagbandwidth)
+{
+ return 1 + ((amaxlen + bmaxlen) >> logdiagbandwidth);
+}
+
+typedef uint32_t GtDiagbandseedScore;
+
+struct GtDiagbandStruct
+{
+ GtUword amaxlen, logdiagbandwidth, num_diagbands, used_diagbands,
+ reset_from_matches, reset_with_memset;
+ GtDiagbandseedScore *score;
+ GtDiagbandseedPosition *lastpos;
+};
+
+bool gt_diagband_struct_empty(const GtDiagbandStruct *diagband_struct)
+{
+ return diagband_struct->used_diagbands == 0 ? true : false;
+}
+
+GtDiagbandStruct *gt_diagband_struct_new(GtUword amaxlen,GtUword bmaxlen,
+ GtUword logdiagbandwidth)
+{
+ GtDiagbandStruct *diagband_struct = gt_malloc(sizeof *diagband_struct);
+
+ diagband_struct->used_diagbands = 0;
+ diagband_struct->num_diagbands
+ = gt_diagband_struct_num_diagbands(amaxlen,bmaxlen,logdiagbandwidth);
+ diagband_struct->amaxlen = amaxlen;
+ diagband_struct->logdiagbandwidth = logdiagbandwidth;
+ /* diagband_score[0] and diagband_score[num_diagbands+1] remain zero as
+ boundaries */
+ diagband_struct->score = gt_calloc(diagband_struct->num_diagbands + 2,
+ sizeof *diagband_struct->score);
+ diagband_struct->score++; /* so we need not increment the index when
+ accessing score */
+ diagband_struct->lastpos
+ = gt_calloc(diagband_struct->num_diagbands,
+ sizeof *diagband_struct->lastpos);
+ diagband_struct->reset_from_matches = 0;
+ diagband_struct->reset_with_memset = 0;
+ return diagband_struct;
+}
+
+void gt_diagband_struct_reset_counts(const GtDiagbandStruct *diagband_struct,
+ FILE *stream)
+{
+ fprintf(stream,"# number of resets of all used diagonal bands: " GT_WU,
+ diagband_struct->reset_with_memset +
+ diagband_struct->reset_from_matches);
+ if (diagband_struct->reset_with_memset > 0)
+ {
+ fprintf(stream,"; simple resets: " GT_WU,
+ diagband_struct->reset_with_memset);
+ }
+ if (diagband_struct->reset_from_matches > 0)
+ {
+ fprintf(stream,"; resets from matches: " GT_WU,
+ diagband_struct->reset_from_matches);
+ }
+ fprintf(stream,"\n");
+}
+
+void gt_diagband_struct_delete(GtDiagbandStruct *diagband_struct)
+{
+ if (diagband_struct != NULL)
+ {
+ diagband_struct->score--; /* need to recover original base adress */
+ gt_free(diagband_struct->score);
+ gt_free(diagband_struct->lastpos);
+ gt_free(diagband_struct);
+ }
+}
+
+void gt_diagband_struct_single_update(GtDiagbandStruct *diagband_struct,
+ GtDiagbandseedPosition apos,
+ GtDiagbandseedPosition bpos,
+ GtDiagbandseedPosition matchlength)
+{
+ GtUword diagband_idx;
+
+ gt_assert(diagband_struct != NULL);
+ diagband_idx = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ apos,
+ bpos);
+ gt_assert(diagband_idx < diagband_struct->num_diagbands);
+ if (diagband_struct->lastpos[diagband_idx] == 0 /* first matches */||
+ /* match with end position bpos begins strictly after previous match */
+ diagband_struct->lastpos[diagband_idx] + matchlength <= bpos)
+ {
+ /* no overlap */
+ diagband_struct->lastpos[diagband_idx] = bpos;
+ if (diagband_struct->score[diagband_idx] == 0)
+ {
+ diagband_struct->used_diagbands++;
+ }
+ diagband_struct->score[diagband_idx] += matchlength;
+ } else
+ {
+ /* overlap: add positions after last counted position */
+ if (diagband_struct->lastpos[diagband_idx] < bpos)
+ {
+ const GtUword addlength = bpos - diagband_struct->lastpos[diagband_idx];
+
+ diagband_struct->lastpos[diagband_idx] = bpos;
+ if (diagband_struct->score[diagband_idx] == 0)
+ {
+ diagband_struct->used_diagbands++;
+ }
+ diagband_struct->score[diagband_idx] += addlength;
+ }
+ }
+}
+
+static GtUword gt_diagband_struct_dband_coverage(
+ const GtDiagbandStruct *diagband_struct,
+ GtUword diagband_idx)
+{
+ gt_assert(diagband_struct != NULL);
+ return (GtUword) MAX(diagband_struct->score[diagband_idx + 1],
+ diagband_struct->score[diagband_idx - 1])
+ + (GtUword) diagband_struct->score[diagband_idx];
+}
+
+GtUword gt_diagband_struct_coverage(const GtDiagbandStruct *diagband_struct,
+ GtDiagbandseedPosition apos,
+ GtDiagbandseedPosition bpos)
+{
+ GtUword diagband_idx;
+
+ gt_assert(diagband_struct != NULL);
+ diagband_idx = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ apos, bpos);
+ return gt_diagband_struct_dband_coverage(diagband_struct,diagband_idx);
+}
+
+void gt_diagband_struct_multi_update(GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ GtUword numofmatches)
+{
+ GtUword idx;
+
+ gt_assert(memstore != NULL);
+ for (idx = 0; idx < numofmatches; idx++)
+ {
+ gt_diagband_struct_single_update(diagband_struct,
+ memstore[idx].apos,
+ memstore[idx].bpos,
+ memstore[idx].len);
+ }
+}
+
+void gt_diagband_struct_reset(GtDiagbandStruct *diagband_struct,
+ const GtSeedpairPositions *seedstore,
+ const GtDiagbandseedMaximalmatch *memstore,
+ GtUword segment_length)
+{
+ gt_assert(diagband_struct != NULL);
+ if (diagband_struct->used_diagbands * 3 >= diagband_struct->num_diagbands)
+ { /* >= 33% of diagbands are used */
+ memset(diagband_struct->score,0,
+ sizeof *diagband_struct->score * diagband_struct->num_diagbands);
+ memset(diagband_struct->lastpos,0,
+ sizeof *diagband_struct->lastpos * diagband_struct->num_diagbands);
+ diagband_struct->reset_with_memset++;
+ } else
+ {
+ GtUword idx;
+
+ if (seedstore != NULL)
+ {
+ for (idx = 0; idx < segment_length; idx++)
+ {
+ const GtUword diagband_idx
+ = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ seedstore[idx].apos,
+ seedstore[idx].bpos);
+ diagband_struct->score[diagband_idx] = 0;
+ diagband_struct->lastpos[diagband_idx] = 0;
+ }
+ } else
+ {
+ gt_assert(memstore != NULL);
+ for (idx = 0; idx < segment_length; idx++)
+ {
+ const GtUword diagband_idx
+ = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ memstore[idx].apos,
+ memstore[idx].bpos);
+ diagband_struct->score[diagband_idx] = 0;
+ diagband_struct->lastpos[diagband_idx] = 0;
+ }
+ }
+ diagband_struct->reset_from_matches++;
+ }
+ diagband_struct->used_diagbands = 0;
+}
+
+struct GtDiagbandStatistics
+{
+ bool compute_sum;
+ bool forward;
+ GtUword sumscore;
+ GtBitsequence *track;
+};
+
+GtDiagbandStatistics *gt_diagband_statistics_new(const GtStr
+ *diagband_distance_arg,
+ bool forward)
+{
+ const char *arg = gt_str_get(diagband_distance_arg);
+ GtDiagbandStatistics *diagband_statistics
+ = gt_malloc(sizeof *diagband_statistics);
+
+ diagband_statistics->forward = forward;
+ diagband_statistics->compute_sum = false;
+ if (strcmp(arg,"sum") == 0)
+ {
+ diagband_statistics->compute_sum = true;
+ } else
+ {
+ gt_assert(false);
+ }
+ diagband_statistics->sumscore = 0;
+ diagband_statistics->track = NULL;
+ return diagband_statistics;
+}
+
+void gt_diagband_statistics_delete(GtDiagbandStatistics *diagband_statistics)
+{
+ if (diagband_statistics != NULL)
+ {
+ gt_free(diagband_statistics->track);
+ gt_free(diagband_statistics);
+ }
+}
+
+void gt_diagband_statistics_display(const GtDiagbandStatistics
+ *diagband_statistics)
+{
+ gt_assert(diagband_statistics != NULL);
+ if (diagband_statistics->compute_sum)
+ {
+ printf("# forward=%s, sum_diagband_score=" GT_WU "\n",
+ diagband_statistics->forward ? "true" : "false",
+ diagband_statistics->sumscore);
+ } else
+ {
+ gt_assert(false);
+ }
+}
+
+static void gt_diagband_statistics_score_add(
+ GtDiagbandStatistics *diagband_statistics,
+ const GtDiagbandStruct *diagband_struct,
+ GtUword diagband_idx)
+{
+ if (!GT_ISIBITSET(diagband_statistics->track,diagband_idx))
+ {
+ diagband_statistics->sumscore += diagband_struct->score[diagband_idx];
+ GT_SETIBIT(diagband_statistics->track,diagband_idx);
+ }
+}
+
+void gt_diagband_statistics_add(void *v_diagband_statistics,
+ /* remove GT_UNUSED once arguments are used */
+ GT_UNUSED const GtEncseq *aencseq,
+ GT_UNUSED const GtEncseq *bencseq,
+ GT_UNUSED GtUword aseqnum,
+ GT_UNUSED GtUword bseqnum,
+ const GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ GT_UNUSED unsigned int seedlength,
+ const GtSeedpairPositions *seedstore,
+ GtUword segment_length)
+{
+ GtUword idx;
+ GtDiagbandStatistics *diagband_statistics
+ = (GtDiagbandStatistics *) v_diagband_statistics;
+
+ if (diagband_statistics->track == NULL)
+ {
+ GT_INITBITTAB(diagband_statistics->track,diagband_struct->num_diagbands);
+ } else
+ {
+ GT_CLEARBITTAB(diagband_statistics->track,diagband_struct->num_diagbands);
+ }
+ if (seedstore != NULL)
+ {
+ for (idx = 0; idx < segment_length; idx++)
+ {
+ const GtUword diagband_idx
+ = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ seedstore[idx].apos,
+ seedstore[idx].bpos);
+ gt_diagband_statistics_score_add(diagband_statistics,diagband_struct,
+ diagband_idx);
+ }
+ } else
+ {
+ gt_assert(memstore != NULL);
+ for (idx = 0; idx < segment_length; idx++)
+ {
+ const GtUword diagband_idx
+ = GT_DIAGBANDSEED_DIAGONALBAND(diagband_struct->amaxlen,
+ diagband_struct->logdiagbandwidth,
+ memstore[idx].apos,
+ memstore[idx].bpos);
+ gt_diagband_statistics_score_add(diagband_statistics,diagband_struct,
+ diagband_idx);
+ }
+ }
+}
diff --git a/src/match/diagband-struct.h b/src/match/diagband-struct.h
new file mode 100644
index 0000000..11943de
--- /dev/null
+++ b/src/match/diagband-struct.h
@@ -0,0 +1,170 @@
+/*
+ Copyright (c) 2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2017 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef DIAGBAND_STRUCT_H
+#define DIAGBAND_STRUCT_H
+#include <inttypes.h>
+#include "core/types_api.h"
+#include "core/encseq_api.h"
+
+/* This module implements all methods related to diagonal bands including
+ statistics derived from them. The latter is currently under development. */
+
+/* We add the following macro, as, besides determining diagonal bands,
+ we need in some cases just compute the diagonal for given positions
+ <APOS> and <BPOS> and maximum length <AMAXLEN> of all positions in
+ sequence set A.
+*/
+#define GT_DIAGBANDSEED_DIAGONAL(AMAXLEN,APOS,BPOS)\
+ ((AMAXLEN) + (GtUword) (BPOS) - (GtUword) (APOS))
+
+/* Determine the number of diagonal bands. The width of a band is
+ 2^{logdiagbandwidth}, i.e. we only support width which are powers of 2.
+ Also, we always compute as much diagonal bands as required
+ for the pair of longest sequences in set A and B. So we can use the
+ same diagonal band structure for all sequence pairs. */
+
+GtUword gt_diagband_struct_num_diagbands(GtUword amaxlen,GtUword bmaxlen,
+ GtUword logdiagbandwidth);
+
+/* The name of the opaque type */
+
+typedef struct GtDiagbandStruct GtDiagbandStruct;
+
+/* The constructor. */
+
+GtDiagbandStruct *gt_diagband_struct_new(GtUword amaxlen,GtUword bmaxlen,
+ GtUword logdiagbandwidth);
+
+/* The destructor. */
+
+void gt_diagband_struct_delete(GtDiagbandStruct *diagband_struct);
+
+/* Return true if and only if all scores of diagonal bands, stored in
+ <diagband_struct> are 0. */
+
+bool gt_diagband_struct_empty(const GtDiagbandStruct *diagband_struct);
+
+typedef uint32_t GtDiagbandseedPosition;
+
+/* for a given match of length <matchlength> ending a positions <apos> and
+ <bpos> the sequence from A and from B, respectively, update the
+ diagonal band score, which is the number of positions on B covered by the
+ match. If previous matches have been added to the band before, then
+ the positions overlapping with these on the B-sequence are not counted.*/
+
+void gt_diagband_struct_single_update(GtDiagbandStruct *diagband_struct,
+ GtDiagbandseedPosition apos,
+ GtDiagbandseedPosition bpos,
+ GtDiagbandseedPosition matchlength);
+
+/* for a given pair of positions <apos> and <bpos> on the A- and on the
+ B-sequence, respectively, determine the corresponding coverage. */
+
+GtUword gt_diagband_struct_coverage(const GtDiagbandStruct *diagband_struct,
+ GtDiagbandseedPosition apos,
+ GtDiagbandseedPosition bpos);
+
+/* In the case where we use maximal matches as seeds, we have to perform
+ updates for a table of maximal matches, who's basetype is defined as follows:
+*/
+
+typedef struct
+{
+ GtDiagbandseedPosition apos, bpos, len;
+} GtDiagbandseedMaximalmatch;
+
+/* The following function updates the diagonal band score for
+ <numofmatches> MEMs stored in <memstore>. The matches have to be sorted
+ by the B-position */
+
+void gt_diagband_struct_multi_update(GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ GtUword numofmatches);
+
+/* To store seeds in we use elements of the following type. */
+
+typedef struct
+{
+ GtDiagbandseedPosition apos, /* secondary key */
+ bpos; /* primary key */
+} GtSeedpairPositions;
+
+/* The following function resets the diagonal band score for
+ <segment_length> seeds. */
+
+void gt_diagband_struct_reset(GtDiagbandStruct *diagband_struct,
+ const GtSeedpairPositions *seedstore,
+ const GtDiagbandseedMaximalmatch *memstore,
+ GtUword segment_length);
+
+/* The following function outputs how many resets of all used diagonal bands
+ are performed. */
+
+void gt_diagband_struct_reset_counts(const GtDiagbandStruct *diagband_struct,
+ FILE *stream);
+
+/* We want to compute statistics on diagonal bands and we use the
+ following type for the corresponding state. */
+
+typedef struct GtDiagbandStatistics GtDiagbandStatistics;
+
+/* The constructor. The first argument is the argument of option
+ -diagband-stat. Currently the only option is the keyword sum.
+ One can extend the list of different options to compute other statistics,
+ by adding a corresponding string to the array
+ diagband_statistics_choices in src/tools/gt_seed_extend.c.
+ The second argument is <true> iff the statistics is computed from a
+ comparison of the two strings in forward direction.
+ The second argument is <false> iff the statistics is computed from a
+ comparison of A sequences in forward direction and the B-string in reverse
+ complemented direction.
+*/
+
+GtDiagbandStatistics *gt_diagband_statistics_new(const GtStr
+ *diagband_statistics_arg,
+ bool forward);
+
+/* The destructor. */
+
+void gt_diagband_statistics_delete(GtDiagbandStatistics *diagband_statistics);
+
+/* If the option -diagband-stat is used, the following function is called for
+ each pair of sequences, after completing the scores in
+ diagband_struct. The first argument refers to an object created by
+ gt_diagband_statistics_new.
+*/
+
+void gt_diagband_statistics_add(void *v_diagband_statistics,
+ const GtEncseq *aencseq,
+ const GtEncseq *bencseq,
+ GtUword aseqnum,
+ GtUword bseqnum,
+ const GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ unsigned int seedlength,
+ const GtSeedpairPositions *seedstore,
+ GtUword segment_length);
+
+/* The following function displays the computed statistics after all
+ pairs of sequences have been processed. Note that one statistic is computed
+ from the forward strand and one from the reverse strand. */
+
+void gt_diagband_statistics_display(const GtDiagbandStatistics
+ *diagband_statistics);
+
+#endif
diff --git a/src/match/diagbandseed.c b/src/match/diagbandseed.c
index d2a0425..c4cad2e 100644
--- a/src/match/diagbandseed.c
+++ b/src/match/diagbandseed.c
@@ -1,6 +1,7 @@
/*
Copyright (c) 2015-2016 Joerg Winkler <j.winkler at posteo.de>
- Copyright (c) 2015-2016 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2015-2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2015-2017 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -19,6 +20,8 @@
#include <stddef.h>
#include <stdio.h>
#include <string.h>
+#include <sys/time.h>
+#include <float.h>
#include "core/arraydef.h"
#include "core/codetype.h"
#include "core/complement.h"
@@ -30,30 +33,36 @@
#include "core/minmax.h"
#include "core/radix_sort.h"
#include "core/timer_api.h"
+#include "core/spacecalc.h"
#include "core/warning_api.h"
#include "core/xansi_api.h"
+#include "core/intbits.h"
+#include "core/qsort-ulong.h"
+#include "core/radix_sort.h"
+#include "core/log_api.h"
+#include "core/bittab_api.h"
+#include "match/chain2dim.h"
#include "match/declare-readfunc.h"
-#include "match/diagbandseed.h"
#include "match/kmercodes.h"
#include "match/querymatch.h"
#include "match/querymatch-align.h"
#include "match/seed-extend.h"
#include "match/sfx-mappedstr.h"
#include "match/sfx-suffixer.h"
+#include "match/rectangle-store.h"
+#include "match/diagband-struct.h"
+#include "match/diagbandseed.h"
#ifdef GT_THREADS_ENABLED
#include "core/thread_api.h"
#endif
-#define GT_DIAGBANDSEED_SEQNUM_UNDEF UINT_MAX
-/* #define GT_DIAGBANDSEED_SEEDHISTOGRAM 100 */
+/* We need to use 6 digits for the micro seconds */
+#define GT_DIAGBANDSEED_FMT "in " GT_WD ".%06ld seconds.\n"
-typedef uint32_t GtDiagbandseedPosition;
typedef uint32_t GtDiagbandseedSeqnum;
-typedef uint32_t GtDiagbandseedScore;
-typedef struct GtDiagbandseedProcKmerInfo GtDiagbandseedProcKmerInfo;
-typedef struct {
+typedef struct { /* 8 + 4 + 4 bytes */
GtCodetype code; /* only sort criterion */
GtDiagbandseedSeqnum seqnum;
GtDiagbandseedPosition endpos;
@@ -63,106 +72,205 @@ GT_DECLAREARRAYSTRUCT(GtDiagbandseedKmerPos);
DECLAREBufferedfiletype(GtDiagbandseedKmerPos);
DECLAREREADFUNCTION(GtDiagbandseedKmerPos);
-typedef struct {
- GtDiagbandseedSeqnum bseqnum; /* 2nd important sort criterion */
- GtDiagbandseedSeqnum aseqnum; /* most important sort criterion */
- GtDiagbandseedPosition apos;
- GtDiagbandseedPosition bpos; /* 3rd important sort criterion */
+typedef struct
+{ /* 4 + 4 + 4 + 4 bytes */
+ GtDiagbandseedSeqnum bseqnum, /* 2nd important sort criterion */
+ aseqnum; /* most important sort criterion */
+ GtDiagbandseedPosition apos,
+ bpos; /* 3rd important sort criterion */
} GtDiagbandseedSeedPair;
-GT_DECLAREARRAYSTRUCT(GtDiagbandseedSeedPair);
+#define GT_DIAGBANDSEED_SETPOS(SP,APOS,BPOS)\
+ (SP)->bpos = BPOS;\
+ (SP)->apos = APOS
+
+#define GT_DIAGBANDSEED_GETPOS_A(SP) (SP)->apos
+#define GT_DIAGBANDSEED_GETPOS_B(SP) (SP)->bpos
-struct GtDiagbandseedInfo {
- GtEncseq *aencseq;
- GtEncseq *bencseq;
- GtUword maxfreq;
- GtUword memlimit;
- unsigned int seedlength;
- bool norev;
- bool nofwd;
- GtRange *seedpairdistance;
- bool verify;
- bool verbose;
- bool debug_kmer;
- bool debug_seedpair;
- bool use_kmerfile;
- GtDiagbandseedExtendParams *extp;
- GtUword anumseqranges;
- GtUword bnumseqranges;
+#define GT_DIAGBANDSEED_DIAGONAL2BPOS(AMAXLEN,APOS,DIAG)\
+ ((GtUword) (DIAG) + (GtUword) (APOS) - (AMAXLEN))
+
+#define GT_DIAGBANDSEED_CONV_B(APOS,BPOS)\
+ (seedpairlist->maxmat_compute \
+ ? GT_DIAGBANDSEED_DIAGONAL2BPOS(seedpairlist->amaxlen,APOS,BPOS) \
+ : (BPOS))
+
+struct GtDiagbandseedInfo
+{
+ const GtEncseq *aencseq,
+ *bencseq;
+ const GtDiagbandseedExtendParams *extp;
+ const GtRange *seedpairdistance;
+ const GtStr *chainarguments,
+ *diagband_statistics_arg;
+ GtUword maxfreq,
+ memlimit,
+ maxmat;
+ unsigned int seedweight,
+ seedlength;
+ GtDiagbandseedPairlisttype splt;
+ bool norev,
+ nofwd,
+ verify,
+ verbose,
+ debug_kmer,
+ debug_seedpair,
+ use_kmerfile,
+ trimstat_on;
};
-struct GtDiagbandseedExtendParams {
- GtUword errorpercentage;
- GtUword userdefinedleastlength;
- GtUword logdiagbandwidth;
- GtUword mincoverage;
- unsigned int display_flag;
- bool use_apos;
+struct GtDiagbandseedExtendParams
+{
+ GtUword logdiagbandwidth,
+ mincoverage,
+ maxalignedlendifference,
+ history_size,
+ perc_mat_history,
+ sensitivity,
+ userdefinedleastlength,
+ errorpercentage;
+ double evalue_threshold;
GtXdropscore xdropbelowscore;
- bool extendgreedy;
- bool extendxdrop;
- GtUword maxalignedlendifference;
- GtUword history_size;
- GtUword perc_mat_history;
- GtExtendCharAccess extend_char_access;
- GtUword sensitivity;
+ GtExtendCharAccess a_extend_char_access,
+ b_extend_char_access;
+ const GtSeedExtendDisplayFlag *out_display_flag;
double matchscore_bias;
- bool weakends;
- bool benchmark;
- GtUword alignmentwidth;
- bool always_polished_ends;
+ GtUword use_apos;
+ GtAniAccumulate *ani_accumulate;
+ bool extendgreedy,
+ extendxdrop,
+ weakends,
+ benchmark,
+ always_polished_ends,
+ verify_alignment,
+ only_selected_seqpairs,
+ cam_generic;
};
-struct GtDiagbandseedProcKmerInfo {
+typedef struct
+{
GtArrayGtDiagbandseedKmerPos *list;
GtDiagbandseedSeqnum seqnum;
GtDiagbandseedPosition endpos;
const GtEncseq *encseq;
- unsigned int seedlength;
- GtReadmode readmode;
GtSpecialrangeiterator *sri;
- GtUword totallength;
- GtUword prev_separator;
- GtUword next_separator;
GtRange *specialrange;
-};
+ GtUword last_specialpos,
+ prev_separator,
+ next_separator;
+ unsigned int seedweight,
+ seedlength;
+ GtReadmode readmode;
+} GtDiagbandseedProcKmerInfo;
+
+typedef struct
+{
+ GtUword b_firstseq, b_numsequences;
+ GtBitsequence *b_bitsequence;
+} GtSegmentRejectInfo;
+
+typedef bool (*GtSegmentRejectFunc)(const GtSegmentRejectInfo *,GtUword);
+
+static GtSegmentRejectInfo *gt_segment_reject_info_new(GtUword b_firstseq,
+ GtUword b_numsequences)
+{
+ GtSegmentRejectInfo *segment_reject_info
+ = gt_malloc(sizeof *segment_reject_info);
+
+ gt_assert(b_numsequences > 0);
+ GT_INITBITTAB(segment_reject_info->b_bitsequence,b_numsequences);
+ segment_reject_info->b_firstseq = b_firstseq;
+ segment_reject_info->b_numsequences = b_numsequences;
+ return segment_reject_info;
+}
+
+static void gt_segment_reject_info_delete(GtSegmentRejectInfo
+ *segment_reject_info)
+{
+ if (segment_reject_info != NULL)
+ {
+ gt_free(segment_reject_info->b_bitsequence);
+ gt_free(segment_reject_info);
+ }
+}
+
+static void gt_segment_reject_register_match(GtSegmentRejectInfo
+ *segment_reject_info,
+ GtUword bseqnum)
+{
+ GtUword idx;
+
+ gt_assert(segment_reject_info !=NULL);
+ idx = bseqnum - segment_reject_info->b_firstseq;
+ gt_assert(bseqnum >= segment_reject_info->b_firstseq &&
+ idx < segment_reject_info->b_numsequences &&
+ !GT_ISIBITSET(segment_reject_info->b_bitsequence,idx));
+ GT_SETIBIT(segment_reject_info->b_bitsequence,idx);
+}
+
+static bool gt_segment_reject_check(const GtSegmentRejectInfo
+ *segment_reject_info,
+ GtUword bseqnum)
+{
+ const GtUword idx = bseqnum - segment_reject_info->b_firstseq;
+
+ gt_assert(bseqnum >= segment_reject_info->b_firstseq &&
+ idx < segment_reject_info->b_numsequences);
+ return GT_ISIBITSET(segment_reject_info->b_bitsequence,idx) ? true : false;
+}
/* * * * * CONSTRUCTORS AND DESTRUCTORS * * * * */
-GtDiagbandseedInfo *gt_diagbandseed_info_new(GtEncseq *aencseq,
- GtEncseq *bencseq,
+GtDiagbandseedInfo *gt_diagbandseed_info_new(const GtEncseq *aencseq,
+ const GtEncseq *bencseq,
GtUword maxfreq,
GtUword memlimit,
+ unsigned int spacedseedweight,
unsigned int seedlength,
bool norev,
bool nofwd,
- GtRange *seedpairdistance,
+ const GtRange *seedpairdistance,
+ GtDiagbandseedPairlisttype splt,
bool verify,
bool verbose,
bool debug_kmer,
bool debug_seedpair,
bool use_kmerfile,
- GtDiagbandseedExtendParams *extp,
- GtUword anumseqranges,
- GtUword bnumseqranges)
+ bool trimstat_on,
+ GtUword maxmat,
+ const GtStr *chainarguments,
+ const GtStr
+ *diagband_statistics_arg,
+ const GtDiagbandseedExtendParams
+ *extp)
{
GtDiagbandseedInfo *info = gt_malloc(sizeof *info);
info->aencseq = aencseq;
info->bencseq = bencseq;
info->maxfreq = maxfreq;
info->memlimit = memlimit;
+ if (spacedseedweight > 0)
+ {
+ info->seedweight = spacedseedweight;
+ } else
+ {
+ info->seedweight = seedlength;
+ }
info->seedlength = seedlength;
info->norev = norev;
info->nofwd = nofwd;
info->seedpairdistance = seedpairdistance;
+ info->splt = splt;
info->verify = verify;
info->verbose = verbose;
info->debug_kmer = debug_kmer;
info->debug_seedpair = debug_seedpair;
info->use_kmerfile = use_kmerfile;
+ info->trimstat_on = trimstat_on;
+ info->maxmat = maxmat;
+ info->chainarguments = chainarguments;
+ info->diagband_statistics_arg = diagband_statistics_arg;
info->extp = extp;
- info->anumseqranges = anumseqranges;
- info->bnumseqranges = bnumseqranges;
return info;
}
@@ -174,32 +282,38 @@ void gt_diagbandseed_info_delete(GtDiagbandseedInfo *info)
}
GtDiagbandseedExtendParams *gt_diagbandseed_extend_params_new(
- GtUword errorpercentage,
GtUword userdefinedleastlength,
+ GtUword errorpercentage,
+ double evalue_threshold,
GtUword logdiagbandwidth,
GtUword mincoverage,
- unsigned int display_flag,
- bool use_apos,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ GtUword use_apos,
GtXdropscore xdropbelowscore,
bool extendgreedy,
bool extendxdrop,
GtUword maxalignedlendifference,
GtUword history_size,
GtUword perc_mat_history,
- GtExtendCharAccess extend_char_access,
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ bool cam_generic,
GtUword sensitivity,
double matchscore_bias,
bool weakends,
bool benchmark,
- GtUword alignmentwidth,
- bool always_polished_ends)
+ bool always_polished_ends,
+ bool verify_alignment,
+ bool only_selected_seqpairs,
+ GtAniAccumulate *ani_accumulate)
{
GtDiagbandseedExtendParams *extp = gt_malloc(sizeof *extp);
- extp->errorpercentage = errorpercentage;
extp->userdefinedleastlength = userdefinedleastlength;
+ extp->errorpercentage = errorpercentage;
+ extp->evalue_threshold = evalue_threshold;
extp->logdiagbandwidth = logdiagbandwidth;
extp->mincoverage = mincoverage;
- extp->display_flag = display_flag;
+ extp->out_display_flag = out_display_flag;
extp->use_apos = use_apos;
extp->xdropbelowscore = xdropbelowscore;
extp->extendgreedy = extendgreedy;
@@ -207,13 +321,17 @@ GtDiagbandseedExtendParams *gt_diagbandseed_extend_params_new(
extp->maxalignedlendifference = maxalignedlendifference;
extp->history_size = history_size;
extp->perc_mat_history = perc_mat_history;
- extp->extend_char_access = extend_char_access;
+ extp->a_extend_char_access = a_extend_char_access;
+ extp->b_extend_char_access = b_extend_char_access;
+ extp->cam_generic = cam_generic;
extp->sensitivity = sensitivity;
extp->matchscore_bias = matchscore_bias;
extp->weakends = weakends;
extp->benchmark = benchmark;
- extp->alignmentwidth = alignmentwidth;
extp->always_polished_ends = always_polished_ends;
+ extp->verify_alignment = verify_alignment;
+ extp->only_selected_seqpairs = only_selected_seqpairs;
+ extp->ani_accumulate = ani_accumulate;
return extp;
}
@@ -229,17 +347,17 @@ void gt_diagbandseed_extend_params_delete(GtDiagbandseedExtendParams *extp)
/* Estimate the number of k-mers in the given encseq. */
static GtUword gt_seed_extend_numofkmers(const GtEncseq *encseq,
unsigned int seedlength,
- const GtRange *seqrange)
+ GtUword seqrange_start,
+ GtUword seqrange_end)
{
GtUword lastpos, numofpos, subtract, ratioofspecial;
-
const GtUword totalnumofspecial = gt_encseq_specialcharacters(encseq),
totalnumofpos = gt_encseq_total_length(encseq),
- firstpos = gt_encseq_seqstartpos(encseq, seqrange->start),
- numofseq = gt_range_length(seqrange);
- lastpos = (seqrange->end + 1 == gt_encseq_num_of_sequences(encseq)
+ firstpos = gt_encseq_seqstartpos(encseq, seqrange_start),
+ numofseq = seqrange_end - seqrange_start + 1;
+ lastpos = (seqrange_end + 1 == gt_encseq_num_of_sequences(encseq)
? totalnumofpos
- : gt_encseq_seqstartpos(encseq, seqrange->end + 1) - 1);
+ : gt_encseq_seqstartpos(encseq, seqrange_end + 1) - 1);
gt_assert(lastpos >= firstpos);
numofpos = lastpos - firstpos;
@@ -254,6 +372,7 @@ static GtUword gt_seed_extend_numofkmers(const GtEncseq *encseq,
static GtUword gt_diagbandseed_update_separatorpos(GtRange *specialrange,
GtSpecialrangeiterator *sri,
const GtEncseq *encseq,
+ GtUword totallength,
GtReadmode readmode)
{
gt_assert(sri != NULL && specialrange != NULL && encseq != NULL);
@@ -266,7 +385,21 @@ static GtUword gt_diagbandseed_update_separatorpos(GtRange *specialrange,
}
}
} while (gt_specialrangeiterator_next(sri, specialrange));
- return gt_encseq_total_length(encseq);
+ return totallength;
+}
+
+static GtCodetype gt_extract_spaced_seed_rasb_se2(GtCodetype kmer)
+{
+ gt_assert(kmer < 1152921504606846976);
+ /* 111110101101011100111011001111, weight 21, length 30 */
+ return ((kmer & ((GtCodetype) 1151795604700004352)) >> 18) |
+ ((kmer & ((GtCodetype) 211106232532992)) >> 16) |
+ ((kmer & ((GtCodetype) 16492674416640)) >> 14) |
+ ((kmer & ((GtCodetype) 206158430208)) >> 12) |
+ ((kmer & ((GtCodetype) 16911433728)) >> 10) |
+ ((kmer & ((GtCodetype) 16515072)) >> 6) |
+ ((kmer & ((GtCodetype) 61440)) >> 4) |
+ (kmer & ((GtCodetype) 255));
}
/* Add given code and its seqnum and position to a kmer list. */
@@ -297,11 +430,12 @@ static void gt_diagbandseed_processkmercode(void *prockmerinfo,
= gt_diagbandseed_update_separatorpos(pkinfo->specialrange,
pkinfo->sri,
pkinfo->encseq,
+ pkinfo->last_specialpos,
pkinfo->readmode);
gt_assert(pkinfo->next_separator >= pkinfo->prev_separator);
}
- gt_assert(endpos >= pkinfo->prev_separator);
- gt_assert(startpos < pkinfo->next_separator);
+ gt_assert(endpos >= pkinfo->prev_separator &&
+ startpos < pkinfo->next_separator);
if (pkinfo->readmode == GT_READMODE_FORWARD) {
pkinfo->endpos = (GtDiagbandseedPosition) (endpos -
pkinfo->prev_separator);
@@ -312,10 +446,15 @@ static void gt_diagbandseed_processkmercode(void *prockmerinfo,
}
/* save k-mer code */
- kmerposptr->code = (pkinfo->readmode == GT_READMODE_FORWARD
- ? code : gt_kmercode_reverse(code, pkinfo->seedlength));
+ kmerposptr->code = pkinfo->readmode == GT_READMODE_FORWARD
+ ? code
+ : gt_kmercode_reverse(code, pkinfo->seedlength);
+ if (pkinfo->seedweight < pkinfo->seedlength)
+ {
+ kmerposptr->code = gt_extract_spaced_seed_rasb_se2(kmerposptr->code);
+ }
/* save endpos and seqnum */
- gt_assert(pkinfo->endpos != UINT_MAX);
+ gt_assert(pkinfo->endpos != UINT32_MAX);
kmerposptr->endpos = pkinfo->endpos;
pkinfo->endpos = (pkinfo->readmode == GT_READMODE_FORWARD
? pkinfo->endpos + 1 : pkinfo->endpos - 1);
@@ -325,106 +464,115 @@ static void gt_diagbandseed_processkmercode(void *prockmerinfo,
/* Uses GtKmercodeiterator for fetching the kmers. */
static void gt_diagbandseed_get_kmers_kciter(GtDiagbandseedProcKmerInfo *pkinfo)
{
- GtKmercodeiterator *kc_iter = NULL;
- const GtKmercode *kmercode = NULL;
- bool firstinrange = true;
- GtUword maxpos = 0, position;
-
- /* initialise GtKmercodeiterator */
gt_assert(pkinfo != NULL);
- position = gt_encseq_seqstartpos(pkinfo->encseq, pkinfo->seqnum);
- kc_iter = gt_kmercodeiterator_encseq_new(pkinfo->encseq,
- pkinfo->readmode,
- pkinfo->seedlength,
- position);
- if (pkinfo->seedlength <= pkinfo->totallength) {
- maxpos = pkinfo->totallength + 1 - pkinfo->seedlength;
- }
-
- /* iterate */
- while (position < maxpos) {
- kmercode = gt_kmercodeiterator_encseq_next(kc_iter);
- if (!kmercode->definedspecialposition) {
- gt_diagbandseed_processkmercode((void *) pkinfo,
- firstinrange,
- position,
- kmercode->code);
- firstinrange = false;
- } else {
- firstinrange = true;
+ if (pkinfo->seedlength <= pkinfo->last_specialpos)
+ {
+ const GtKmercode *kmercode = NULL;
+ bool firstinrange = true;
+ GtKmercodeiterator *kc_iter = NULL;
+ const GtUword maxpos = pkinfo->last_specialpos + 1 - pkinfo->seedlength;
+ GtUword position = gt_encseq_seqstartpos(pkinfo->encseq, pkinfo->seqnum);
+
+ kc_iter = gt_kmercodeiterator_encseq_new(pkinfo->encseq,
+ pkinfo->readmode,
+ pkinfo->seedlength,
+ position);
+ while (position < maxpos)
+ {
+ kmercode = gt_kmercodeiterator_encseq_next(kc_iter);
+ if (!kmercode->definedspecialposition)
+ {
+ gt_diagbandseed_processkmercode((void *) pkinfo,
+ firstinrange,
+ position,
+ kmercode->code);
+ firstinrange = false;
+ } else
+ {
+ firstinrange = true;
+ }
+ position++;
}
- position++;
+ gt_kmercodeiterator_delete(kc_iter);
}
- gt_kmercodeiterator_delete(kc_iter);
}
/* Return a sorted list of k-mers of given seedlength from specified encseq.
* Only sequences in seqrange will be taken into account.
* The caller is responsible for freeing the result. */
-GtArrayGtDiagbandseedKmerPos gt_diagbandseed_get_kmers(const GtEncseq *encseq,
- unsigned int seedlength,
- GtReadmode readmode,
- const GtRange *seqrange,
- bool debug_kmer,
- bool verbose,
- GtUword known_size,
- FILE *stream)
-{
- GtArrayGtDiagbandseedKmerPos list;
+static GtArrayGtDiagbandseedKmerPos gt_diagbandseed_get_kmers(
+ const GtEncseq *encseq,
+ unsigned int seedweight,
+ unsigned int seedlength,
+ GtReadmode readmode,
+ GtUword seqrange_start,
+ GtUword seqrange_end,
+ bool debug_kmer,
+ bool verbose,
+ GtUword known_size,
+ FILE *stream)
+{
+ GtArrayGtDiagbandseedKmerPos kmer_list;
GtDiagbandseedProcKmerInfo pkinfo;
- GtRadixsortinfo *rdxinfo;
GtRange specialrange;
GtTimer *timer = NULL;
- GtUword listlen = known_size;
+ GtUword kmer_listlen = known_size;
+ const GtUword totallength = gt_encseq_total_length(encseq);
gt_assert(encseq != NULL);
- gt_assert(seqrange->start <= seqrange->end);
- gt_assert(seqrange->end < gt_encseq_num_of_sequences(encseq));
-
- if (known_size == 0) {
- listlen = gt_seed_extend_numofkmers(encseq, seedlength, seqrange);
+ if (known_size > 0)
+ {
+ kmer_listlen = known_size;
+ } else
+ {
+ kmer_listlen = gt_seed_extend_numofkmers(encseq, seedlength, seqrange_start,
+ seqrange_end);
}
-
if (verbose) {
timer = gt_timer_new();
- fprintf(stream, "# Start fetching %u-mers (expect " GT_WU ")...\n",
- seedlength, listlen);
+ fprintf(stream, "# start fetching %u-mers (expect " GT_WU
+ ", allocate %.0f MB) ...\n",
+ seedlength, kmer_listlen,
+ GT_MEGABYTES(kmer_listlen *
+ sizeof (*kmer_list.spaceGtDiagbandseedKmerPos)));
gt_timer_start(timer);
}
- GT_INITARRAY(&list, GtDiagbandseedKmerPos);
- GT_CHECKARRAYSPACEMULTI(&list, GtDiagbandseedKmerPos, listlen);
+ GT_INITARRAY(&kmer_list, GtDiagbandseedKmerPos);
+ GT_CHECKARRAYSPACEMULTI(&kmer_list, GtDiagbandseedKmerPos, kmer_listlen);
- pkinfo.list = &list;
- pkinfo.seqnum = seqrange->start;
+ pkinfo.list = &kmer_list;
+ pkinfo.seqnum = seqrange_start;
pkinfo.endpos = 0;
pkinfo.encseq = encseq;
+ pkinfo.seedweight = seedweight;
pkinfo.seedlength = seedlength;
pkinfo.readmode = readmode;
- if (seqrange->end + 1 == gt_encseq_num_of_sequences(encseq)) {
- pkinfo.totallength = gt_encseq_total_length(encseq);
+ if (seqrange_end + 1 == gt_encseq_num_of_sequences(encseq)) {
+ pkinfo.last_specialpos = totallength;
} else {
/* start position of following sequence, minus separator position */
- pkinfo.totallength = gt_encseq_seqstartpos(encseq, seqrange->end + 1) - 1;
+ pkinfo.last_specialpos
+ = gt_encseq_seqstartpos(encseq, seqrange_end + 1) - 1;
}
- pkinfo.prev_separator = gt_encseq_seqstartpos(encseq, seqrange->start);
+ pkinfo.prev_separator = gt_encseq_seqstartpos(encseq, seqrange_start);
if (gt_encseq_has_specialranges(encseq)) {
- bool search = true;
pkinfo.sri = gt_specialrangeiterator_new(encseq, true);
- while (search && gt_specialrangeiterator_next(pkinfo.sri, &specialrange)) {
- search = specialrange.end < pkinfo.prev_separator ? true : false;
- }
+ while (gt_specialrangeiterator_next(pkinfo.sri, &specialrange) &&
+ specialrange.end < pkinfo.prev_separator)
+ /* Nothing */;
specialrange.start = pkinfo.prev_separator;
pkinfo.specialrange = &specialrange;
pkinfo.next_separator
= gt_diagbandseed_update_separatorpos(pkinfo.specialrange,
pkinfo.sri,
pkinfo.encseq,
+ totallength,
pkinfo.readmode);
} else {
pkinfo.sri = NULL;
pkinfo.specialrange = NULL;
- pkinfo.next_separator = pkinfo.totallength;
+ pkinfo.next_separator = pkinfo.last_specialpos;
}
if (gt_encseq_has_twobitencoding(encseq) && gt_encseq_wildcards(encseq) == 0)
@@ -440,7 +588,7 @@ GtArrayGtDiagbandseedKmerPos gt_diagbandseed_get_kmers(const GtEncseq *encseq,
NULL,
NULL,
pkinfo.prev_separator,
- pkinfo.totallength);
+ pkinfo.last_specialpos);
} else {
/* Use GtKmercodeiterator for encseq access */
gt_diagbandseed_get_kmers_kciter(&pkinfo);
@@ -448,43 +596,43 @@ GtArrayGtDiagbandseedKmerPos gt_diagbandseed_get_kmers(const GtEncseq *encseq,
if (gt_encseq_has_specialranges(encseq)) {
gt_specialrangeiterator_delete(pkinfo.sri);
}
- listlen = list.nextfreeGtDiagbandseedKmerPos;
+ kmer_listlen = kmer_list.nextfreeGtDiagbandseedKmerPos;
/* reduce size of array to number of entries */
- /* list.allocatedGtDiagbandseedKmerPos = listlen;
- gt_realloc(list.spaceGtDiagbandseedKmerPos,
- listlen * sizeof (GtDiagbandseedKmerPos)); */
-
+ kmer_list.allocatedGtDiagbandseedKmerPos = kmer_listlen;
+ if (kmer_listlen > 0)
+ {
+ kmer_list.spaceGtDiagbandseedKmerPos
+ = gt_realloc(kmer_list.spaceGtDiagbandseedKmerPos,
+ kmer_listlen * sizeof *kmer_list.spaceGtDiagbandseedKmerPos);
+ }
if (debug_kmer) {
- GtDiagbandseedKmerPos *idx = list.spaceGtDiagbandseedKmerPos;
- GtDiagbandseedKmerPos *end = idx + listlen;
+ const GtDiagbandseedKmerPos *idx = kmer_list.spaceGtDiagbandseedKmerPos;
+ const GtDiagbandseedKmerPos *end = idx + kmer_listlen;
while (idx < end) {
- fprintf(stream, "# Kmer (" GT_LX ",%d,%d)\n",
+ fprintf(stream, "# Kmer (" GT_LX ",%"PRIu32",%"PRIu32")\n",
idx->code, idx->endpos, idx->seqnum);
idx++;
}
}
if (verbose) {
- fprintf(stream, "# ...found " GT_WU " %u-mers ", listlen, seedlength);
- gt_timer_show_formatted(timer, "in " GT_WD ".%06ld seconds.\n", stream);
+ fprintf(stream, "# ... collected " GT_WU " %u-mers ", kmer_listlen,
+ seedlength);
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
gt_timer_start(timer);
}
- /* sort list */
- rdxinfo = gt_radixsort_new_ulongpair(listlen);
gt_radixsort_inplace_GtUwordPair((GtUwordPair *)
- list.spaceGtDiagbandseedKmerPos,
- listlen);
- gt_radixsort_delete(rdxinfo);
-
+ kmer_list.spaceGtDiagbandseedKmerPos,
+ kmer_listlen);
if (verbose) {
- fprintf(stream, "# ...sorted " GT_WU " %u-mers ", listlen, seedlength);
- gt_timer_show_formatted(timer, "in " GT_WD ".%06ld seconds.\n", stream);
+ fprintf(stream, "# ... sorted " GT_WU " %u-mers ",kmer_listlen, seedlength);
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
gt_timer_delete(timer);
}
- return list;
+ return kmer_list;
}
/* * * * * SEEDPAIR LIST CREATION * * * * */
@@ -497,7 +645,7 @@ typedef struct {
const GtDiagbandseedKmerPos *listend;
GtDiagbandseedKmerPos *listptr;
/* for file based iterator */
- GtBufferedfile_GtDiagbandseedKmerPos stream;
+ GtBufferedfile_GtDiagbandseedKmerPos kmerstream;
GtDiagbandseedKmerPos buffer;
} GtDiagbandseedKmerIterator;
@@ -513,10 +661,10 @@ static void gt_diagbandseed_kmer_iter_reset(GtDiagbandseedKmerIterator *ki)
}
} else { /* file based */
int rval;
- ki->stream.nextread = ki->stream.nextfree = 0;
- rewind(ki->stream.fp);
+ ki->kmerstream.nextread = ki->kmerstream.nextfree = 0;
+ rewind(ki->kmerstream.fp);
rval = gt_readnextfromstream_GtDiagbandseedKmerPos(&ki->buffer,
- &ki->stream);
+ &ki->kmerstream);
if (rval != 1) {
ki->at_end = true;
}
@@ -536,17 +684,16 @@ static GtDiagbandseedKmerIterator *gt_diagbandseed_kmer_iter_new_list(
return ki;
}
-static
-GtDiagbandseedKmerIterator *gt_diagbandseed_kmer_iter_new_file(FILE *fp)
+static GtDiagbandseedKmerIterator *gt_diagbandseed_kmer_iter_new_file(FILE *fp)
{
GtDiagbandseedKmerIterator *ki = gt_malloc(sizeof *ki);
GT_INITARRAY(&ki->segment, GtDiagbandseedKmerPos);
ki->origin_list = NULL;
ki->listend = ki->listptr = NULL;
gt_assert(fp != NULL);
- ki->stream.fp = fp;
- ki->stream.bufferedfilespace = gt_malloc(FILEBUFFERSIZE *
- sizeof (GtDiagbandseedKmerPos));
+ ki->kmerstream.fp = fp;
+ ki->kmerstream.bufferedfilespace = gt_malloc(FILEBUFFERSIZE *
+ sizeof (GtDiagbandseedKmerPos));
gt_diagbandseed_kmer_iter_reset(ki);
return ki;
}
@@ -555,8 +702,8 @@ static void gt_diagbandseed_kmer_iter_delete(GtDiagbandseedKmerIterator *ki)
{
if (ki != NULL) {
if (ki->origin_list == NULL) { /* file based */
- gt_free(ki->stream.bufferedfilespace);
- gt_fa_fclose(ki->stream.fp);
+ gt_free(ki->kmerstream.bufferedfilespace);
+ gt_fa_fclose(ki->kmerstream.fp);
GT_FREEARRAY(&ki->segment, GtDiagbandseedKmerPos);
}
gt_free(ki);
@@ -573,15 +720,14 @@ static const GtArrayGtDiagbandseedKmerPos *gt_diagbandseed_kmer_iter_next(
ki->segment.nextfreeGtDiagbandseedKmerPos = 0; /* reset segment list */
if (ki->origin_list != NULL) { /* list based */
- ptrdiff_t segmentlen;
code = ki->listptr->code;
ki->segment.spaceGtDiagbandseedKmerPos = ki->listptr;
/* add element to segment list until code differs */
do {
ki->listptr++;
} while (ki->listptr < ki->listend && code == ki->listptr->code);
- segmentlen = ki->listptr - ki->segment.spaceGtDiagbandseedKmerPos;
- ki->segment.nextfreeGtDiagbandseedKmerPos += (GtUword)segmentlen;
+ ki->segment.nextfreeGtDiagbandseedKmerPos
+ += (GtUword) (ki->listptr - ki->segment.spaceGtDiagbandseedKmerPos);
if (ki->listptr >= ki->listend) {
ki->at_end = true;
}
@@ -590,9 +736,11 @@ static const GtArrayGtDiagbandseedKmerPos *gt_diagbandseed_kmer_iter_next(
code = ki->buffer.code;
/* fill segment list from file, stop when code changes */
do {
- GT_STOREINARRAY(&ki->segment, GtDiagbandseedKmerPos, 20, ki->buffer);
+ GT_STOREINARRAY(&ki->segment, GtDiagbandseedKmerPos,
+ ki->segment.allocatedGtDiagbandseedKmerPos * 0.2 + 128,
+ ki->buffer);
rval = gt_readnextfromstream_GtDiagbandseedKmerPos(&ki->buffer,
- &ki->stream);
+ &ki->kmerstream);
} while (rval == 1 && code == ki->buffer.code);
if (rval != 1) {
ki->at_end = true;
@@ -601,27 +749,28 @@ static const GtArrayGtDiagbandseedKmerPos *gt_diagbandseed_kmer_iter_next(
return &ki->segment;
}
-/* Evaluate the results of the seed pair count histogram */
-static void gt_diagbandseed_processhistogram(GtUword *histogram,
- GtUword *maxfreq,
- GtUword maxgram,
- GtUword memlimit,
- GtUword mem_used,
- bool alist_blist_id)
+/* Evaluate the results of the seed count histogram */
+static GtUword gt_diagbandseed_processhistogram(GtUword *histogram,
+ GtUword maxfreq,
+ GtUword maxgram,
+ GtUword memlimit,
+ GtUword mem_used,
+ bool alist_blist_id,
+ size_t sizeofunit)
{
/* calculate available memory, take 98% of memlimit */
- GtUword count = 0, frequency = 0;
- GtUword mem_avail = 0.98 * memlimit;
+ GtUword count = 0, frequency = 0, mem_avail = 0.98 * memlimit;
+
if (mem_avail > mem_used) {
- mem_avail = (mem_avail - mem_used) / sizeof (GtDiagbandseedSeedPair);
+ mem_avail = (mem_avail - mem_used) / sizeofunit;
} else {
mem_avail = 0;
- *maxfreq = 0;
+ maxfreq = 0;
}
/* there is enough free memory */
if (mem_avail > 0) {
- /* count seed pairs until available memory reached */
+ /* count seeds until available memory reached */
for (frequency = 1; frequency <= maxgram && count < mem_avail;
frequency++) {
count += histogram[frequency - 1];
@@ -634,560 +783,2709 @@ static void gt_diagbandseed_processhistogram(GtUword *histogram,
} else if (frequency == maxgram + 1) {
frequency = GT_UWORD_MAX;
}
- *maxfreq = MIN(*maxfreq, frequency);
+ maxfreq = MIN(maxfreq, frequency);
}
/* determine minimum required memory for error message */
- if (*maxfreq <= 1 && alist_blist_id) {
- count = (histogram[0] + histogram[1]) * sizeof (GtDiagbandseedSeedPair);
+ if (maxfreq <= 1 && alist_blist_id) {
+ count = (histogram[0] + histogram[1]) * sizeofunit;
count = (count + mem_used) / 0.98;
- } else if (*maxfreq == 0) {
- count = histogram[0] * sizeof (GtDiagbandseedSeedPair);
+ } else if (maxfreq == 0) {
+ count = histogram[0] * sizeofunit;
count = (count + mem_used) / 0.98;
}
histogram[maxgram] = count;
+ return maxfreq;
}
-/* Returns a GtDiagbandseedSeedPair list of equal kmers from the iterators. */
-static void gt_diagbandseed_merge(GtArrayGtDiagbandseedSeedPair *mlist,
- GtDiagbandseedKmerIterator *aiter,
- GtDiagbandseedKmerIterator *biter,
- GtUword *maxfreq,
- GtUword maxgram,
- GtUword memlimit,
- GtUword *histogram,
- GtRange *seedpairdistance,
- bool selfcomp,
- bool alist_blist_id,
- GtUword len_used)
-{
- const GtArrayGtDiagbandseedKmerPos *alist = NULL, *blist = NULL;
- GtDiagbandseedKmerPos *asegment = NULL, *bsegment = NULL;
- GtUword alen, blen;
- const GtUword array_incr = 256;
- GtUword frequency = 0;
-
- gt_assert(aiter != NULL && biter != NULL && maxfreq != NULL);
- gt_assert((histogram == NULL && mlist != NULL) ||
- (histogram != NULL && mlist == NULL));
- alist = gt_diagbandseed_kmer_iter_next(aiter);
- blist = gt_diagbandseed_kmer_iter_next(biter);
- while (alist != NULL && blist != NULL) {
- asegment = alist->spaceGtDiagbandseedKmerPos;
- bsegment = blist->spaceGtDiagbandseedKmerPos;
- alen = alist->nextfreeGtDiagbandseedKmerPos;
- blen = blist->nextfreeGtDiagbandseedKmerPos;
- if (asegment->code < bsegment->code) {
- alist = gt_diagbandseed_kmer_iter_next(aiter);
- } else if (asegment->code > bsegment->code) {
- blist = gt_diagbandseed_kmer_iter_next(biter);
- } else {
- frequency = MAX(alen, blen);
- if (frequency <= *maxfreq) {
- /* add all equal k-mers */
- frequency = MIN(maxgram, frequency);
- gt_assert(frequency > 0);
- if (histogram != NULL && !selfcomp) {
- histogram[frequency - 1] += alen * blen;
- } else {
- GtDiagbandseedKmerPos *aptr, *bptr;
- for (aptr = asegment; aptr < asegment + alen; aptr++) {
- for (bptr = bsegment; bptr < bsegment + blen; bptr++) {
- if (!selfcomp || aptr->seqnum < bptr->seqnum ||
- (aptr->seqnum == bptr->seqnum &&
- aptr->endpos + seedpairdistance->start <= bptr->endpos &&
- aptr->endpos + seedpairdistance->end >= bptr->endpos)) {
- /* no duplicates from the same dataset */
- if (histogram == NULL) {
- /* save SeedPair in mlist */
- GtDiagbandseedSeedPair *seedptr = NULL;
- GT_GETNEXTFREEINARRAY(seedptr,
- mlist,
- GtDiagbandseedSeedPair,
- array_incr + 0.2 *
- mlist->allocatedGtDiagbandseedSeedPair);
- seedptr->bseqnum = bptr->seqnum;
- seedptr->aseqnum = aptr->seqnum;
- seedptr->bpos = bptr->endpos;
- seedptr->apos = aptr->endpos;
- } else {
- /* count seed pair frequency in histogram */
- histogram[frequency - 1]++;
- }
- }
- }
- }
- }
- } /* else: ignore all equal elements */
- alist = gt_diagbandseed_kmer_iter_next(aiter);
- blist = gt_diagbandseed_kmer_iter_next(biter);
- }
- }
- if (histogram != NULL) {
- gt_diagbandseed_processhistogram(histogram,
- maxfreq,
- maxgram,
- memlimit,
- len_used * sizeof (GtDiagbandseedKmerPos),
- alist_blist_id);
- }
+const char *gt_diagbandseed_splt_comment(void)
+{
+ return "specify type of pairlist, possible values are struct, bytestring, "
+ "and ulong";
}
-/* Verify seed pairs in the original sequences */
-static int gt_diagbandseed_verify(const GtEncseq *aencseq,
- const GtEncseq *bencseq,
- GtArrayGtDiagbandseedSeedPair *mlist,
- unsigned int seedlength,
- bool reverse,
- bool verbose,
- FILE *stream,
- GtError *err) {
- GtTimer *timer = gt_timer_new();
- GtDiagbandseedSeedPair *curr_sp, *max_sp;
- char *buf1 = gt_malloc(3 * (seedlength + 1) * sizeof *buf1);
- char *buf2 = buf1 + 1 + seedlength;
- char *buf3 = buf2 + 1 + seedlength;
- buf1[seedlength] = buf2[seedlength] = buf3[seedlength] = '\0';
+static const char *gt_splt_arguments[] = {"struct","ulong","bytestring",""};
- if (verbose) {
- fprintf(stream, "# Start verifying seed pairs...\n");
- gt_timer_start(timer);
+GtDiagbandseedPairlisttype gt_diagbandseed_splt_get(const char *splt_string,
+ GtError *err)
+{
+ size_t idx;
+ for (idx = 0; idx < sizeof gt_splt_arguments/sizeof gt_splt_arguments[0];
+ idx++)
+ {
+ if (strcmp(splt_string,gt_splt_arguments[idx]) == 0)
+ {
+ return (GtDiagbandseedPairlisttype) idx;
+ }
}
+ gt_error_set(err,"illegal parameter for option -splt: %s",
+ gt_diagbandseed_splt_comment());
+ return -1;
+}
- gt_assert(mlist != NULL && aencseq != NULL && bencseq != NULL);
- curr_sp = mlist->spaceGtDiagbandseedSeedPair;
- max_sp = curr_sp + mlist->nextfreeGtDiagbandseedSeedPair;
-
- while (curr_sp < max_sp) {
- GtDiagbandseedPosition apos, bpos;
+const int idx_aseqnum = 0, idx_bseqnum = 1, idx_bpos = 2, idx_apos = 3;
- /* extract decoded k-mers at seed pair positions */
- apos = curr_sp->apos + gt_encseq_seqstartpos(aencseq, curr_sp->aseqnum);
- gt_encseq_extract_decoded(aencseq, buf1, apos + 1 - seedlength, apos);
+GT_DECLAREARRAYSTRUCT(GtDiagbandseedSeedPair);
- if (!reverse) {
- bpos = curr_sp->bpos + gt_encseq_seqstartpos(bencseq, curr_sp->bseqnum);
- gt_encseq_extract_decoded(bencseq, buf2, bpos + 1 - seedlength, bpos);
- if (strcmp(buf1, buf2) != 0) {
- gt_error_set(err, "Wrong SeedPair (%d,%d,%d,%d): %s != %s\n",
- curr_sp->aseqnum, curr_sp->bseqnum, curr_sp->apos,
- curr_sp->bpos, buf1, buf2);
- gt_free(buf1);
- gt_timer_delete(timer);
- return -1;
- }
- } else {
- /* get reverse k-mer */
- char *idx;
- bpos = gt_encseq_seqstartpos(bencseq, curr_sp->bseqnum) +
- gt_encseq_seqlength(bencseq, curr_sp->bseqnum) - curr_sp->bpos - 1;
- gt_encseq_extract_decoded(bencseq, buf2, bpos, bpos + seedlength - 1);
+typedef struct
+{
+ GtArrayGtDiagbandseedSeedPair *mlist_struct;
+ GtArrayGtUword *mlist_ulong;
+ GtArrayuint8_t *mlist_bytestring;
+ GtDiagbandseedPairlisttype splt;
+ GtUword mask_tab[4], transfer_mask,
+ aseqrange_start, bseqrange_start,
+ aseqrange_end, bseqrange_end,
+ aseqrange_max_length, bseqrange_max_length;
+ GtBitcount_type bits_seedpair,
+ bits_values[4],
+ bits_units[2],
+ bits_left_adjust[4];
+ size_t bytes_seedpair;
+ int shift_tab[4],
+ transfer_shift,
+ bits_unused_in2GtUwords;
+ bool maxmat_compute, maxmat_show;
+ GtUword amaxlen;
+} GtSeedpairlist;
+
+#define GT_DIAGBANDSEED_ENCODE_SEQNUMS(ASEQNUM,BSEQNUM)\
+ (((GtUword) (ASEQNUM) << seedpairlist->shift_tab[idx_aseqnum]) | \
+ ((GtUword) (BSEQNUM) << seedpairlist->shift_tab[idx_bseqnum]))
+
+#define GT_DIAGBANDSEED_ENCODE_POSITIONS(BPOS,APOS)\
+ (((GtUword) (BPOS) << seedpairlist->shift_tab[idx_bpos]) | \
+ ((GtUword) (APOS) << seedpairlist->shift_tab[idx_apos]))
+
+#define GT_DIAGBANDSEED_ENCODE_SEEDPAIR(ASEQNUM,BSEQNUM,BPOS,APOS)\
+ (GT_DIAGBANDSEED_ENCODE_SEQNUMS(ASEQNUM,BSEQNUM) | \
+ GT_DIAGBANDSEED_ENCODE_POSITIONS(BPOS,APOS))
+
+static bool gt_diagbandseed_derive_maxmat_show(GtUword maxmat)
+{
+ return maxmat == 1 ? true : false;
+}
- for (idx = buf3; idx < buf3 + seedlength; idx++) {
- gt_complement(idx, buf2[seedlength + buf3 - idx - 1], NULL);
- }
- if (strcmp(buf1, buf3) != 0) {
- gt_error_set(err, "Wrong SeedPair (%d,%d,%d,%d): %s != %s\n",
- curr_sp->aseqnum, curr_sp->bseqnum, curr_sp->apos,
- curr_sp->bpos, buf1, buf3);
- gt_free(buf1);
- gt_timer_delete(timer);
- return -1;
- }
+static GtSeedpairlist *gt_seedpairlist_new(GtDiagbandseedPairlisttype splt,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword aidx,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword bidx,
+ GtUword maxmat,
+ GtUword amaxlen)
+{
+ GtSeedpairlist *seedpairlist = gt_malloc(sizeof *seedpairlist);
+ int idx;
+ const int allbits = sizeof (GtWord) * CHAR_BIT;
+ const GtUword
+ anumofseq = gt_sequence_parts_info_numofsequences_get(aseqranges,aidx),
+ bnumofseq = gt_sequence_parts_info_numofsequences_get(bseqranges,bidx);
+
+ gt_assert(maxmat <= 2);
+ seedpairlist->maxmat_show = gt_diagbandseed_derive_maxmat_show(maxmat);
+ seedpairlist->maxmat_compute = maxmat > 0 ? true : false;
+ seedpairlist->amaxlen = amaxlen;
+ seedpairlist->aseqrange_max_length
+ = gt_sequence_parts_info_max_length_get(aseqranges,aidx);
+ seedpairlist->bseqrange_max_length
+ = gt_sequence_parts_info_max_length_get(bseqranges,bidx);
+ seedpairlist->bits_values[idx_aseqnum]
+ = (GtBitcount_type) gt_radixsort_bits(anumofseq);
+ seedpairlist->bits_values[idx_bseqnum]
+ = (GtBitcount_type) gt_radixsort_bits(bnumofseq);
+ if (seedpairlist->maxmat_compute)
+ {
+ seedpairlist->bits_values[idx_bpos]
+ = (GtBitcount_type) gt_radixsort_bits(
+ seedpairlist->aseqrange_max_length +
+ seedpairlist->bseqrange_max_length + 1);
+ /* in this case we store diagonal values in SeedPair and we have
+ make sure that they fit into the space for a position */
+ gt_assert(seedpairlist->bits_values[idx_bpos] <=
+ sizeof (GtDiagbandseedPosition) * CHAR_BIT);
+ } else
+ {
+ seedpairlist->bits_values[idx_bpos]
+ = (GtBitcount_type) gt_radixsort_bits(
+ seedpairlist->bseqrange_max_length);
+ }
+ seedpairlist->bits_values[idx_apos]
+ = (GtBitcount_type) gt_radixsort_bits(seedpairlist->aseqrange_max_length);
+ seedpairlist->bits_units[0] = seedpairlist->bits_values[idx_aseqnum] +
+ seedpairlist->bits_values[idx_bseqnum];
+ seedpairlist->bits_units[1] = seedpairlist->bits_values[idx_apos] +
+ seedpairlist->bits_values[idx_bpos];
+ seedpairlist->bits_left_adjust[idx_aseqnum]
+ = allbits - seedpairlist->bits_values[idx_aseqnum];
+ seedpairlist->bits_left_adjust[idx_bseqnum]
+ = allbits - seedpairlist->bits_units[0];
+ seedpairlist->bits_left_adjust[idx_bpos]
+ = allbits - seedpairlist->bits_values[idx_bpos];
+ seedpairlist->bits_left_adjust[idx_apos]
+ = allbits - seedpairlist->bits_units[1];
+ seedpairlist->transfer_mask
+ = (((GtUword) 1) << seedpairlist->bits_left_adjust[idx_bseqnum]) - 1;
+ gt_assert(seedpairlist->bits_values[idx_apos] > 0);
+ gt_assert(seedpairlist->bits_values[idx_bpos] > 0);
+ for (idx = 0, seedpairlist->bits_seedpair = 0; idx < 4; idx++)
+ {
+ seedpairlist->bits_seedpair += seedpairlist->bits_values[idx];
+ seedpairlist->mask_tab[idx]
+ = (((GtUword) 1) << seedpairlist->bits_values[idx]) - 1;
+ }
+ /* the following is only used for bits_seedpair > allbits */
+ seedpairlist->transfer_shift = seedpairlist->bits_seedpair - allbits;
+ seedpairlist->bits_unused_in2GtUwords = 2 * allbits -
+ seedpairlist->bits_seedpair;
+ seedpairlist->bytes_seedpair
+ = gt_radixsort_bits2bytes(seedpairlist->bits_seedpair);
+ if (seedpairlist->bytes_seedpair <= sizeof (GtUword))
+ {
+ int shift = seedpairlist->bits_seedpair;
+ for (idx = 0; idx < 4; idx++)
+ {
+ shift -= seedpairlist->bits_values[idx];
+ seedpairlist->shift_tab[idx] = shift;
}
- curr_sp++;
}
- if (verbose) {
- fprintf(stream, "# ...successfully verified each seed pair in ");
- gt_timer_show_formatted(timer, GT_WD ".%06ld seconds.\n", stream);
+ seedpairlist->aseqrange_start
+ = gt_sequence_parts_info_start_get(aseqranges,aidx);
+ seedpairlist->bseqrange_start
+ = gt_sequence_parts_info_start_get(bseqranges,bidx);
+ seedpairlist->aseqrange_end
+ = gt_sequence_parts_info_end_get(aseqranges,aidx);
+ seedpairlist->bseqrange_end
+ = gt_sequence_parts_info_end_get(bseqranges,bidx);
+ seedpairlist->mlist_struct = NULL;
+ seedpairlist->mlist_ulong = NULL;
+ seedpairlist->mlist_bytestring = NULL;
+ if (splt == GT_DIAGBANDSEED_SPLT_UNDEFINED)
+ {
+ if (seedpairlist->bytes_seedpair <= sizeof (GtUword))
+ {
+ splt = GT_DIAGBANDSEED_SPLT_ULONG;
+ } else
+ {
+ splt = GT_DIAGBANDSEED_SPLT_BYTESTRING;
+ }
}
- gt_free(buf1);
- gt_timer_delete(timer);
- return 0;
+ if (splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ if (seedpairlist->bytes_seedpair > sizeof (GtUword))
+ {
+ splt = GT_DIAGBANDSEED_SPLT_BYTESTRING;
+ }
+ } else
+ {
+ if (splt == GT_DIAGBANDSEED_SPLT_BYTESTRING &&
+ seedpairlist->bytes_seedpair <= sizeof (GtUword))
+ {
+ splt = GT_DIAGBANDSEED_SPLT_ULONG;
+ }
+ }
+ if (splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ gt_assert(seedpairlist->bytes_seedpair <= sizeof (GtUword));
+ seedpairlist->mlist_ulong = gt_malloc(sizeof *seedpairlist->mlist_ulong);
+ GT_INITARRAY(seedpairlist->mlist_ulong, GtUword);
+ } else
+ {
+ if (splt == GT_DIAGBANDSEED_SPLT_BYTESTRING)
+ {
+ gt_assert(seedpairlist->bytes_seedpair > sizeof (GtUword));
+ seedpairlist->mlist_bytestring
+ = gt_malloc(sizeof *seedpairlist->mlist_bytestring);
+ GT_INITARRAY(seedpairlist->mlist_bytestring, uint8_t);
+ } else
+ {
+ seedpairlist->mlist_struct
+ = gt_malloc(sizeof *seedpairlist->mlist_struct);
+ GT_INITARRAY(seedpairlist->mlist_struct, GtDiagbandseedSeedPair);
+ }
+ }
+ seedpairlist->splt = splt;
+ return seedpairlist;
}
-/* Return estimated length of mlist, and maxfreq w.r.t. the given memlimit */
-static int gt_diagbandseed_get_mlen_maxfreq(GtUword *mlen,
- GtUword *maxfreq,
- GtDiagbandseedKmerIterator *aiter,
- GtDiagbandseedKmerIterator *biter,
- GtUword memlimit,
- GtRange *seedpairdistance,
- GtUword len_used,
- bool selfcomp,
- bool alist_blist_id,
- bool verbose,
- FILE *stream,
- GtError *err)
+static void gt_seedpairlist_reset(GtSeedpairlist *seedpairlist)
{
- const GtUword maxgram = MIN(*maxfreq, 8190) + 1; /* Cap on k-mer count */
- GtUword *histogram = NULL;
- GtTimer *timer = NULL;
- int had_err = 0;
-
- if (memlimit == GT_UWORD_MAX) {
- return 0; /* no histogram calculation */
- }
-
- if (verbose) {
- timer = gt_timer_new();
- fprintf(stream, "# Start calculating k-mer frequency histogram...\n");
- gt_timer_start(timer);
+ if (seedpairlist->mlist_ulong != NULL)
+ {
+ seedpairlist->mlist_ulong->nextfreeGtUword = 0;
}
-
- /* build histogram; histogram[maxgram] := estimation for mlen */
- histogram = gt_calloc(maxgram + 1, sizeof *histogram);
- gt_diagbandseed_merge(NULL, /* mlist not needed: just count */
- aiter,
- biter,
- maxfreq,
- maxgram,
- memlimit,
- histogram,
- seedpairdistance,
- selfcomp,
- alist_blist_id,
- len_used);
- *mlen = histogram[maxgram];
- gt_free(histogram);
-
- if (verbose) {
- gt_timer_show_formatted(timer,
- "# ...finished in " GT_WD ".%06ld seconds.\n",
- stream);
- gt_timer_delete(timer);
+ if (seedpairlist->mlist_bytestring != NULL)
+ {
+ seedpairlist->mlist_bytestring->nextfreeuint8_t = 0;
}
-
- /* check maxfreq value */
- if (*maxfreq == 0 || (*maxfreq == 1 && alist_blist_id)) {
- gt_error_set(err,
- "option -memlimit too strict: need at least " GT_WU "MB",
- (*mlen >> 20) + 1);
- *mlen = 0;
- had_err = -1;
- } else if (verbose) {
- if (*maxfreq == GT_UWORD_MAX) {
- fprintf(stream, "# Disable k-mer maximum frequency, ");
- } else {
- fprintf(stream, "# Set k-mer maximum frequency to " GT_WU ", ", *maxfreq);
- }
- fprintf(stream, "expect " GT_WU " seed pairs.\n", *mlen);
- } else if (*maxfreq <= 5) {
- gt_warning("Only k-mers occurring <= " GT_WU " times will be considered, "
- "due to small memlimit.", *maxfreq);
+ if (seedpairlist->mlist_struct != NULL)
+ {
+ seedpairlist->mlist_struct->nextfreeGtDiagbandseedSeedPair = 0;
}
-
- return had_err;
}
-/* Return a sorted list of SeedPairs from given Kmer-Iterators.
- * Parameter known_size > 0 can be given to allocate the memory beforehand.
- * The caller is responsible for freeing the result. */
-static GtArrayGtDiagbandseedSeedPair gt_diagbandseed_get_seedpairs(
- GtDiagbandseedKmerIterator *aiter,
- GtDiagbandseedKmerIterator *biter,
- GtUword maxfreq,
- GtUword known_size,
- GtRange *seedpairdistance,
- bool selfcomp,
- bool debug_seedpair,
- bool verbose,
- FILE *stream)
+static void gt_seedpairlist_show_bits(FILE *stream,
+ const GtSeedpairlist *seedpairlist)
{
- GtArrayGtDiagbandseedSeedPair mlist;
- GtTimer *timer = NULL;
- GtUword mlen;
+ fprintf(stream,"# splt=%s, bits_seedpair=%d, bytes_seedpair=%u with ",
+ gt_splt_arguments[seedpairlist->splt],
+ (int) seedpairlist->bits_seedpair,
+ (int) seedpairlist->bytes_seedpair);
+ fprintf(stream,"aseqnum=%hu bits, ",seedpairlist->bits_values[idx_aseqnum]);
+ fprintf(stream,"bseqnum=%hu bits, ",seedpairlist->bits_values[idx_bseqnum]);
+ fprintf(stream,"bpos=%hu bits, ",seedpairlist->bits_values[idx_bpos]);
+ fprintf(stream,"apos=%hu bits\n",seedpairlist->bits_values[idx_apos]);
+}
- if (verbose) {
- timer = gt_timer_new();
- if (known_size > 0) {
- fprintf(stream, "# Start building " GT_WU " seed pairs...\n",
- known_size);
- } else {
- fprintf(stream, "# Start building seed pairs...\n");
+static size_t gt_seedpairlist_sizeofunit(const GtSeedpairlist *seedpairlist)
+{
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ return sizeof (GtDiagbandseedSeedPair);
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ return sizeof (GtUword);
+ } else
+ {
+ return seedpairlist->bytes_seedpair;
}
- gt_timer_start(timer);
}
+}
- /* allocate mlist space according to seed pair count */
- GT_INITARRAY(&mlist, GtDiagbandseedSeedPair);
+static void gt_seedpairlist_init(GtSeedpairlist *seedpairlist,
+ GtUword known_size)
+{
if (known_size > 0) {
- GT_CHECKARRAYSPACEMULTI(&mlist, GtDiagbandseedSeedPair, known_size);
- }
-
- /* create mlist */
- gt_diagbandseed_merge(&mlist,
- aiter,
- biter,
- &maxfreq,
- GT_UWORD_MAX, /* maxgram not needed */
- GT_UWORD_MAX, /* memlimit not needed */
- NULL, /* histogram not needed: save seed pairs */
- seedpairdistance,
- selfcomp,
- false, /* not needed */
- 0); /* len_used not needed */
- mlen = mlist.nextfreeGtDiagbandseedSeedPair;
-
- if (verbose) {
- fprintf(stream, "# ...collected " GT_WU " seed pairs ", mlen);
- gt_timer_show_formatted(timer, "in " GT_WD ".%06ld seconds.\n", stream);
+ gt_assert(seedpairlist != NULL);
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ gt_assert(seedpairlist->mlist_struct != NULL);
+ GT_CHECKARRAYSPACEMULTI(seedpairlist->mlist_struct,
+ GtDiagbandseedSeedPair, known_size);
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ gt_assert(seedpairlist->mlist_ulong != NULL);
+ GT_CHECKARRAYSPACEMULTI(seedpairlist->mlist_ulong,GtUword, known_size);
+ } else
+ {
+ gt_assert(seedpairlist->mlist_bytestring != NULL);
+ GT_CHECKARRAYSPACEMULTI(seedpairlist->mlist_bytestring,uint8_t,
+ seedpairlist->bytes_seedpair * known_size);
+ }
+ }
}
+}
- /* sort mlist */
- if (mlen > 0) {
- GtDiagbandseedSeedPair *mspace = mlist.spaceGtDiagbandseedSeedPair;
- GtRadixsortinfo *rdxinfo;
-
- if (verbose) {
- gt_timer_start(timer);
+static void gt_seedpairlist_delete(GtSeedpairlist *seedpairlist)
+{
+ if (seedpairlist != NULL)
+ {
+ if (seedpairlist->mlist_struct != NULL)
+ {
+ GT_FREEARRAY(seedpairlist->mlist_struct, GtDiagbandseedSeedPair);
+ gt_free(seedpairlist->mlist_struct);
}
-
- rdxinfo = gt_radixsort_new_uint64keypair(mlen);
- gt_radixsort_inplace_Gtuint64keyPair((Gtuint64keyPair*) mspace, mlen);
- gt_radixsort_delete(rdxinfo);
-
- if (verbose) {
- fprintf(stream, "# ...sorted " GT_WU " seed pairs in ", mlen);
- gt_timer_show_formatted(timer, GT_WD ".%06ld seconds.\n", stream);
+ if (seedpairlist->mlist_ulong != NULL)
+ {
+ GT_FREEARRAY(seedpairlist->mlist_ulong, GtUword);
+ gt_free(seedpairlist->mlist_ulong);
}
-
- if (debug_seedpair) {
- GtDiagbandseedSeedPair *curr_sp;
- for (curr_sp = mspace; curr_sp < mspace + mlen; curr_sp++) {
- fprintf(stream, "# SeedPair (%d,%d,%d,%d)\n", curr_sp->aseqnum,
- curr_sp->bseqnum, curr_sp->apos, curr_sp->bpos);
- }
+ if (seedpairlist->mlist_bytestring != NULL)
+ {
+ GT_FREEARRAY(seedpairlist->mlist_bytestring, uint8_t);
+ gt_free(seedpairlist->mlist_bytestring);
}
+ gt_free(seedpairlist);
}
+}
- if (verbose) {
- gt_timer_delete(timer);
+static GtUword gt_seedpairlist_length(const GtSeedpairlist *seedpairlist)
+{
+ gt_assert(seedpairlist != NULL);
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ gt_assert(seedpairlist->mlist_struct != NULL);
+ return seedpairlist->mlist_struct->nextfreeGtDiagbandseedSeedPair;
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ gt_assert(seedpairlist->mlist_ulong != NULL);
+ return seedpairlist->mlist_ulong->nextfreeGtUword;
+ } else
+ {
+ gt_assert(seedpairlist->mlist_bytestring != NULL &&
+ (seedpairlist->mlist_bytestring->nextfreeuint8_t %
+ seedpairlist->bytes_seedpair == 0));
+ return seedpairlist->mlist_bytestring->nextfreeuint8_t/
+ seedpairlist->bytes_seedpair;
+ }
}
- return mlist;
+ return 0;
}
-/* * * * * SEED EXTENSION * * * * */
+static const GtDiagbandseedSeedPair *gt_seedpairlist_mlist_struct(
+ const GtSeedpairlist *seedpairlist)
+{
+ gt_assert(seedpairlist != NULL &&
+ seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT &&
+ seedpairlist->mlist_struct != NULL);
+ return seedpairlist->mlist_struct->spaceGtDiagbandseedSeedPair;
+}
-/* start seed extension for seed pairs in mlist */
-static void gt_diagbandseed_process_seeds(GtArrayGtDiagbandseedSeedPair *mlist,
- const GtDiagbandseedExtendParams *arg,
- void *processinfo,
- GtQuerymatchoutoptions *querymoutopt,
- const GtEncseq *aencseq,
- const GtEncseq *bencseq,
- unsigned int seedlength,
- bool reverse,
+static const GtUword *gt_seedpairlist_mlist_ulong(
+ const GtSeedpairlist *seedpairlist)
+{
+ gt_assert(seedpairlist != NULL && seedpairlist->mlist_ulong != NULL);
+ return seedpairlist->mlist_ulong->spaceGtUword;
+}
+
+const uint8_t *gt_seedpairlist_mlist_bytestring(
+ const GtSeedpairlist *seedpairlist)
+{
+ gt_assert(seedpairlist != NULL && seedpairlist->mlist_bytestring != NULL);
+ return seedpairlist->mlist_bytestring->spaceuint8_t;
+}
+
+static void gt_diagbandseed_one_GtUword2bytestring(uint8_t *bytestring,
+ GtUword bytestring_length,
+ GtUword value)
+{
+ int idx, shift;
+
+ for (idx = 0, shift = (sizeof (GtUword) - 1) * CHAR_BIT;
+ idx < bytestring_length; idx++, shift -= CHAR_BIT)
+ {
+ bytestring[idx] = (uint8_t) (value >> shift);
+ }
+}
+
+static void gt_diagbandseed_encode_seedpair(uint8_t *bytestring,
+ const GtSeedpairlist *seedpairlist,
+ GtDiagbandseedSeqnum aseqnum,
+ GtDiagbandseedSeqnum bseqnum,
+ GtDiagbandseedPosition bpos,
+ GtDiagbandseedPosition apos)
+{
+ GtUword value_seqnums, value_positions;
+
+ value_seqnums
+ = (((GtUword) aseqnum) << seedpairlist->bits_left_adjust[idx_aseqnum]) |
+ (((GtUword) bseqnum) << seedpairlist->bits_left_adjust[idx_bseqnum]);
+ value_positions
+ = (((GtUword) bpos) << seedpairlist->bits_left_adjust[idx_bpos]) |
+ (((GtUword) apos) << seedpairlist->bits_left_adjust[idx_apos]);
+ value_seqnums |= (value_positions >> seedpairlist->bits_units[0]);
+ gt_diagbandseed_one_GtUword2bytestring(bytestring,sizeof (GtUword),
+ value_seqnums);
+ value_positions <<= seedpairlist->bits_left_adjust[idx_bseqnum];
+ gt_diagbandseed_one_GtUword2bytestring(bytestring + sizeof (GtUword),
+ seedpairlist->bytes_seedpair
+ - sizeof (GtUword),
+ value_positions);
+}
+
+static void gt_seedpairlist_add(GtSeedpairlist *seedpairlist,
+ bool knownsize,
+ GtDiagbandseedSeqnum aseqnum,
+ GtDiagbandseedSeqnum bseqnum,
+ GtDiagbandseedPosition bpos,
+ GtDiagbandseedPosition apos)
+{
+ gt_assert(seedpairlist != NULL);
+ gt_assert(aseqnum >= seedpairlist->aseqrange_start &&
+ aseqnum <= seedpairlist->aseqrange_end &&
+ bseqnum >= seedpairlist->bseqrange_start &&
+ bseqnum <= seedpairlist->bseqrange_end &&
+ apos < seedpairlist->aseqrange_max_length &&
+ bpos < seedpairlist->bseqrange_max_length);
+ if (seedpairlist->maxmat_compute)
+ {
+ bpos = GT_DIAGBANDSEED_DIAGONAL(seedpairlist->amaxlen,apos,bpos);
+ }
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ GtDiagbandseedSeedPair *seedpair = NULL;
+ if (knownsize)
+ {
+ gt_assert(seedpairlist->mlist_struct->nextfreeGtDiagbandseedSeedPair <
+ seedpairlist->mlist_struct->allocatedGtDiagbandseedSeedPair);
+ seedpair = seedpairlist->mlist_struct->spaceGtDiagbandseedSeedPair +
+ seedpairlist->mlist_struct->nextfreeGtDiagbandseedSeedPair++;
+ } else
+ {
+ GT_GETNEXTFREEINARRAY(seedpair,
+ seedpairlist->mlist_struct,
+ GtDiagbandseedSeedPair,
+ 256 + 0.2 *
+ seedpairlist->
+ mlist_struct->allocatedGtDiagbandseedSeedPair);
+ }
+ seedpair->aseqnum = aseqnum;
+ seedpair->bseqnum = bseqnum;
+ GT_DIAGBANDSEED_SETPOS(seedpair,apos,bpos); /* set splt struct */
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ const GtUword encoding
+ = GT_DIAGBANDSEED_ENCODE_SEEDPAIR(aseqnum -
+ seedpairlist->aseqrange_start,
+ bseqnum -
+ seedpairlist->bseqrange_start,
+ bpos,apos); /*set splt bytestring */
+ if (knownsize)
+ {
+ gt_assert(seedpairlist->mlist_ulong->nextfreeGtUword <
+ seedpairlist->mlist_ulong->allocatedGtUword);
+ seedpairlist->mlist_ulong->spaceGtUword[
+ seedpairlist->mlist_ulong->nextfreeGtUword++] = encoding;
+ } else
+ {
+ GT_STOREINARRAY(seedpairlist->mlist_ulong,
+ GtUword,
+ 256 + 0.2 * seedpairlist->mlist_ulong->allocatedGtUword,
+ encoding);
+ }
+ } else
+ {
+ uint8_t *bytestring;
+
+ if (knownsize)
+ {
+ gt_assert(seedpairlist->mlist_bytestring->nextfreeuint8_t +
+ seedpairlist->bytes_seedpair <=
+ seedpairlist->mlist_bytestring->allocateduint8_t);
+ } else
+ {
+ GT_CHECKARRAYSPACE_GENERIC(seedpairlist->mlist_bytestring,
+ uint8_t,
+ seedpairlist->bytes_seedpair,
+ 256 + 0.2 *
+ seedpairlist->
+ mlist_bytestring->allocateduint8_t);
+ }
+ bytestring = seedpairlist->mlist_bytestring->spaceuint8_t +
+ seedpairlist->mlist_bytestring->nextfreeuint8_t;
+ seedpairlist->mlist_bytestring->nextfreeuint8_t
+ += seedpairlist->bytes_seedpair;
+ gt_assert(aseqnum >= seedpairlist->aseqrange_start);
+ gt_assert(bseqnum >= seedpairlist->bseqrange_start);
+ gt_diagbandseed_encode_seedpair(bytestring,
+ seedpairlist,
+ aseqnum - seedpairlist->aseqrange_start,
+ bseqnum - seedpairlist->bseqrange_start,
+ bpos,
+ apos);
+ }
+ }
+}
+
+static void gt_diagbandseed_seedpairlist_sort(GtSeedpairlist *seedpairlist)
+{
+ GtUword mlistlen = gt_seedpairlist_length(seedpairlist);
+
+ if (mlistlen > 0)
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ gt_assert(seedpairlist->mlist_struct != NULL);
+ gt_radixsort_inplace_Gtuint64keyPair(
+ (Gtuint64keyPair *) seedpairlist->mlist_struct
+ ->spaceGtDiagbandseedSeedPair,
+ mlistlen);
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ gt_assert(seedpairlist->mlist_ulong != NULL);
+ gt_radixsort_inplace_ulong(seedpairlist->mlist_ulong->spaceGtUword,
+ mlistlen);
+ } else
+ {
+ gt_assert(seedpairlist->mlist_bytestring != NULL);
+ gt_radixsort_inplace_flba(seedpairlist->mlist_bytestring->spaceuint8_t,
+ gt_seedpairlist_length(seedpairlist),
+ seedpairlist->bytes_seedpair);
+ }
+ }
+ }
+}
+
+static GtUword gt_seedpairlist_a_bseqnum_ulong(
+ const GtSeedpairlist *seedpairlist,
+ GtUword encoding)
+{
+ return encoding >> seedpairlist->shift_tab[idx_bseqnum];
+}
+
+static GtUword gt_seedpairlist_extract_ulong(const GtSeedpairlist *seedpairlist,
+ GtUword encoding,
+ int compidx)
+{
+ return (encoding >> seedpairlist->shift_tab[compidx]) &
+ seedpairlist->mask_tab[compidx];
+}
+
+static GtUword gt_seedpairlist_extract_ulong_at(
+ const GtSeedpairlist *seedpairlist,
+ GtUword spidx,
+ int compidx)
+{
+ return gt_seedpairlist_extract_ulong(seedpairlist,
+ seedpairlist->mlist_ulong->
+ spaceGtUword[spidx],
+ compidx);
+}
+
+static GtUword gt_diagbandseed_bytestring2GtUword(const uint8_t *bytestring,
+ GtUword bytestring_length)
+{
+ int idx, shift;
+ GtUword value = 0;
+
+ for (idx = 0, shift = (sizeof (GtUword) - 1) * CHAR_BIT;
+ idx < bytestring_length; idx++, shift -= CHAR_BIT)
+ {
+ value |= (((GtUword) bytestring[idx]) << shift);
+ }
+ return value;
+}
+
+static void gt_diagbandseed_decode_seedpair(GtDiagbandseedSeedPair *seedpair,
+ const GtSeedpairlist *seedpairlist,
+ GtUword offset)
+{
+ GtUword transfer, value_seqnums, value_positions;
+ GtDiagbandseedPosition apos, bpos;
+ const uint8_t *bytestring = seedpairlist->mlist_bytestring->spaceuint8_t +
+ offset;
+
+ value_seqnums
+ = gt_diagbandseed_bytestring2GtUword(bytestring,sizeof (GtUword));
+ seedpair->aseqnum = (GtDiagbandseedSeqnum)
+ ((value_seqnums >>
+ seedpairlist->bits_left_adjust[idx_aseqnum]) &
+ seedpairlist->mask_tab[idx_aseqnum]);
+ seedpair->bseqnum = (GtDiagbandseedSeqnum)
+ ((value_seqnums >>
+ seedpairlist->bits_left_adjust[idx_bseqnum]) &
+ seedpairlist->mask_tab[idx_bseqnum]);
+ transfer = value_seqnums & seedpairlist->transfer_mask;
+ value_positions
+ = gt_diagbandseed_bytestring2GtUword(bytestring + sizeof (GtUword),
+ seedpairlist->bytes_seedpair -
+ sizeof (GtUword));
+ value_positions >>= seedpairlist->bits_unused_in2GtUwords;
+ value_positions |= (transfer << seedpairlist->transfer_shift);
+ apos = (GtDiagbandseedPosition) (value_positions &
+ seedpairlist->mask_tab[idx_apos]);
+ bpos = (GtDiagbandseedPosition) (value_positions >>
+ seedpairlist->bits_values[idx_apos]);
+ GT_DIAGBANDSEED_SETPOS(seedpair,apos,bpos); /* for splt bytestring */
+}
+
+static void gt_seedpairlist_at(GtDiagbandseedSeedPair *seedpair,
+ const GtSeedpairlist *seedpairlist,
+ GtUword spidx)
+{
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ *seedpair = seedpairlist->mlist_struct->spaceGtDiagbandseedSeedPair[spidx];
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ GtDiagbandseedPosition apos, bpos;
+
+ seedpair->aseqnum
+ = gt_seedpairlist_extract_ulong_at(seedpairlist,spidx,idx_aseqnum);
+ seedpair->bseqnum
+ = gt_seedpairlist_extract_ulong_at(seedpairlist,spidx,idx_bseqnum);
+ apos = gt_seedpairlist_extract_ulong_at(seedpairlist,spidx,idx_apos),
+ bpos = gt_seedpairlist_extract_ulong_at(seedpairlist,spidx,idx_bpos);
+ GT_DIAGBANDSEED_SETPOS(seedpair,apos,bpos); /* set for ulong */
+ } else
+ {
+ gt_diagbandseed_decode_seedpair(seedpair,seedpairlist,
+ spidx * seedpairlist->bytes_seedpair);
+ }
+ }
+}
+
+static void gt_diagbandseed_show_seed(FILE *stream,
+ const GtSeedpairlist *seedpairlist,
+ GtUword spidx)
+{
+ GtDiagbandseedSeedPair seedpair;
+ GtDiagbandseedPosition apos;
+
+ gt_seedpairlist_at(&seedpair,seedpairlist,spidx);
+ apos = GT_DIAGBANDSEED_GETPOS_A(&seedpair);
+ fprintf(stream, "(%" PRIu32 ",%" PRIu32 ",%" PRIu32 ",%" GT_WUS ")",
+ seedpair.aseqnum,
+ seedpair.bseqnum,
+ apos,
+ GT_DIAGBANDSEED_CONV_B(apos,
+ GT_DIAGBANDSEED_GETPOS_B(&seedpair)));
+}
+
+#ifndef NDEBUG
+static int gt_diagbandseed_seeds_compare(const GtSeedpairlist *seedpairlist,
+ const GtUword current)
+{
+ GtDiagbandseedSeedPair p_seedpair, c_seedpair;
+ GtDiagbandseedPosition p_apos, c_apos, p_bpos, c_bpos;
+
+ gt_assert(current > 0);
+ gt_seedpairlist_at(&p_seedpair,seedpairlist,current - 1);
+ gt_seedpairlist_at(&c_seedpair,seedpairlist,current);
+ if (p_seedpair.aseqnum < c_seedpair.aseqnum)
+ {
+ return -1;
+ }
+ if (p_seedpair.aseqnum > c_seedpair.aseqnum)
+ {
+ return 1;
+ }
+ if (p_seedpair.bseqnum < c_seedpair.bseqnum)
+ {
+ return -1;
+ }
+ if (p_seedpair.bseqnum > c_seedpair.bseqnum)
+ {
+ return 1;
+ }
+ p_apos = GT_DIAGBANDSEED_GETPOS_A(&p_seedpair);
+ c_apos = GT_DIAGBANDSEED_GETPOS_A(&c_seedpair);
+ p_bpos = GT_DIAGBANDSEED_CONV_B(p_apos,GT_DIAGBANDSEED_GETPOS_B(&p_seedpair));
+ c_bpos = GT_DIAGBANDSEED_CONV_B(c_apos,GT_DIAGBANDSEED_GETPOS_B(&c_seedpair));
+ if (p_bpos < c_bpos)
+ {
+ return -1;
+ }
+ if (p_bpos > c_bpos)
+ {
+ return 1;
+ }
+ if (p_apos < c_apos)
+ {
+ return -1;
+ }
+ if (p_apos > c_apos)
+ {
+ return 1;
+ }
+ return 0;
+}
+#endif
+
+static void gt_diagbandseed_seedpairlist_out(FILE *stream,
+ const GtSeedpairlist *seedpairlist)
+{
+ GtUword spidx, mlistlen = gt_seedpairlist_length(seedpairlist);
+
+ for (spidx = 0; spidx < mlistlen; spidx++)
+ {
+ gt_assert(spidx == 0 ||
+ gt_diagbandseed_seeds_compare(seedpairlist,spidx) < 0);
+ fprintf(stream, "# SeedPair ");
+ gt_diagbandseed_show_seed(stream,seedpairlist,spidx);
+ fprintf(stream, "\n");
+ }
+}
+
+/* Fill a GtDiagbandseedSeedPair list of equal kmers from the iterators. */
+static void gt_diagbandseed_merge(GtSeedpairlist *seedpairlist,
+ GtUword *histogram,
+ bool knowthesize,
+ GtDiagbandseedKmerIterator *aiter,
+ GtDiagbandseedKmerIterator *biter,
+ GtUword maxfreq,
+ GtUword maxgram,
+ const GtRange *seedpairdistance,
+ bool selfcomp)
+{
+ const GtArrayGtDiagbandseedKmerPos *alist, *blist;
+ const bool count_cartesian = (histogram != NULL && !selfcomp) ? true : false;
+
+ gt_assert(aiter != NULL && biter != NULL &&
+ ((histogram == NULL && seedpairlist != NULL) ||
+ (histogram != NULL && seedpairlist == NULL)));
+ alist = gt_diagbandseed_kmer_iter_next(aiter);
+ blist = gt_diagbandseed_kmer_iter_next(biter);
+ while (alist != NULL && blist != NULL) {
+ const GtDiagbandseedKmerPos *asegment = alist->spaceGtDiagbandseedKmerPos,
+ *bsegment = blist->spaceGtDiagbandseedKmerPos;
+ GtUword alen = alist->nextfreeGtDiagbandseedKmerPos,
+ blen = blist->nextfreeGtDiagbandseedKmerPos;
+ if (asegment->code < bsegment->code) {
+ alist = gt_diagbandseed_kmer_iter_next(aiter);
+ } else
+ {
+ if (asegment->code > bsegment->code)
+ {
+ blist = gt_diagbandseed_kmer_iter_next(biter);
+ } else
+ {
+ GtUword frequency = MAX(alen, blen);
+ if (frequency <= maxfreq)
+ {
+ /* add all equal k-mers */
+ frequency = MIN(maxgram, frequency);
+ gt_assert(frequency > 0);
+ if (count_cartesian)
+ {
+ histogram[frequency - 1] += alen * blen;
+ } else
+ {
+ const GtDiagbandseedKmerPos *aptr, *bptr;
+ for (aptr = asegment; aptr < asegment + alen; aptr++)
+ {
+ for (bptr = bsegment; bptr < bsegment + blen; bptr++)
+ {
+ if (!selfcomp || aptr->seqnum < bptr->seqnum ||
+ (aptr->seqnum == bptr->seqnum &&
+ aptr->endpos + seedpairdistance->start <= bptr->endpos &&
+ aptr->endpos + seedpairdistance->end >= bptr->endpos))
+ {
+ /* no duplicates from the same dataset */
+ if (histogram == NULL)
+ {
+ /* save SeedPair in seedpairlist */
+ gt_seedpairlist_add(seedpairlist,
+ knowthesize,
+ aptr->seqnum,
+ bptr->seqnum,
+ bptr->endpos,
+ aptr->endpos);
+ } else
+ {
+ /* count seed frequency in histogram */
+ histogram[frequency - 1]++;
+ }
+ }
+ }
+ }
+ }
+ } /* else: ignore all equal elements */
+ alist = gt_diagbandseed_kmer_iter_next(aiter);
+ blist = gt_diagbandseed_kmer_iter_next(biter);
+ }
+ }
+ }
+}
+
+/* Verify seeds in the original sequences */
+static int gt_diagbandseed_verify(const GtSeedpairlist *seedpairlist,
+ const GtEncseq *aencseq,
+ const GtEncseq *bencseq,
+ unsigned int seedlength,
+ bool reverse,
+ bool verbose,
+ FILE *stream,
+ GtError *err) {
+ const GtUword mlistlen = gt_seedpairlist_length(seedpairlist);
+ GtTimer *timer = NULL;
+ GtUword idx;
+ char *buf1 = gt_malloc(3 * (seedlength + 1) * sizeof *buf1);
+ char *buf2 = buf1 + 1 + seedlength;
+ char *buf3 = buf2 + 1 + seedlength;
+ buf1[seedlength] = buf2[seedlength] = buf3[seedlength] = '\0';
+
+ if (verbose) {
+ fprintf(stream, "# start verifying seeds ...\n");
+ timer = gt_timer_new();
+ gt_timer_start(timer);
+ }
+
+ gt_assert(aencseq != NULL && bencseq != NULL);
+ for (idx = 0; idx < mlistlen; idx++)
+ {
+ GtDiagbandseedSeedPair seedpair;
+ GtDiagbandseedPosition abs_apos, abs_bpos;
+
+ gt_seedpairlist_at(&seedpair,seedpairlist,idx);
+ /* extract decoded k-mers at seed positions */
+ abs_apos = GT_DIAGBANDSEED_GETPOS_A(&seedpair) +
+ gt_encseq_seqstartpos(aencseq, seedpair.aseqnum);
+ gt_encseq_extract_decoded(aencseq, buf1, abs_apos + 1 - seedlength,
+ abs_apos);
+
+ if (!reverse) {
+ GtDiagbandseedPosition apos = GT_DIAGBANDSEED_GETPOS_A(&seedpair),
+ bpos = GT_DIAGBANDSEED_GETPOS_B(&seedpair);
+
+ abs_bpos = GT_DIAGBANDSEED_CONV_B(apos,bpos) +
+ gt_encseq_seqstartpos(bencseq,seedpair.bseqnum);
+ gt_encseq_extract_decoded(bencseq, buf2, abs_bpos + 1 - seedlength,
+ abs_bpos);
+ if (strcmp(buf1, buf2) != 0) {
+ gt_error_set(err, "Wrong SeedPair (%" PRIu32
+ ",%" PRIu32 ",%" PRIu32 ",%" GT_WUS "): %s != %s\n",
+ seedpair.aseqnum, seedpair.bseqnum,
+ apos,
+ GT_DIAGBANDSEED_CONV_B(apos,bpos),
+ buf1, buf2);
+ gt_free(buf1);
+ if (verbose)
+ {
+ gt_timer_delete(timer);
+ }
+ return -1;
+ }
+ } else {
+ /* get reverse k-mer */
+ char *bufptr;
+ abs_bpos = gt_encseq_seqstartpos(bencseq, seedpair.bseqnum) +
+ gt_encseq_seqlength(bencseq, seedpair.bseqnum)
+ - GT_DIAGBANDSEED_GETPOS_B(&seedpair) - 1;
+ gt_encseq_extract_decoded(bencseq, buf2, abs_bpos,
+ abs_bpos + seedlength - 1);
+
+ for (bufptr = buf3; bufptr < buf3 + seedlength; bufptr++) {
+ gt_complement(bufptr, buf2[seedlength + buf3 - bufptr - 1], NULL);
+ }
+ if (strcmp(buf1, buf3) != 0) {
+ gt_error_set(err, "Wrong SeedPair (" "%"PRIu32
+ ",%"PRIu32",%"PRIu32",%"PRIu32"): %s != %s\n",
+ seedpair.aseqnum, seedpair.bseqnum,
+ GT_DIAGBANDSEED_GETPOS_A(&seedpair),
+ GT_DIAGBANDSEED_GETPOS_B(&seedpair), buf1, buf3);
+ gt_free(buf1);
+ if (verbose)
+ {
+ gt_timer_delete(timer);
+ }
+ return -1;
+ }
+ }
+ }
+ if (verbose) {
+ fprintf(stream, "# ...successfully verified all seeds ");
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
+ gt_timer_delete(timer);
+ }
+ gt_free(buf1);
+ return 0;
+}
+
+/* Return estimated length of mlist, and maxfreq w.r.t. the given memlimit */
+static int gt_diagbandseed_get_mlistlen_maxfreq(GtUword *mlistlen,
+ GtUword *maxfreq,
+ GtDiagbandseedKmerIterator *aiter,
+ GtDiagbandseedKmerIterator *biter,
+ GtUword memlimit,
+ size_t sizeofunit,
+ const GtRange *seedpairdistance,
+ GtUword len_used,
+ bool selfcomp,
+ bool alist_blist_id,
+ bool verbose,
+ FILE *stream,
+ GtError *err)
+{
+ const GtUword maxgram = MIN(*maxfreq, 8190) + 1; /* Cap on k-mer count */
+ GtUword *histogram = NULL;
+ GtTimer *timer = NULL;
+ int had_err = 0;
+
+ gt_assert(memlimit < GT_UWORD_MAX);
+ if (verbose) {
+ fprintf(stream, "# start calculating k-mer frequency histogram...\n");
+ timer = gt_timer_new();
+ gt_timer_start(timer);
+ }
+
+ /* build histogram; histogram[maxgram] := estimation for mlistlen */
+ histogram = gt_calloc(maxgram + 1, sizeof *histogram);
+ gt_diagbandseed_merge(NULL, /* mlist not needed: just count */
+ histogram,
+ false,
+ aiter,
+ biter,
+ *maxfreq,
+ maxgram,
+ seedpairdistance,
+ selfcomp);
+ *maxfreq = gt_diagbandseed_processhistogram(histogram,
+ *maxfreq,
+ maxgram,
+ memlimit,
+ len_used *
+ sizeof (GtDiagbandseedKmerPos),
+ alist_blist_id,
+ sizeofunit);
+ *mlistlen = histogram[maxgram];
+ gt_free(histogram);
+
+ if (verbose) {
+ gt_timer_show_formatted(timer,"# ... finished histogram "
+ GT_DIAGBANDSEED_FMT,stream);
+ gt_timer_delete(timer);
+ }
+
+ /* check maxfreq value */
+ if (*maxfreq == 0 || (*maxfreq == 1 && alist_blist_id)) {
+ gt_error_set(err,
+ "option -memlimit too strict: need at least " GT_WU "MB",
+ (*mlistlen >> 20) + 1);
+ *mlistlen = 0;
+ had_err = -1;
+ } else if (verbose) {
+ if (*maxfreq == GT_UWORD_MAX) {
+ fprintf(stream, "# disable k-mer maximum frequency, ");
+ } else {
+ fprintf(stream, "# set k-mer maximum frequency to " GT_WU ", ", *maxfreq);
+ }
+ fprintf(stream, "expect " GT_WU " seeds.\n", *mlistlen);
+ } else if (*maxfreq <= 5) {
+ gt_warning("only k-mers occurring <= " GT_WU " times will be considered, "
+ "due to small memlimit.", *maxfreq);
+ }
+
+ return had_err;
+}
+
+/* Return a sorted list of SeedPairs from given Kmer-Iterators.
+ * Parameter known_size > 0 can be given to allocate the memory beforehand.
+ * The caller is responsible for freeing the result. */
+static void gt_diagbandseed_get_seedpairs(GtSeedpairlist *seedpairlist,
+ GtDiagbandseedKmerIterator *aiter,
+ GtDiagbandseedKmerIterator *biter,
+ GtUword maxfreq,
+ GtUword known_size,
+ const GtRange *seedpairdistance,
+ bool selfcomp,
+ bool debug_seedpair,
bool verbose,
FILE *stream)
{
- GtDiagbandseedScore *score = NULL;
- GtDiagbandseedPosition *lastp = NULL;
- GtExtendSelfmatchRelativeFunc extend_selfmatch_relative_function = NULL;
- GtExtendQuerymatchRelativeFunc extend_querymatch_relative_function = NULL;
- GtProcessinfo_and_querymatchspaceptr info_querymatch;
- const GtUword amaxlen = gt_encseq_max_seq_length(aencseq),
- bmaxlen = gt_encseq_max_seq_length(bencseq);
- const GtDiagbandseedSeedPair *lm = NULL, *maxsegm, *nextsegm, *idx;
- const GtUword ndiags = (amaxlen >> arg->logdiagbandwidth) +
- (bmaxlen >> arg->logdiagbandwidth) + 2;
- const GtUword minsegmentlen = (arg->mincoverage - 1) / seedlength + 1;
- GtUword mlen = 0, diag = 0;
- bool firstinrange = true;
- GtUword count_extensions = 0;
- const GtReadmode query_readmode = ((arg->extendgreedy || arg->extendxdrop)
- && reverse
- ? GT_READMODE_REVCOMPL
- : GT_READMODE_FORWARD);
- GtTimer *timer = NULL;
-#ifdef GT_DIAGBANDSEED_SEEDHISTOGRAM
- GtUword *seedhistogram = NULL;
- GtUword seedcount = 0;
+ GtTimer *timer = NULL;
+ GtUword mlistlen;
+
+ if (verbose) {
+ timer = gt_timer_new();
+ if (known_size > 0) {
+ fprintf(stream, "# start collecting " GT_WU " seeds in %.0f MB ...\n",
+ known_size,
+ GT_MEGABYTES(known_size *
+ gt_seedpairlist_sizeofunit(seedpairlist)));
+ } else {
+ fprintf(stream, "# start collecting seeds ...\n");
+ }
+ gt_timer_start(timer);
+ }
+
+ /* allocate mlist space according to seed count */
+ gt_seedpairlist_init(seedpairlist,known_size);
+
+ /* create mlist */
+ (void) gt_diagbandseed_merge(seedpairlist,
+ NULL, /* histogram not needed: save seeds */
+ known_size > 0 ? true : false,
+ aiter,
+ biter,
+ maxfreq,
+ GT_UWORD_MAX, /* maxgram */
+ seedpairdistance,
+ selfcomp);
+ mlistlen = gt_seedpairlist_length(seedpairlist);
+ if (verbose) {
+ fprintf(stream, "# ... collected " GT_WU " seeds ", mlistlen);
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
+ }
+
+ /* sort mlist */
+ if (mlistlen > 0) {
+ if (verbose) {
+ gt_timer_start(timer);
+ }
+ gt_diagbandseed_seedpairlist_sort(seedpairlist);
+ if (verbose) {
+ fprintf(stream, "# ... sorted " GT_WU " seeds ", mlistlen);
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
+ }
+ if (debug_seedpair) {
+ gt_diagbandseed_seedpairlist_out(stream,seedpairlist);
+ }
+ }
+ if (timer != NULL)
+ {
+ gt_timer_delete(timer);
+ }
+}
+
+typedef struct
+{
+ GtUword totalseeds,
+ totalseqpairs,
+ extended_seeds,
+ selected_seeds,
+ countmatches,
+ failedmatches,
+ seqpairs_with_minsegment,
+ maxmatchespersegment,
+ total_extension_time_usec,
+ total_process_seeds_usec,
+ filteredbydiagonalscore;
+ bool withtiming;
+ GtBittab *used_a_sequences,
+ *used_b_sequences;
+ GtUword current_gfa2_edge_num;
+} GtDiagbandseedState;
+
+static GtDiagbandseedState *gt_diagbandseed_dbs_state_new(bool verbose,
+ GtUword a_num_sequences,
+ GtUword b_num_sequences)
+{
+ GtDiagbandseedState *dbs_state = gt_calloc(1,sizeof *dbs_state);
+ dbs_state->withtiming = verbose;
+ if (a_num_sequences > 0)
+ {
+ dbs_state->used_a_sequences = gt_bittab_new(a_num_sequences);
+ } else
+ {
+ dbs_state->used_a_sequences = NULL;
+ }
+ if (b_num_sequences > 0)
+ {
+ gt_assert(a_num_sequences > 0);
+ dbs_state->used_b_sequences = gt_bittab_new(b_num_sequences);
+ } else
+ {
+ dbs_state->used_b_sequences = NULL;
+ }
+ return dbs_state;
+}
+
+static void gt_diagbandseed_dbs_state_delete(GtDiagbandseedState *dbs_state)
+{
+ if (dbs_state != NULL)
+ {
+ gt_bittab_delete(dbs_state->used_a_sequences);
+ gt_bittab_delete(dbs_state->used_b_sequences);
+ gt_free(dbs_state);
+ }
+}
+
+static void gt_diagbandseed_dbs_state_update(GtDiagbandseedState *dbs_state,
+ GtUword mlistlen,
+ GtUword numseqpairs)
+{
+ dbs_state->totalseeds += mlistlen;
+ dbs_state->totalseqpairs += numseqpairs;
+}
+
+static void gt_diagbandseed_dbs_state_out(const GtDiagbandseedState *dbs_state,
+ bool maxmat_show)
+{
+ printf("# total number of seeds: " GT_WU,dbs_state->totalseeds);
+ if (!maxmat_show)
+ {
+ printf("; " GT_WU ", i.e. %.2f%% of all seeds were filtered by "
+ "diagonal score"
+ "; " GT_WU ", i.e. %.2f%% of all seeds were selected"
+ "; " GT_WU ", i.e. %.2f%% of all seeds were extended\n",
+ dbs_state->filteredbydiagonalscore,
+ 100.0 * (double) dbs_state->filteredbydiagonalscore/
+ dbs_state->totalseeds,
+ dbs_state->selected_seeds,
+ 100.0 * (double) dbs_state->selected_seeds/
+ dbs_state->totalseeds,
+ dbs_state->extended_seeds,
+ 100.0 * (double) dbs_state->extended_seeds/
+ dbs_state->totalseeds);
+ printf( "# number of unsuccessful extensions: " GT_WU "\n",
+ dbs_state->failedmatches);
+ printf( "# sequence pairs with selected seeds: " GT_WU
+ " (%.2f%% of all " GT_WU ")\n",
+ dbs_state->seqpairs_with_minsegment,
+ 100.0 * (double) dbs_state->seqpairs_with_minsegment/
+ dbs_state->totalseqpairs,
+ dbs_state->totalseqpairs);
+ } else
+ {
+ printf("\n# maximum number of MEMs per segment: " GT_WU "\n",
+ dbs_state->maxmatchespersegment);
+ }
+ printf("# number of matches output: " GT_WU " (%.4f per seed)\n",
+ dbs_state->countmatches,
+ (double) dbs_state->countmatches/
+ dbs_state->totalseeds);
+}
+
+typedef bool (*GtExtendRelativeCoordsFunc)(void *,
+ const GtSeqorEncseq *,
+ GtUword,
+ GtUword,
+ const GtSeqorEncseq *,
+ bool,
+ GtUword,
+ GtUword,
+ GtUword,
+ GtReadmode);
+
+static bool gt_diagbandseed_has_overlap_with_previous_match(
+ const GtArrayGtDiagbandseedRectangle *previous_extensions,
+ GtUword previous_match_a_start,
+ GtUword previous_match_a_end,
+ GtUword previous_match_b_start,
+ GtUword previous_match_b_end,
+ GtUword apos,
+ GtUword bpos,
+ GtUword matchlength,
+ bool debug)
+{
+ GtDiagbandseedRectangle maxmatch;
+
+ if (debug)
+ {
+ printf("# overlap of " GT_WU " " GT_WU " " GT_WU " " GT_WU " "
+ GT_WU " " GT_WU " " GT_WU " " GT_WU "?\n",
+ apos + 1 - matchlength,apos,bpos + 1 - matchlength,bpos,
+ previous_match_a_start,
+ previous_match_a_end,
+ previous_match_b_start,
+ previous_match_b_end);
+ }
+
+ maxmatch.a_start = apos + 1 - matchlength;
+ maxmatch.a_end = apos;
+ maxmatch.b_start = bpos + 1 - matchlength;
+ maxmatch.b_end = bpos;
+
+ if (debug)
+ {
+ gt_rectangle_store_show(previous_extensions);
+ }
+ if (gt_rectangle_overlap(previous_extensions,&maxmatch))
+ {
+ if (debug)
+ {
+ printf("# overlap with previous_ext (both dim) => return true\n");
+ }
+ return true;
+ } else
+ {
+ if (debug)
+ {
+ printf("# not overlap with previous_ext (both dim) => return false\n");
+ }
+ return false;
+ }
+}
+
+typedef struct
+{
+ bool b_differs_from_a, a_haswildcards, b_haswildcards;
+ const GtUchar *characters;
+ GtUchar wildcardshow;
+ GtSeqorEncseq aseqorencseq, bseqorencseq;
+ GtUchar *a_byte_sequence, *b_byte_sequence;
+ GtUword previous_aseqnum,
+ a_first_seqnum,
+ a_first_seqstartpos,
+ b_first_seqnum,
+ b_first_seqstartpos;
+ const GtEncseq *a_encseq_for_seq_desc, *b_encseq_for_seq_desc;
+} GtDiagbandSeedPlainSequence;
+
+static void gt_diagbandseed_plainsequence_init(GtDiagbandSeedPlainSequence *ps,
+ bool s_desc_display,
+ bool q_desc_display,
+ const GtEncseq *aencseq,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword aidx,
+ bool with_a_bytestring,
+ const GtEncseq *bencseq,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword bidx,
+ bool with_b_bytestring)
+{
+ ps->previous_aseqnum = GT_UWORD_MAX;
+ if (s_desc_display && aencseq != NULL &&
+ gt_encseq_has_description_support(aencseq))
+ {
+ ps->a_encseq_for_seq_desc = aencseq;
+ } else
+ {
+ ps->a_encseq_for_seq_desc = NULL;
+ }
+ if (q_desc_display && bencseq != NULL &&
+ gt_encseq_has_description_support(bencseq))
+ {
+ ps->b_encseq_for_seq_desc = bencseq;
+ } else
+ {
+ ps->b_encseq_for_seq_desc = NULL;
+ }
+ if (with_a_bytestring)
+ {
+ ps->a_first_seqnum = gt_sequence_parts_info_start_get(aseqranges,aidx);
+ ps->a_first_seqstartpos
+ = gt_sequence_parts_info_seqstartpos(aseqranges,ps->a_first_seqnum),
+ ps->a_byte_sequence = gt_sequence_parts_info_seq_extract(aencseq,aseqranges,
+ aidx);
+ ps->a_haswildcards = (gt_encseq_wildcards(aencseq) > 0) ? true : false;
+ } else
+ {
+ ps->a_byte_sequence = NULL;
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&ps->aseqorencseq,aencseq);
+ ps->a_haswildcards = true;
+ }
+ if (with_b_bytestring)
+ {
+ ps->b_first_seqnum = gt_sequence_parts_info_start_get(bseqranges,bidx);
+ ps->b_first_seqstartpos
+ = gt_sequence_parts_info_seqstartpos(bseqranges,ps->b_first_seqnum);
+ if (with_a_bytestring && aencseq == bencseq && aidx == bidx)
+ {
+ ps->b_differs_from_a = false;
+ ps->b_byte_sequence = ps->a_byte_sequence;
+ ps->b_haswildcards = ps->a_haswildcards;
+ } else
+ {
+ ps->b_differs_from_a = true;
+ ps->b_byte_sequence = gt_sequence_parts_info_seq_extract(bencseq,
+ bseqranges,bidx);
+ ps->b_haswildcards = (gt_encseq_wildcards(bencseq) > 0) ? true : false;
+ }
+ } else
+ {
+ ps->b_byte_sequence = NULL;
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&ps->bseqorencseq,bencseq);
+ ps->b_haswildcards = true;
+ }
+ if (with_a_bytestring || with_b_bytestring)
+ {
+ ps->characters = gt_encseq_alphabetcharacters(aencseq);
+ ps->wildcardshow = gt_alphabet_wildcard_show(gt_encseq_alphabet(aencseq));
+ }
+}
+
+static void gt_diagbandseed_set_sequence(GtSeqorEncseq *seqorencseq,
+ const GtSequencePartsInfo *seqranges,
+ const GtUchar *bytesequence,
+ GtUword first_seqstartpos,
+ GtUword seqnum,
+ const GtUchar *characters,
+ GtUchar wildcardshow,
+ bool haswildcards,
+ const GtEncseq *encseq_for_seq_desc)
+{
+ const GtUword
+ seqstartpos = gt_sequence_parts_info_seqstartpos(seqranges,seqnum),
+ seqendpos = gt_sequence_parts_info_seqendpos(seqranges,seqnum),
+ b_off = seqstartpos - first_seqstartpos;
+ const char *seqdescptr;
+ if (encseq_for_seq_desc != NULL)
+ {
+ GtUword desclen;
+ seqdescptr = gt_encseq_description(encseq_for_seq_desc,
+ &desclen,
+ seqnum);
+ } else
+ {
+ seqdescptr = "Unknown";
+ }
+ GT_SEQORENCSEQ_INIT_SEQ(seqorencseq,bytesequence + b_off,seqdescptr,
+ seqendpos - seqstartpos + 1,characters,
+ wildcardshow,
+ haswildcards);
+}
+
+static void gt_diagbandseed_plainsequence_next_segment(
+ GtDiagbandSeedPlainSequence *ps,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword currsegm_aseqnum,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword currsegm_bseqnum)
+{
+ if (ps->previous_aseqnum == GT_UWORD_MAX ||
+ ps->previous_aseqnum < currsegm_aseqnum)
+ {
+ if (ps->a_byte_sequence != NULL)
+ {
+ gt_diagbandseed_set_sequence(&ps->aseqorencseq,
+ aseqranges,
+ ps->a_byte_sequence,
+ ps->a_first_seqstartpos,
+ currsegm_aseqnum,
+ ps->characters,
+ ps->wildcardshow,
+ ps->a_haswildcards,
+ ps->a_encseq_for_seq_desc);
+ ps->previous_aseqnum = currsegm_aseqnum;
+ } else
+ {
+ GtUword seqstartpos = gt_sequence_parts_info_seqstartpos(aseqranges,
+ currsegm_aseqnum),
+ seqendpos = gt_sequence_parts_info_seqendpos(aseqranges,
+ currsegm_aseqnum);
+
+ GT_SEQORENCSEQ_ADD_SEQ_COORDS(&ps->aseqorencseq,
+ seqstartpos,
+ seqendpos - seqstartpos + 1);
+ }
+ } else
+ {
+ gt_assert(ps->previous_aseqnum == currsegm_aseqnum);
+ }
+ if (ps->b_byte_sequence != NULL)
+ {
+ gt_diagbandseed_set_sequence(&ps->bseqorencseq,
+ bseqranges,
+ ps->b_byte_sequence,
+ ps->b_first_seqstartpos,
+ currsegm_bseqnum,
+ ps->characters,
+ ps->wildcardshow,
+ ps->b_haswildcards,
+ ps->b_encseq_for_seq_desc);
+ } else
+ {
+ GtUword seqstartpos = gt_sequence_parts_info_seqstartpos(bseqranges,
+ currsegm_bseqnum),
+ seqendpos = gt_sequence_parts_info_seqendpos(bseqranges,
+ currsegm_bseqnum);
+
+ GT_SEQORENCSEQ_ADD_SEQ_COORDS(&ps->bseqorencseq,
+ seqstartpos,
+ seqendpos - seqstartpos + 1);
+ }
+}
+
+static void gt_diagbandseed_plainsequence_delete(
+ GtDiagbandSeedPlainSequence *ps)
+{
+ if (ps->b_byte_sequence != NULL && ps->b_differs_from_a)
+ {
+ gt_free(ps->b_byte_sequence);
+ }
+ if (ps->a_byte_sequence != NULL)
+ {
+ gt_free(ps->a_byte_sequence);
+ }
+}
+
+typedef struct
+{
+ GtUword userdefinedleastlength,
+ errorpercentage,
+ use_apos,
+ mincoverage;
+ bool only_selected_seqpairs;
+ double evalue_threshold;
+ GtDiagbandSeedPlainSequence plainsequence_info;
+ GtReadmode query_readmode;
+ bool same_encseq, debug;
+ GtProcessinfo_and_querymatchspaceptr info_querymatch;
+ GtExtendRelativeCoordsFunc extend_relative_coords_function;
+ GtSegmentRejectFunc segment_reject_func;
+ GtSegmentRejectInfo *segment_reject_info;
+ const GtKarlinAltschulStat *karlin_altschul_stat;
+ const GtSeedExtendDisplayFlag *out_display_flag;
+ bool benchmark;
+ GtAniAccumulate *ani_accumulate;
+ GtDiagbandseedState *dbs_state;
+} GtDiagbandseedExtendSegmentInfo;
+
+static int gt_diagbandseed_possibly_extend(const GtArrayGtDiagbandseedRectangle
+ *previous_extensions,
+ bool haspreviousmatch,
+ GtUword use_apos,
+ GtUword aseqnum,
+ GtUword apos,
+ GtUword bseqnum,
+ GtUword bpos,
+ GtUword matchlength,
+ GtDiagbandseedExtendSegmentInfo *esi)
+{
+ int ret = 0;
+
+ if (esi->debug)
+ {
+ printf("# %s haspreviousmatch=%s\n",__func__,
+ haspreviousmatch ? "true" : "false");
+ }
+ if (!haspreviousmatch ||
+ (use_apos == 0 &&
+ esi->info_querymatch.previous_match_b_end < bpos) || /* no overlap */
+ (use_apos > 0 && !gt_diagbandseed_has_overlap_with_previous_match(
+ previous_extensions,
+ esi->info_querymatch.previous_match_a_start,
+ esi->info_querymatch.previous_match_a_end,
+ esi->info_querymatch.previous_match_b_start,
+ esi->info_querymatch.previous_match_b_end,
+ apos,
+ bpos,
+ matchlength,
+ esi->debug)))
+ {
+ bool success;
+
+ /* relative seed start position in A and B */
+ const GtUword bstart = bpos + 1 - matchlength;
+ const GtUword astart = apos + 1 - matchlength;
+#ifndef _WIN32
+ struct timeval tvalBefore = {0};
+
+ if (esi->dbs_state != NULL &&
+ esi->dbs_state->withtiming)
+ {
+ gettimeofday (&tvalBefore, NULL);
+ }
+#endif
+ ret = 1; /* perform extension */
+ /* the following function called is either
+ gt_greedy_extend_seed_relative or
+ gt_xdrop_extend_seed_relative */
+ success = esi->extend_relative_coords_function(&esi->info_querymatch,
+ &esi->plainsequence_info.
+ aseqorencseq,
+ aseqnum,
+ astart,
+ &esi->plainsequence_info.
+ bseqorencseq,
+ esi->same_encseq,
+ bseqnum,
+ bstart,
+ matchlength,
+ esi->query_readmode);
+#ifndef _WIN32
+ if (esi->dbs_state != NULL &&
+ esi->dbs_state->withtiming)
+ {
+ struct timeval tvalAfter;
+ gettimeofday (&tvalAfter, NULL);
+ esi->dbs_state->total_extension_time_usec
+ += (tvalAfter.tv_sec - tvalBefore.tv_sec) * 1000000L
+ + tvalAfter.tv_usec - tvalBefore.tv_usec;
+ }
+#endif
+ if (success)
+ {
+ double evalue, bit_score;
+
+ if (esi->ani_accumulate != NULL)
+ {
+ const GtUword query_seqlen
+ = esi->plainsequence_info.bseqorencseq.seqlength,
+ aligned_len
+ = esi->info_querymatch.previous_match_a_end -
+ esi->info_querymatch.previous_match_a_start + 1 +
+ esi->info_querymatch.previous_match_b_end -
+ esi->info_querymatch.previous_match_b_start + 1;
+ if (gt_querymatch_check_final_generic(
+ &evalue,
+ &bit_score,
+ esi->karlin_altschul_stat,
+ query_seqlen,
+ aligned_len,
+ esi->info_querymatch.previous_match_distance,
+ esi->info_querymatch.previous_match_mismatches,
+ esi->userdefinedleastlength,
+ esi->errorpercentage,
+ esi->evalue_threshold,
+ stdout))
+ {
+ esi->ani_accumulate->sum_of_aligned_len += aligned_len;
+ esi->ani_accumulate->sum_of_distance
+ += esi->info_querymatch.previous_match_distance;
+ ret = 3;
+ } else
+ {
+ ret = 2; /* found match, which does not satisfy length or similarity
+ constraints */
+ }
+ } else
+ {
+ const GtQuerymatch *querymatch
+ = esi->info_querymatch.querymatchspaceptr;
+
+ /* show extension results */
+ gt_assert(querymatch != NULL);
+ if (gt_querymatch_check_final(&evalue,
+ &bit_score,
+ esi->karlin_altschul_stat,
+ querymatch,
+ esi->userdefinedleastlength,
+ esi->errorpercentage,
+ esi->evalue_threshold))
+ {
+ if (!esi->benchmark) {
+ if (gt_querymatch_gfa2_display(esi->out_display_flag))
+ {
+ gt_assert(esi->dbs_state != NULL);
+ gt_querymatch_gfa2_edge(querymatch,
+ esi->dbs_state->
+ current_gfa2_edge_num);
+ esi->dbs_state->current_gfa2_edge_num++;
+ gt_bittab_set_bit(esi->dbs_state->used_a_sequences,
+ aseqnum);
+ gt_bittab_set_bit(
+ esi->dbs_state->used_b_sequences != NULL
+ ? esi->dbs_state->used_b_sequences
+ : esi->dbs_state->used_a_sequences,
+ bseqnum);
+ }
+ gt_querymatch_prettyprint(evalue,bit_score,esi->out_display_flag,
+ querymatch);
+ }
+ ret = 3; /* output match */
+ } else
+ {
+ if (!esi->benchmark) {
+ gt_querymatch_show_failed_seed(esi->out_display_flag,querymatch);
+ }
+ ret = 2; /* found match, which does not satisfy length or similarity
+ constraints */
+ }
+ }
+ }
+ /* else reference and query are the same sequence and overlap so that
+ no extension was performed */
+ }
+ return ret;
+}
+
+void gt_diagbandseed_printchainelem(FILE *outfp,
+ GtUword aseqnum,
+ GtUword astart,
+ GtUword bseqnum,
+ GtUword bstart,
+ GtUword matchlength)
+{
+ fprintf(outfp,GT_WU " " GT_WU " " GT_WU " " GT_WU " " GT_WU " " GT_WU "\n",
+ matchlength,aseqnum,astart,matchlength,bseqnum,bstart);
+}
+
+typedef struct
+{
+ GtDiagbandseedSeqnum aseqnum,
+ bseqnum;
+} GtDiagbandseedSequencePair;
+
+static void gt_diagbandseed_chain_out(void *data,
+ const GtChain2Dimmatchtable *matchtable,
+ const GtChain2Dim *chain)
+{
+ GtUword idx, chainlength;
+ const GtDiagbandseedSequencePair *sequencepair
+ = (const GtDiagbandseedSequencePair *) data;
+
+ gt_assert(chain != NULL);
+ chainlength = gt_chain_chainlength(chain);
+ printf("# chain of length " GT_WU " with score " GT_WD "\n",
+ chainlength,gt_chain_chainscore(chain));
+
+ gt_assert(!gt_chain_storedinreverseorder(chain));
+ for (idx = 0; idx < chainlength; idx++)
+ {
+ GtChain2Dimmatchvalues value;
+
+ gt_chain_extractchainelem(&value, matchtable, chain, idx);
+ gt_assert(value.startpos[0] <= value.endpos[0] &&
+ value.weight >= 0 &&
+ value.endpos[0] - value.startpos[0] + 1
+ == (GtUword) value.weight &&
+ value.startpos[1] <= value.endpos[1] &&
+ value.endpos[1] - value.startpos[1] + 1
+ == (GtUword) value.weight);
+
+ gt_diagbandseed_printchainelem(stdout,
+ sequencepair->aseqnum,
+ value.startpos[0],
+ sequencepair->bseqnum,
+ value.startpos[1],
+ (GtUword) value.weight);
+ }
+}
+
+static int gt_diagbandseed_bstart_ldesc_compare_mems(const void *vl,
+ const void *vr)
+{
+ GtDiagbandseedMaximalmatch *l = (GtDiagbandseedMaximalmatch *) vl,
+ *r = (GtDiagbandseedMaximalmatch *) vr;
+ GtDiagbandseedPosition lapos = l->apos + 1 - l->len,
+ lbpos = l->bpos + 1 - l->len,
+ rapos = r->apos + 1 - r->len,
+ rbpos = r->bpos + 1 - r->len;
+ if (lbpos < rbpos)
+ {
+ return -1;
+ }
+ if (lbpos > rbpos)
+ {
+ return 1;
+ }
+ if (l->len < r->len)
+ {
+ return 1;
+ }
+ if (l->len > r->len)
+ {
+ return -1;
+ }
+ if (lapos < rapos)
+ {
+ return -1;
+ }
+ if (lapos > rapos)
+ {
+ return 1;
+ }
+ gt_assert(false);
+ return 0;
+}
+
+typedef struct
+{
+ GtDiagbandseedMaximalmatch *spaceGtDiagbandseedMaximalmatch;
+ GtUword allocatedGtDiagbandseedMaximalmatch,
+ nextfreeGtDiagbandseedMaximalmatch;
+} GtArrayGtDiagbandseedMaximalmatch;
+
+static bool gt_diagbandseed_process_mem(
+ bool forward,
+ GtUword aseqnum,
+ GtUword bseqnum,
+ GtArrayGtDiagbandseedMaximalmatch *memstore,
+ GtUword amaxlen,
+ const GtSeedpairPositions *previous,
+ GtUword previous_matchlength,
+ GtUword userdefinedleastlength,
+ FILE *fpout)
+{
+ if (memstore == NULL)
+ {
+ if (previous_matchlength >= userdefinedleastlength)
+ {
+ fprintf(fpout,"%8" GT_WUS " %8" GT_WUS " %8" GT_WUS " %c %8" GT_WUS
+ " %8" GT_WUS "\n",
+ previous_matchlength,
+ aseqnum,
+ previous->apos + 2 - previous_matchlength,
+ forward ? 'F' : 'P',
+ bseqnum,
+ GT_DIAGBANDSEED_DIAGONAL2BPOS(amaxlen,
+ previous->apos,
+ previous->bpos)
+ + 2 - previous_matchlength);
+ return true;
+ }
+ } else
+ {
+ GtDiagbandseedMaximalmatch *memstore_ptr;
+
+ GT_GETNEXTFREEINARRAY(memstore_ptr,memstore,
+ GtDiagbandseedMaximalmatch,
+ memstore->allocatedGtDiagbandseedMaximalmatch
+ * 0.2 + 256);
+ memstore_ptr->apos = previous->apos;
+ memstore_ptr->bpos = GT_DIAGBANDSEED_DIAGONAL2BPOS(amaxlen,
+ previous->apos,
+ previous->bpos);
+ memstore_ptr->len = previous_matchlength;
+ }
+ return false;
+}
+
+/* This will later be replaced by an encoding of the three
+ values in a GtUword as to speed up sorting */
+
+static void gt_diagbandseed_segment2maxmatches(
+ bool forward,
+ GtArrayGtDiagbandseedMaximalmatch *memstore,
+ GtUword aseqnum,
+ GtUword bseqnum,
+ unsigned int seedlength,
+ GtUword userdefinedleastlength,
+ GtUword amaxlen,
+ const GtSeedpairPositions *segment_positions,
+ GtUword segment_length,
+ GtDiagbandseedState *dbs_state,
+ GtSegmentRejectFunc segment_reject_func,
+ GtSegmentRejectInfo *segment_reject_info,
+ const GtChain2Dimmode *chainmode,
+ FILE *fpout)
+{
+ GtUword previous_matchlength = seedlength, localmatchcount = 0;
+ const GtSeedpairPositions *current;
+ GtSeedpairPositions previous;
+ GtDiagbandseedSequencePair sequencepair = {aseqnum,bseqnum};
+ const bool anchor_pairs = false;
+ bool rejected = false;
+#ifndef NDEBUG
+ GtUword idx;
+#endif
+
+ gt_assert(segment_length > 0 && seedlength <= userdefinedleastlength);
+#ifndef NDEBUG
+ for (idx = 1; idx < segment_length; idx++)
+ {
+ gt_assert(segment_positions[idx-1].bpos < segment_positions[idx].bpos ||
+ (segment_positions[idx-1].bpos == segment_positions[idx].bpos &&
+ segment_positions[idx-1].apos <= segment_positions[idx].apos));
+ }
+#endif
+ previous = segment_positions[0];
+ if (memstore != NULL)
+ {
+ memstore->nextfreeGtDiagbandseedMaximalmatch = 0;
+ }
+ for (current = segment_positions + 1;
+ current < segment_positions + segment_length && !rejected; current++)
+ {
+ if (previous.bpos == current->bpos && previous.apos + 1 == current->apos)
+ {
+ previous_matchlength++;
+ previous.apos++;
+ } else
+ {
+ if (previous.bpos == current->bpos &&
+ previous.apos + seedlength - 1 >= current->apos)
+ {
+ /* This case can only happen if maxfreq exclude some intermediate
+ matches */
+ gt_assert(previous.apos <= current->apos);
+ previous_matchlength += (current->apos - previous.apos + 1);
+ previous.apos = current->apos;
+ } else
+ {
+ /*
+ printf("previous.diag = %u, current.diag=%u\n",previous.bpos,
+ current->bpos);
+ printf("previous.apos=%u,current.apos=%u,seedlength=%u\n",
+ previous.apos,current->apos,seedlength);
+ gt_assert (previous.bpos != current->bpos ||
+ previous.apos + seedlength - 1 < current->apos);*/
+ if (anchor_pairs)
+ {
+ if (previous.bpos == current->bpos &&
+ previous.apos + seedlength - 1 < current->apos)
+ {
+ printf("A %u\n",previous.apos+1);
+ }
+ } else
+ {
+ if (gt_diagbandseed_process_mem(forward,
+ aseqnum,
+ bseqnum,
+ memstore,
+ amaxlen,
+ &previous,
+ previous_matchlength,
+ userdefinedleastlength,
+ fpout))
+ {
+ localmatchcount++;
+ if (segment_reject_func != NULL)
+ {
+ gt_segment_reject_register_match(segment_reject_info,bseqnum);
+ rejected = true;
+ }
+ }
+ }
+ previous_matchlength = seedlength;
+ previous = *current;
+ }
+ }
+ }
+ if (!anchor_pairs)
+ {
+ if (!rejected && gt_diagbandseed_process_mem(forward,
+ aseqnum,
+ bseqnum,
+ memstore,
+ amaxlen,
+ &previous,
+ previous_matchlength,
+ userdefinedleastlength,
+ fpout))
+ {
+ localmatchcount++;
+ if (segment_reject_func != NULL)
+ {
+ gt_segment_reject_register_match(segment_reject_info,bseqnum);
+ }
+ }
+ }
+ if (dbs_state != NULL)
+ {
+ dbs_state->countmatches += localmatchcount;
+ if (dbs_state->maxmatchespersegment < localmatchcount)
+ {
+ dbs_state->maxmatchespersegment = localmatchcount;
+ }
+ }
+ if (memstore != NULL)
+ {
+ if (memstore->nextfreeGtDiagbandseedMaximalmatch >= 2)
+ {
+ qsort(memstore->spaceGtDiagbandseedMaximalmatch,
+ memstore->nextfreeGtDiagbandseedMaximalmatch,
+ sizeof *memstore->spaceGtDiagbandseedMaximalmatch,
+ gt_diagbandseed_bstart_ldesc_compare_mems);
+ }
+ if (chainmode != NULL)
+ {
+ const GtUword presortdim = 1;
+#ifndef NDEBUG
+ GtUword previous_start_b = GT_UWORD_MAX;
+#endif
+ GtChain2Dimmatchvalues inmatch;
+ GtChain2Dim *localchain = gt_chain_chain_new();
+ GtDiagbandseedMaximalmatch *mmptr;
+ GtChain2Dimmatchtable *chainmatchtable
+ = gt_chain_matchtable_new(memstore->nextfreeGtDiagbandseedMaximalmatch);
+
+ for (mmptr = memstore->spaceGtDiagbandseedMaximalmatch;
+ mmptr < memstore->spaceGtDiagbandseedMaximalmatch +
+ memstore->nextfreeGtDiagbandseedMaximalmatch;
+ mmptr++)
+ {
+ inmatch.startpos[0] = mmptr->apos + 1 - mmptr->len;
+ inmatch.endpos[0] = mmptr->apos;
+ inmatch.startpos[1] = mmptr->bpos + 1 - mmptr->len;
+ inmatch.endpos[1] = mmptr->bpos;
+ gt_assert(previous_start_b == GT_UWORD_MAX ||
+ previous_start_b <= inmatch.startpos[1]);
+ inmatch.weight = mmptr->len;
+ gt_chain_matchtable_add(chainmatchtable,&inmatch);
+#ifndef NDEBUG
+ previous_start_b = inmatch.startpos[1];
+#endif
+ }
+ gt_chain_fastchaining(chainmode,
+ localchain,
+ chainmatchtable,
+ false,
+ presortdim,
+ true,
+ gt_diagbandseed_chain_out,
+ &sequencepair,
+ NULL);
+ gt_chain_matchtable_delete(chainmatchtable);
+ gt_chain_chain_delete(localchain);
+ }
+ }
+}
+
+/* * * * * SEED EXTENSION * * * * */
+
+static void gt_diagbandseed_segment2matches(
+ void *v_segment2matches_info,
+ GT_UNUSED const GtEncseq *aencseq,
+ GT_UNUSED const GtEncseq *bencseq,
+ GtUword aseqnum,
+ GtUword bseqnum,
+ const GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ unsigned int seedlength,
+ const GtSeedpairPositions *segment_positions,
+ GtUword segment_length)
+{
+ GtDiagbandseedExtendSegmentInfo *esi
+ = (GtDiagbandseedExtendSegmentInfo *) v_segment2matches_info;
+ bool found_selected = false, haspreviousmatch = false;
+ GtUword idx, matchlength = seedlength;
+ GtArrayGtDiagbandseedRectangle *previous_extensions = NULL;
+
+ if (esi->use_apos > 0)
+ {
+ previous_extensions = gt_rectangle_store_new();
+ }
+ gt_assert(memstore != NULL || segment_positions != NULL);
+ for (idx = 0; idx < segment_length; idx++)
+ {
+ GtDiagbandseedPosition apos, bpos;
+ GtUword coverage;
+
+ if (memstore != NULL)
+ {
+ apos = memstore[idx].apos;
+ bpos = memstore[idx].bpos;
+ matchlength = memstore[idx].len;
+ } else
+ {
+ apos = segment_positions[idx].apos;
+ bpos = segment_positions[idx].bpos;
+ }
+ if (esi->debug)
+ {
+ printf("# apos=%u,bpos=%u,matchlength=" GT_WU "\n",
+ apos,bpos,matchlength);
+ }
+
+ /* The filter sums the score of the current diagonalband
+ as well as the maximum of the score of the previous and next
+ diagonal band */
+ coverage = gt_diagband_struct_coverage(diagband_struct,apos,bpos);
+ if (coverage >= esi->mincoverage)
+ {
+ int ret;
+
+ if (esi->dbs_state != NULL)
+ {
+ esi->dbs_state->selected_seeds++;
+ }
+ if (!found_selected)
+ {
+ if (esi->dbs_state != NULL)
+ {
+ esi->dbs_state->seqpairs_with_minsegment++;
+ }
+ found_selected = true;
+ }
+ if (esi->only_selected_seqpairs)
+ {
+ printf("# " GT_WU "%c" GT_WU "\n",aseqnum,
+ esi->query_readmode == GT_READMODE_REVCOMPL ? '-' : '+',
+ bseqnum);
+ break;
+ }
+ ret = gt_diagbandseed_possibly_extend(
+ previous_extensions,
+ haspreviousmatch,
+ esi->use_apos,
+ aseqnum,
+ apos,
+ bseqnum,
+ bpos,
+ matchlength,
+ esi);
+ if (ret >= 1 && esi->dbs_state != NULL)
+ {
+ esi->dbs_state->extended_seeds++;
+ }
+ if (ret >= 2)
+ {
+ haspreviousmatch = true;
+ if (esi->use_apos == 2 || /* add all previous matches */
+ (esi->use_apos == 1 /* only add successful match */
+ && ret == 3))
+ {
+ GtDiagbandseedRectangle newrectangle;
+
+ newrectangle.a_start
+ = esi->info_querymatch.previous_match_a_start;
+ newrectangle.a_end = esi->info_querymatch.previous_match_a_end;
+ newrectangle.b_start
+ = esi->info_querymatch.previous_match_b_start;
+ newrectangle.b_end
+ = esi->info_querymatch.previous_match_b_end;
+ if (esi->debug)
+ {
+ printf("# add rectangle (%u,%u) (%u,%u) from seed (%u,%u,"
+ GT_WU ")\n",
+ newrectangle.a_start,
+ newrectangle.a_end,
+ newrectangle.b_start,
+ newrectangle.b_end,
+ apos,bpos,matchlength);
+ }
+ gt_rectangle_store_add(previous_extensions,&newrectangle);
+ }
+ if (ret == 2 && esi->dbs_state != NULL)
+ {
+ esi->dbs_state->failedmatches++;
+ }
+ }
+ if (ret == 3)
+ {
+ if (esi->dbs_state != NULL)
+ {
+ esi->dbs_state->countmatches++;
+ }
+ if (esi->segment_reject_func != NULL)
+ {
+ gt_segment_reject_register_match(esi->segment_reject_info,bseqnum);
+ break;
+ }
+ }
+ } else
+ {
+ if (esi->dbs_state != NULL)
+ {
+ esi->dbs_state->filteredbydiagonalscore++;
+ }
+ if (esi->debug)
+ {
+ printf("# filtered as diagonal score " GT_WU " < " GT_WU "\n",
+ coverage,
+ esi->mincoverage);
+ }
+ }
+ }
+ if (esi->use_apos > 0)
+ {
+ gt_rectangle_store_delete(previous_extensions);
+ }
+}
+
+#define GT_DIAGBANDSEED_PROCESS_SEGMENT\
+ if (segment_reject_func == NULL ||\
+ !segment_reject_func(segment_reject_info,currsegm_bseqnum))\
+ {\
+ if (seedpairlist->maxmat_compute)\
+ {\
+ gt_diagbandseed_segment2maxmatches(forward,\
+ memstore,\
+ currsegm_aseqnum,\
+ currsegm_bseqnum,\
+ seedlength,\
+ extp->userdefinedleastlength,\
+ seedpairlist->amaxlen,\
+ segment_positions,\
+ segment_length,\
+ dbs_state,\
+ segment_reject_func,\
+ segment_reject_info,\
+ chainmode,\
+ stream);\
+ if (memstore != NULL)\
+ {\
+ gt_assert(diagband_struct != NULL &&\
+ gt_diagband_struct_empty(diagband_struct));\
+ segment_length = memstore->nextfreeGtDiagbandseedMaximalmatch;\
+ gt_diagband_struct_multi_update(\
+ diagband_struct,\
+ memstore->spaceGtDiagbandseedMaximalmatch,\
+ segment_length);\
+ } else\
+ {\
+ gt_assert(diagband_struct == NULL);\
+ }\
+ }\
+ if (!seedpairlist->maxmat_compute || memstore != NULL)\
+ {\
+ gt_assert(segment_proc_func != NULL && segment_proc_info != NULL);\
+ segment_proc_func(segment_proc_info,\
+ aencseq,\
+ bencseq,\
+ currsegm_aseqnum,\
+ currsegm_bseqnum,\
+ diagband_struct,\
+ memstore == NULL\
+ ? NULL \
+ : memstore->spaceGtDiagbandseedMaximalmatch,\
+ seedlength,\
+ segment_positions,\
+ segment_length);\
+ }\
+ }\
+ if (diagband_struct != NULL && \
+ !gt_diagband_struct_empty(diagband_struct))\
+ {\
+ gt_diagband_struct_reset(diagband_struct,\
+ memstore == NULL ? segment_positions\
+ : NULL,\
+ memstore == NULL\
+ ? NULL\
+ : memstore->\
+ spaceGtDiagbandseedMaximalmatch,\
+ segment_length);\
+ }
+
+static void gt_diagbandseed_match_header(FILE *stream,
+ const GtDiagbandseedExtendParams *extp,
+ const void *processinfo,
+ unsigned int seedlength,
+ GtUword num_diagbands,
+ GtUword minsegmentlen)
+{
+ fprintf(stream,"# start processing of seeds ...\n");
+ fprintf(stream,"# parameters for selecting seeds: seedlength=%u, "
+ "diagonal bands=" GT_WU ", minimal segmentsize=" GT_WU
+ ", minimal coverage=" GT_WU "\n",
+ seedlength,num_diagbands,minsegmentlen,extp->mincoverage);
+ if (extp->extendgreedy)
+ {
+ const GtGreedyextendmatchinfo *ggemi
+ = (GtGreedyextendmatchinfo *) processinfo;
+
+ fprintf(stream,"# parameters for greedy extension of seeds: history=" GT_WU
+ ", max_aligned_length_difference=" GT_WU
+ ", percent_match_history=" GT_WU "\n",
+ extp->history_size,
+ gt_greedy_extend_maxalignedlendifference(ggemi),
+ gt_greedy_extend_perc_mat_history(ggemi));
+ } else
+ {
+ const GtXdropmatchinfo *xdropmatchinfo = (GtXdropmatchinfo *) processinfo;
+ fprintf(stream,"# parameters for xdrop extension of seeds: "
+ "xdrop_below_score=" GT_WU "\n",
+ gt_xdrop_extend_belowscore(xdropmatchinfo));
+ }
+}
+
+static void gt_diagbandseed_info_qm_set(
+ GtProcessinfo_and_querymatchspaceptr *ifqm,
+ const GtDiagbandseedExtendParams *extp,
+ GtQuerymatchoutoptions *querymoutopt,
+ GtReadmode query_readmode,
+ FILE *stream,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ void *processinfo)
+{
+ ifqm->processinfo = processinfo;
+ if (extp->ani_accumulate != NULL)
+ {
+ ifqm->querymatchspaceptr = NULL;
+ } else
+ {
+ ifqm->querymatchspaceptr = gt_querymatch_new();
+ if (extp->verify_alignment)
+ {
+ gt_querymatch_verify_alignment_set(ifqm->querymatchspaceptr);
+ }
+ if (querymoutopt != NULL) {
+ gt_querymatch_outoptions_set(ifqm->querymatchspaceptr,querymoutopt);
+ }
+ gt_querymatch_query_readmode_set(ifqm->querymatchspaceptr,query_readmode);
+ gt_querymatch_file_set(ifqm->querymatchspaceptr, stream);
+ }
+ ifqm->karlin_altschul_stat = karlin_altschul_stat;
+ ifqm->out_display_flag = extp->out_display_flag;;
+ ifqm->previous_match_a_start = 0;
+ ifqm->previous_match_a_end = 0;
+ ifqm->previous_match_b_start = 0;
+ ifqm->previous_match_b_end = 0;
+ ifqm->previous_match_distance = 0;
+ ifqm->previous_match_mismatches = 0;
+}
+
+#define GT_USEC2SEC(TIME_IN_USEC)\
+ ((GtUword) (TIME_IN_USEC)/1000000)
+
+#define GT_USECREMAIN(TIME_IN_USEC) ((TIME_IN_USEC) -\
+ GT_USEC2SEC(TIME_IN_USEC) * 1000000UL)
+
+#ifndef _WIN32
+static void gt_diagbandseed_process_seeds_times(
+ bool extendgreedy,
+ bool maxmat_show,
+ GtUword mlistlen,
+ GtUword extended_seeds,
+ GtUword total_process_seeds_usec,
+ GtUword total_extension_time_usec)
+{
+ GtUword process_seeds_usec;
+
+ gt_assert(total_process_seeds_usec >= total_extension_time_usec);
+ process_seeds_usec = total_process_seeds_usec - total_extension_time_usec;
+ if (!maxmat_show)
+ {
+ printf("# ... %s extension of " GT_WU " seeds in "
+ GT_WD ".%.06ld seconds.\n",
+ extendgreedy ? "greedy" : "xdrop",
+ extended_seeds,
+ GT_USEC2SEC(total_extension_time_usec),
+ GT_USECREMAIN(total_extension_time_usec));
+ }
+ printf( "# ... processed " GT_WU " seeds %sin "
+ GT_WD ".%06ld seconds.\n",mlistlen,
+ maxmat_show ? "" : "(excluding extensions) ",
+ GT_USEC2SEC(process_seeds_usec),
+ GT_USECREMAIN(process_seeds_usec));
+}
#endif
- gt_assert(mlist != NULL);
- mlen = mlist->nextfreeGtDiagbandseedSeedPair; /* mlist length */
- lm = mlist->spaceGtDiagbandseedSeedPair; /* mlist pointer */
+static GtDiagbandseedExtendSegmentInfo *gt_diagbandseed_extendSI_new(
+ const GtDiagbandseedExtendParams *extp,
+ void *processinfo,
+ GtQuerymatchoutoptions *querymoutopt,
+ const GtEncseq *aencseq,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword aidx,
+ const GtEncseq *bencseq,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword bidx,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ GtReadmode query_readmode,
+ FILE *stream,
+ GtDiagbandseedState
+ *dbs_state,
+ GtSegmentRejectFunc
+ segment_reject_func,
+ GtSegmentRejectInfo
+ *segment_reject_info)
+{
+ GtDiagbandseedExtendSegmentInfo *esi = gt_malloc(sizeof *esi);
+
+ esi->extend_relative_coords_function = extp->extendgreedy
+ ? gt_greedy_extend_seed_relative
+ : gt_xdrop_extend_seed_relative;
+ gt_diagbandseed_plainsequence_init(&esi->plainsequence_info,
+ gt_querymatch_subjectid_display(
+ extp->out_display_flag),
+ gt_querymatch_queryid_display(
+ extp->out_display_flag),
+ aencseq,
+ aseqranges,
+ aidx,
+ extp->a_extend_char_access ==
+ GT_EXTEND_CHAR_ACCESS_DIRECT ? true
+ : false,
+ bencseq,
+ bseqranges,
+ bidx,
+ extp->b_extend_char_access ==
+ GT_EXTEND_CHAR_ACCESS_DIRECT ? true
+ : false);
+ gt_diagbandseed_info_qm_set(&esi->info_querymatch,
+ extp,
+ querymoutopt,
+ query_readmode,
+ stream,
+ karlin_altschul_stat,
+ processinfo);
+ esi->dbs_state = dbs_state;
+ /* the following are constant and depends only on the given parameters */
+ esi->userdefinedleastlength = extp->userdefinedleastlength;
+ esi->errorpercentage = extp->errorpercentage;
+ esi->use_apos = extp->use_apos;
+ esi->mincoverage = extp->mincoverage;
+ esi->only_selected_seqpairs = extp->only_selected_seqpairs;
+ esi->evalue_threshold = extp->evalue_threshold;
+ esi->query_readmode = query_readmode;
+ esi->same_encseq = (aencseq == bencseq) ? true : false;
+ esi->debug = gt_log_enabled() ? true : false;
+ esi->segment_reject_func = segment_reject_func;
+ esi->segment_reject_info = segment_reject_info;
+ esi->karlin_altschul_stat = karlin_altschul_stat;
+ esi->out_display_flag = extp->out_display_flag;
+ esi->benchmark = extp->benchmark;
+ if (extp->ani_accumulate != NULL)
+ {
+ if (GT_ISDIRREVERSE(query_readmode))
+ {
+ esi->ani_accumulate = extp->ani_accumulate + 1;
+ } else
+ {
+ esi->ani_accumulate = extp->ani_accumulate;
+ }
+ } else
+ {
+ esi->ani_accumulate = NULL;
+ }
+ return esi;
+}
- if (mlen < minsegmentlen || mlen == 0) {
- return;
+static void gt_diagbandseed_extendSI_delete(
+ GtDiagbandseedExtendSegmentInfo * esi)
+{
+ if (esi != NULL)
+ {
+ gt_querymatch_delete(esi->info_querymatch.querymatchspaceptr);
+ gt_diagbandseed_plainsequence_delete(&esi->plainsequence_info);
+ gt_free(esi);
}
+}
- /* select extension method */
- info_querymatch.processinfo = processinfo;
- if (arg->extendgreedy) {
- extend_selfmatch_relative_function = gt_greedy_extend_selfmatch_relative;
- extend_querymatch_relative_function = gt_greedy_extend_querymatch_relative;
- } else if (arg->extendxdrop) {
- extend_selfmatch_relative_function = gt_xdrop_extend_selfmatch_relative;
- extend_querymatch_relative_function = gt_xdrop_extend_querymatch_relative;
- } else { /* no seed extension */
+typedef void (*GtDiagbandseedProcessSegmentFunc)(
+ void *v_process_segment_info,
+ const GtEncseq *aencseq,
+ const GtEncseq *bencseq,
+ GtUword aseqnum,
+ GtUword bseqnum,
+ const GtDiagbandStruct *diagband_struct,
+ const GtDiagbandseedMaximalmatch *memstore,
+ unsigned int seedlength,
+ const GtSeedpairPositions *segment_positions,
+ GtUword segment_length);
+
+/* start seed extension for seeds in mlist */
+static void gt_diagbandseed_process_seeds(GtSeedpairlist *seedpairlist,
+ const GtDiagbandseedExtendParams *extp,
+ void *processinfo,
+ GtQuerymatchoutoptions *querymoutopt,
+ const GtEncseq *aencseq,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword aidx,
+ const GtEncseq *bencseq,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword bidx,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ GtArrayGtDiagbandseedMaximalmatch
+ *memstore,
+ const GtChain2Dimmode *chainmode,
+ unsigned int seedlength,
+ GtReadmode query_readmode,
+ bool verbose,
+ FILE *stream,
+ const GtStr *diagband_statistics_arg,
+ GtDiagbandseedState
+ *dbs_state,
+ GtSegmentRejectFunc
+ segment_reject_func,
+ GtSegmentRejectInfo
+ *segment_reject_info)
+{
+ const bool forward = query_readmode == GT_READMODE_REVCOMPL ? false : true;
+ /* Although the sequences of the parts processed are shorter, we need to
+ set amaxlen and bmaxlen to the maximum size of all sequences
+ to get the same division into diagonal bands for all parts and thus
+ obtain results independent of the number of parts chosen. */
+ const GtUword mlistlen = gt_seedpairlist_length(seedpairlist),
+ minsegmentlen = (extp->mincoverage - 1) / seedlength + 1;
+ GtTimer *timer = NULL;
+ GtDiagbandStruct *diagband_struct = NULL;
+ GtDiagbandseedExtendSegmentInfo *esi = NULL;
+ GtDiagbandStatistics *diagband_statistics = NULL;
+ GtDiagbandseedProcessSegmentFunc segment_proc_func = NULL;
+ void *segment_proc_info = NULL;
+
+ gt_assert(extp->mincoverage >= seedlength && minsegmentlen >= 1);
+ if (mlistlen == 0 || mlistlen < minsegmentlen ||
+ (!extp->extendgreedy && !extp->extendxdrop))
+ {
return;
}
-
- if (verbose) {
+ if (verbose)
+ {
timer = gt_timer_new();
- if (arg->extendgreedy) {
- fprintf(stream, "# Start greedy seed pair extension...\n");
- } else {
- fprintf(stream, "# Start xdrop seed pair extension...\n");
- }
- fprintf(stream, "# Columns: alen aseq astartpos strand blen bseq bstartpos "
- "score editdist identity\n");
gt_timer_start(timer);
}
-
- info_querymatch.querymatchspaceptr = gt_querymatch_new();
- gt_querymatch_display_set(info_querymatch.querymatchspaceptr,
- arg->display_flag);
- if (querymoutopt != NULL) {
- gt_querymatch_outoptions_set(info_querymatch.querymatchspaceptr,
- querymoutopt);
+ if (seedpairlist->maxmat_show)
+ {
+ fprintf(stream,"# Fields: s.len, s.seqnum, s.start, strand, q.seqnum, "
+ "q.start\n");
+ } else
+ {
+ const GtUword bmaxlen = gt_encseq_max_seq_length(bencseq);
+ if (verbose)
+ {
+ gt_diagbandseed_match_header(stream,extp,processinfo,
+ seedlength,
+ gt_diagband_struct_num_diagbands(
+ seedpairlist->amaxlen,bmaxlen,
+ extp->logdiagbandwidth),
+ minsegmentlen);
+ }
+ diagband_struct = gt_diagband_struct_new(seedpairlist->amaxlen,bmaxlen,
+ extp->logdiagbandwidth);
+ if (gt_str_length(diagband_statistics_arg) == 0)
+ {
+ esi = gt_diagbandseed_extendSI_new(extp,
+ processinfo,
+ querymoutopt,
+ aencseq,
+ aseqranges,
+ aidx,
+ bencseq,
+ bseqranges,
+ bidx,
+ karlin_altschul_stat,
+ query_readmode,
+ stream,
+ dbs_state,
+ segment_reject_func,
+ segment_reject_info);
+ if (verbose)
+ {
+ if (esi->plainsequence_info.a_byte_sequence != NULL ||
+ esi->plainsequence_info.b_byte_sequence != NULL)
+ {
+ fprintf(stream, "# ... extracted sequences ");
+ gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
+ gt_timer_start(timer);
+ }
+ }
+ segment_proc_func = gt_diagbandseed_segment2matches;
+ segment_proc_info = esi;
+ } else
+ {
+ diagband_statistics = gt_diagband_statistics_new(diagband_statistics_arg,
+ forward);
+ segment_proc_func = gt_diagband_statistics_add;
+ segment_proc_info = diagband_statistics;
+ }
}
- gt_querymatch_query_readmode_set(info_querymatch.querymatchspaceptr,
- query_readmode);
- gt_querymatch_file_set(info_querymatch.querymatchspaceptr, stream);
-
- /* score[0] and score[ndiags+1] remain zero for boundary */
- score = gt_calloc(ndiags + 2, sizeof *score);
- lastp = gt_calloc(ndiags, sizeof *lastp);
- maxsegm = lm + mlen - minsegmentlen;
- nextsegm = lm;
-
-#ifdef GT_DIAGBANDSEED_SEEDHISTOGRAM
- seedhistogram = (GtUword *)gt_calloc(GT_DIAGBANDSEED_SEEDHISTOGRAM,
- sizeof *seedhistogram);
-#endif
-
- /* iterate through segments of equal k-mers */
- while (nextsegm <= maxsegm) {
- const GtDiagbandseedSeedPair *currsegm = nextsegm;
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_STRUCT)
+ {
+ const GtDiagbandseedSeedPair
+ *mlist = gt_seedpairlist_mlist_struct(seedpairlist),
+ *mlistend = mlist + mlistlen,
+ *last_segment_start = mlistend - minsegmentlen,
+ *nextsegm = mlist;
+
+ gt_assert(nextsegm <= last_segment_start);
+ /* iterate through segments of equal k-mers */
+ while (nextsegm <= last_segment_start)
+ {
+ GtSeedpairPositions *spp_ptr, *segment_positions;
+ GtUword segment_length;
+ const GtDiagbandseedSeedPair *currsegm = nextsegm;
+ const GtDiagbandseedSeqnum currsegm_aseqnum = currsegm->aseqnum;
+ const GtDiagbandseedSeqnum currsegm_bseqnum = currsegm->bseqnum;
+
+ /* if insuffienct number of kmers in segment: skip whole segment */
+ if (currsegm_aseqnum != currsegm[minsegmentlen - 1].aseqnum ||
+ currsegm_bseqnum != currsegm[minsegmentlen - 1].bseqnum)
+ {
+ do
+ {
+ nextsegm++;
+ } while (nextsegm < mlistend &&
+ currsegm_aseqnum == nextsegm->aseqnum &&
+ currsegm_bseqnum == nextsegm->bseqnum);
+ continue; /* process next segment */
+ }
- /* if insuffienct number of kmers in segment: skip whole segment */
- if (currsegm->aseqnum != (currsegm + minsegmentlen - 1)->aseqnum ||
- currsegm->bseqnum != (currsegm + minsegmentlen - 1)->bseqnum) {
- do {
+ /* this segment begining with nextsegm possibly has enough seeds */
+ spp_ptr = segment_positions = (GtSeedpairPositions *) currsegm;
+ do
+ {
+ if (!seedpairlist->maxmat_compute)
+ {
+ gt_diagband_struct_single_update(diagband_struct,
+ GT_DIAGBANDSEED_GETPOS_A(nextsegm),
+ GT_DIAGBANDSEED_GETPOS_B(nextsegm),
+ (GtDiagbandseedPosition) seedlength);
+ }
+ spp_ptr->apos = GT_DIAGBANDSEED_GETPOS_A(nextsegm);
+ spp_ptr->bpos = GT_DIAGBANDSEED_GETPOS_B(nextsegm);
+ spp_ptr++;
nextsegm++;
- } while (nextsegm < lm + mlen &&
- nextsegm->aseqnum == currsegm->aseqnum &&
- nextsegm->bseqnum == currsegm->bseqnum);
- continue;
- }
+ } while (nextsegm < mlistend &&
+ currsegm_aseqnum == nextsegm->aseqnum &&
+ currsegm_bseqnum == nextsegm->bseqnum);
- /* calculate diagonal band scores */
- do {
- gt_assert(nextsegm->bpos <= bmaxlen && nextsegm->apos <= amaxlen);
- diag = (amaxlen + (GtUword)nextsegm->bpos - (GtUword)nextsegm->apos)
- >> arg->logdiagbandwidth;
- if (nextsegm->bpos >= seedlength + lastp[diag]) {
- /* no overlap: add seedlength */
- score[diag + 1] += seedlength;
- } else {
- /* overlap: add difference below overlap */
- gt_assert(lastp[diag] <= nextsegm->bpos); /* if fail: sort by bpos */
- score[diag + 1] += nextsegm->bpos - lastp[diag];
+ if (esi != NULL)
+ {
+ gt_diagbandseed_plainsequence_next_segment(&esi->plainsequence_info,
+ aseqranges,
+ currsegm_aseqnum,
+ bseqranges,
+ currsegm_bseqnum);
}
- lastp[diag] = nextsegm->bpos;
- nextsegm++;
- } while (nextsegm < lm + mlen && nextsegm->aseqnum == currsegm->aseqnum &&
- nextsegm->bseqnum == currsegm->bseqnum);
-
- /* test for mincoverage and overlap to previous extension */
- firstinrange = true;
- for (idx = currsegm; idx < nextsegm; idx++) {
- gt_assert(idx->apos <= amaxlen);
- diag = (amaxlen + (GtUword)idx->bpos - (GtUword)idx->apos)
- >> arg->logdiagbandwidth;
- if ((GtUword)MAX(score[diag + 2], score[diag]) + (GtUword)score[diag + 1]
- >= arg->mincoverage)
+
+ /* from here on we only need the apos and bpos values of the segment, as
+ the segment boundaries have been identified.
+ second scan: test for mincoverage and overlap to previous extension,
+ based on apos and bpos values. */
+ segment_length = (GtUword) (nextsegm - currsegm);
+ GT_DIAGBANDSEED_PROCESS_SEGMENT;
+ }
+ } else
+ {
+ if (seedpairlist->splt == GT_DIAGBANDSEED_SPLT_ULONG)
+ {
+ const GtUword *mlist = gt_seedpairlist_mlist_ulong(seedpairlist),
+ *mlistend = mlist + mlistlen,
+ *last_segment_start = mlistend - minsegmentlen,
+ *nextsegm = mlist;
+ GtUword nextsegm_a_bseqnum, segment_length;
+
+ gt_assert(nextsegm <= last_segment_start);
+ /* iterate through segments of equal k-mers */
+ nextsegm_a_bseqnum
+ = gt_seedpairlist_a_bseqnum_ulong (seedpairlist,*mlist);
+ while (nextsegm <= last_segment_start)
{
- /* relative seed start position in A and B */
- const GtUword bstart = (GtUword) (idx->bpos + 1 - seedlength);
- const GtUword astart = (GtUword) (idx->apos + 1 - seedlength);
-#ifdef GT_DIAGBANDSEED_SEEDHISTOGRAM
- seedcount++;
-#endif
+ GtSeedpairPositions *spp_ptr, *segment_positions;
+ GtUword currsegm_aseqnum, currsegm_bseqnum;
+ const GtUword *currsegm = nextsegm;
+ const GtUword currsegm_a_bseqnum = nextsegm_a_bseqnum;
+
+ /* if insuffienct number of kmers in segment: skip whole segment */
+ if (currsegm_a_bseqnum !=
+ gt_seedpairlist_a_bseqnum_ulong (seedpairlist,
+ currsegm[minsegmentlen-1]))
+ {
+ do
+ {
+ nextsegm++;
+ } while (nextsegm < mlistend &&
+ currsegm_a_bseqnum ==
+ (nextsegm_a_bseqnum =
+ gt_seedpairlist_a_bseqnum_ulong (seedpairlist,*nextsegm)));
+ continue; /* process next segment */
+ }
- if (firstinrange ||
- !gt_querymatch_overlap(info_querymatch.querymatchspaceptr,
- idx->apos, idx->bpos, arg->use_apos))
+ /* this segment begining with nextsegm pssibly has enough seeds */
+ currsegm_aseqnum = gt_seedpairlist_extract_ulong(seedpairlist,*currsegm,
+ idx_aseqnum) +
+ seedpairlist->aseqrange_start;
+ currsegm_bseqnum = gt_seedpairlist_extract_ulong(seedpairlist,*currsegm,
+ idx_bseqnum) +
+ seedpairlist->bseqrange_start;
+ spp_ptr = segment_positions = (GtSeedpairPositions *) currsegm;
+ do
{
- /* extend seed */
- const GtQuerymatch *querymatch = NULL;
-
- if (aencseq == bencseq) {
- querymatch = extend_selfmatch_relative_function(&info_querymatch,
- aencseq,
- idx->aseqnum,
- astart,
- idx->bseqnum,
- bstart,
- seedlength,
- query_readmode);
- } else {
- querymatch = extend_querymatch_relative_function(&info_querymatch,
- aencseq,
- idx->aseqnum,
- astart,
- bencseq,
- idx->bseqnum,
- bstart,
- seedlength,
- query_readmode);
+ GtUword apos = gt_seedpairlist_extract_ulong(seedpairlist,*nextsegm,
+ idx_apos);
+
+ spp_ptr->bpos
+ = gt_seedpairlist_extract_ulong(seedpairlist,*nextsegm,idx_bpos);
+ spp_ptr->apos = apos;
+ if (!seedpairlist->maxmat_compute)
+ {
+ gt_diagband_struct_single_update(diagband_struct,
+ spp_ptr->apos,
+ spp_ptr->bpos,
+ (GtDiagbandseedPosition)
+ seedlength);
}
- count_extensions++;
- if (querymatch != NULL) {
- firstinrange = false;
- /* show extension results */
- if (gt_querymatch_check_final(querymatch, arg->errorpercentage,
- arg->userdefinedleastlength))
+ spp_ptr++;
+ nextsegm++;
+ } while (nextsegm < mlistend &&
+ currsegm_a_bseqnum ==
+ (nextsegm_a_bseqnum =
+ gt_seedpairlist_a_bseqnum_ulong (seedpairlist,*nextsegm)));
+
+ if (esi != NULL)
+ {
+ gt_diagbandseed_plainsequence_next_segment(&esi->plainsequence_info,
+ aseqranges,
+ currsegm_aseqnum,
+ bseqranges,
+ currsegm_bseqnum);
+ }
+
+ /* from here on we only need the apos and bpos values of the segment, as
+ the segment boundaries have been identified.
+ second scan: test for mincoverage and overlap to previous extension,
+ based on apos and bpos values. */
+ segment_length = (GtUword) (nextsegm - currsegm);
+ GT_DIAGBANDSEED_PROCESS_SEGMENT;
+ }
+ } else
+ {
+ GtDiagbandseedSeedPair nextsegment;
+ const GtUword minsegmentlen_offset = (minsegmentlen - 1) *
+ seedpairlist->bytes_seedpair,
+ last_segment_offset = (mlistlen - minsegmentlen) *
+ seedpairlist->bytes_seedpair,
+ mlistlen_offset = mlistlen * seedpairlist->bytes_seedpair;
+ GtUword nextsegment_offset = 0, segment_length;
+
+ gt_assert(seedpairlist->splt == GT_DIAGBANDSEED_SPLT_BYTESTRING);
+ /* iterate through segments of equal k-mers, segment has length > 0 */
+ gt_diagbandseed_decode_seedpair(&nextsegment,seedpairlist,0);
+ while (nextsegment_offset <= last_segment_offset)
+ {
+ GtSeedpairPositions *spp_ptr, *segment_positions;
+ GtDiagbandseedSeedPair endminsegment;
+ GtDiagbandseedSeqnum currsegm_aseqnum = nextsegment.aseqnum;
+ GtDiagbandseedSeqnum currsegm_bseqnum = nextsegment.bseqnum;
+
+ gt_diagbandseed_decode_seedpair(&endminsegment,seedpairlist,
+ nextsegment_offset +
+ minsegmentlen_offset);
+ if (currsegm_aseqnum != endminsegment.aseqnum ||
+ currsegm_bseqnum != endminsegment.bseqnum)
+ {
+ /* insuffienct number of kmers in segment: skip whole segment */
+ while (true)
+ {
+ nextsegment_offset += seedpairlist->bytes_seedpair;
+ if (nextsegment_offset >= mlistlen_offset)
+ {
+ break;
+ }
+ gt_diagbandseed_decode_seedpair(&nextsegment,seedpairlist,
+ nextsegment_offset);
+ if (currsegm_aseqnum != nextsegment.aseqnum ||
+ currsegm_bseqnum != nextsegment.bseqnum)
{
- gt_querymatch_prettyprint(querymatch);
+ break;
}
}
+ continue; /* process next segment */
}
- }
- }
- /* reset diagonal band scores */
- for (idx = currsegm; idx < nextsegm; idx++) {
- diag = (amaxlen + (GtUword)idx->bpos - (GtUword)idx->apos)
- >> arg->logdiagbandwidth;
- score[diag + 1] = 0;
- lastp[diag] = 0;
+ spp_ptr = segment_positions
+ = (GtSeedpairPositions *)
+ (gt_seedpairlist_mlist_bytestring(seedpairlist) +
+ nextsegment_offset);
+ do
+ {
+ if (!seedpairlist->maxmat_compute)
+ {
+ gt_diagband_struct_single_update(
+ diagband_struct,
+ GT_DIAGBANDSEED_GETPOS_A(&nextsegment),
+ GT_DIAGBANDSEED_GETPOS_B(&nextsegment),
+ (GtDiagbandseedPosition) seedlength);
+ }
+ spp_ptr->apos = GT_DIAGBANDSEED_GETPOS_A(&nextsegment);
+ spp_ptr->bpos = GT_DIAGBANDSEED_GETPOS_B(&nextsegment);
+ spp_ptr++;
+ nextsegment_offset += seedpairlist->bytes_seedpair;
+ if (nextsegment_offset >= mlistlen_offset)
+ {
+ break;
+ }
+ gt_diagbandseed_decode_seedpair(&nextsegment,seedpairlist,
+ nextsegment_offset);
+ } while (currsegm_aseqnum == nextsegment.aseqnum &&
+ currsegm_bseqnum == nextsegment.bseqnum);
+
+ /* from here on we only need the apos and bpos values of the segment, as
+ the segment boundaries have been identified.
+ second scan: test for mincoverage and overlap to previous extension,
+ based on apos and bpos values. */
+ currsegm_aseqnum += seedpairlist->aseqrange_start;
+ currsegm_bseqnum += seedpairlist->bseqrange_start;
+ if (esi != NULL)
+ {
+ gt_diagbandseed_plainsequence_next_segment(&esi->plainsequence_info,
+ aseqranges,
+ currsegm_aseqnum,
+ bseqranges,
+ currsegm_bseqnum);
+ }
+ segment_length = (GtUword) (spp_ptr - segment_positions);
+ GT_DIAGBANDSEED_PROCESS_SEGMENT;
+ }
}
-
-#ifdef GT_DIAGBANDSEED_SEEDHISTOGRAM
- seedhistogram[MIN(GT_DIAGBANDSEED_SEEDHISTOGRAM - 1, seedcount)]++;
- seedcount = 0;
-#endif
}
- gt_querymatch_delete(info_querymatch.querymatchspaceptr);
- gt_free(score);
- gt_free(lastp);
-
-#ifdef GT_DIAGBANDSEED_SEEDHISTOGRAM
- fprintf(stream, "# seed histogram:");
- for (seedcount = 0; seedcount < GT_DIAGBANDSEED_SEEDHISTOGRAM; seedcount++) {
- if (seedcount % 10 == 0) {
- fprintf(stream, "\n#\t");
+ if (diagband_struct != NULL)
+ {
+ if (verbose)
+ {
+ gt_diagband_struct_reset_counts(diagband_struct,stream);
}
- fprintf(stream, GT_WU "\t", seedhistogram[seedcount]);
+ gt_diagband_struct_delete(diagband_struct);
}
- fprintf(stream, "\n");
- gt_free(seedhistogram);
+ if (verbose)
+ {
+ if (dbs_state != NULL)
+ {
+ const GtUword numseqpairs = (seedpairlist->aseqrange_end -
+ seedpairlist->aseqrange_start + 1) *
+ (seedpairlist->bseqrange_end -
+ seedpairlist->bseqrange_start + 1);
+ gt_diagbandseed_dbs_state_update(dbs_state,mlistlen,numseqpairs);
+#ifndef _WIN32
+ dbs_state->total_process_seeds_usec
+ += gt_timer_elapsed_usec(timer);
#endif
- if (verbose) {
- fprintf(stream, "# ...finished " GT_WU " seed pair extension%s ",
- count_extensions, count_extensions > 1 ? "s" : "");
- gt_timer_show_formatted(timer, "in " GT_WD ".%06ld seconds.\n", stream);
+ }
gt_timer_delete(timer);
}
+ gt_diagbandseed_extendSI_delete(esi);
+ if (diagband_statistics != NULL)
+ {
+ gt_diagband_statistics_display(diagband_statistics);
+ gt_diagband_statistics_delete(diagband_statistics);
+ }
}
/* * * * * ALGORITHM STEPS * * * * */
static char *gt_diagbandseed_kmer_filename(const GtEncseq *encseq,
+ unsigned int seedweight,
unsigned int seedlength,
bool forward,
unsigned int numparts,
@@ -1195,12 +3493,17 @@ static char *gt_diagbandseed_kmer_filename(const GtEncseq *encseq,
{
char *filename;
GtStr *str = gt_str_new_cstr(gt_encseq_indexname(encseq));
+ if (seedweight < seedlength)
+ {
+ gt_str_append_char(str, '.');
+ gt_str_append_uint(str, seedweight);
+ }
gt_str_append_char(str, '.');
gt_str_append_uint(str, seedlength);
gt_str_append_char(str, forward ? 'f' : 'r');
gt_str_append_uint(str, numparts);
gt_str_append_char(str, '-');
- gt_str_append_uint(str, partindex);
+ gt_str_append_uint(str, partindex + 1);
gt_str_append_cstr(str, ".kmer");
filename = gt_cstr_dup(gt_str_get(str));
gt_str_delete(str);
@@ -1211,48 +3514,78 @@ static char *gt_diagbandseed_kmer_filename(const GtEncseq *encseq,
static int gt_diagbandseed_algorithm(const GtDiagbandseedInfo *arg,
const GtArrayGtDiagbandseedKmerPos *alist,
FILE *stream,
- const GtRange *aseqrange,
- const GtRange *bseqrange,
- GtUwordPair partindex,
+ const GtEncseq *aencseq,
+ const GtSequencePartsInfo *aseqranges,
+ GtUword aidx,
+ const GtEncseq *bencseq,
+ const GtSequencePartsInfo *bseqranges,
+ GtUword bidx,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ GtDiagbandseedState
+ *dbs_state,
+ GtFtTrimstat *trimstat,
GtError *err)
{
GtArrayGtDiagbandseedKmerPos blist;
- GtArrayGtDiagbandseedSeedPair mlist, mrevlist;
+ GtSeedpairlist *seedpairlist = NULL;
GtDiagbandseedKmerIterator *aiter = NULL, *biter = NULL;
- GtUword alen = 0, blen = 0, mlen = 0, mrevlen = 0, maxfreq, len_used;
+ GtUword alen = 0, blen = 0, mlistlen = 0, maxfreq, len_used;
GtRange seedpairdistance = *arg->seedpairdistance;
char *blist_file = NULL;
int had_err = 0;
bool alist_blist_id, both_strands, selfcomp, equalranges, use_blist = false;
- GtDiagbandseedExtendParams *extp = NULL;
- Polishing_info *pol_info = NULL;
+ size_t sizeofunit;
+ const GtDiagbandseedExtendParams *extp = NULL;
+ GtFtPolishing_info *pol_info = NULL;
void *processinfo = NULL;
GtQuerymatchoutoptions *querymoutopt = NULL;
-
- gt_assert(arg != NULL && aseqrange != NULL && bseqrange != NULL);
-
+ GtSegmentRejectInfo *segment_reject_info = NULL;
+ GtSegmentRejectFunc segment_reject_func = NULL;
+ const GtUword anumseqranges = gt_sequence_parts_info_number(aseqranges),
+ bnumseqranges = gt_sequence_parts_info_number(bseqranges),
+ amaxlen = gt_encseq_max_seq_length(aencseq);
+ GtArrayGtDiagbandseedMaximalmatch *memstore = NULL;
+ GtChain2Dimmode *chainmode = NULL;
+
+ gt_assert(arg != NULL);
maxfreq = arg->maxfreq;
selfcomp = (arg->bencseq == arg->aencseq &&
- gt_range_overlap(aseqrange, bseqrange))
+ gt_sequence_parts_info_overlap(aseqranges,aidx,bseqranges,bidx))
? true : false;
- equalranges = gt_range_compare(aseqrange, bseqrange) == 0 ? true : false;
- alist_blist_id = selfcomp && !arg->nofwd && equalranges ? true : false;
+ equalranges = gt_sequence_parts_info_equal(aseqranges,aidx,bseqranges,bidx);
+ alist_blist_id = (selfcomp && !arg->nofwd && equalranges) ? true : false;
both_strands = (arg->norev || arg->nofwd) ? false : true;
if (!alist_blist_id) {
seedpairdistance.start = 0UL;
}
-
- if (arg->verbose && (arg->anumseqranges > 1 || arg->bnumseqranges > 1)) {
- fprintf(stream, "# Process part " GT_WU " vs part " GT_WU "\n",
- partindex.a + 1, partindex.b + 1);
+ if (arg->verbose && (anumseqranges > 1 || bnumseqranges > 1))
+ {
+ fprintf(stream, "# process part " GT_WU " (sequences " GT_WU "..." GT_WU
+ ") vs part " GT_WU " (sequences " GT_WU "..." GT_WU ")\n",
+ aidx + 1,
+ gt_sequence_parts_info_start_get(aseqranges,aidx),
+ gt_sequence_parts_info_end_get(aseqranges,aidx),
+ bidx + 1,
+ gt_sequence_parts_info_start_get(bseqranges,bidx),
+ gt_sequence_parts_info_end_get(bseqranges,bidx));
+ }
+ extp = arg->extp;
+ if (gt_querymatch_fstperquery_display(extp->out_display_flag))
+ {
+ segment_reject_func = gt_segment_reject_check;
+ segment_reject_info
+ = gt_segment_reject_info_new(
+ gt_sequence_parts_info_start_get(bseqranges,bidx),
+ gt_sequence_parts_info_numofsequences_get(bseqranges,bidx));
}
/* Create k-mer iterator for alist */
if (alist == NULL) {
char *alist_file;
- alist_file = gt_diagbandseed_kmer_filename(arg->aencseq, arg->seedlength,
- true, arg->anumseqranges,
- partindex.a);
+ alist_file = gt_diagbandseed_kmer_filename(arg->aencseq, arg->seedweight,
+ arg->seedlength,
+ true, anumseqranges,aidx);
FILE *alist_fp = gt_fa_fopen(alist_file, "rb", err);
if (alist_fp == NULL) {
return -1;
@@ -1272,9 +3605,9 @@ static int gt_diagbandseed_algorithm(const GtDiagbandseedInfo *arg,
biter = gt_diagbandseed_kmer_iter_new_list(alist);
blen = alen;
} else if (arg->use_kmerfile) {
- blist_file = gt_diagbandseed_kmer_filename(arg->bencseq, arg->seedlength,
- !arg->nofwd, arg->bnumseqranges,
- partindex.b);
+ blist_file = gt_diagbandseed_kmer_filename(arg->bencseq, arg->seedweight,
+ arg->seedlength,
+ !arg->nofwd, bnumseqranges,bidx);
if (!gt_file_exists(blist_file)) {
gt_free(blist_file);
blist_file = NULL;
@@ -1293,17 +3626,20 @@ static int gt_diagbandseed_algorithm(const GtDiagbandseedInfo *arg,
gt_free(blist_file);
blist_file = NULL;
} else if (!alist_blist_id) {
- const GtReadmode readmode = arg->nofwd ? GT_READMODE_COMPL
- : GT_READMODE_FORWARD;
+ const GtReadmode readmode_kmerscan = arg->nofwd ? GT_READMODE_COMPL
+ : GT_READMODE_FORWARD;
const GtUword known_size = (selfcomp && equalranges) ? alen : 0;
- blist = gt_diagbandseed_get_kmers(arg->bencseq,
- arg->seedlength,
- readmode,
- bseqrange,
- arg->debug_kmer,
- arg->verbose,
- known_size,
- stream);
+ blist = gt_diagbandseed_get_kmers(
+ arg->bencseq,
+ arg->seedweight,
+ arg->seedlength,
+ readmode_kmerscan,
+ gt_sequence_parts_info_start_get(bseqranges,bidx),
+ gt_sequence_parts_info_end_get(bseqranges,bidx),
+ arg->debug_kmer,
+ arg->verbose,
+ known_size,
+ stream);
blen = blist.nextfreeGtDiagbandseedKmerPos;
biter = gt_diagbandseed_kmer_iter_new_list(&blist);
use_blist = true;
@@ -1313,236 +3649,323 @@ static int gt_diagbandseed_algorithm(const GtDiagbandseedInfo *arg,
if (!selfcomp || !arg->norev) {
len_used += blen;
}
- had_err = gt_diagbandseed_get_mlen_maxfreq(&mlen,
- &maxfreq,
- aiter,
- biter,
- arg->memlimit,
- &seedpairdistance,
- len_used,
- selfcomp,
- alist_blist_id,
- arg->verbose,
- stream,
- err);
-
+ seedpairlist = gt_seedpairlist_new(arg->splt,aseqranges,aidx,bseqranges,bidx,
+ arg->maxmat,amaxlen);
+ sizeofunit = gt_seedpairlist_sizeofunit(seedpairlist);
+ if (seedpairlist->maxmat_compute && !seedpairlist->maxmat_show)
+ {
+ memstore = gt_malloc(sizeof *memstore);
+ GT_INITARRAY(memstore,GtDiagbandseedMaximalmatch);
+ if (gt_str_length(arg->chainarguments) > 0)
+ {
+ chainmode = gt_chain_chainmode_new(GT_UWORD_MAX,
+ false,
+ NULL,
+ true,
+ gt_str_get(arg->chainarguments),
+ err);
+ if (chainmode == NULL)
+ {
+ had_err = -1;
+ }
+ }
+ }
+ if (!had_err && !seedpairlist->maxmat_show && arg->memlimit < GT_UWORD_MAX)
+ {
+ had_err = gt_diagbandseed_get_mlistlen_maxfreq(&mlistlen,
+ &maxfreq,
+ aiter,
+ biter,
+ arg->memlimit,
+ sizeofunit,
+ &seedpairdistance,
+ len_used,
+ selfcomp,
+ alist_blist_id,
+ arg->verbose,
+ stream,
+ err);
+ }
if (!had_err) {
gt_diagbandseed_kmer_iter_reset(aiter);
gt_diagbandseed_kmer_iter_reset(biter);
- mlist = gt_diagbandseed_get_seedpairs(aiter,
- biter,
- maxfreq,
- mlen,
- &seedpairdistance,
- selfcomp,
- arg->debug_seedpair,
- arg->verbose,
- stream);
- mlen = mlist.nextfreeGtDiagbandseedSeedPair;
-
- if (arg->verify && mlen > 0) {
- had_err = gt_diagbandseed_verify(arg->aencseq,
+ if (arg->verbose)
+ {
+ gt_seedpairlist_show_bits(stream,seedpairlist);
+ }
+ gt_diagbandseed_get_seedpairs(seedpairlist,
+ aiter,
+ biter,
+ maxfreq,
+ mlistlen,
+ &seedpairdistance,
+ selfcomp,
+ arg->debug_seedpair,
+ arg->verbose,
+ stream);
+ mlistlen = gt_seedpairlist_length(seedpairlist);
+ if (arg->verify && mlistlen > 0) {
+ had_err = gt_diagbandseed_verify(seedpairlist,
+ arg->aencseq,
arg->bencseq,
- &mlist,
arg->seedlength,
arg->nofwd,
arg->verbose,
stream,
err);
if (had_err) {
- GT_FREEARRAY(&mlist, GtDiagbandseedSeedPair);
+ gt_seedpairlist_delete(seedpairlist);
+ seedpairlist = NULL;
}
}
+ } else
+ {
+ gt_seedpairlist_delete(seedpairlist);
+ seedpairlist = NULL;
}
-
if (use_blist) {
GT_FREEARRAY(&blist, GtDiagbandseedKmerPos);
}
use_blist = false;
gt_diagbandseed_kmer_iter_delete(biter);
- if (had_err) {
- gt_diagbandseed_kmer_iter_delete(aiter);
- return had_err;
- }
+ biter = NULL;
/* Create extension info objects */
- extp = arg->extp;
- if (extp->extendgreedy) {
- GtGreedyextendmatchinfo *grextinfo = NULL;
- const double weak_errorperc = (double)(extp->weakends
- ? MAX(extp->errorpercentage, 20)
- : extp->errorpercentage);
-
- pol_info = polishing_info_new_with_bias(weak_errorperc,
- extp->matchscore_bias,
- extp->history_size);
- grextinfo = gt_greedy_extend_matchinfo_new(extp->errorpercentage,
- extp->maxalignedlendifference,
- extp->history_size,
- extp->perc_mat_history,
- extp->userdefinedleastlength,
- extp->extend_char_access,
- extp->sensitivity,
- pol_info);
- if (extp->benchmark) {
- gt_greedy_extend_matchinfo_silent_set(grextinfo);
- }
- processinfo = (void *)grextinfo;
- } else if (extp->extendxdrop) {
- GtXdropmatchinfo *xdropinfo = NULL;
- gt_assert(extp->extendgreedy == false);
- xdropinfo = gt_xdrop_matchinfo_new(extp->userdefinedleastlength,
+ if (!had_err)
+ {
+ if (extp->extendgreedy) {
+ GtGreedyextendmatchinfo *grextinfo = NULL;
+ const double weak_errorperc = (double)(extp->weakends
+ ? MAX(extp->errorpercentage, 20)
+ : extp->errorpercentage);
+
+ pol_info = polishing_info_new_with_bias(weak_errorperc,
+ extp->matchscore_bias,
+ extp->history_size);
+ grextinfo = gt_greedy_extend_matchinfo_new(extp->maxalignedlendifference,
+ extp->history_size,
+ extp->perc_mat_history,
+ extp->userdefinedleastlength,
+ extp->errorpercentage,
+ extp->evalue_threshold,
+ extp->a_extend_char_access,
+ extp->b_extend_char_access,
+ extp->cam_generic,
+ extp->sensitivity,
+ pol_info);
+ if (trimstat != NULL)
+ {
+ gt_greedy_extend_matchinfo_trimstat_set(grextinfo,trimstat);
+ }
+ processinfo = (void *) grextinfo;
+ } else if (extp->extendxdrop) {
+ GtXdropmatchinfo *xdropinfo = NULL;
+ gt_assert(extp->extendgreedy == false);
+ xdropinfo = gt_xdrop_matchinfo_new(extp->userdefinedleastlength,
+ extp->errorpercentage,
+ extp->evalue_threshold,
+ extp->xdropbelowscore,
+ extp->sensitivity);
+ processinfo = (void *) xdropinfo;
+ }
+ if (extp->extendxdrop || extp->verify_alignment ||
+ gt_querymatch_alignment_display(extp->out_display_flag) ||
+ gt_querymatch_trace_display(extp->out_display_flag) ||
+ gt_querymatch_dtrace_display(extp->out_display_flag) ||
+ gt_querymatch_cigar_display(extp->out_display_flag) ||
+ gt_querymatch_cigarX_display(extp->out_display_flag))
+ {
+ querymoutopt = gt_querymatchoutoptions_new(extp->out_display_flag,
+ NULL,
+ NULL);
+ gt_assert(querymoutopt != NULL);
+ if (extp->extendxdrop || extp->extendgreedy) {
+ const GtUword sensitivity = extp->extendxdrop ? 100UL
+ : extp->sensitivity;
+ gt_querymatchoutoptions_extend(querymoutopt,
extp->errorpercentage,
- extp->xdropbelowscore,
- extp->sensitivity);
- if (extp->benchmark) {
- gt_xdrop_matchinfo_silent_set(xdropinfo);
- }
- processinfo = (void *)xdropinfo;
- }
- if (extp->extendxdrop || extp->alignmentwidth > 0) {
- querymoutopt = gt_querymatchoutoptions_new(true,
- false,
- extp->alignmentwidth);
- if (extp->extendxdrop || extp->extendgreedy) {
- const GtUword sensitivity = extp->extendxdrop ? 100UL : extp->sensitivity;
- gt_querymatchoutoptions_extend(querymoutopt,
- extp->errorpercentage,
- extp->maxalignedlendifference,
- extp->history_size,
- extp->perc_mat_history,
- extp->extend_char_access,
- extp->weakends,
- sensitivity,
- extp->matchscore_bias,
- extp->always_polished_ends,
- extp->display_flag);
- }
- }
-
- /* process first mlist */
- gt_diagbandseed_process_seeds(&mlist,
- arg->extp,
- processinfo,
- querymoutopt,
- arg->aencseq,
- arg->bencseq,
- arg->seedlength,
- arg->nofwd,
- arg->verbose,
- stream);
- GT_FREEARRAY(&mlist, GtDiagbandseedSeedPair);
-
- /* Third (reverse) k-mer list */
- if (both_strands) {
- GtArrayGtDiagbandseedKmerPos clist;
- gt_assert(blist_file == NULL && !use_blist);
- seedpairdistance.start = 0UL;
- if (arg->use_kmerfile) {
- blist_file = gt_diagbandseed_kmer_filename(arg->bencseq, arg->seedlength,
- false, arg->bnumseqranges,
- partindex.b);
- if (!gt_file_exists(blist_file)) {
- gt_free(blist_file);
- blist_file = NULL;
+ extp->evalue_threshold,
+ extp->maxalignedlendifference,
+ extp->history_size,
+ extp->perc_mat_history,
+ extp->a_extend_char_access,
+ extp->b_extend_char_access,
+ extp->cam_generic,
+ extp->weakends,
+ sensitivity,
+ extp->matchscore_bias,
+ extp->always_polished_ends,
+ extp->out_display_flag);
}
}
- if (blist_file != NULL) {
- FILE *blist_fp = gt_fa_fopen(blist_file, "rb", err);
- if (blist_fp == NULL) {
- had_err = -1;
+ /* process first mlist */
+ gt_assert(seedpairlist != NULL);
+ gt_diagbandseed_process_seeds(seedpairlist,
+ arg->extp,
+ processinfo,
+ querymoutopt,
+ aencseq,aseqranges,aidx,
+ bencseq,bseqranges,bidx,
+ karlin_altschul_stat,
+ memstore,
+ chainmode,
+ arg->seedlength,
+ arg->nofwd ? GT_READMODE_REVCOMPL
+ : GT_READMODE_FORWARD,
+ arg->verbose,
+ stream,
+ arg->diagband_statistics_arg,
+ dbs_state,
+ segment_reject_func,
+ segment_reject_info);
+ gt_seedpairlist_reset(seedpairlist);
+ gt_querymatchoutoptions_reset(querymoutopt);
+
+ /* Third (reverse) k-mer list */
+ if (both_strands) {
+ GtUword mrevlen = 0;
+ GtArrayGtDiagbandseedKmerPos clist;
+
+ gt_assert(blist_file == NULL && !use_blist);
+ seedpairdistance.start = 0UL;
+ if (arg->use_kmerfile) {
+ blist_file = gt_diagbandseed_kmer_filename(arg->bencseq,
+ arg->seedweight,
+ arg->seedlength,
+ false, bnumseqranges,
+ bidx);
+ if (!gt_file_exists(blist_file)) {
+ gt_free(blist_file);
+ blist_file = NULL;
+ }
+ }
+ if (blist_file != NULL) {
+ FILE *blist_fp = gt_fa_fopen(blist_file, "rb", err);
+ if (blist_fp == NULL) {
+ had_err = -1;
+ } else {
+ biter = gt_diagbandseed_kmer_iter_new_file(blist_fp);
+ }
+ gt_free(blist_file);
} else {
- biter = gt_diagbandseed_kmer_iter_new_file(blist_fp);
+ const GtReadmode readmode_kmerscan = GT_READMODE_COMPL;
+ clist = gt_diagbandseed_get_kmers(
+ arg->bencseq,
+ arg->seedweight,
+ arg->seedlength,
+ readmode_kmerscan,
+ gt_sequence_parts_info_start_get(bseqranges,bidx),
+ gt_sequence_parts_info_end_get(bseqranges,bidx),
+ arg->debug_kmer,
+ arg->verbose,
+ blen,
+ stream);
+ biter = gt_diagbandseed_kmer_iter_new_list(&clist);
+ use_blist = true;
}
- gt_free(blist_file);
- } else {
- clist = gt_diagbandseed_get_kmers(arg->bencseq,
- arg->seedlength,
- GT_READMODE_COMPL,
- bseqrange,
- arg->debug_kmer,
- arg->verbose,
- blen,
- stream);
- biter = gt_diagbandseed_kmer_iter_new_list(&clist);
- use_blist = true;
- }
- if (!had_err) {
- gt_diagbandseed_kmer_iter_reset(aiter);
- had_err = gt_diagbandseed_get_mlen_maxfreq(&mrevlen,
- &maxfreq,
- aiter,
- biter,
- arg->memlimit,
- &seedpairdistance,
- len_used,
- selfcomp,
- alist_blist_id,
- arg->verbose,
- stream,
- err);
- }
+ if (!had_err) {
+ gt_diagbandseed_kmer_iter_reset(aiter);
+ if (!seedpairlist->maxmat_show && arg->memlimit < GT_UWORD_MAX)
+ {
+ had_err = gt_diagbandseed_get_mlistlen_maxfreq(&mrevlen,
+ &maxfreq,
+ aiter,
+ biter,
+ arg->memlimit,
+ sizeofunit,
+ &seedpairdistance,
+ len_used,
+ selfcomp,
+ alist_blist_id,
+ arg->verbose,
+ stream,
+ err);
+ }
+ }
- if (!had_err) {
- gt_diagbandseed_kmer_iter_reset(aiter);
- gt_diagbandseed_kmer_iter_reset(biter);
- mrevlist = gt_diagbandseed_get_seedpairs(aiter,
- biter,
- maxfreq,
- mrevlen,
- &seedpairdistance,
- selfcomp,
- arg->debug_seedpair,
- arg->verbose,
- stream);
- mrevlen = mrevlist.nextfreeGtDiagbandseedSeedPair;
-
- if (arg->verify && mrevlen > 0) {
- had_err = gt_diagbandseed_verify(arg->aencseq,
- arg->bencseq,
- &mrevlist,
- arg->seedlength,
- true,
- arg->verbose,
- stream,
- err);
- if (had_err) {
- GT_FREEARRAY(&mlist, GtDiagbandseedSeedPair);
+ if (!had_err) {
+ gt_diagbandseed_kmer_iter_reset(aiter);
+ gt_diagbandseed_kmer_iter_reset(biter);
+ gt_diagbandseed_get_seedpairs(seedpairlist,
+ aiter,
+ biter,
+ maxfreq,
+ mrevlen,
+ &seedpairdistance,
+ selfcomp,
+ arg->debug_seedpair,
+ arg->verbose,
+ stream);
+ mrevlen = gt_seedpairlist_length(seedpairlist);
+ if (arg->verify && mrevlen > 0) {
+ had_err = gt_diagbandseed_verify(seedpairlist,
+ arg->aencseq,
+ arg->bencseq,
+ arg->seedlength,
+ true,
+ arg->verbose,
+ stream,
+ err);
+ if (had_err) {
+ gt_seedpairlist_delete(seedpairlist);
+ }
}
}
+ if (use_blist) {
+ GT_FREEARRAY(&clist, GtDiagbandseedKmerPos);
+ }
+ gt_diagbandseed_kmer_iter_delete(biter);
}
- if (use_blist) {
- GT_FREEARRAY(&clist, GtDiagbandseedKmerPos);
- }
- gt_diagbandseed_kmer_iter_delete(biter);
}
gt_diagbandseed_kmer_iter_delete(aiter);
/* Process second (reverse) mlist */
if (!had_err && both_strands) {
- gt_diagbandseed_process_seeds(&mrevlist,
+ gt_diagbandseed_process_seeds(seedpairlist,
arg->extp,
processinfo,
querymoutopt,
- arg->aencseq,
- arg->bencseq,
+ aencseq,aseqranges,aidx,
+ bencseq,bseqranges,bidx,
+ karlin_altschul_stat,
+ memstore,
+ chainmode,
arg->seedlength,
- true,
+ GT_READMODE_REVCOMPL,
arg->verbose,
- stream);
- GT_FREEARRAY(&mrevlist, GtDiagbandseedSeedPair);
+ stream,
+ arg->diagband_statistics_arg,
+ dbs_state,
+ segment_reject_func,
+ segment_reject_info);
}
-
/* Clean up */
- if (extp->extendgreedy) {
+ gt_seedpairlist_delete(seedpairlist);
+ if (memstore != NULL)
+ {
+ GT_FREEARRAY(memstore,GtDiagbandseedMaximalmatch);
+ if (chainmode != NULL)
+ {
+ gt_chain_chainmode_delete(chainmode);
+ }
+ gt_free(memstore);
+ }
+ if (extp->extendgreedy)
+ {
polishing_info_delete(pol_info);
- gt_greedy_extend_matchinfo_delete((GtGreedyextendmatchinfo *)processinfo);
- } else if (extp->extendxdrop) {
- gt_xdrop_matchinfo_delete((GtXdropmatchinfo *)processinfo);
+ gt_greedy_extend_matchinfo_delete((GtGreedyextendmatchinfo *) processinfo);
+ } else
+ {
+ if (extp->extendxdrop)
+ {
+ gt_xdrop_matchinfo_delete((GtXdropmatchinfo *) processinfo);
+ }
}
- if (extp->extendxdrop || extp->alignmentwidth > 0) {
- gt_querymatchoutoptions_delete(querymoutopt);
+ gt_querymatchoutoptions_delete(querymoutopt);
+ if (segment_reject_info != NULL)
+ {
+ gt_segment_reject_info_delete(segment_reject_info);
}
return had_err;
}
@@ -1552,20 +3975,26 @@ typedef struct{
const GtDiagbandseedInfo *arg;
const GtArrayGtDiagbandseedKmerPos *alist;
FILE *stream;
- const GtRange *aseqranges;
- const GtRange *bseqranges;
+ const GtEncseq *aencseq, *bencseq;
+ const GtSequencePartsInfo *aseqranges,
+ *bseqranges;
+ GtSegmentRejectFunc segment_reject_func;
GtArray *combinations;
int had_err;
GtError *err;
-}GtDiagbandseedThreadInfo;
+ const GtKarlinAltschulStat *karlin_altschul_stat;
+} GtDiagbandseedThreadInfo;
-static
-void gt_diagbandseed_thread_info_set(GtDiagbandseedThreadInfo *ti,
+static void gt_diagbandseed_thread_info_set(GtDiagbandseedThreadInfo *ti,
const GtDiagbandseedInfo *arg,
const GtArrayGtDiagbandseedKmerPos *alist,
FILE *stream,
- const GtRange *aseqranges,
- const GtRange *bseqranges,
+ const GtEncseq *aencseq,
+ const GtSequencePartsInfo *aseqranges,
+ const GtEncseq *bencseq,
+ const GtSequencePartsInfo *bseqranges,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
GtArray *combinations,
GtError *err)
{
@@ -1573,8 +4002,11 @@ void gt_diagbandseed_thread_info_set(GtDiagbandseedThreadInfo *ti,
ti->arg = arg;
ti->alist = alist;
ti->stream = stream;
+ ti->aencseq = aencseq;
ti->aseqranges = aseqranges;
+ ti->bencseq = bencseq;
ti->bseqranges = bseqranges;
+ ti->karlin_altschul_stat = karlin_altschul_stat;
ti->combinations = gt_array_clone(combinations);
ti->had_err = 0;
ti->err = err;
@@ -1583,18 +4015,25 @@ void gt_diagbandseed_thread_info_set(GtDiagbandseedThreadInfo *ti,
static void *gt_diagbandseed_thread_algorithm(void *thread_info)
{
GtDiagbandseedThreadInfo *info = (GtDiagbandseedThreadInfo *)thread_info;
- if (gt_array_size(info->combinations) != 0) {
- const GtUwordPair *last = gt_array_get_last(info->combinations);
- GtUwordPair *comb;
+ if (gt_array_size(info->combinations) > 0) {
+ const GtUwordPair *last = gt_array_get_last(info->combinations),
+ *comb;
for (comb = gt_array_get_first(info->combinations); comb <= last; comb++) {
- info->had_err = gt_diagbandseed_algorithm(info->arg,
- info->alist,
- info->stream,
- info->aseqranges + comb->a,
- info->bseqranges + comb->b,
- *comb,
- info->err);
+ info->had_err = gt_diagbandseed_algorithm(
+ info->arg,
+ info->alist,
+ info->stream,
+ info->aencseq,
+ info->aseqranges,
+ comb->a,
+ info->bencseq,
+ info->bseqranges,
+ comb->b,
+ info->karlin_altschul_stat,
+ NULL,
+ NULL,
+ info->err);
if (info->had_err) break;
}
}
@@ -1605,22 +4044,28 @@ static void *gt_diagbandseed_thread_algorithm(void *thread_info)
static int gt_diagbandseed_write_kmers(const GtArrayGtDiagbandseedKmerPos *list,
const char *path,
+ unsigned int seedweight,
unsigned int seedlength,
bool verbose,
GtError *err)
{
FILE *stream;
- const size_t nmemb = (size_t)(list->nextfreeGtDiagbandseedKmerPos);
- const void *contents = (const void *)(list->spaceGtDiagbandseedKmerPos);
if (verbose) {
- printf("# Write " GT_WU " %u-mers to file %s\n",
- (GtUword)nmemb, seedlength, path);
+ printf("# write " GT_WU " %u-mers ",
+ list->nextfreeGtDiagbandseedKmerPos, seedlength);
+ if (seedweight < seedlength)
+ {
+ printf("with weight %u ",seedweight);
+ }
+ printf("to file %s\n",path);
}
stream = gt_fa_fopen(path, "wb", err);
if (stream != NULL) {
- gt_xfwrite(contents, sizeof (GtDiagbandseedKmerPos), nmemb, stream);
+ gt_xfwrite(list->spaceGtDiagbandseedKmerPos,
+ sizeof *list->spaceGtDiagbandseedKmerPos,
+ list->nextfreeGtDiagbandseedKmerPos, stream);
gt_fa_fclose(stream);
return 0;
} else {
@@ -1628,28 +4073,96 @@ static int gt_diagbandseed_write_kmers(const GtArrayGtDiagbandseedKmerPos *list,
}
}
+static bool gt_create_or_update_file(const char *path,const GtEncseq *encseq)
+{
+ if (gt_file_exists(path))
+ {
+ GtStr *esqfile = gt_str_new_cstr(gt_encseq_indexname(encseq));
+
+ gt_str_append_cstr(esqfile, ".esq");
+ if (gt_file_is_newer(path,gt_str_get(esqfile)))
+ {
+ gt_str_delete(esqfile);
+ return false;
+ }
+ gt_str_delete(esqfile);
+ }
+ return true;
+}
+
+static void gt_diagbandseed_out_sequences_with_matches(
+ char seqtype,
+ const GtEncseq *encseq,
+ const GtBittab *used_sequences)
+{
+ GtUword seqnum, idx, numbits, max_seq_length;
+ char *buffer;
+
+ gt_assert(encseq != NULL && used_sequences != NULL);
+ numbits = gt_bittab_count_set_bits(used_sequences);
+ max_seq_length = gt_encseq_max_seq_length(encseq);
+ buffer = gt_malloc(sizeof *buffer * max_seq_length);
+ for (idx = 0, seqnum = gt_bittab_get_first_bitnum(used_sequences);
+ idx < numbits;
+ idx++, seqnum = gt_bittab_get_next_bitnum(used_sequences,seqnum))
+ {
+ const GtUword seqstartpos = gt_encseq_seqstartpos(encseq,seqnum),
+ seqlength = gt_encseq_seqlength(encseq,seqnum);
+ gt_encseq_extract_decoded(encseq,buffer,seqstartpos,
+ seqstartpos + seqlength - 1);
+ printf("S\t%c" GT_WU "\t" GT_WU "\t",seqtype,seqnum,seqlength);
+ fwrite(buffer,sizeof *buffer,seqlength,stdout);
+ fputc('\n',stdout);
+ }
+ gt_free(buffer);
+}
+
/* Run the algorithm by iterating over all combinations of sequence ranges. */
int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
- const GtRange *aseqranges,
- const GtRange *bseqranges,
+ const GtSequencePartsInfo *aseqranges,
+ const GtSequencePartsInfo *bseqranges,
+ const GtUwordPair *pick,
GtError *err)
{
const bool self = arg->aencseq == arg->bencseq ? true : false;
+ const bool apick = pick->a != GT_UWORD_MAX ? true : false;
+ const bool bpick = pick->b != GT_UWORD_MAX ? true : false;
GtArrayGtDiagbandseedKmerPos alist;
GtUword aidx, bidx;
int had_err = 0;
+ const GtUword anumseqranges = gt_sequence_parts_info_number(aseqranges),
+ bnumseqranges = gt_sequence_parts_info_number(bseqranges);
+ GtFtTrimstat *trimstat = NULL;
+ GtKarlinAltschulStat *karlin_altschul_stat = NULL;
+ GtDiagbandseedState *dbs_state = NULL;
#ifdef GT_THREADS_ENABLED
GtDiagbandseedThreadInfo *tinfo = gt_malloc(gt_jobs * sizeof *tinfo);
- FILE **stream;
+ FILE **stream_tab;
unsigned int tidx;
/* create output streams */
- stream = gt_malloc(gt_jobs * sizeof *stream);
- stream[0] = stdout;
+ stream_tab = gt_malloc(gt_jobs * sizeof *stream_tab);
+ stream_tab[0] = stdout;
for (tidx = 1; !had_err && tidx < gt_jobs; tidx++) {
- stream[tidx] = gt_xtmpfp_generic(NULL, TMPFP_OPENBINARY | TMPFP_AUTOREMOVE);
+ stream_tab[tidx]
+ = gt_xtmpfp_generic(NULL, TMPFP_OPENBINARY | TMPFP_AUTOREMOVE);
}
#endif
+ if (arg->verbose || gt_querymatch_gfa2_display(arg->extp->out_display_flag))
+ {
+ GtUword a_num_sequences = 0, b_num_sequences = 0;
+ if (gt_querymatch_gfa2_display(arg->extp->out_display_flag))
+ {
+ a_num_sequences = gt_encseq_num_of_sequences(arg->aencseq);
+ if (!self)
+ {
+ b_num_sequences = gt_encseq_num_of_sequences(arg->bencseq);
+ }
+ }
+ dbs_state = gt_diagbandseed_dbs_state_new(arg->verbose,
+ a_num_sequences,
+ b_num_sequences);
+ }
/* create all missing k-mer lists for bencseq */
if (arg->use_kmerfile) {
@@ -1659,21 +4172,32 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
if (fwd && (self || arg->nofwd)) continue;
if (!fwd && arg->norev) continue;
- for (bidx = 0; !had_err && bidx < arg->bnumseqranges; bidx++) {
- char *path = gt_diagbandseed_kmer_filename(arg->bencseq,
- arg->seedlength,
- fwd,
- arg->bnumseqranges,
- bidx);
- if (!gt_file_exists(path)) {
- GtArrayGtDiagbandseedKmerPos blist;
- GtReadmode readmode = fwd ? GT_READMODE_FORWARD : GT_READMODE_COMPL;
+ for (bidx = 0; !had_err && bidx < bnumseqranges; bidx++) {
+ char *path;
+ if (bpick && pick->b != bidx) continue;
- blist = gt_diagbandseed_get_kmers(arg->bencseq, arg->seedlength,
- readmode, bseqranges + bidx,
- arg->debug_kmer, arg->verbose, 0,
- stdout);
- had_err = gt_diagbandseed_write_kmers(&blist, path, arg->seedlength,
+ path = gt_diagbandseed_kmer_filename(arg->bencseq, arg->seedweight,
+ arg->seedlength, fwd,
+ bnumseqranges, bidx);
+ if (gt_create_or_update_file(path,arg->bencseq))
+ {
+ GtArrayGtDiagbandseedKmerPos blist;
+ GtReadmode readmode_kmerscan = fwd ? GT_READMODE_FORWARD
+ : GT_READMODE_COMPL;
+
+ blist = gt_diagbandseed_get_kmers(
+ arg->bencseq,
+ arg->seedweight,
+ arg->seedlength,
+ readmode_kmerscan,
+ gt_sequence_parts_info_start_get(bseqranges,bidx),
+ gt_sequence_parts_info_end_get(bseqranges,bidx),
+ arg->debug_kmer,
+ arg->verbose,
+ 0,
+ stdout);
+ had_err = gt_diagbandseed_write_kmers(&blist, path, arg->seedweight,
+ arg->seedlength,
arg->verbose, err);
GT_FREEARRAY(&blist, GtDiagbandseedKmerPos);
}
@@ -1681,28 +4205,62 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
}
}
}
+ if (!had_err && arg->trimstat_on)
+ {
+ trimstat = gt_ft_trimstat_new();
+ }
+ if (gt_querymatch_evalue_display(arg->extp->out_display_flag) ||
+ gt_querymatch_bitscore_display(arg->extp->out_display_flag) ||
+ arg->extp->evalue_threshold != DBL_MAX)
+ {
+ GtTimer *timer = NULL;
- for (aidx = 0; !had_err && aidx < arg->anumseqranges; aidx++) {
+ if (arg->verbose)
+ {
+ timer = gt_timer_new();
+ gt_timer_start(timer);
+ }
+ karlin_altschul_stat = gt_karlin_altschul_stat_new_gapped(
+ gt_encseq_total_length(arg->aencseq),
+ gt_encseq_num_of_sequences(arg->aencseq),
+ arg->bencseq);
+ if (arg->verbose)
+ {
+ gt_timer_show_formatted(timer,
+ "# ... computed lookup table for E-values "
+ GT_DIAGBANDSEED_FMT,stdout);
+ gt_timer_delete(timer);
+ }
+ }
+ for (aidx = 0; !had_err && aidx < anumseqranges; aidx++) {
/* create alist here to prevent redundant calculations */
char *path = NULL;
bool use_alist = false;
+ if (apick && pick->a != aidx) continue;
+
if (arg->use_kmerfile) {
- path = gt_diagbandseed_kmer_filename(arg->aencseq, arg->seedlength, true,
- arg->anumseqranges, aidx);
+ path = gt_diagbandseed_kmer_filename(arg->aencseq, arg->seedweight,
+ arg->seedlength, true,
+ anumseqranges, aidx);
}
- if (!arg->use_kmerfile || !gt_file_exists(path)) {
+ if (!arg->use_kmerfile || gt_create_or_update_file(path,arg->aencseq))
+ {
use_alist = true;
- alist = gt_diagbandseed_get_kmers(arg->aencseq,
- arg->seedlength,
- GT_READMODE_FORWARD,
- aseqranges + aidx,
- arg->debug_kmer,
- arg->verbose,
- 0,
- stdout);
+ alist = gt_diagbandseed_get_kmers(
+ arg->aencseq,
+ arg->seedweight,
+ arg->seedlength,
+ GT_READMODE_FORWARD,
+ gt_sequence_parts_info_start_get(aseqranges,aidx),
+ gt_sequence_parts_info_end_get(aseqranges,aidx),
+ arg->debug_kmer,
+ arg->verbose,
+ 0,
+ stdout);
if (arg->use_kmerfile) {
- had_err = gt_diagbandseed_write_kmers(&alist, path, arg->seedlength,
+ had_err = gt_diagbandseed_write_kmers(&alist, path, arg->seedweight,
+ arg->seedlength,
arg->verbose, err);
}
}
@@ -1714,35 +4272,40 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
#ifdef GT_THREADS_ENABLED
if (gt_jobs <= 1) {
#endif
- while (!had_err && bidx < arg->bnumseqranges) {
- const GtUwordPair partindex = {aidx, bidx};
- /* start algorithm with chosen sequence ranges */
- had_err = gt_diagbandseed_algorithm(arg,
- use_alist ? &alist : NULL,
- stdout,
- aseqranges + aidx,
- bseqranges + bidx,
- partindex,
- err);
+ while (!had_err && bidx < bnumseqranges) {
+ if (!bpick || pick->b == bidx) {
+ /* start algorithm with chosen sequence ranges */
+ had_err = gt_diagbandseed_algorithm(
+ arg,
+ use_alist ? &alist : NULL,
+ stdout,
+ arg->aencseq,aseqranges,aidx,
+ arg->bencseq,bseqranges,bidx,
+ karlin_altschul_stat,
+ dbs_state,
+ trimstat,
+ err);
+ }
bidx++;
}
#ifdef GT_THREADS_ENABLED
} else if (!arg->use_kmerfile) {
- const GtUword num_runs = arg->bnumseqranges - bidx;
+ const GtUword num_runs = bpick ? 1 : bnumseqranges - bidx;
const GtUword num_runs_per_thread = (num_runs - 1) / gt_jobs + 1;
const GtUword num_threads = (num_runs - 1) / num_runs_per_thread + 1;
GtArray *combinations = gt_array_new(sizeof (GtUwordPair));
GtArray *threads = gt_array_new(sizeof (GtThread *));
- gt_assert(bidx < arg->bnumseqranges);
+ gt_assert(bidx < bnumseqranges);
gt_assert(num_threads <= gt_jobs);
+ gt_assert(!bpick || num_threads == 1);
/* start additional threads */
for (tidx = 1; !had_err && tidx < num_threads; tidx++) {
GtThread *thread;
GtUword idx;
bidx += num_runs_per_thread;
- const GtUword end = MIN(bidx + num_runs_per_thread, arg->bnumseqranges);
+ const GtUword end = MIN(bidx + num_runs_per_thread, bnumseqranges);
for (idx = bidx; idx < end; idx++) {
GtUwordPair comb = {aidx, idx};
@@ -1751,9 +4314,12 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
gt_diagbandseed_thread_info_set(tinfo + tidx,
arg,
use_alist ? &alist : NULL,
- stream[tidx],
+ stream_tab[tidx],
+ arg->aencseq,
aseqranges,
+ arg->bencseq,
bseqranges,
+ karlin_altschul_stat,
combinations,
err);
gt_array_reset(combinations);
@@ -1767,18 +4333,25 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
/* start main thread */
if (!had_err) {
- for (bidx = self ? aidx : 0;
- bidx < MIN(bidx + num_runs_per_thread, arg->bnumseqranges);
- bidx++) {
- GtUwordPair comb = {aidx, bidx};
- gt_array_add(combinations, comb);
+ GtUword idx;
+ bidx = self ? aidx : 0;
+ for (idx = bidx;
+ idx < MIN(bidx + num_runs_per_thread, bnumseqranges);
+ ++idx) {
+ if (!bpick || pick->b == idx) {
+ GtUwordPair comb = {aidx, idx};
+ gt_array_add(combinations, comb);
+ }
}
gt_diagbandseed_thread_info_set(tinfo,
arg,
use_alist ? &alist : NULL,
- stream[0],
+ stream_tab[0],
+ arg->aencseq,
aseqranges,
+ arg->bencseq,
bseqranges,
+ karlin_altschul_stat,
combinations,
err);
gt_diagbandseed_thread_algorithm(tinfo);
@@ -1811,10 +4384,13 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
for (tidx = 0; tidx < gt_jobs; tidx++) {
combinations[tidx] = gt_array_new(sizeof (GtUwordPair));
}
- for (aidx = 0; aidx < arg->anumseqranges; aidx++) {
- for (bidx = self ? aidx : 0; bidx < arg->bnumseqranges; bidx++) {
- GtUwordPair comb = {aidx, bidx};
- gt_array_add(combinations[counter++ % gt_jobs], comb);
+ for (aidx = 0; aidx < anumseqranges; aidx++) {
+ if (apick && pick->a != aidx) continue;
+ for (bidx = self ? aidx : 0; bidx < bnumseqranges; bidx++) {
+ if (!bpick || pick->b == bidx) {
+ GtUwordPair comb = {aidx, bidx};
+ gt_array_add(combinations[counter++ % gt_jobs], comb);
+ }
}
}
@@ -1823,9 +4399,12 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
gt_diagbandseed_thread_info_set(tinfo + tidx,
arg,
NULL,
- stream[tidx],
+ stream_tab[tidx],
+ arg->aencseq,
aseqranges,
+ arg->bencseq,
bseqranges,
+ karlin_altschul_stat,
combinations[tidx],
err);
if ((thread = gt_thread_new(gt_diagbandseed_thread_algorithm,
@@ -1840,9 +4419,12 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
gt_diagbandseed_thread_info_set(tinfo,
arg,
NULL,
- stream[0],
+ stream_tab[0],
+ arg->aencseq,
aseqranges,
+ arg->bencseq,
bseqranges,
+ karlin_altschul_stat,
combinations[0],
err);
gt_diagbandseed_thread_algorithm(tinfo);
@@ -1868,15 +4450,47 @@ int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
/* print the threads' output to stdout */
for (tidx = 1; tidx < gt_jobs; tidx++) {
- char cc;
- rewind(stream[tidx]);
- while ((cc = fgetc(stream[tidx])) != EOF) {
+ int cc;
+ rewind(stream_tab[tidx]);
+ while ((cc = fgetc(stream_tab[tidx])) != EOF) {
putchar(cc);
}
- gt_fa_xfclose(stream[tidx]);
+ gt_fa_xfclose(stream_tab[tidx]);
}
- gt_free(stream);
+ gt_free(stream_tab);
#endif
+ if (arg->verbose)
+ {
+ const bool maxmat_show = gt_diagbandseed_derive_maxmat_show(arg->maxmat);
+
+ gt_assert(dbs_state != NULL);
+ gt_diagbandseed_dbs_state_out(dbs_state,maxmat_show);
+#ifndef _WIN32
+ gt_diagbandseed_process_seeds_times(
+ arg->extp->extendgreedy,
+ maxmat_show,
+ dbs_state->totalseeds,
+ dbs_state->extended_seeds,
+ dbs_state->total_process_seeds_usec,
+ dbs_state->total_extension_time_usec);
+#endif
+ }
+ if (dbs_state != NULL)
+ {
+ if (dbs_state->used_a_sequences != NULL)
+ {
+ gt_diagbandseed_out_sequences_with_matches('S',arg->aencseq,
+ dbs_state->used_a_sequences);
+ }
+ if (dbs_state->used_b_sequences != NULL)
+ {
+ gt_diagbandseed_out_sequences_with_matches('Q',arg->bencseq,
+ dbs_state->used_b_sequences);
+ }
+ }
+ gt_diagbandseed_dbs_state_delete(dbs_state);
+ gt_karlin_altschul_stat_delete(karlin_altschul_stat);
+ gt_ft_trimstat_delete(trimstat);
return had_err;
}
diff --git a/src/match/diagbandseed.h b/src/match/diagbandseed.h
index 600debf..0d7a9a7 100644
--- a/src/match/diagbandseed.h
+++ b/src/match/diagbandseed.h
@@ -1,5 +1,6 @@
/*
Copyright (c) 2015-2016 Joerg Winkler <j.winkler at posteo.de>
+ Copyright (c) 2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
Copyright (c) 2015-2016 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
@@ -23,59 +24,93 @@
#include "core/range_api.h"
#include "core/types_api.h"
#include "match/ft-front-prune.h"
+#include "match/seed_extend_parts.h"
+#include "match/querymatch-display.h"
#include "match/xdrop.h"
typedef struct GtDiagbandseedInfo GtDiagbandseedInfo;
typedef struct GtDiagbandseedExtendParams GtDiagbandseedExtendParams;
+typedef enum
+{ /* keep the order consistent with gt_splt_arguments */
+ GT_DIAGBANDSEED_SPLT_STRUCT,
+ GT_DIAGBANDSEED_SPLT_ULONG,
+ GT_DIAGBANDSEED_SPLT_BYTESTRING,
+ GT_DIAGBANDSEED_SPLT_UNDEFINED
+} GtDiagbandseedPairlisttype;
+
/* Run the whole algorithm. */
int gt_diagbandseed_run(const GtDiagbandseedInfo *arg,
- const GtRange *aseqranges,
- const GtRange *bseqranges,
+ const GtSequencePartsInfo *aseqranges,
+ const GtSequencePartsInfo *bseqranges,
+ const GtUwordPair *pick,
GtError *err);
/* The constructor for GtDiagbandseedInfo*/
-GtDiagbandseedInfo *gt_diagbandseed_info_new(GtEncseq *aencseq,
- GtEncseq *bencseq,
+GtDiagbandseedInfo *gt_diagbandseed_info_new(const GtEncseq *aencseq,
+ const GtEncseq *bencseq,
GtUword maxfreq,
GtUword memlimit,
+ unsigned int spacedseedweight,
unsigned int seedlength,
bool norev,
bool nofwd,
- GtRange *seedpairdistance,
+ const GtRange *seedpairdistance,
+ GtDiagbandseedPairlisttype splt,
bool verify,
bool verbose,
bool debug_kmer,
bool debug_seedpair,
bool use_kmerfile,
- GtDiagbandseedExtendParams *extp,
- GtUword anumseqranges,
- GtUword bnumseqranges);
+ bool trimstat_on,
+ GtUword maxmat,
+ const GtStr *chainarguments,
+ const GtStr
+ *diagband_statistics_arg,
+ const GtDiagbandseedExtendParams
+ *extp);
+
+const char *gt_diagbandseed_splt_comment(void);
+
+GtDiagbandseedPairlisttype gt_diagbandseed_splt_get(const char *splt_string,
+ GtError *err);
+
+typedef struct
+{
+ GtUword sum_of_distance,
+ sum_of_aligned_len;
+} GtAniAccumulate;
/* The constructor for GtDiagbandseedExtendParams*/
GtDiagbandseedExtendParams *gt_diagbandseed_extend_params_new(
- GtUword errorpercentage,
- GtUword userdefinedleastlength,
- GtUword logdiagbandwidth,
- GtUword mincoverage,
- unsigned int display_flag,
- bool use_apos,
- GtXdropscore xdropbelowscore,
- bool extendgreedy,
- bool extendxdrop,
- GtUword maxalignedlendifference,
- GtUword history_size,
- GtUword perc_mat_history,
- GtExtendCharAccess extend_char_access,
- GtUword sensitivity,
- double matchscore_bias,
- bool weakends,
- bool benchmark,
- GtUword alignmentwidth,
- bool always_polished_ends);
+ GtUword userdefinedleastlength,
+ GtUword errorpercentage,
+ double evalue_threshold,
+ GtUword logdiagbandwidth,
+ GtUword mincoverage,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ GtUword use_apos,
+ GtXdropscore xdropbelowscore,
+ bool extendgreedy,
+ bool extendxdrop,
+ GtUword maxalignedlendifference,
+ GtUword history_size,
+ GtUword perc_mat_history,
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ bool cam_generic,
+ GtUword sensitivity,
+ double matchscore_bias,
+ bool weakends,
+ bool benchmark,
+ bool always_polished_ends,
+ bool verify_alignment,
+ bool only_selected_seqpairs,
+ GtAniAccumulate *ani_accumulate);
/* The destructors */
void gt_diagbandseed_info_delete(GtDiagbandseedInfo *info);
void gt_diagbandseed_extend_params_delete(GtDiagbandseedExtendParams *extp);
+
#endif
diff --git a/src/match/eis-bwtseq-context.c b/src/match/eis-bwtseq-context.c
index de4b17b..7a9ad86 100644
--- a/src/match/eis-bwtseq-context.c
+++ b/src/match/eis-bwtseq-context.c
@@ -287,7 +287,7 @@ BWTSeqCRMapOpen(unsigned short mapIntervalLog2,
seqLen, mapIntervalLog2));
mapName = gt_str_new_cstr(projectName);
{
- char buf[1 + 4 + 3];
+ char buf[1 + 4 + 3 + 2];
snprintf(buf, sizeof (buf), ".%ucxm", (unsigned)mapIntervalLog2);
gt_str_append_cstr(mapName, buf);
if (createMapFile)
diff --git a/src/match/esa-mmsearch.c b/src/match/esa-mmsearch.c
index 7671c67..34fda71 100644
--- a/src/match/esa-mmsearch.c
+++ b/src/match/esa-mmsearch.c
@@ -421,19 +421,20 @@ static GtUword gt_mmsearch_extendright(const GtEncseq *dbencseq,
}
void gt_queryuniquematch(bool selfmatch,
- const Suffixarray *suffixarray,
- uint64_t queryunitnum,
- GtQueryrepresentation *queryrep,
- GtUword minmatchlength,
- GtProcessquerymatch processquerymatch,
- void *processquerymatchinfo,
- GtQuerymatch *querymatchspaceptr)
+ const Suffixarray *suffixarray,
+ uint64_t queryunitnum,
+ GtQueryrepresentation *queryrep,
+ GtUword minmatchlength,
+ GtProcessquerymatch processquerymatch,
+ void *processquerymatchinfo,
+ GtQuerymatch *querymatchspaceptr)
{
GtUword offset, totallength = gt_encseq_total_length(suffixarray->encseq),
localqueryoffset = 0;
uint64_t localqueryunitnum = queryunitnum;
gt_assert(!selfmatch && queryrep->seqlen >= minmatchlength);
+ /*XXX gt_assert(!gt_querymatch_seq_desc_display(querymatchspaceptr));*/
for (offset = 0; offset <= queryrep->seqlen - minmatchlength; offset++)
{
GtUword matchlen, dbstart;
@@ -454,23 +455,26 @@ void gt_queryuniquematch(bool selfmatch,
queryrep->sequence))
{
GtUword dbseqnum = gt_encseq_seqnum(suffixarray->encseq,dbstart),
- dbseqstartpos = gt_encseq_seqstartpos(suffixarray->encseq,
- dbseqnum),
- dbseqlen = gt_encseq_seqlength(suffixarray->encseq,dbseqnum);
+ dbseqlen = gt_encseq_seqlength(suffixarray->encseq,dbseqnum),
+ db_seqstart = gt_encseq_seqstartpos(suffixarray->encseq,dbseqnum);
gt_querymatch_init(querymatchspaceptr,
matchlen,
- dbstart,
dbseqnum,
- dbstart - dbseqstartpos,
+ dbstart - db_seqstart,
+ db_seqstart,
dbseqlen,
0, /* score */
0, /* edist */
+ 0, /* mismatches */
selfmatch,
localqueryunitnum,
matchlen,
localqueryoffset,
- queryrep->seqlen);
+ 0,
+ queryrep->seqlen,
+ NULL,
+ NULL);
processquerymatch(processquerymatchinfo,querymatchspaceptr);
}
if (queryrep->sequence[offset] == (GtUchar) SEPARATOR)
@@ -525,7 +529,8 @@ static void gt_querysubstringmatch(bool selfmatch,
dbstart,
&querysubstring))
{
- GtUword dbseqnum, dbseqstartpos, dbseqlen, extend;
+ GtUword dbseqnum, dbseqlen, db_seqstart, extend;
+ const char *db_desc = NULL, *query_desc = NULL;
extend = gt_mmsearch_extendright(dbencseq,
mmsi->esr,
@@ -538,25 +543,29 @@ static void gt_querysubstringmatch(bool selfmatch,
if (gt_encseq_has_multiseq_support(dbencseq))
{
dbseqnum = gt_encseq_seqnum(dbencseq,dbstart);
- dbseqstartpos = gt_encseq_seqstartpos(dbencseq,dbseqnum);
dbseqlen = gt_encseq_seqlength(dbencseq,dbseqnum);
+ db_seqstart = gt_encseq_seqstartpos(dbencseq,dbseqnum);
} else
{
- dbseqnum = dbseqstartpos = dbseqlen = 0;
+ dbseqnum = dbseqlen = db_seqstart = 0;
}
gt_querymatch_init(querymatchspaceptr,
minmatchlength + extend,
- dbstart,
dbseqnum,
- dbstart - dbseqstartpos,
+ dbstart - db_seqstart,
+ db_seqstart,
dbseqlen,
0, /* score */
0, /* edist */
+ 0, /* mismatches */
selfmatch,
localqueryunitnum,
minmatchlength + extend,
localqueryoffset,
- queryrep->seqlen);
+ 0,
+ queryrep->seqlen,
+ db_desc,
+ query_desc);
processquerymatch(processquerymatchinfo,querymatchspaceptr);
}
}
@@ -829,6 +838,13 @@ const GtUchar *gt_querysubstringmatchiterator_query(
return qsmi->query_for_seqit;
}
+const char *gt_querysubstringmatchiterator_desc(
+ const GtQuerysubstringmatchiterator *qsmi)
+{
+ gt_assert(qsmi != NULL && qsmi->desc != NULL);
+ return qsmi->desc;
+}
+
int gt_querysubstringmatchiterator_next(GtQuerysubstringmatchiterator *qsmi,
GtError *err)
{
diff --git a/src/match/esa-mmsearch.h b/src/match/esa-mmsearch.h
index a98706b..020a1b1 100644
--- a/src/match/esa-mmsearch.h
+++ b/src/match/esa-mmsearch.h
@@ -95,4 +95,7 @@ const GtUchar *gt_querysubstringmatchiterator_query(
int gt_querysubstringmatchiterator_next(GtQuerysubstringmatchiterator *qsmi,
GtError *err);
+const char *gt_querysubstringmatchiterator_desc(
+ const GtQuerysubstringmatchiterator *qsmi);
+
#endif
diff --git a/src/match/ft-eoplist.c b/src/match/ft-eoplist.c
new file mode 100644
index 0000000..5809526
--- /dev/null
+++ b/src/match/ft-eoplist.c
@@ -0,0 +1,1349 @@
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <math.h>
+#include <ctype.h>
+#include "core/assert_api.h"
+#include "core/arraydef.h"
+#include "core/minmax.h"
+#include "core/chardef.h"
+#include "core/divmodmul.h"
+#include "core/readmode.h"
+#include "match/ft-polish.h"
+#include "match/ft-eoplist.h"
+#include "match/ft-front-prune.h"
+
+#define DELETION_CHAR 'D'
+#define INSERTION_CHAR 'I'
+#define MATCH_CHAR '='
+#define MISMATCH_CHAR 'X'
+#define REPLACEMENT_CHAR 'M'
+
+char gt_eoplist_pretty_print(GtEopType eoptype,bool distinguish_mismatch_match)
+{
+ switch (eoptype)
+ {
+ case GtDeletionOp:
+ return DELETION_CHAR;
+ case GtInsertionOp:
+ return INSERTION_CHAR;
+ case GtMismatchOp:
+ return distinguish_mismatch_match ? MISMATCH_CHAR : REPLACEMENT_CHAR;
+ case GtMatchOp:
+ return distinguish_mismatch_match ? MATCH_CHAR : REPLACEMENT_CHAR;
+ default:
+ fprintf(stderr,"file %s, line %d: illegal eoptype = %d\n",
+ __FILE__,__LINE__,(int) eoptype);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+}
+
+struct GtEoplist
+{
+ GtUword nextfreeuint8_t, allocateduint8_t, countdeletions, countinsertions;
+ uint8_t *spaceuint8_t;
+ const GtUchar *useq, *vseq;
+ GtUword ustart, ulen, vstart, vlen;
+ bool withpolcheck, pol_info_out, display_seed_in_alignment;
+ GtUword useedoffset, seedlen;
+ GtArrayint trace;
+ const GtFtPolishing_info *pol_info;
+ GtFullFrontEdistTrace *fet_segment;
+};
+
+void gt_eoplist_reset(GtEoplist *eoplist)
+{
+ if (eoplist != NULL)
+ {
+ eoplist->nextfreeuint8_t = 0;
+ eoplist->countdeletions = 0;
+ eoplist->countinsertions = 0;
+ eoplist->useq = eoplist->vseq = NULL;
+ eoplist->ulen = eoplist->vlen = 0;
+ }
+}
+
+GtEoplist *gt_eoplist_new(void)
+{
+ GtEoplist *eoplist = gt_malloc(sizeof *eoplist);
+
+ gt_assert(eoplist != NULL);
+ eoplist->allocateduint8_t = 0;
+ eoplist->spaceuint8_t = NULL;
+ eoplist->display_seed_in_alignment = false;
+ eoplist->withpolcheck = false;
+ eoplist->pol_info_out = false;
+ eoplist->useedoffset = eoplist->seedlen = 0;
+ eoplist->pol_info = NULL;
+ GT_INITARRAY(&eoplist->trace,int);
+ eoplist->fet_segment = gt_full_front_edist_trace_new();
+ gt_eoplist_reset(eoplist);
+ return eoplist;
+}
+
+typedef struct
+{
+ char *space;
+ size_t nextfree, allocated;
+} GtStringBuffer;
+
+static void stringbuffer_append_cigar(GtStringBuffer *sbuf,
+ const GtCigarOp *co,
+ bool distinguish_mismatch_match)
+{
+ const size_t gt_uword_maxwidth = sizeof ("18446744073709551615");
+
+ if (sbuf->nextfree + gt_uword_maxwidth + 1 + 1 >= sbuf->allocated)
+ {
+ sbuf->allocated = sbuf->allocated * 1.2 + gt_uword_maxwidth + 1 + 1 + 1;
+ sbuf->space = gt_realloc(sbuf->space,sizeof *sbuf->space * sbuf->allocated);
+ }
+ sbuf->nextfree +=
+ sprintf(sbuf->space + sbuf->nextfree,GT_WU "%c",
+ co->iteration,gt_eoplist_pretty_print(co->eoptype,
+ distinguish_mismatch_match));
+}
+
+char *gt_eoplist2cigar_string(const GtEoplist *eoplist,
+ bool distinguish_mismatch_match)
+{
+ GtStringBuffer sbuf = {NULL,0,0};
+ GtCigarOp co;
+ GtEoplistReader *eoplist_reader = gt_eoplist_reader_new();
+
+ gt_eoplist_reader_reset(eoplist_reader,eoplist,true);
+ while (gt_eoplist_reader_next_cigar(&co,eoplist_reader,
+ distinguish_mismatch_match))
+ {
+ stringbuffer_append_cigar(&sbuf,&co,distinguish_mismatch_match);
+ }
+ gt_eoplist_reader_delete(eoplist_reader);
+ return sbuf.space;
+}
+
+void gt_eoplist_from_cigar(GtEoplist *eoplist,
+ const char *cigarstring,char sep)
+{
+ const char *cptr;
+ GtUword iteration = 0;
+
+ for (cptr = cigarstring; *cptr != '\0' && *cptr != sep && *cptr != '\n';
+ cptr++)
+ {
+ if (isdigit(*cptr))
+ {
+ iteration = iteration * 10 + (GtUword) (*cptr - '0');
+ } else
+ {
+ GtUword idx;
+
+ switch (*cptr)
+ {
+ case DELETION_CHAR:
+ for (idx = 0; idx < iteration; idx++)
+ {
+ gt_eoplist_deletion_add(eoplist);
+ }
+ break;
+ case INSERTION_CHAR:
+ for (idx = 0; idx < iteration; idx++)
+ {
+ gt_eoplist_insertion_add(eoplist);
+ }
+ break;
+ case MATCH_CHAR:
+ gt_eoplist_match_add(eoplist,iteration);
+ break;
+ case REPLACEMENT_CHAR:
+ gt_eoplist_match_add(eoplist,iteration);
+ break;
+ case MISMATCH_CHAR:
+ for (idx = 0; idx < iteration; idx++)
+ {
+ gt_eoplist_mismatch_add(eoplist);
+ }
+ break;
+ default:
+ fprintf(stderr,"file %s, line %d: illegal symbol '%c' "
+ "in cigar string\n",__FILE__,__LINE__,*cptr);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ iteration = 0;
+ }
+ }
+}
+
+void gt_eoplist_delete(GtEoplist *eoplist)
+{
+ if (eoplist != NULL)
+ {
+ GT_FREEARRAY(&eoplist->trace,int);
+ gt_full_front_edist_trace_delete(eoplist->fet_segment);
+ gt_free(eoplist->spaceuint8_t);
+ gt_free(eoplist);
+ }
+}
+
+#define FT_EOPCODE_MAXMATCHES 253
+#define FT_EOPCODE_MISMATCH 253
+#define FT_EOPCODE_DELETION 254
+#define FT_EOPCODE_INSERTION 255
+
+#define GT_EOPLIST_PUSH(EOPLIST,EOP)\
+ gt_assert((EOPLIST) != NULL);\
+ {\
+ const GtUword addamount = (EOPLIST)->allocateduint8_t * 0.2 + 128;\
+ GT_STOREINARRAY(EOPLIST,uint8_t,addamount,(uint8_t) (EOP));\
+ }
+
+void gt_eoplist_match_add(GtEoplist *eoplist,GtUword length)
+{
+ gt_assert(eoplist != NULL && length > 0);
+ while (true)
+ {
+ if (length <= FT_EOPCODE_MAXMATCHES)
+ {
+ gt_assert(length > 0);
+ GT_EOPLIST_PUSH(eoplist,(uint8_t) (length - 1)); /* R length */
+ break;
+ }
+ GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_MAXMATCHES - 1); /* R max */
+ length -= FT_EOPCODE_MAXMATCHES;
+ }
+}
+
+void gt_eoplist_mismatch_add(GtEoplist *eoplist)
+{
+ GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_MISMATCH); /* R 1 */
+}
+
+void gt_eoplist_deletion_add(GtEoplist *eoplist)
+{
+ GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_DELETION);
+ eoplist->countdeletions++;
+}
+
+void gt_eoplist_insertion_add(GtEoplist *eoplist)
+{
+ gt_assert(eoplist != NULL);
+ GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_INSERTION);
+ eoplist->countinsertions++;
+}
+
+GtUword gt_eoplist_length(const GtEoplist *eoplist)
+{
+ if (eoplist == NULL)
+ {
+ return 0;
+ }
+ return eoplist->nextfreeuint8_t;
+}
+
+void gt_eoplist_reverse_end(GtEoplist *eoplist,GtUword firstindex)
+{
+ uint8_t *fwd, *bck;
+
+ gt_assert(eoplist != NULL);
+ if (firstindex + 1 >= eoplist->nextfreeuint8_t)
+ {
+ return;
+ }
+ for (fwd = eoplist->spaceuint8_t + firstindex,
+ bck = eoplist->spaceuint8_t + eoplist->nextfreeuint8_t - 1; fwd < bck;
+ fwd++, bck--)
+ {
+ uint8_t tmp = *fwd;
+ *fwd = *bck;
+ *bck = tmp;
+ }
+}
+
+GtUword gt_eoplist_deletions_count(const GtEoplist *eoplist)
+{
+ gt_assert(eoplist != NULL);
+ return eoplist->countdeletions;
+}
+
+GtUword gt_eoplist_insertions_count(const GtEoplist *eoplist)
+{
+ gt_assert(eoplist != NULL);
+ return eoplist->countinsertions;
+}
+
+struct GtEoplistReader
+{
+ const uint8_t *currenteop,
+ *endeoplist;
+ int difference;
+ GtUchar *outbuffer;
+ unsigned int width;
+ GtUword aligned_u, aligned_v, repcount;
+};
+
+void gt_eoplist_reader_reset(GtEoplistReader *eoplist_reader,
+ const GtEoplist *eoplist,bool forward)
+{
+ gt_assert(eoplist != NULL && eoplist_reader != NULL);
+ if (eoplist->spaceuint8_t == NULL || eoplist->nextfreeuint8_t == 0)
+ {
+ eoplist_reader->currenteop = NULL;
+ eoplist_reader->endeoplist = NULL;
+ } else
+ {
+ if (forward)
+ {
+ eoplist_reader->currenteop = eoplist->spaceuint8_t;
+ eoplist_reader->endeoplist = eoplist->spaceuint8_t +
+ eoplist->nextfreeuint8_t;
+ eoplist_reader->difference = 1;
+ } else
+ {
+ eoplist_reader->currenteop = eoplist->spaceuint8_t +
+ eoplist->nextfreeuint8_t - 1;
+ eoplist_reader->endeoplist = eoplist->spaceuint8_t - 1;
+ eoplist_reader->difference = -1;
+ }
+ }
+ eoplist_reader->aligned_u = eoplist_reader->aligned_v
+ = eoplist_reader->repcount = 0;
+}
+
+static size_t gt_eoplist_outbuffer_size(unsigned int width)
+{
+ return 3 * width;
+}
+
+void gt_eoplist_reader_reset_width(GtEoplistReader *eoplist_reader,
+ unsigned int width)
+{
+ if (eoplist_reader->width < width)
+ {
+ eoplist_reader->outbuffer = gt_realloc(eoplist_reader->outbuffer,
+ sizeof *eoplist_reader->outbuffer *
+ gt_eoplist_outbuffer_size(width));
+ gt_assert(eoplist_reader->outbuffer != NULL);
+ }
+ eoplist_reader->width = width;
+}
+
+GtEoplistReader *gt_eoplist_reader_new(void)
+{
+ GtEoplistReader *eoplist_reader;
+
+ eoplist_reader = gt_malloc(sizeof *eoplist_reader);
+ gt_assert(eoplist_reader != NULL);
+ eoplist_reader->width = 0;
+ eoplist_reader->outbuffer = NULL;
+ eoplist_reader->width = 70;
+ eoplist_reader->outbuffer
+ = gt_realloc(eoplist_reader->outbuffer,
+ sizeof *eoplist_reader->outbuffer *
+ gt_eoplist_outbuffer_size(eoplist_reader->width));
+ eoplist_reader->difference = 0;
+ eoplist_reader->currenteop = NULL;
+ eoplist_reader->endeoplist = NULL;
+ eoplist_reader->aligned_u = eoplist_reader->aligned_v
+ = eoplist_reader->repcount = 0;
+ return eoplist_reader;
+}
+
+void gt_eoplist_reader_delete(GtEoplistReader *eoplist_reader)
+{
+ if (eoplist_reader != NULL)
+ {
+ if (eoplist_reader->outbuffer != NULL)
+ {
+ gt_free(eoplist_reader->outbuffer);
+ }
+ gt_free(eoplist_reader);
+ }
+}
+
+bool gt_eoplist_reader_next_cigar(GtCigarOp *cigar_op,
+ GtEoplistReader *eoplist_reader,
+ bool distinguish_mismatch_match)
+{
+ if (eoplist_reader->currenteop == NULL ||
+ eoplist_reader->currenteop == eoplist_reader->endeoplist)
+ {
+ return false;
+ }
+ gt_assert(eoplist_reader->difference == 1 ||
+ eoplist_reader->difference == -1);
+ cigar_op->eoptype = GtUndefinedOp;
+ cigar_op->iteration = 0;
+ while (true)
+ {
+ if (cigar_op->iteration > 0)
+ {
+ switch (*eoplist_reader->currenteop)
+ {
+ case FT_EOPCODE_DELETION:
+ gt_assert(cigar_op->eoptype != GtUndefinedOp);
+ if (cigar_op->eoptype == GtDeletionOp)
+ {
+ cigar_op->iteration++; /* Add another consecutive deletion */
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ break;
+ }
+ return true;
+ case FT_EOPCODE_INSERTION:
+ gt_assert(cigar_op->eoptype != GtUndefinedOp);
+ if (cigar_op->eoptype == GtInsertionOp)
+ {
+ cigar_op->iteration++; /* Add another consecutive insertion */
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ break;
+ }
+ return true;
+ case FT_EOPCODE_MISMATCH:
+ gt_assert(cigar_op->eoptype != GtUndefinedOp);
+ if (distinguish_mismatch_match)
+ {
+ if (cigar_op->eoptype == GtMismatchOp)
+ {
+ cigar_op->iteration++; /* Add another consecutive mismatch */
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ break;
+ }
+ return true;
+ }
+ if (cigar_op->eoptype == GtMatchOp)
+ {
+ cigar_op->iteration++; /* Add another consecutive match */
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ break;
+ }
+ return true;
+ default:
+ if (cigar_op->eoptype == GtMatchOp)
+ {
+ gt_assert(*eoplist_reader->currenteop < FT_EOPCODE_MAXMATCHES);
+ cigar_op->iteration += (1UL + *eoplist_reader->currenteop);
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ } else
+ {
+ return true;
+ }
+ }
+ } else
+ {
+ switch (*eoplist_reader->currenteop)
+ {
+ case FT_EOPCODE_DELETION:
+ cigar_op->eoptype = GtDeletionOp;
+ cigar_op->iteration = 1UL;
+ break;
+ case FT_EOPCODE_INSERTION:
+ cigar_op->eoptype = GtInsertionOp;
+ cigar_op->iteration = 1UL;
+ break;
+ case FT_EOPCODE_MISMATCH:
+ cigar_op->eoptype
+ = distinguish_mismatch_match ? GtMismatchOp : GtMatchOp;
+ cigar_op->iteration = 1UL;
+ break;
+ default:
+ cigar_op->eoptype = GtMatchOp;
+ cigar_op->iteration = (1UL + *eoplist_reader->currenteop);
+ break;
+ }
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ }
+ if (eoplist_reader->currenteop == eoplist_reader->endeoplist)
+ {
+ return true;
+ }
+ }
+}
+
+bool gt_eoplist_reader_next_segment(GtEoplistSegment *segment,
+ GtEoplistReader *eoplist_reader,
+ GtUword delta)
+{
+ while (true)
+ {
+ if (eoplist_reader->repcount > 0)
+ {
+ eoplist_reader->aligned_u++;
+ eoplist_reader->aligned_v++;
+ eoplist_reader->repcount--;
+ } else
+ {
+ if (eoplist_reader->currenteop == eoplist_reader->endeoplist)
+ {
+ break;
+ }
+ switch (*eoplist_reader->currenteop)
+ {
+ case FT_EOPCODE_DELETION:
+ eoplist_reader->aligned_u++;
+ break;
+ case FT_EOPCODE_INSERTION:
+ eoplist_reader->aligned_v++;
+ break;
+ case FT_EOPCODE_MISMATCH:
+ eoplist_reader->aligned_u++;
+ eoplist_reader->aligned_v++;
+ break;
+ default:
+ eoplist_reader->aligned_u++;
+ eoplist_reader->aligned_v++;
+ eoplist_reader->repcount = (GtUword) *eoplist_reader->currenteop;
+ }
+ eoplist_reader->currenteop += eoplist_reader->difference;
+ }
+ if (eoplist_reader->aligned_u == delta)
+ {
+ segment->aligned_u = delta;
+ segment->aligned_v = eoplist_reader->aligned_v;
+ eoplist_reader->aligned_u = eoplist_reader->aligned_v = 0;
+ return true;
+ }
+ }
+ if (eoplist_reader->aligned_v > 0 || eoplist_reader->aligned_u > 0)
+ {
+ gt_assert(eoplist_reader->repcount == 0);
+ segment->aligned_u = eoplist_reader->aligned_u;
+ segment->aligned_v = eoplist_reader->aligned_v;
+ eoplist_reader->aligned_v = 0;
+ eoplist_reader->aligned_u = 0;
+ gt_assert(eoplist_reader->currenteop == eoplist_reader->endeoplist);
+ return true;
+ }
+ return false;
+}
+
+double gt_eoplist_segments_entropy(const GtEoplist *eoplist,GtUword delta)
+{
+ GtEoplistReader *eoplist_reader = gt_eoplist_reader_new();
+ GtEoplistSegment segment;
+ const GtUword max_value = 2 * delta + 1;
+ GtUword segment_count = 0, idx,
+ *segment_dist = gt_calloc(max_value + 1,sizeof *segment_dist);
+ double entropy = 0.0;
+
+ gt_eoplist_reader_reset(eoplist_reader,eoplist,true);
+ while (gt_eoplist_reader_next_segment(&segment,eoplist_reader,delta))
+ {
+ gt_assert(segment.aligned_v <= max_value);
+ segment_dist[segment.aligned_v]++;
+ segment_count++;
+ }
+ gt_eoplist_reader_delete(eoplist_reader);
+ for (idx = 0; idx <= max_value; idx++)
+ {
+ if (segment_dist[idx] > 0)
+ {
+ double prob = (double) segment_dist[idx]/segment_count;
+ entropy += prob * log2(prob);
+ }
+ }
+ gt_free(segment_dist);
+ return entropy == 0.0 ? 0.0 : -entropy;
+}
+
+/*
+ A trace is a sequence of
+ differences with the delta value specifying the length of a substring in the
+ query sequence aligned to a sequence of length delta in the reference
+ sequence. Such a pair of substrings is a segment. From the segments
+ one can reconstruct an alignment by computing alignments from the
+ segments and concatenating them. This is done by the following functions.
+*/
+
+void gt_eoplist_read_trace(GtEoplist *eoplist,
+ const char *trace,
+ char separator)
+{
+ if (eoplist != NULL)
+ {
+ eoplist->trace.nextfreeint = 0;
+ }
+ while (true)
+ {
+ int value;
+ const char *ptr;
+
+ if (sscanf(trace,"%d",&value) != 1)
+ {
+ fprintf(stderr,"cannot read number from trace %s\n",trace);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ if (eoplist != NULL)
+ {
+ GT_STOREINARRAY(&eoplist->trace,int,
+ 256 + eoplist->trace.allocatedint * 0.2,value);
+ }
+ for (ptr = trace; *ptr != '\0' && *ptr != separator && *ptr != ','; ptr++)
+ /* Nothing */;
+ if (*ptr == '\0' || *ptr == separator)
+ {
+ break;
+ }
+ trace = ptr + 1;
+ }
+}
+
+void gt_eoplist_trace2cigar(GtEoplist *eoplist,bool dtrace,GtUword trace_delta)
+{
+ GtUword idx, offset_u = 0, offset_v = 0;
+
+ gt_assert(eoplist != NULL && eoplist->trace.nextfreeint > 0);
+ for (idx = 0; idx < eoplist->trace.nextfreeint; idx++)
+ {
+ GtUword this_distance, aligned_u, aligned_v;
+
+ if (dtrace)
+ {
+ const int value = -(eoplist->trace.spaceint[idx] - trace_delta);
+ gt_assert(value >= 0);
+ aligned_v = (GtUword) value;
+ } else
+ {
+ aligned_v = (GtUword) eoplist->trace.spaceint[idx];
+ }
+ gt_assert(offset_u < eoplist->ulen);
+ aligned_u = MIN(trace_delta,eoplist->ulen - offset_u);
+ this_distance = gt_full_front_edist_trace_distance(eoplist->fet_segment,
+ eoplist->useq + offset_u,
+ aligned_u,
+ eoplist->vseq + offset_v,
+ aligned_v);
+ gt_front_trace2eoplist_full_front_directed(eoplist,
+ gt_full_front_trace_get(
+ eoplist->fet_segment),
+ this_distance,
+ eoplist->useq + offset_u,
+ aligned_u,
+ eoplist->vseq + offset_v,
+ aligned_v);
+ offset_u += aligned_u;
+ offset_v += aligned_v;
+ }
+}
+
+void gt_eoplist_show_plain(const GtEoplist *eoplist,FILE *fp)
+{
+ GtUword idx;
+
+ fprintf(fp,"[");
+ for (idx = 0; idx < eoplist->nextfreeuint8_t; idx++)
+ {
+ if (eoplist->spaceuint8_t[idx] == FT_EOPCODE_DELETION)
+ {
+ fputc(DELETION_CHAR,fp);
+ } else
+ {
+ if (eoplist->spaceuint8_t[idx] == FT_EOPCODE_INSERTION)
+ {
+ fputc(INSERTION_CHAR,fp);
+ } else
+ {
+ if (eoplist->spaceuint8_t[idx] == FT_EOPCODE_MISMATCH)
+ {
+ fputc(MISMATCH_CHAR,fp);
+ } else
+ {
+ fprintf(fp,"%d",eoplist->spaceuint8_t[idx]);
+ }
+ }
+ }
+ fputc(idx + 1 < eoplist->nextfreeuint8_t ? ',' : ']',fp);
+ }
+ fputc('\n',fp);
+}
+
+void gt_eoplist_show_cigar(GtEoplistReader *eoplist_reader,
+ bool distinguish_mismatch_match,FILE *fp)
+{
+ GtCigarOp co;
+
+ while (gt_eoplist_reader_next_cigar(&co,eoplist_reader,
+ distinguish_mismatch_match))
+ {
+ fprintf(fp,GT_WU "%c",co.iteration,
+ gt_eoplist_pretty_print(co.eoptype,distinguish_mismatch_match));
+ }
+}
+
+static void gt_eoplist_single_line(const char *tag,
+ int numwidth,
+ unsigned int width,
+ const GtUchar *buf,
+ GtUword start_pos,
+ GtUword end_pos,
+ FILE *fp)
+{
+ fprintf(fp,"%s %-*" GT_WUS " ",tag,numwidth,start_pos);
+ fwrite(buf,sizeof *buf,width,fp);
+ fprintf(fp," " GT_WU "\n",end_pos);
+}
+
+static void gt_eoplist_middle_line(int numwidth,unsigned int width,
+ const GtUchar *midbuf,
+ FILE *fp)
+{
+ /* 5 is the length of the strings Sbjct and Query */
+ fprintf(fp,"%*s",(int) (numwidth + 5 + 4),"");
+ fwrite(midbuf,sizeof *midbuf,width,fp);
+ fputc('\n',fp);
+}
+
+static void gt_eoplist_write_lines(GtUword one_off,
+ bool subject_first,
+ int numwidth,
+ unsigned int width,
+ const GtUchar *subject_buf,
+ GtUword subject_seqlength,
+ GtUword subject_start_pos,
+ GtUword subject_end_pos,
+ const GtUchar *midbuf,
+ const GtUchar *query_buf,
+ GtUword query_start_pos,
+ GtUword query_end_pos,
+ FILE *fp)
+{
+ gt_assert(numwidth > 0);
+ if (subject_first)
+ {
+ gt_eoplist_single_line("Sbjct",numwidth,width,subject_buf,
+ subject_start_pos + one_off,
+ subject_end_pos + one_off,fp);
+ gt_eoplist_middle_line(numwidth,width,midbuf,fp);
+ gt_eoplist_single_line("Query",numwidth,width,query_buf,
+ query_start_pos + one_off,
+ query_end_pos + one_off,fp);
+ } else
+ {
+ gt_eoplist_single_line("Query",numwidth,width,query_buf,
+ query_start_pos + one_off,
+ query_end_pos + one_off,fp);
+ gt_eoplist_middle_line(numwidth,width,midbuf,fp);
+ if (subject_seqlength == 0)
+ {
+ gt_eoplist_single_line("Sbjct",numwidth,width,subject_buf,
+ subject_start_pos + one_off,
+ subject_end_pos + one_off,fp);
+ } else
+ {
+ gt_assert(subject_seqlength > subject_start_pos &&
+ subject_seqlength >= subject_end_pos);
+ gt_eoplist_single_line("Sbjct",numwidth,width,subject_buf,
+ subject_seqlength - 1 - subject_start_pos
+ + one_off,
+ one_off +
+ (subject_seqlength > subject_end_pos
+ ? subject_seqlength - 1 - subject_end_pos
+ : 0),
+ fp);
+ }
+ }
+ fputc('\n',fp);
+}
+
+static unsigned int gt_eoplist_show_advance(GtUword one_off,
+ bool subject_first,
+ int numwidth,
+ unsigned int pos,
+ unsigned int width,
+ const GtUchar *topbuf,
+ GtUword top_seqlength,
+ GtUword top_start_pos,
+ GtUword top_end_pos,
+ const GtUchar *midbuf,
+ const GtUchar *lowbuf,
+ GtUword low_start_pos,
+ GtUword low_end_pos,
+ FILE *fp)
+{
+ gt_assert(width > 0);
+ if (pos + 1 < width)
+ {
+ return pos + 1;
+ }
+ gt_assert(pos == width - 1);
+ gt_eoplist_write_lines(one_off,subject_first,
+ numwidth, width, topbuf,
+ top_seqlength, top_start_pos, top_end_pos,
+ midbuf, lowbuf, low_start_pos, low_end_pos, fp);
+ return 0;
+}
+
+void gt_eoplist_set_sequences(GtEoplist *eoplist,
+ const GtUchar *useq,
+ GtUword ustart,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vstart,
+ GtUword vlen)
+{
+ gt_assert(eoplist != NULL);
+ eoplist->useq = useq;
+ eoplist->ustart = ustart;
+ eoplist->ulen = ulen;
+ eoplist->vseq = vseq;
+ eoplist->vstart = vstart;
+ eoplist->vlen = vlen;
+}
+
+#define EOPLIST_MATCHSYMBOL '|'
+#define EOPLIST_MISMATCHSYMBOL ' '
+#define EOPLIST_GAPSYMBOL '-'
+
+#define GT_UPDATE_POSITIVE_INFO(ISMATCH)\
+ if (eoplist->pol_info != NULL)\
+ {\
+ if (prefix_positive < max_history && prefix_positive_sum >= 0)\
+ {\
+ if (ISMATCH)\
+ {\
+ prefix_positive_sum += eoplist->pol_info->match_score;\
+ } else\
+ {\
+ prefix_positive_sum -= eoplist->pol_info->difference_score;\
+ }\
+ if (prefix_positive_sum >= 0)\
+ {\
+ prefix_positive++;\
+ }\
+ }\
+ if (suffix_bits_used < max_history)\
+ {\
+ suffix_bits_used++;\
+ }\
+ suffix_bits >>= 1;\
+ if (ISMATCH)\
+ {\
+ suffix_bits |= set_mask;\
+ }\
+ }
+
+static int gt_eoplist_numwidth(const GtEoplist *eoplist)
+{
+ gt_assert(eoplist != NULL);
+ return 1 + log10((double) MAX(eoplist->ustart + eoplist->ulen - 1,
+ eoplist->vstart + eoplist->vlen - 1));
+}
+
+void gt_eoplist_format_generic(FILE *fp,
+ const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ const GtUchar *characters,
+ GtUword top_seqlength,
+ GtUword low_reference,
+ GtUword one_off,
+ bool distinguish_mismatch_match,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
+ GtUchar wildcardshow)
+{
+ GtCigarOp co;
+ unsigned int pos = 0;
+ GtUword idx_u = 0, idx_v = 0, alignmentlength = 0,
+ firstseedcolumn = GT_UWORD_MAX;
+ GtUchar *topbuf = eoplist_reader->outbuffer, *midbuf = NULL, *lowbuf = NULL;
+ const int numwidth = gt_eoplist_numwidth(eoplist);
+ const GtUword low_start_base
+ = low_reference == 0 ? eoplist->vstart
+ : low_reference - eoplist->vstart;
+ GtUword top_start_pos = eoplist->ustart,
+ low_start_pos = low_start_base;
+
+ gt_assert(alignment_show_forward || top_seqlength > 0);
+ uint64_t suffix_bits = 0, set_mask = 0;
+ GtUword suffix_bits_used = 0, prefix_positive = 0, pol_size = 0,
+ lastseedcolumn = GT_UWORD_MAX;
+ const GtUword max_history = 64;
+ GtWord prefix_positive_sum = 0;
+
+ if (eoplist->pol_info != NULL)
+ {
+ pol_size = GT_MULT2(eoplist->pol_info->cut_depth);
+ set_mask = ((uint64_t) 1) << (max_history - 1);
+ }
+ gt_assert(eoplist_reader != NULL);
+ midbuf = topbuf + eoplist_reader->width;
+ lowbuf = midbuf + eoplist_reader->width;
+ gt_eoplist_reader_reset(eoplist_reader,eoplist,alignment_show_forward);
+ while (gt_eoplist_reader_next_cigar(&co,eoplist_reader,
+ distinguish_mismatch_match))
+ {
+ switch (co.eoptype)
+ {
+ GtUword j;
+ GtUchar cc_a, cc_b;
+
+ case GtMatchOp:
+ case GtMismatchOp:
+ for (j = 0; j < co.iteration && idx_u < eoplist->ulen &&
+ idx_v < eoplist->vlen; j++)
+ {
+ bool is_match = true;
+
+ if (alignment_show_forward)
+ {
+ cc_a = eoplist->useq[idx_u];
+ cc_b = eoplist->vseq[idx_v];
+ } else
+ {
+ cc_a = eoplist->useq[eoplist->ulen - 1 - idx_u];
+ cc_b = eoplist->vseq[eoplist->vlen - 1 - idx_v];
+ }
+ if (characters != NULL)
+ {
+ if (ISSPECIAL(cc_a))
+ {
+ cc_a = wildcardshow;
+ is_match = false;
+ } else
+ {
+ if (show_complement_characters)
+ {
+ gt_assert(cc_a < 4);
+ cc_a = GT_COMPLEMENTBASE(cc_a);
+ }
+ cc_a = characters[cc_a];
+ }
+ if (ISSPECIAL(cc_b))
+ {
+ cc_b = wildcardshow;
+ is_match = false;
+ } else
+ {
+ if (show_complement_characters)
+ {
+ gt_assert(cc_b < 4);
+ cc_b = GT_COMPLEMENTBASE(cc_b);
+ }
+ cc_b = characters[cc_b];
+ }
+ }
+ topbuf[pos] = cc_a;
+ if (is_match)
+ {
+ is_match = cc_a == cc_b ? true : false;
+ }
+ lowbuf[pos] = cc_b;
+ if (is_match)
+ {
+ if (eoplist->useedoffset <= idx_u &&
+ idx_u < eoplist->useedoffset + eoplist->seedlen)
+ {
+ if (eoplist->display_seed_in_alignment)
+ {
+ midbuf[pos] = (GtUchar) '+';
+ } else
+ {
+ midbuf[pos] = (GtUchar) EOPLIST_MATCHSYMBOL;
+ }
+ if (firstseedcolumn == GT_UWORD_MAX)
+ {
+ firstseedcolumn = alignmentlength;
+ }
+ lastseedcolumn = alignmentlength;
+ } else
+ {
+ midbuf[pos] = (GtUchar) EOPLIST_MATCHSYMBOL;
+ }
+ } else
+ {
+ midbuf[pos] = (GtUchar) EOPLIST_MISMATCHSYMBOL;
+ }
+ pos = gt_eoplist_show_advance(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ eoplist_reader->width,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + idx_u,
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ low_start_base + idx_v,
+ fp);
+ if (pos == 0)
+ {
+ top_start_pos = eoplist->ustart + idx_u + 1;
+ low_start_pos = low_start_base + idx_v + 1;
+ }
+ GT_UPDATE_POSITIVE_INFO(is_match);
+ alignmentlength++;
+ idx_u++;
+ idx_v++;
+ }
+ break;
+ case GtDeletionOp:
+ for (j = 0; j < co.iteration && idx_u < eoplist->ulen; j++)
+ {
+ cc_a = eoplist->useq[alignment_show_forward ? idx_u
+ : eoplist->ulen-1-idx_u];
+ if (characters != NULL)
+ {
+ if (ISSPECIAL(cc_a))
+ {
+ topbuf[pos] = wildcardshow;
+ } else
+ {
+ if (show_complement_characters)
+ {
+ gt_assert(cc_a < 4);
+ cc_a = GT_COMPLEMENTBASE(cc_a);
+ }
+ topbuf[pos] = characters[cc_a];
+ }
+ } else
+ {
+ topbuf[pos] = cc_a;
+ }
+ midbuf[pos] = EOPLIST_MISMATCHSYMBOL;
+ lowbuf[pos] = EOPLIST_GAPSYMBOL;
+ pos = gt_eoplist_show_advance(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ eoplist_reader->width,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + idx_u,
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ low_start_base + idx_v,
+ fp);
+ if (pos == 0)
+ {
+ top_start_pos = eoplist->ustart + idx_u + 1;
+ low_start_pos = low_start_base + idx_v + 1;
+ }
+ GT_UPDATE_POSITIVE_INFO(false);
+ alignmentlength++;
+ idx_u++;
+ }
+ break;
+ case GtInsertionOp:
+ for (j = 0; j < co.iteration && idx_v < eoplist->vlen; j++)
+ {
+ cc_b = eoplist->vseq[alignment_show_forward ? idx_v
+ : eoplist->vlen-1-idx_v];
+ topbuf[pos] = EOPLIST_GAPSYMBOL;
+ midbuf[pos] = EOPLIST_MISMATCHSYMBOL;
+ if (characters != NULL)
+ {
+ if (ISSPECIAL(cc_b))
+ {
+ lowbuf[pos] = wildcardshow;
+ } else
+ {
+ if (show_complement_characters)
+ {
+ gt_assert(cc_b < 4);
+ cc_b = GT_COMPLEMENTBASE(cc_b);
+ }
+ lowbuf[pos] = characters[cc_b];
+ }
+ } else
+ {
+ lowbuf[pos] = cc_b;
+ }
+ pos = gt_eoplist_show_advance(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ eoplist_reader->width,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + idx_u,
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ low_start_base + idx_v,
+ fp);
+ if (pos == 0)
+ {
+ top_start_pos = eoplist->ustart + idx_u + 1;
+ low_start_pos = low_start_base + idx_v + 1;
+ }
+ GT_UPDATE_POSITIVE_INFO(false);
+ alignmentlength++;
+ idx_v++;
+ }
+ break;
+ default:
+ fprintf(stderr,"file %s, line %d: illegal eoptype %d\n",
+ __FILE__,__LINE__,co.eoptype);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ }
+ if (pos > 0)
+ {
+ gt_eoplist_write_lines(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + MIN(idx_u,eoplist->ulen - 1),
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ low_start_base + MIN(idx_v,eoplist->vlen - 1),
+ fp);
+ }
+ if (eoplist->pol_info != NULL && eoplist->pol_info_out)
+ {
+ GtUword suffix_positive;
+ GtWord suffix_positive_sum = 0;
+ bool startpolished = false, endpolished = false;
+
+ for (suffix_positive = 0; suffix_positive < suffix_bits_used;
+ suffix_positive++)
+ {
+ suffix_positive_sum += ((suffix_bits & set_mask)
+ ? eoplist->pol_info->match_score
+ : -eoplist->pol_info->difference_score);
+ if (suffix_positive_sum < 0)
+ {
+ break;
+ }
+ set_mask >>= 1;
+ }
+ gt_assert(prefix_positive <= alignmentlength);
+ if (prefix_positive >= pol_size || prefix_positive == alignmentlength ||
+ firstseedcolumn < pol_size)
+ {
+ startpolished = true;
+ }
+ if (suffix_positive >= pol_size || suffix_positive == alignmentlength ||
+ (lastseedcolumn != GT_UWORD_MAX &&
+ lastseedcolumn + pol_size > alignmentlength))
+ {
+ endpolished = true;
+ }
+ fprintf(fp, "# polishing(m=" GT_WD ",d=" GT_WD ",p=" GT_WU
+ "): " GT_WU "/" GT_WU,
+ eoplist->pol_info->match_score,
+ -eoplist->pol_info->difference_score,
+ pol_size,
+ prefix_positive,
+ suffix_positive);
+ if (firstseedcolumn < pol_size)
+ {
+ fprintf(fp, ", seed_on_start");
+ }
+ if (lastseedcolumn + pol_size > alignmentlength)
+ {
+ fprintf(fp, ", seed_on_end");
+ }
+ if (eoplist->withpolcheck)
+ {
+ fprintf(fp, "\n");
+ gt_assert(startpolished);
+ gt_assert(endpolished);
+ } else
+ {
+ if (!startpolished)
+ {
+ fprintf(fp, ", start not polished");
+ }
+ if (!endpolished)
+ {
+ fprintf(fp, ", end not polished");
+ }
+ fprintf(fp, "\n");
+ }
+ }
+}
+
+void gt_eoplist_format_exact(FILE *fp,
+ const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ GtUword top_seqlength,
+ GtUword low_reference,
+ GtUword one_off,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
+ const GtUchar *characters)
+{
+ GtUword idx;
+ unsigned int pos = 0, width;
+ GtUchar *topbuf = eoplist_reader->outbuffer, *midbuf = NULL, *lowbuf = NULL;
+ const int numwidth = gt_eoplist_numwidth(eoplist);
+ GtUword top_start_pos = eoplist->ustart,
+ low_start_pos = low_reference == 0 ? eoplist->vstart
+ : low_reference - eoplist->vstart;
+
+ gt_assert(alignment_show_forward || top_seqlength > 0);
+ width = MIN(eoplist->ulen, eoplist_reader->width);
+ midbuf = topbuf + width;
+ for (idx = 0; idx < (GtUword) width; idx++)
+ {
+ midbuf[idx] = (GtUchar) EOPLIST_MATCHSYMBOL;
+ }
+ lowbuf = midbuf + width;
+ for (idx = 0; idx < eoplist->ulen; idx++)
+ {
+ GtUchar cc_a = eoplist->useq[alignment_show_forward ? idx
+ : eoplist->ulen-1-idx];
+
+ if (characters != NULL)
+ {
+ if (show_complement_characters)
+ {
+ cc_a = GT_COMPLEMENTBASE(cc_a);
+ }
+ cc_a = characters[cc_a];
+ }
+ lowbuf[pos] = topbuf[pos] = cc_a;
+ pos = gt_eoplist_show_advance(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ width,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + idx,
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ eoplist->vstart + idx,fp);
+ if (pos == 0)
+ {
+ top_start_pos = eoplist->ustart + idx + 1;
+ low_start_pos = eoplist->vstart + idx + 1;
+ }
+ }
+ if (pos > 0)
+ {
+ gt_eoplist_write_lines(one_off,
+ subject_first,
+ numwidth,
+ pos,
+ topbuf,
+ top_seqlength,
+ top_start_pos,
+ eoplist->ustart + MIN(idx,eoplist->ulen - 1),
+ midbuf,
+ lowbuf,
+ low_start_pos,
+ eoplist->vstart + MIN(idx,eoplist->vlen - 1),
+ fp);
+ }
+}
+
+void gt_eoplist_verify(const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ GtUword edist)
+{
+ GtCigarOp co;
+ GtUword sumulen = 0, sumvlen = 0, sumdist = 0;
+ const bool distinguish_mismatch_match = true;
+
+ gt_assert(eoplist != NULL);
+ gt_eoplist_reader_reset(eoplist_reader,eoplist,true);
+ if (eoplist->useq == NULL)
+ {
+ gt_assert(eoplist->vseq == NULL && distinguish_mismatch_match);
+ } else
+ {
+ gt_assert(eoplist->vseq != NULL);
+ }
+ while (gt_eoplist_reader_next_cigar(&co,eoplist_reader,
+ distinguish_mismatch_match))
+ {
+ if (co.eoptype == GtDeletionOp)
+ {
+ sumulen += co.iteration;
+ sumdist += co.iteration;
+ } else
+ {
+ if (co.eoptype == GtInsertionOp)
+ {
+ sumvlen += co.iteration;
+ sumdist += co.iteration;
+ } else
+ {
+ if (co.eoptype == GtMismatchOp)
+ {
+ sumdist += co.iteration;
+ }
+ if (eoplist->useq != NULL)
+ {
+ GtUword idx;
+
+ for (idx = 0; idx < co.iteration; idx++)
+ {
+ const GtUchar a = eoplist->useq[sumulen+idx],
+ b = eoplist->vseq[sumvlen+idx];
+ if (a == b && !ISSPECIAL(a))
+ {
+ gt_assert(co.eoptype == GtMatchOp);
+ } else
+ {
+ gt_assert(!distinguish_mismatch_match ||
+ co.eoptype == GtMismatchOp);
+ }
+ if (!distinguish_mismatch_match && (a != b || ISSPECIAL(a)))
+ {
+ sumdist++;
+ }
+ }
+ }
+ sumulen += co.iteration;
+ sumvlen += co.iteration;
+ }
+ }
+ }
+ if (eoplist->ulen != sumulen)
+ {
+ fprintf(stderr,"ulen = " GT_WU " != " GT_WU " = sumulen\n",
+ eoplist->ulen,sumulen);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ if (eoplist->vlen != sumvlen)
+ {
+ fprintf(stderr,"vlen = " GT_WU " != " GT_WU " = sumvlen\n",
+ eoplist->vlen,sumvlen);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ if (edist != sumdist)
+ {
+ fprintf(stderr,"edist = " GT_WU " != " GT_WU " = sumdist\n",
+ edist,sumdist);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+}
+
+void gt_eoplist_display_seed_in_alignment_set(GtEoplist *eoplist)
+{
+ gt_assert(eoplist != NULL);
+ eoplist->display_seed_in_alignment = true;
+}
+
+void gt_eoplist_set_seedoffset(GtEoplist *eoplist,
+ GtUword useedoffset,
+ GtUword seedlen)
+{
+ eoplist->useedoffset = useedoffset;
+ eoplist->seedlen = seedlen;
+}
+
+void gt_eoplist_polished_ends(GtEoplist *eoplist,
+ const GtFtPolishing_info *pol_info,
+ bool withpolcheck,
+ bool pol_info_out)
+{
+ gt_assert(eoplist != NULL);
+ eoplist->pol_info = pol_info;
+ eoplist->withpolcheck = withpolcheck;
+ eoplist->pol_info_out = pol_info_out;
+}
diff --git a/src/match/ft-eoplist.h b/src/match/ft-eoplist.h
new file mode 100644
index 0000000..46ff759
--- /dev/null
+++ b/src/match/ft-eoplist.h
@@ -0,0 +1,222 @@
+#ifndef FT_EOPLIST_H
+#define FT_EOPLIST_H
+#include <stdbool.h>
+#include "core/unused_api.h"
+#include "core/chardef.h"
+#include "core/readmode.h"
+#include "match/ft-polish.h"
+
+/* A list of edit operation is representation is represented by the following
+ opaque type */
+
+typedef struct GtEoplist GtEoplist;
+
+/* The constructor method */
+GtEoplist *gt_eoplist_new(void);
+
+/* the destructor */
+void gt_eoplist_delete(GtEoplist *eoplist);
+
+/* reset the list to empty it */
+void gt_eoplist_reset(GtEoplist *eoplist);
+
+/* add a match of the given length to the eoplist */
+void gt_eoplist_match_add(GtEoplist *eoplist,GtUword length);
+
+/* add a single mismatch to the eoplist */
+void gt_eoplist_mismatch_add(GtEoplist *eoplist);
+
+/* add a single deletion to the eoplist */
+void gt_eoplist_deletion_add(GtEoplist *eoplist);
+
+/* add a single insertion to the eoplist */
+void gt_eoplist_insertion_add(GtEoplist *eoplist);
+
+/* reverse the end of an eoplist beginning with index firstindex. */
+void gt_eoplist_reverse_end(GtEoplist *eoplist,GtUword firstindex);
+
+/* obtain length of eoplist */
+GtUword gt_eoplist_length(const GtEoplist *eoplist);
+
+/* return number of matches in eoplist */
+GtUword gt_eoplist_matches_count(const GtEoplist *eoplist);
+
+/* return number of mismatches in eoplist */
+GtUword gt_eoplist_mismatches_count(const GtEoplist *eoplist);
+
+/* return number of deletions in eoplist */
+GtUword gt_eoplist_deletions_count(const GtEoplist *eoplist);
+
+/* return number of insertions in eoplist */
+GtUword gt_eoplist_insertions_count(const GtEoplist *eoplist);
+
+/* To inspect an edit operation list, one employs the following class */
+
+typedef struct GtEoplistReader GtEoplistReader;
+
+/* verify that the given eoplist represents an alignment of the sequences
+ stored by the eoplist->useq and and eoplist->vseq of length
+ eoplist->ulen and eoplist->vlen. If eoplist->useq and eoplist->vseq
+ have not been set, then checs involing the sequence are not
+ perforemed. */
+
+void gt_eoplist_verify(const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ GtUword edist);
+
+/* The constructor for the reader, initially set to be empty. */
+GtEoplistReader *gt_eoplist_reader_new(void);
+
+/* The destructor */
+void gt_eoplist_reader_delete(GtEoplistReader *eoplist_reader);
+
+/* There are two ways to access the eoplist:
+ 1) The first way is to
+ enumerate the symbols of the cigar
+ string equivalent to the eoplist. We recommend to not store the
+ entire cigar string (consisting of all cigar operations), as the eoplist
+ is more space efficient. A cigar symbol consists of the type of the
+ operation and an iteration value which encodes how many times the operation
+ is applied. Hence the following two definitions make sense. */
+
+typedef enum
+{
+ GtDeletionOp,
+ GtInsertionOp,
+ GtMismatchOp,
+ GtMatchOp,
+ GtUndefinedOp
+} GtEopType;
+
+/* The following function show an <GtEoptype>-value according to the convention
+ of the SAM format. If the flag <distinguish_mismatch_match> is true,
+ then for matches and mismatches different character '=' and 'X', respectively
+ are returned. Otherwise the same character 'M' is returned. */
+char gt_eoplist_pretty_print(GtEopType eoptype,bool distinguish_mismatch_match);
+
+typedef struct
+{
+ GtEopType eoptype;
+ GtUword iteration;
+} GtCigarOp;
+
+/* The following method returns true if and only if there is a next
+ cigar operation. If it returns true, then it stores the cigar operation
+ in the memory location pointed to by cigar_op. */
+
+bool gt_eoplist_reader_next_cigar(GtCigarOp *cigar_op,
+ GtEoplistReader *eoplist_reader,
+ bool distinguish_mismatch_match);
+
+/* The second way of accessing an eoplist is to enumerate the corresponding
+ sequence of segments dividing the aligned sequences into non-overlapping
+ pairs of segments of u and v. The segments on u have length delta, except
+ possibly for the last segment, which only has length delta if
+ len_u mod delta == 0. the last segment on u has length len_u mod delta.
+ The segments of v have a variable length such that the correspoding
+ substring is the substring which aligns with the corresponding segment of
+ u. Segments are represented by the following type. */
+
+typedef struct
+{
+ GtUword aligned_u,
+ aligned_v;
+} GtEoplistSegment;
+
+/*
+ The following function takes an eoplist reader and returns true if and
+ only if there are segments. If it returns true, the segment length are
+ stored in the structure pointed to by <segment>. */
+
+bool gt_eoplist_reader_next_segment(GtEoplistSegment *segment,
+ GtEoplistReader *eoplist_reader,
+ GtUword delta);
+
+/* The characters in the following string correspond to the 0-based integer
+ representing the edit operations */
+
+/* for example, the following code snipped outputs the cigarstring
+ in a single line to stdout
+
+ bool distinguish_mismatch_match = true;
+ GtEoplistReader *eoplist_reader = gt_eoplist_reader_new();
+ GtCigarOp co;
+
+ while (gt_eoplist_reader_next_cigar(&co,eoplist_reader,
+ distinguish_mismatch_match))
+ {
+ printf("" GT_WU "%c",co.iteration,
+ gt_eoplist_pretty_print(co.eoptype,
+ distinguish_mismatch_match));
+ }
+ printf("\n");
+*/
+
+void gt_eoplist_reader_reset(GtEoplistReader *eoplist_reader,
+ const GtEoplist *eoplist,
+ bool forward);
+
+void gt_eoplist_reader_reset_width(GtEoplistReader *eoplist_reader,
+ unsigned int width);
+
+void gt_eoplist_set_sequences(GtEoplist *eoplist,
+ const GtUchar *useq,
+ GtUword ustart,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vstart,
+ GtUword vlen);
+
+void gt_eoplist_format_generic(FILE *fp,
+ const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ const GtUchar *characters,
+ GtUword top_seqlength,
+ GtUword low_reference,
+ GtUword one_off,
+ bool distinguish_mismatch_match,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
+ GtUchar wildcardshow);
+
+void gt_eoplist_format_exact(FILE *fp,
+ const GtEoplist *eoplist,
+ GtEoplistReader *eoplist_reader,
+ GtUword top_seqlength,
+ GtUword low_reference,
+ GtUword one_off,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
+ const GtUchar *characters);
+
+double gt_eoplist_segments_entropy(const GtEoplist *eoplist,GtUword delta);
+
+void gt_eoplist_from_cigar(GtEoplist *eoplist,const char *cigarstring,char sep);
+
+void gt_eoplist_read_trace(GtEoplist *eoplist,
+ const char *trace,
+ char separator);
+
+void gt_eoplist_trace2cigar(GtEoplist *eoplist,bool dtrace,GtUword trace_delta);
+
+char *gt_eoplist2cigar_string(const GtEoplist *eoplist,
+ bool distinguish_mismatch_match);
+
+void gt_eoplist_display_seed_in_alignment_set(GtEoplist *eoplist);
+
+void gt_eoplist_set_seedoffset(GtEoplist *eoplist,
+ GtUword useedoffset,
+ GtUword seedlen);
+
+void gt_eoplist_show_plain(const GtEoplist *eoplist,FILE *fp);
+
+void gt_eoplist_show_cigar(GtEoplistReader *eoplist_reader,
+ bool distinguish_mismatch_match,FILE *fp);
+
+void gt_eoplist_polished_ends(GtEoplist *eoplist,
+ const GtFtPolishing_info *pol_info,
+ bool withpolcheck,
+ bool pol_info_out);
+#endif
diff --git a/src/match/ft-front-generation.c b/src/match/ft-front-generation.c
index 545bd46..dee1bde 100644
--- a/src/match/ft-front-generation.c
+++ b/src/match/ft-front-generation.c
@@ -8,30 +8,19 @@
#endif
#include "core/assert_api.h"
#include "core/divmodmul.h"
-#include "core/unused_api.h"
-#include "core/arraydef.h"
#include "core/ma_api.h"
-#include "core/types_api.h"
-#include "ft-front-generation.h"
-
-#define BACKTRACEBITS 3
-
-typedef uint16_t GtFrontGenerationValue;
-#define GT_FRONTGENERATION_VALUE_MAX\
- ((1UL << (sizeof(GtFrontGenerationValue) * CHAR_BIT)) - 1)
+#include "core/unused_api.h"
+#include "match/ft-front-generation.h"
+#include "match/ft-eoplist.h"
-typedef struct
-{
- GtFrontGenerationValue trimleft_diff,
- valid;
-} GtFrontGeneration;
+#define GT_FT_BACKTRACEBITS 3
typedef struct
{
- uint32_t bits:BACKTRACEBITS, /* combination of FT_EOP_REPLACEMENT
- FT_EOP_INSERTION
- FT_EOP_DELETION */
- lcs:(32-BACKTRACEBITS); /* longest common suffix */
+ uint32_t bits:GT_FT_BACKTRACEBITS, /* combination of FT_EOP_MISMATCH
+ FT_EOP_INSERTION
+ FT_EOP_DELETION */
+ lcs:(32 - GT_FT_BACKTRACEBITS); /* longest common suffix */
} GtBackreftable;
typedef struct
@@ -50,10 +39,8 @@ typedef struct
lcs_sum,
pathlength;
unsigned int row, lcs;
- uint8_t trace;
-#ifndef OUTSIDE_OF_GT
- uint8_t eopcode;
-#endif
+ uint8_t trace,
+ eopcode;
} GtBacktraceFrontStackelem;
typedef struct
@@ -62,27 +49,38 @@ typedef struct
GtUword nextfree, allocated;
} GtBacktraceFrontStack;
-struct GtFronttrace
+typedef uint16_t GtFrontGenerationValue;
+#define GT_FRONTGENERATION_VALUE_MAX\
+ ((1UL << (sizeof(GtFrontGenerationValue) * CHAR_BIT)) - 1)
+
+typedef struct
+{
+ GtFrontGenerationValue trimleft_diff,
+ valid;
+} GtFrontGeneration;
+
+struct GtFrontTrace
{
- GtFrontGeneration *gen_table;
GtBackreftable *backref_table;
+ GtUword maxlcs,
+ backref_nextfree,
+ backref_allocated;
+ /* from now on all values are used for the trimming version only */
+ GtFrontGeneration *gen_table;
#ifdef WITHDISTRIBUTION
Distribution *lcs_dist, *valid_dist, *trimleft_diff_dist, *space_per_pos_dist;
#endif
GtBacktraceFrontpath *backtracepath;
GtBacktraceFrontStack backtracestack;
GtUword backtracepath_allocated,
- backref_nextfree,
- backref_allocated,
gen_nextfree,
gen_allocated,
- maxlcs,
previoustrimleft;
};
-GtFronttrace *front_trace_new(void)
+GtFrontTrace *front_trace_new(void)
{
- GtFronttrace *front_trace = gt_malloc(sizeof *front_trace);
+ GtFrontTrace *front_trace = gt_malloc(sizeof *front_trace);
gt_assert(front_trace != NULL);
/*printf("sizeof *backref_table=" GT_WU " bytes\n",
@@ -91,10 +89,10 @@ GtFronttrace *front_trace_new(void)
front_trace->backref_nextfree = 0;
front_trace->backref_allocated = 0;
front_trace->gen_table = NULL;
+ front_trace->maxlcs = (1 << (32 - GT_FT_BACKTRACEBITS)) - 1;
front_trace->gen_allocated = 0;
front_trace->gen_nextfree = 0;
front_trace->previoustrimleft = 0;
- front_trace->maxlcs = (1 << (32-BACKTRACEBITS)) - 1;
#ifdef WITHDISTRIBUTION
front_trace->lcs_dist = distribution_new();
front_trace->valid_dist = distribution_new();
@@ -110,7 +108,7 @@ GtFronttrace *front_trace_new(void)
}
#ifdef WITHDISTRIBUTION
-static size_t front_trace_size(const GtFronttrace *front_trace)
+static size_t front_trace_size(const GtFrontTrace *front_trace)
{
gt_assert(front_trace != NULL);
return sizeof *front_trace->gen_table * front_trace->gen_nextfree +
@@ -118,7 +116,7 @@ static size_t front_trace_size(const GtFronttrace *front_trace)
}
#endif
-void front_trace_reset(GtFronttrace *front_trace,
+void front_trace_reset(GtFrontTrace *front_trace,
GT_UNUSED GtUword sumseqlen)
{
#ifdef WITHDISTRIBUTION
@@ -134,7 +132,7 @@ void front_trace_reset(GtFronttrace *front_trace,
front_trace->gen_nextfree = 0;
}
-void front_trace_delete(GtFronttrace *front_trace)
+void front_trace_delete(GtFrontTrace *front_trace)
{
if (front_trace != NULL)
{
@@ -158,7 +156,7 @@ void front_trace_delete(GtFronttrace *front_trace)
}
}
-void front_trace_add_gen(GtFronttrace *front_trace,GtUword trimleft,
+void front_trace_add_gen(GtFrontTrace *front_trace,GtUword trimleft,
GtUword valid)
{
gt_assert (front_trace != NULL);
@@ -196,8 +194,9 @@ void front_trace_add_gen(GtFronttrace *front_trace,GtUword trimleft,
front_trace->gen_table[front_trace->gen_nextfree++].valid = valid;
}
-void front_trace_add_trace(GtFronttrace *front_trace,uint8_t backreference,
- unsigned int lcs)
+void front_trace_add_trace(GtFrontTrace *front_trace,
+ uint8_t backreference,
+ uint32_t localmatch_count)
{
gt_assert (front_trace != NULL);
if (front_trace->backref_nextfree >= front_trace->backref_allocated)
@@ -213,8 +212,9 @@ void front_trace_add_trace(GtFronttrace *front_trace,uint8_t backreference,
gt_assert(front_trace->backref_nextfree < front_trace->backref_allocated);
front_trace->backref_table[front_trace->backref_nextfree].bits
= backreference;
- gt_assert(lcs <= front_trace->maxlcs);
- front_trace->backref_table[front_trace->backref_nextfree++].lcs = lcs;
+ gt_assert(localmatch_count <= front_trace->maxlcs);
+ front_trace->backref_table[front_trace->backref_nextfree++].lcs
+ = localmatch_count;
#ifdef WITHDISTRIBUTION
distribution_add(front_trace->lcs_dist,lcs);
#endif
@@ -222,8 +222,8 @@ void front_trace_add_trace(GtFronttrace *front_trace,uint8_t backreference,
/* the following function also works for any point in a front */
-static GtUword polished_point2offset(GT_UNUSED const GtFronttrace *front_trace,
- const Polished_point *pp)
+static GtUword polished_point2offset(GT_UNUSED const GtFrontTrace *front_trace,
+ const GtFtPolished_point *pp)
{
GtWord base_diagonal, pp_diagonal;
@@ -250,79 +250,6 @@ static GtUword valid_total_fronts(const GtFrontGeneration *gen_table,
return valid_total;
}
-char show_eopcode(GT_UNUSED uint8_t eopcode)
-{
-#ifndef OUTSIDE_OF_GT
- if (eopcode == FT_EOPCODE_DELETION)
- {
- return 'D';
- } else
- {
- if (eopcode == FT_EOPCODE_INSERTION)
- {
- return 'I';
- } else
- {
- return 'R';
- }
- }
-#else
- return '\0';
-#endif
-}
-
-#ifndef OUTSIDE_OF_GT
-void eoplist_show(const GtArrayuint8_t *eoplist)
-{
- GtUword idx;
-
- printf("[");
- for (idx = 0; idx < eoplist->nextfreeuint8_t; idx++)
- {
- if (eoplist->spaceuint8_t[idx] == FT_EOPCODE_DELETION)
- {
- printf("D");
- } else
- {
- if (eoplist->spaceuint8_t[idx] == FT_EOPCODE_INSERTION)
- {
- printf("I");
- } else
- {
- GtUword repnum;
- for (repnum = 0; repnum <= eoplist->spaceuint8_t[idx]; repnum++)
- {
- printf("R");
- }
- }
- }
- }
- printf("]\n");
-}
-
-#define GT_EOPLIST_PUSH(EOPLIST,EOP)\
- {\
- const GtUword addamount = (EOPLIST)->allocateduint8_t * 0.2 + 128;\
- GT_STOREINARRAY(EOPLIST,uint8_t,addamount,(uint8_t) (EOP));\
- }
-
-void front_trace_multireplacement(GtArrayuint8_t *eoplist,GtUword repnum)
-{
- gt_assert(eoplist != NULL && repnum > 0);
- while (true)
- {
- if (repnum <= FT_EOPCODE_MAXREPLACEMENT)
- {
- gt_assert(repnum > 0);
- GT_EOPLIST_PUSH(eoplist,repnum - 1);
- break;
- }
- GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_MAXREPLACEMENT - 1);
- repnum -= FT_EOPCODE_MAXREPLACEMENT;
- }
-}
-#endif
-
static void gt_check_diagonal_run(GT_UNUSED const GtUchar *useq,
GT_UNUSED const GtUchar *vseq,
GT_UNUSED GtWord diagonal,
@@ -338,19 +265,19 @@ static void gt_check_diagonal_run(GT_UNUSED const GtUchar *useq,
}
}
-static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
- GtFronttrace *front_trace,
- const Polished_point *pp,
+static void front_trace2eoplist_directed(GtEoplist *eoplist,
+ const GtFrontTrace *front_trace,
const GtUchar *useq,
GT_UNUSED GtUword ulen,
const GtUchar *vseq,
- GT_UNUSED GtUword vlen)
+ GT_UNUSED GtUword vlen,
+ const GtFtPolished_point *pp)
{
GtUword distance, localoffset, globaloffset, remainingvalidfronts,
totalrunlength = 0, trimleft;
GtWord diagonal;
unsigned int row, lcs;
- uint8_t trace, preferred_eop = FT_EOP_REPLACEMENT;
+ uint8_t trace, preferred_eop = FT_EOP_MISMATCH;
gt_assert(front_trace != NULL && front_trace->gen_nextfree > 0 && pp != NULL);
localoffset = polished_point2offset(front_trace,pp);
@@ -373,12 +300,10 @@ static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
if (eoplist != NULL)
{
-#ifndef OUTSIDE_OF_GT
if (lcs > 0)
{
- front_trace_multireplacement(eoplist,lcs);
+ gt_eoplist_match_add(eoplist,lcs);
}
-#endif
} else
{
gt_check_diagonal_run(useq, vseq, diagonal, row - lcs, row);
@@ -386,7 +311,7 @@ static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
if (trace & preferred_eop)
{
totalrunlength++;
- if (preferred_eop == FT_EOP_REPLACEMENT)
+ if (preferred_eop == FT_EOP_MISMATCH)
{
nextrowadd = 1;
} else
@@ -406,9 +331,9 @@ static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
}
} else
{
- if (trace & FT_EOP_REPLACEMENT)
+ if (trace & FT_EOP_MISMATCH)
{
- preferred_eop = FT_EOP_REPLACEMENT;
+ preferred_eop = FT_EOP_MISMATCH;
nextrowadd = 1;
} else
{
@@ -428,24 +353,22 @@ static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
}
}
}
-#ifndef OUTSIDE_OF_GT
if (eoplist != NULL)
{
if (preferred_eop == FT_EOP_DELETION)
{
- GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_DELETION);
+ gt_eoplist_deletion_add(eoplist);
} else
{
if (preferred_eop == FT_EOP_INSERTION)
{
- GT_EOPLIST_PUSH(eoplist,FT_EOPCODE_INSERTION);
+ gt_eoplist_insertion_add(eoplist);
} else
{
- GT_EOPLIST_PUSH(eoplist,0);
+ gt_eoplist_mismatch_add(eoplist);
}
}
}
-#endif
gt_assert(trimleft >=
(GtUword) front_trace->gen_table[distance].trimleft_diff);
trimleft -= (GtUword) front_trace->gen_table[distance].trimleft_diff;
@@ -465,12 +388,10 @@ static void front_trace2eoplist_directed(GtArrayuint8_t *eoplist,
}
/*printf("avg runlength=%.2f\n",(double) pp->distance/totalrunlength);*/
gt_assert(globaloffset + localoffset == 0 && trace == 0);
-#ifndef OUTSIDE_OF_GT
if (eoplist != NULL && lcs > 0)
{
- front_trace_multireplacement(eoplist,lcs);
+ gt_eoplist_match_add(eoplist,lcs);
}
-#endif
}
typedef struct
@@ -493,7 +414,14 @@ static GtBacktraceFrontStackelem *stack_top_ptr_get(
return stack->space + stack->nextfree++;
}
-static void gt_front_trace_single_push(GtFronttrace *front_trace,
+typedef enum
+{
+ backtracepath_mismatch,
+ backtracepath_deletion,
+ backtracepath_insertion
+} Backtracepathflag;
+
+static void gt_front_trace_single_push(GtFrontTrace *front_trace,
GtUword match_score,
GtWord diagonal,
GtWord scoresum,
@@ -502,9 +430,7 @@ static void gt_front_trace_single_push(GtFronttrace *front_trace,
GtUword globaloffset,
GtUword trimleft,
GtUword lcs_sum,
-#ifndef OUTSIDE_OF_GT
- uint8_t eopcode,
-#endif
+ Backtracepathflag eopcode,
GtUword pathlength)
{
GtUword localoffset;
@@ -532,13 +458,11 @@ static void gt_front_trace_single_push(GtFronttrace *front_trace,
stack_top_ptr->lcs_sum = lcs_sum + stack_top_ptr->lcs;
stack_top_ptr->scoresum = scoresum + stack_top_ptr->lcs * match_score;
stack_top_ptr->pathlength = pathlength + 1;
-#ifndef OUTSIDE_OF_GT
stack_top_ptr->eopcode = eopcode;
-#endif
}
static void gt_front_trace_backtrace_step(GtBacktraceFrontInfo *bti,
- GtFronttrace *front_trace,
+ GtFrontTrace *front_trace,
GtWord diagonal,
GtWord scoresum,
GtUword distance,
@@ -564,9 +488,7 @@ static void gt_front_trace_backtrace_step(GtBacktraceFrontInfo *bti,
globaloffset,
trimleft,
lcs_sum,
-#ifndef OUTSIDE_OF_GT
- FT_EOPCODE_INSERTION,
-#endif
+ backtracepath_insertion,
pathlength);
if (!bti->on_polsize_suffix)
{
@@ -586,17 +508,15 @@ static void gt_front_trace_backtrace_step(GtBacktraceFrontInfo *bti,
globaloffset,
trimleft,
lcs_sum,
-#ifndef OUTSIDE_OF_GT
- FT_EOPCODE_DELETION,
-#endif
+ backtracepath_deletion,
pathlength);
if (!bti->on_polsize_suffix)
{
return;
}
}
- if ((trace & FT_EOP_REPLACEMENT) && (!bti->on_polsize_suffix ||
- scoresum >= bti->difference_score))
+ if ((trace & FT_EOP_MISMATCH) && (!bti->on_polsize_suffix ||
+ scoresum >= bti->difference_score))
{
gt_front_trace_single_push(front_trace,
bti->match_score,
@@ -607,15 +527,12 @@ static void gt_front_trace_backtrace_step(GtBacktraceFrontInfo *bti,
globaloffset,
trimleft,
lcs_sum,
-#ifndef OUTSIDE_OF_GT
- 0,
-#endif
+ backtracepath_mismatch,
pathlength);
}
}
-#ifndef OUTSIDE_OF_GT
-static void gt_front_trace_backtracepath2eoplist(GtArrayuint8_t *eoplist,
+static void gt_front_trace_backtracepath2eoplist(GtEoplist *eoplist,
unsigned int lastlcs,
const GtBacktraceFrontpath
*backtracepath,
@@ -627,28 +544,31 @@ static void gt_front_trace_backtracepath2eoplist(GtArrayuint8_t *eoplist,
if (lastlcs > 0)
{
- front_trace_multireplacement(eoplist,lastlcs);
+ gt_eoplist_match_add(eoplist,lastlcs);
matches += lastlcs;
}
+ gt_assert(eoplist != NULL);
for (idx = 0; idx < elementsinbacktracepath; idx++)
{
- if (backtracepath[idx].eopcode == FT_EOPCODE_DELETION)
+ if (backtracepath[idx].eopcode == backtracepath_deletion)
{
+ gt_eoplist_deletion_add(eoplist);
deletions++;
} else
{
- if (backtracepath[idx].eopcode == FT_EOPCODE_INSERTION)
+ if (backtracepath[idx].eopcode == backtracepath_insertion)
{
+ gt_eoplist_insertion_add(eoplist);
insertions++;
} else
{
+ gt_eoplist_mismatch_add(eoplist);
mismatches++;
}
}
- GT_EOPLIST_PUSH(eoplist,backtracepath[idx].eopcode);
if (backtracepath[idx].lcs > 0)
{
- front_trace_multireplacement(eoplist,backtracepath[idx].lcs);
+ gt_eoplist_match_add(eoplist,backtracepath[idx].lcs);
matches += backtracepath[idx].lcs;
}
}
@@ -673,11 +593,10 @@ static void gt_front_trace_backtracepath2eoplist(GtArrayuint8_t *eoplist,
}
*/
}
-#endif
-static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
- GtFronttrace *front_trace,
- const Polished_point *pp,
+static void front_trace2polished_eoplist(GtEoplist *eoplist,
+ GtFrontTrace *front_trace,
+ const GtFtPolished_point *pp,
GtUword pol_size,
GtWord match_score,
GtWord difference_score,
@@ -689,9 +608,8 @@ static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
GtUword localoffset, globaloffset, remainingvalidfronts;
GtBacktraceFrontStackelem *stack_top_ptr;
GtBacktraceFrontInfo bti;
-#ifndef OUTSIDE_OF_GT
unsigned int lastlcs;
-#endif
+
bti.ulen = ulen;
bti.vlen = vlen;
bti.match_score = match_score;
@@ -719,12 +637,9 @@ static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
stack_top_ptr->trace
= front_trace->backref_table[globaloffset + localoffset].bits;
stack_top_ptr->row = pp->row;
-#ifndef OUTSIDE_OF_GT
stack_top_ptr->eopcode = 0;
- lastlcs =
-#endif
- stack_top_ptr->lcs
- = front_trace->backref_table[globaloffset + localoffset].lcs;
+ lastlcs = stack_top_ptr->lcs
+ = front_trace->backref_table[globaloffset + localoffset].lcs;
stack_top_ptr->scoresum = stack_top_ptr->lcs * match_score;
stack_top_ptr->globaloffset = globaloffset;
stack_top_ptr->trimleft = pp->trimleft;
@@ -740,7 +655,6 @@ static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
{
bti.on_polsize_suffix = false;
}
-#ifndef OUTSIDE_OF_GT
if (stack_top_ptr->pathlength > 0)
{
gt_assert(stack_top_ptr->pathlength - 1 <= pp->distance);
@@ -749,7 +663,6 @@ static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
front_trace->backtracepath[stack_top_ptr->pathlength-1].lcs
= stack_top_ptr->lcs;
}
-#endif
if (stack_top_ptr->trace != 0)
{
if (eoplist == NULL)
@@ -778,21 +691,22 @@ static void front_trace2polished_eoplist(GtArrayuint8_t *eoplist,
break;
}
}
-#ifndef OUTSIDE_OF_GT
gt_assert(stack_top_ptr != NULL);
- gt_front_trace_backtracepath2eoplist(eoplist,
- lastlcs,
- front_trace->backtracepath,
- stack_top_ptr->pathlength,
- ulen,
- vlen);
-#endif
+ if (eoplist != NULL)
+ {
+ gt_front_trace_backtracepath2eoplist(eoplist,
+ lastlcs,
+ front_trace->backtracepath,
+ stack_top_ptr->pathlength,
+ ulen,
+ vlen);
+ }
}
void front_trace2eoplist(bool polished,
- GtArrayuint8_t *eoplist,
- GtFronttrace *front_trace,
- const Polished_point *pp,
+ GtEoplist *eoplist,
+ GtFrontTrace *front_trace,
+ const GtFtPolished_point *pp,
GtUword pol_size,
GtWord match_score,
GtWord difference_score,
@@ -817,10 +731,123 @@ void front_trace2eoplist(bool polished,
{
front_trace2eoplist_directed(eoplist,
front_trace,
- pp,
useq,
ulen,
vseq,
- vlen);
+ vlen,
+ pp);
+ }
+}
+void gt_front_trace2eoplist_full_front_directed(GtEoplist *eoplist,
+ const GtFrontTrace *front_trace,
+ GtUword distance,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen)
+{
+ const GtBackreftable *basefront, *current;
+ GtUword firstindex;
+ GtWord diagonal = (GtWord) vlen - (GtWord) ulen;
+ uint32_t row;
+ uint8_t preferred_eop = FT_EOP_MISMATCH;
+
+ gt_assert(front_trace != NULL &&
+ front_trace->backref_nextfree >= 2 * distance + 1);
+ basefront = front_trace->backref_table + front_trace->backref_nextfree
+ - (2 * distance + 1);
+ current = basefront + distance + diagonal;
+ firstindex = gt_eoplist_length(eoplist);
+ gt_assert(ulen <= (GtUword) UINT32_MAX);
+ row = ulen;
+ while (distance > 0)
+ {
+ GtUword nextrowadd;
+
+ if (eoplist != NULL)
+ {
+ if (current->lcs > 0)
+ {
+ gt_eoplist_match_add(eoplist,current->lcs);
+ }
+ } else
+ {
+ gt_check_diagonal_run(useq, vseq, diagonal, row - current->lcs, row);
+ }
+ if (current->bits & preferred_eop)
+ {
+ if (preferred_eop == FT_EOP_MISMATCH)
+ {
+ nextrowadd = 1;
+ } else
+ {
+ if (preferred_eop == FT_EOP_INSERTION)
+ {
+ gt_assert(-(GtWord) ulen < diagonal);
+ diagonal--;
+ nextrowadd = 0;
+ } else
+ {
+ gt_assert(preferred_eop == FT_EOP_DELETION);
+ gt_assert(diagonal < (GtWord) vlen);
+ diagonal++;
+ nextrowadd = 1;
+ }
+ }
+ } else
+ {
+ if (current->bits & FT_EOP_MISMATCH)
+ {
+ preferred_eop = FT_EOP_MISMATCH;
+ nextrowadd = 1;
+ } else
+ {
+ if (current->bits & FT_EOP_INSERTION)
+ {
+ gt_assert(-(GtWord) ulen < diagonal);
+ diagonal--;
+ preferred_eop = FT_EOP_INSERTION;
+ nextrowadd = 0;
+ } else
+ {
+ gt_assert(current->bits & FT_EOP_DELETION);
+ gt_assert(diagonal < (GtWord) vlen);
+ diagonal++;
+ preferred_eop = FT_EOP_DELETION;
+ nextrowadd = 1;
+ }
+ }
+ }
+ if (eoplist != NULL)
+ {
+ if (preferred_eop == FT_EOP_DELETION)
+ {
+ gt_eoplist_deletion_add(eoplist);
+ } else
+ {
+ if (preferred_eop == FT_EOP_INSERTION)
+ {
+ gt_eoplist_insertion_add(eoplist);
+ } else
+ {
+ gt_eoplist_mismatch_add(eoplist);
+ }
+ }
+ }
+ distance--;
+ basefront -= (2 * distance + 1);
+ gt_assert(basefront >= front_trace->backref_table);
+ gt_assert(row >= current->lcs + nextrowadd);
+ row -= current->lcs + nextrowadd;
+ current = basefront + distance + diagonal;
+ }
+ gt_assert(basefront == front_trace->backref_table && current->bits == 0);
+ if (eoplist != NULL)
+ {
+ if (current->lcs > 0)
+ {
+ gt_eoplist_match_add(eoplist,current->lcs);
+ }
+ gt_eoplist_reverse_end(eoplist,firstindex);
}
}
diff --git a/src/match/ft-front-generation.h b/src/match/ft-front-generation.h
index c69eb2f..6b6f913 100644
--- a/src/match/ft-front-generation.h
+++ b/src/match/ft-front-generation.h
@@ -1,52 +1,36 @@
#ifndef FT_FRONT_GENERATION_H
#define FT_FRONT_GENERATION_H
#include <stdint.h>
-#include "core/types_api.h"
-#ifndef OUTSIDE_OF_GT
-#include "core/arraydef.h"
-#else
-typedef struct
-{
- GtUword nextfreeuint8_t,
- allocateduint8_t;
- uint8_t *spaceuint8_t;
-} GtArrayuint8_t;
-
-#endif
-
-#define FT_EOP_REPLACEMENT 1
-#define FT_EOP_INSERTION (1 << 1)
-#define FT_EOP_DELETION (1 << 2)
+#include <stdbool.h>
+#include "match/ft-eoplist.h"
-#ifndef OUTSIDE_OF_GT
-#define FT_EOPCODE_MAXREPLACEMENT 254
-#define FT_EOPCODE_DELETION 254
-#define FT_EOPCODE_INSERTION 255
-#endif
+#define FT_EOP_MISMATCH 1
+#define FT_EOP_INSERTION (1 << 1)
+#define FT_EOP_DELETION (1 << 2)
typedef struct
{
- GtUword alignedlen, row, distance, trimleft;
-} Polished_point;
+ GtUword alignedlen, row, distance, trimleft, max_mismatches;
+} GtFtPolished_point;
-typedef struct GtFronttrace GtFronttrace;
+typedef struct GtFrontTrace GtFrontTrace;
-GtFronttrace *front_trace_new(void);
+GtFrontTrace *front_trace_new(void);
-void front_trace_delete(GtFronttrace *front_trace);
+void front_trace_delete(GtFrontTrace *front_trace);
-void front_trace_reset(GtFronttrace *front_trace,GtUword sumseqlen);
+void front_trace_reset(GtFrontTrace *front_trace,GtUword sumseqlen);
-void front_trace_add_gen(GtFronttrace *front_trace,GtUword trimleft,
+void front_trace_add_gen(GtFrontTrace *front_trace,GtUword trimleft,
GtUword valid);
-void front_trace_add_trace(GtFronttrace *front_trace,uint8_t backreference,
- unsigned int lcs);
+void front_trace_add_trace(GtFrontTrace *front_trace,uint8_t backreference,
+ uint32_t localmatch_count);
void front_trace2eoplist(bool polished,
- GtArrayuint8_t *eoplist,
- GtFronttrace *front_trace,
- const Polished_point *pp,
+ GtEoplist *eoplist,
+ GtFrontTrace *front_trace,
+ const GtFtPolished_point *pp,
GtUword pol_size,
GtWord match_score,
GtWord difference_score,
@@ -55,6 +39,12 @@ void front_trace2eoplist(bool polished,
const GtUchar *vseq,
GtUword vlen);
-void front_trace_multireplacement(GtArrayuint8_t *eoplist,GtUword repnum);
+void gt_front_trace2eoplist_full_front_directed(GtEoplist *eoplist,
+ const GtFrontTrace *front_trace,
+ GtUword distance,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen);
#endif
diff --git a/src/match/ft-front-prune.c b/src/match/ft-front-prune.c
index d017fb6..f5360bf 100644
--- a/src/match/ft-front-prune.c
+++ b/src/match/ft-front-prune.c
@@ -10,46 +10,38 @@
#include "core/chardef.h"
#include "core/divmodmul.h"
#include "core/intbits.h"
+#include "core/minmax.h"
#include "core/encseq.h"
+#include "core/bitpackstringsimpleop.h"
#include "match/extend-offset.h"
-#include "core/ma_api.h"
-#include "core/types_api.h"
-#include "ft-front-prune.h"
-#include "ft-trimstat.h"
-#include "core/minmax.h"
-#include "ft-polish.h"
-#include "ft-front-generation.h"
+#include "match/ft-front-prune.h"
+#include "match/ft-trimstat.h"
+#include "match/ft-polish.h"
+#include "match/ft-front-generation.h"
#define GT_UPDATE_MATCH_HISTORY(FRONTVAL)\
- if ((FRONTVAL)->matchhistory_size == max_history)\
- {\
- if ((FRONTVAL)->matchhistory_bits & leftmostbit)\
- {\
- gt_assert((FRONTVAL)->matchhistory_count > 0);\
- (FRONTVAL)->matchhistory_count--;\
- }\
- } else\
+ if ((FRONTVAL)->matchhistory_size < max_history)\
{\
gt_assert((FRONTVAL)->matchhistory_size < max_history);\
(FRONTVAL)->matchhistory_size++;\
}\
(FRONTVAL)->matchhistory_bits <<= 1
-typedef unsigned int Rowvaluetype;
-typedef uint8_t Matchcounttype;
-typedef uint8_t Backreferencetype;
+typedef uint32_t GtFtRowvaluetype;
+typedef uint8_t GtFtMatchcounttype;
+typedef uint8_t GtFtBackreferencetype;
typedef struct
{
uint64_t matchhistory_bits;
- Rowvaluetype row,
- localmatch_count;
- Matchcounttype matchhistory_count,
- matchhistory_size;
- Backreferencetype backreference;
-} Frontvalue;
-
-#ifndef OUTSIDE_OF_GT
+ GtFtRowvaluetype row,
+ localmatch_count;
+ GtFtMatchcounttype matchhistory_size;
+ GtFtBackreferencetype backreference;
+ uint32_t max_mismatches; /* maximum number of mismatches in a path to this
+ Front-entry.*/
+} GtFtFrontvalue;
+
typedef struct
{
const GtTwobitencoding *twobitencoding;
@@ -60,16 +52,16 @@ typedef struct
GtAllocatedMemory *sequence_cache;
GtUword substringlength,
totallength,
- min_access_pos, /* no position accessed will be smaller than this */
cache_num_positions; /* number of positions in cache */
GtUword offset,
seqstartpos;
bool read_seq_left2right,
dir_is_complement;
-} Sequenceobject;
+} GtFtSequenceObject;
-static void ft_sequenceobject_init(Sequenceobject *seq,
+static void ft_sequenceobject_init(GtFtSequenceObject *seq,
GtExtendCharAccess extend_char_access_mode,
+ bool twobit_possible,
const GtEncseq *encseq,
bool rightextension,
GtReadmode readmode,
@@ -79,7 +71,8 @@ static void ft_sequenceobject_init(Sequenceobject *seq,
GtEncseqReader *encseq_r,
GtAllocatedMemory *sequence_cache,
const GtUchar *bytesequence,
- GtUword totallength
+ GtUword totallength,
+ GtUword full_totallength
)
{
gt_assert(seq != NULL);
@@ -99,8 +92,7 @@ static void ft_sequenceobject_init(Sequenceobject *seq,
len);
seq->read_seq_left2right = GT_EXTEND_READ_SEQ_LEFT2RIGHT(rightextension,
readmode);
- if (encseq != NULL && extend_char_access_mode == GT_EXTEND_CHAR_ACCESS_ANY &&
- gt_encseq_has_twobitencoding(encseq) && gt_encseq_wildcards(encseq) == 0)
+ if (twobit_possible)
{
seq->twobitencoding = gt_encseq_twobitencoding_export(encseq);
}
@@ -108,7 +100,6 @@ static void ft_sequenceobject_init(Sequenceobject *seq,
(extend_char_access_mode == GT_EXTEND_CHAR_ACCESS_ANY ||
extend_char_access_mode == GT_EXTEND_CHAR_ACCESS_ENCSEQ_READER))
{
- GtUword full_totallength = gt_encseq_total_length(encseq);
gt_encseq_reader_reinit_with_readmode(encseq_r, encseq,
seq->read_seq_left2right
? GT_READMODE_FORWARD
@@ -121,7 +112,6 @@ static void ft_sequenceobject_init(Sequenceobject *seq,
gt_assert(seq->encseqreader != NULL && sequence_cache != NULL);
seq->sequence_cache = sequence_cache;
seq->cache_ptr = (GtUchar *) sequence_cache->space;
- seq->min_access_pos = GT_UWORD_MAX; /* undefined */
seq->cache_num_positions = 0;
}
if (encseq != NULL && seq->twobitencoding == NULL &&
@@ -152,7 +142,35 @@ static GtUchar gt_twobitencoding_char_at_pos(
GT_MULT2(GT_UNITSIN2BITENC - 1 - GT_MODBYUNITSIN2BITENC(pos))) & 3;
}
-static GtUchar ft_sequenceobject_get_char(Sequenceobject *seq,GtUword idx)
+static GtUchar gt_sequenceobject_esr_get(GtFtSequenceObject *seq,GtUword idx)
+{
+ gt_assert(idx < seq->substringlength);
+ if (idx >= seq->cache_num_positions)
+ {
+ const GtUword addamount = 16UL;
+ GtUword cidx, tostore = MIN(seq->cache_num_positions + addamount,
+ seq->substringlength);
+
+ if (tostore > seq->sequence_cache->allocated)
+ {
+ seq->sequence_cache->allocated += addamount;
+ seq->sequence_cache->space
+ = gt_realloc(seq->sequence_cache->space,
+ sizeof (GtUchar) * seq->sequence_cache->allocated);
+ seq->cache_ptr = (GtUchar *) seq->sequence_cache->space;
+ }
+ for (cidx = seq->cache_num_positions; cidx < tostore; cidx++)
+ {
+ seq->cache_ptr[cidx]
+ = gt_encseq_reader_next_encoded_char(seq->encseqreader);
+ }
+ seq->cache_num_positions = tostore;
+ }
+ gt_assert(seq->cache_ptr != NULL && idx < seq->cache_num_positions);
+ return seq->cache_ptr[idx];
+}
+
+static GtUchar ft_sequenceobject_get_char(GtFtSequenceObject *seq,GtUword idx)
{
GtUchar cc;
GtUword accesspos;
@@ -168,33 +186,10 @@ static GtUchar ft_sequenceobject_get_char(Sequenceobject *seq,GtUword idx)
}
if (seq->encseqreader != NULL)
{
- gt_assert(idx < seq->substringlength);
- if (idx >= seq->cache_num_positions)
- {
- GtUword idx, tostore;
- const GtUword addamount = 256UL;
-
- tostore = MIN(seq->cache_num_positions + addamount,
- seq->substringlength);
- if (tostore > seq->sequence_cache->allocated)
- {
- seq->sequence_cache->allocated += addamount;
- seq->sequence_cache->space
- = gt_realloc(seq->sequence_cache->space,
- sizeof (GtUchar) * seq->sequence_cache->allocated);
- seq->cache_ptr = (GtUchar *) seq->sequence_cache->space;
- }
- for (idx = seq->cache_num_positions; idx < tostore; idx++)
- {
- seq->cache_ptr[idx]
- = gt_encseq_reader_next_encoded_char(seq->encseqreader);
- }
- seq->cache_num_positions = tostore;
- }
- gt_assert(seq->cache_ptr != NULL && idx < seq->cache_num_positions);
- cc = seq->cache_ptr[idx];
+ cc = gt_sequenceobject_esr_get(seq,idx);
} else
{
+ gt_assert (seq->read_seq_left2right || seq->offset >= idx);
accesspos = seq->read_seq_left2right ? seq->offset + idx
: seq->offset - idx;
if (seq->encseq != NULL)
@@ -207,140 +202,126 @@ static GtUchar ft_sequenceobject_get_char(Sequenceobject *seq,GtUword idx)
cc = seq->bytesequenceptr[accesspos];
}
}
- if (seq->dir_is_complement && !ISSPECIAL(cc))
+ if (seq->dir_is_complement && cc != WILDCARD)
{
return GT_COMPLEMENTBASE(cc);
}
return cc;
}
-#undef SKDEBUG
-#ifdef SKDEBUG
-static char *gt_ft_sequencebject_get(Sequenceobject *seq)
+static inline bool ft_sequenceobject_symbol_match(
+ GtFtSequenceObject *useq,
+ GtUword upos,
+ GtFtSequenceObject *vseq,
+ GtUword vpos)
{
- GtUword idx;
- char *buffer;
- char *map = "acgt";
-
- gt_assert(seq != NULL);
- buffer = gt_malloc(sizeof *buffer * (seq->substringlength+1));
- for (idx = 0; idx < seq->substringlength; idx++)
+ if (upos >= useq->substringlength || vpos >= vseq->substringlength)
{
- GtUchar cc = ft_sequenceobject_get_char(seq,idx);
-
- if (cc == WILDCARD)
- {
- buffer[idx] = '#';
- } else
- {
- if (cc == SEPARATOR)
- {
- buffer[idx] = '$';
- } else
- {
- gt_assert(cc < 4);
- buffer[idx] = map[cc];
- }
- }
+ return false;
+ } else
+ {
+ const GtUchar cu = ft_sequenceobject_get_char(useq,upos);
+ return (cu != WILDCARD && cu == ft_sequenceobject_get_char(vseq,vpos))
+ ? true
+ : false;
}
- buffer[seq->substringlength] = '\0';
- return buffer;
}
-static void gt_greedy_show_context(bool rightextension,
- Sequenceobject *useq,Sequenceobject *vseq)
-{
- char *uptr = gt_ft_sequencebject_get(useq);
- char *vptr = gt_ft_sequencebject_get(vseq);
- printf(">%sextension:\n>%s\n>%s\n",rightextension ? "right" : "left",
- uptr,vptr);
- gt_free(uptr);
- gt_free(vptr);
-}
-#endif
+typedef GtUword (*GtLongestCommonFunc)(GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ GtUword vstart);
-#else
-typedef struct
+static GtUword ft_longest_common_all(GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ GtUword vstart)
{
- const GtUchar *sequence_ptr;
- GtUword substringlength;
-} Sequenceobject;
+ GtUword upos, vpos;
-static void ft_sequenceobject_init(Sequenceobject *seq,
- const GtUchar *ptr,
- GtUword seqstartpos,
- GtUword startpos,
- GtUword len)
-{
- gt_assert(seq != NULL);
- seq->sequence_ptr = ptr + seqstartpos + startpos;
- seq->substringlength = len;
+ for (upos = ustart, vpos = vstart;
+ ft_sequenceobject_symbol_match(useq,upos,vseq,vpos);
+ upos++, vpos++)
+ /* Nothing */ ;
+ return upos - ustart;
}
-#endif
-#define FRONT_DIAGONAL(FRONTPTR) (GtWord) ((FRONTPTR) - midfront)
+#include "match/ft-longest-common.inc"
-static bool ft_sequenceobject_symbol_match(Sequenceobject *useq,
- GtUword upos,
- Sequenceobject *vseq,
- GtUword vpos)
+static int ft_sequenceobject2mode(const GtFtSequenceObject *seq)
{
-#ifndef OUTSIDE_OF_GT
- GtUchar cu = ft_sequenceobject_get_char(useq,upos);
- if (ISSPECIAL(cu))
+ if (seq->twobitencoding != NULL)
{
- return false;
+ return 0;
}
- return cu == ft_sequenceobject_get_char(vseq,vpos) ? true : false;
-#else
- GtUchar cu = useq->sequence_ptr[upos];
- return cu == vseq->sequence_ptr[vpos] ? true : false;
-#endif
+ if (seq->encseqreader != NULL)
+ {
+ return 1;
+ }
+ if (seq->encseq != NULL)
+ {
+ return 2;
+ }
+ gt_assert(seq->bytesequenceptr != NULL);
+ return 3;
}
-static void inline front_prune_add_matches(Frontvalue *midfront,
- Frontvalue *fv,
- uint64_t leftmostbit,
- GtUword max_history,
- Sequenceobject *useq,
- Sequenceobject *vseq)
+static int gt_sequenceobject_longest_func_index(const GtFtSequenceObject *useq,
+ const GtFtSequenceObject *vseq,
+ bool haswildcards)
{
- GtUword upos, vpos;
+ const int u_mode = ft_sequenceobject2mode(useq);
+ const int v_mode = ft_sequenceobject2mode(vseq);
+ return u_mode * ft_longest_common_num_modes + v_mode +
+ (haswildcards ? ft_longest_common_func_first_wildcard : 0);
+}
- for (upos = fv->row, vpos = fv->row + FRONT_DIAGONAL(fv);
- upos < useq->substringlength && vpos < vseq->substringlength &&
- ft_sequenceobject_symbol_match(useq,upos,vseq,vpos);
- upos++, vpos++)
+#define GT_FRONT_DIAGONAL(FRONTPTR) (GtWord) ((FRONTPTR) - midfront)
+
+static void inline front_prune_add_matches(
+ GtLongestCommonFunc ft_longest_common,
+ GtFtFrontvalue *midfront,
+ GtFtFrontvalue *fv,
+ GtUword max_history,
+ GtFtSequenceObject *useq,
+ GtFtSequenceObject *vseq,
+ GtFtTrimstat *trimstat)
+{
+ fv->localmatch_count
+ = (GtFtRowvaluetype)ft_longest_common(useq,fv->row,
+ vseq,fv->row + GT_FRONT_DIAGONAL(fv));
+ if (fv->localmatch_count > 0)
{
- if (fv->matchhistory_size == max_history)
+ const uint64_t match_mask
+ = (fv->localmatch_count >= max_history)
+ ? ~((uint64_t) 0)
+ : ((((uint64_t) 1) << fv->localmatch_count) - 1);
+ fv->matchhistory_bits = (fv->matchhistory_bits << fv->localmatch_count) |
+ match_mask;
+ if (fv->matchhistory_size < max_history)
{
- if (!(fv->matchhistory_bits & leftmostbit))
- {
- gt_assert(fv->matchhistory_count < INT8_MAX);
- fv->matchhistory_count++;
- }
- } else
- {
- gt_assert(fv->matchhistory_size < max_history);
- fv->matchhistory_size++;
- fv->matchhistory_count++;
+ fv->matchhistory_size = MIN(fv->matchhistory_size + fv->localmatch_count,
+ max_history);
}
- fv->matchhistory_bits = (fv->matchhistory_bits << 1) | (uint64_t) 1;
+ fv->row += fv->localmatch_count;
+ }
+ if (trimstat != NULL)
+ {
+ gt_ft_trimstat_add_matchlength(trimstat,fv->localmatch_count);
}
- fv->localmatch_count = upos - fv->row;
- fv->row = upos;
}
-static GtUword front_next_inplace(Frontvalue *midfront,
- Frontvalue *lowfront,
- Frontvalue *highfront,
+static GtUword front_next_inplace(GtLongestCommonFunc ft_longest_common,
+ GtFtFrontvalue *midfront,
+ GtFtFrontvalue *lowfront,
+ GtFtFrontvalue *highfront,
GtUword max_history,
- Sequenceobject *useq,
- Sequenceobject *vseq)
+ GtFtSequenceObject *useq,
+ GtFtSequenceObject *vseq,
+ GtFtTrimstat *trimstat)
{
GtUword alignedlen, maxalignedlen;
- const uint64_t leftmostbit = ((uint64_t) 1) << (max_history-1);
- Frontvalue bestfront, insertion_value, replacement_value, *frontptr;
+ GtFtFrontvalue bestfront, insertion_value, replacement_value, *frontptr;
insertion_value = *lowfront; /* from previous diag -(d-1) => -d => DELETION */
bestfront = insertion_value;
@@ -348,8 +329,9 @@ static GtUword front_next_inplace(Frontvalue *midfront,
GT_UPDATE_MATCH_HISTORY(&bestfront);
*lowfront = bestfront;
lowfront->backreference = FT_EOP_DELETION;
- front_prune_add_matches(midfront,lowfront,leftmostbit,max_history,useq,vseq);
- maxalignedlen = GT_MULT2(lowfront->row) + FRONT_DIAGONAL(lowfront);
+ front_prune_add_matches(ft_longest_common,midfront,lowfront,
+ max_history,useq,vseq,trimstat);
+ maxalignedlen = GT_MULT2(lowfront->row) + GT_FRONT_DIAGONAL(lowfront);
replacement_value = *(lowfront+1);
if (bestfront.row < replacement_value.row + 1)
@@ -360,16 +342,21 @@ static GtUword front_next_inplace(Frontvalue *midfront,
GT_UPDATE_MATCH_HISTORY(&bestfront);
} else
{
- bestfront.backreference = FT_EOP_REPLACEMENT;
+ bestfront.backreference = FT_EOP_MISMATCH;
+ bestfront.max_mismatches++;
if (bestfront.row == replacement_value.row + 1)
{
bestfront.backreference |= FT_EOP_DELETION;
+ if (bestfront.max_mismatches < replacement_value.max_mismatches)
+ {
+ bestfront.max_mismatches = replacement_value.max_mismatches;
+ }
}
}
*(lowfront+1) = bestfront;
- front_prune_add_matches(midfront,lowfront + 1,leftmostbit,max_history,
- useq,vseq);
- alignedlen = GT_MULT2((lowfront+1)->row) + FRONT_DIAGONAL(lowfront + 1);
+ front_prune_add_matches(ft_longest_common,midfront,lowfront + 1,
+ max_history,useq,vseq,trimstat);
+ alignedlen = GT_MULT2((lowfront+1)->row) + GT_FRONT_DIAGONAL(lowfront + 1);
if (maxalignedlen < alignedlen)
{
maxalignedlen = alignedlen;
@@ -383,13 +370,18 @@ static GtUword front_next_inplace(Frontvalue *midfront,
if (bestfront.row < replacement_value.row + 1)
{
bestfront = replacement_value;
- bestfront.backreference = FT_EOP_REPLACEMENT;
+ bestfront.backreference = FT_EOP_MISMATCH;
+ bestfront.max_mismatches++;
bestfront.row++;
} else
{
if (bestfront.row == replacement_value.row + 1)
{
- bestfront.backreference |= FT_EOP_REPLACEMENT;
+ bestfront.backreference |= FT_EOP_MISMATCH;
+ if (bestfront.max_mismatches < replacement_value.max_mismatches + 1)
+ {
+ bestfront.max_mismatches = replacement_value.max_mismatches + 1;
+ }
}
}
}
@@ -415,9 +407,9 @@ static GtUword front_next_inplace(Frontvalue *midfront,
replacement_value = *frontptr;
}
*frontptr = bestfront;
- front_prune_add_matches(midfront,frontptr,leftmostbit,max_history,
- useq,vseq);
- alignedlen = GT_MULT2(frontptr->row) + FRONT_DIAGONAL(frontptr);
+ front_prune_add_matches(ft_longest_common,midfront,frontptr,
+ max_history,useq,vseq,trimstat);
+ alignedlen = GT_MULT2(frontptr->row) + GT_FRONT_DIAGONAL(frontptr);
if (maxalignedlen < alignedlen)
{
maxalignedlen = alignedlen;
@@ -426,28 +418,32 @@ static GtUword front_next_inplace(Frontvalue *midfront,
return maxalignedlen;
}
-static GtUword front_second_inplace(Frontvalue *midfront,
- Frontvalue *lowfront,
+static GtUword front_second_inplace(GtLongestCommonFunc ft_longest_common,
+ GtFtFrontvalue *midfront,
+ GtFtFrontvalue *lowfront,
GtUword max_history,
- Sequenceobject *useq,
- Sequenceobject *vseq)
+ GtFtSequenceObject *useq,
+ GtFtSequenceObject *vseq,
+ GtFtTrimstat *trimstat)
{
GtUword alignedlen, maxalignedlen;
- const uint64_t leftmostbit = ((uint64_t) 1) << (max_history-1);
*(lowfront+1) = *(lowfront+2) = *lowfront;
lowfront->row++;
lowfront->backreference = FT_EOP_DELETION;
GT_UPDATE_MATCH_HISTORY(lowfront);
- front_prune_add_matches(midfront,lowfront,leftmostbit,max_history,useq,vseq);
- maxalignedlen = GT_MULT2(lowfront->row) + FRONT_DIAGONAL(lowfront);
+ front_prune_add_matches(ft_longest_common,midfront,lowfront,
+ max_history,useq,vseq,
+ trimstat);
+ maxalignedlen = GT_MULT2(lowfront->row) + GT_FRONT_DIAGONAL(lowfront);
(lowfront+1)->row++;
- (lowfront+1)->backreference = FT_EOP_REPLACEMENT;
+ (lowfront+1)->backreference = FT_EOP_MISMATCH;
+ (lowfront+1)->max_mismatches++;
GT_UPDATE_MATCH_HISTORY(lowfront+1);
- front_prune_add_matches(midfront,lowfront + 1,leftmostbit,max_history,
- useq,vseq);
- alignedlen = GT_MULT2((lowfront+1)->row) + FRONT_DIAGONAL(lowfront + 1);
+ front_prune_add_matches(ft_longest_common,midfront,lowfront + 1,
+ max_history,useq,vseq,trimstat);
+ alignedlen = GT_MULT2((lowfront+1)->row) + GT_FRONT_DIAGONAL(lowfront + 1);
if (maxalignedlen < alignedlen)
{
maxalignedlen = alignedlen;
@@ -455,9 +451,9 @@ static GtUword front_second_inplace(Frontvalue *midfront,
(lowfront+2)->backreference = FT_EOP_INSERTION;
GT_UPDATE_MATCH_HISTORY(lowfront+2);
- front_prune_add_matches(midfront,lowfront + 2,leftmostbit,max_history,useq,
- vseq);
- alignedlen = GT_MULT2((lowfront+2)->row) + FRONT_DIAGONAL(lowfront + 2);
+ front_prune_add_matches(ft_longest_common,midfront,lowfront + 2,
+ max_history,useq,vseq,trimstat);
+ alignedlen = GT_MULT2((lowfront+2)->row) + GT_FRONT_DIAGONAL(lowfront + 2);
if (maxalignedlen < alignedlen)
{
maxalignedlen = alignedlen;
@@ -465,43 +461,39 @@ static GtUword front_second_inplace(Frontvalue *midfront,
return maxalignedlen;
}
-static bool trimthisentry(GT_UNUSED GtUword distance,
- Rowvaluetype row,
- GtWord diagonal,
- const Frontvalue *fv,
- GT_UNUSED GtUword max_history,
- GtUword minmatchpercentage,
- GtUword minlenfrommaxdiff)
+#if defined (__GNUC__) && defined (__POPCNT__)
+static inline unsigned
+bitCountUInt64(uint64_t v)
+{
+ return __builtin_popcountl(v);
+}
+#else
+static inline unsigned
+bitCountUInt64(uint64_t v)
{
- if (fv->matchhistory_count < (fv->matchhistory_size * minmatchpercentage)/100)
- {
-#undef TRIM_INFO_OUT
-#ifdef TRIM_INFO_OUT
- GtUword alignedlen = GT_MULT2(row) + diagonal;
- double identity = 100.0 * (1.0 - 2.0 * (double) distance/alignedlen);
- printf("aligned=" GT_WU ",diagonal=" GT_WD ", distance=" GT_WU
- ", row=%u, identity=%.2f, hist_size=%d, matches=%d "
- "< " GT_WU "=minmatches\n",
- alignedlen,
- diagonal,distance,row,
- identity,
- (int) fv->matchhistory_size,
- (int) fv->matchhistory_count,
- fv->matchhistory_size * minmatchpercentage/100);
+ return bitCountUInt32((uint32_t) (v & (uint64_t) UINT32_MAX)) +
+ bitCountUInt32((uint32_t) (v >> 32));
+}
#endif
+
+static bool trimthisentry(GtFtRowvaluetype row,
+ GtWord diagonal,
+ const GtFtFrontvalue *fv,
+ GtUword minmatchpercentage128,
+ GtUword minlenfrommaxdiff,
+ uint64_t max_history_mask,
+ GT_UNUSED GtUword distance,
+ GT_UNUSED bool showfrontinfo)
+{
+ if (GT_MULT2(row) + diagonal < minlenfrommaxdiff)
+ {
return true;
}
- if (GT_MULT2(row) + diagonal < minlenfrommaxdiff)
+ if (bitCountUInt64(fv->matchhistory_bits & max_history_mask)
+ < ((fv->matchhistory_size * minmatchpercentage128) >> 7))
{
-#ifdef TRIM_INFO_OUT
- printf(GT_WD "&" GT_WU "&%u&2: i'+j'=" GT_WU "<" GT_WU "=i+j-lag\n",
- diagonal,distance,row,GT_MULT2(row) + diagonal,minlenfrommaxdiff);
-#endif
return true;
}
-#ifdef TRIM_INFO_OUT
- printf(GT_WD "&" GT_WU "&%u\n", diagonal,distance,row);
-#endif
return false;
}
@@ -509,47 +501,59 @@ static GtUword trim_front(bool upward,
GtUword distance,
GtUword ulen,
GtUword vlen,
- GtUword max_history,
- GtUword minmatchpercentage,
+ GtUword minmatchpercentage128,
GtUword minlenfrommaxdiff,
- const Frontvalue *midfront,
- const Frontvalue *from,
- const Frontvalue *stop)
+ GtTrimmingStrategy trimstrategy,
+ const GtFtPolished_point *best_polished_point,
+ const GtFtFrontvalue *midfront,
+ const GtFtFrontvalue *from,
+ const GtFtFrontvalue *stop,
+ uint64_t max_history_mask,
+ bool showfrontinfo)
{
- const Frontvalue *frontptr;
- GtUword trim = 0;
+ const GtFtFrontvalue *frontptr;
+ const int step = upward ? +1 : -1;
+ if (trimstrategy == GT_OUTSENSE_TRIM_NEVER ||
+ (trimstrategy == GT_OUTSENSE_TRIM_ON_NEW_PP &&
+ best_polished_point != NULL &&
+ best_polished_point->distance + 1 < distance &&
+ best_polished_point->distance + 30 >= distance))
+ {
+ return 0;
+ }
gt_assert ((upward && from < stop) || (!upward && stop < from));
- for (frontptr = from; frontptr != stop; frontptr = upward ? (frontptr + 1)
- : (frontptr - 1))
- {
- if (frontptr->row > ulen ||
- frontptr->row + FRONT_DIAGONAL(frontptr) > vlen ||
- trimthisentry(distance,
- frontptr->row,
- FRONT_DIAGONAL(frontptr),
- frontptr,
- max_history,
- minmatchpercentage,
- minlenfrommaxdiff))
- {
- trim++;
- } else
+ for (frontptr = from; frontptr != stop; frontptr += step)
+ {
+ if (frontptr->row <= ulen &&
+ frontptr->row + GT_FRONT_DIAGONAL(frontptr) <= vlen &&
+ !trimthisentry(frontptr->row,
+ GT_FRONT_DIAGONAL(frontptr),
+ frontptr,
+ minmatchpercentage128,
+ minlenfrommaxdiff,
+ max_history_mask,
+ distance,
+ showfrontinfo))
{
break;
}
}
- return trim;
+ if (upward)
+ {
+ return (GtUword) (frontptr - from);
+ }
+ return (GtUword) (from - frontptr);
}
-static void frontspace_check(GT_UNUSED const Frontvalue *from,
- GT_UNUSED const Frontvalue *to,
- GT_UNUSED const Frontvalue *ptr)
+static void frontspace_check(GT_UNUSED const GtFtFrontvalue *from,
+ GT_UNUSED const GtFtFrontvalue *to,
+ GT_UNUSED const GtFtFrontvalue *ptr)
{
gt_assert (ptr >= from && ptr <= to);
}
-static Frontvalue *frontspace_allocate(GtUword minsizeforshift,
+static GtFtFrontvalue *frontspace_allocate(GtUword minsizeforshift,
GtUword trimleft,
GtUword valid,
GtAllocatedMemory *fs)
@@ -559,79 +563,57 @@ static Frontvalue *frontspace_allocate(GtUword minsizeforshift,
fs->allocated = 255UL + MAX(fs->allocated * 1.2,
trimleft - fs->offset + valid);
gt_assert(fs->allocated > trimleft - fs->offset + valid);
- fs->space = gt_realloc(fs->space,sizeof (Frontvalue) * fs->allocated);
+ fs->space = gt_realloc(fs->space,sizeof (GtFtFrontvalue) * fs->allocated);
gt_assert(fs->space != NULL);
}
gt_assert(trimleft >= fs->offset);
if (trimleft - fs->offset > MAX(valid,minsizeforshift))
{
- memcpy(fs->space,((Frontvalue *) fs->space) + trimleft - fs->offset,
- sizeof (Frontvalue) * valid);
+ memcpy(fs->space,((GtFtFrontvalue *) fs->space) + trimleft - fs->offset,
+ sizeof (GtFtFrontvalue) * valid);
fs->offset = trimleft;
}
- return ((Frontvalue *) fs->space) - fs->offset;
+ return ((GtFtFrontvalue *) fs->space) - fs->offset;
}
-static void update_trace_and_polished(Polished_point *best_polished_point,
-#ifndef OUTSIDE_OF_GT
- GtUword *minrow,
- GtUword *mincol,
-#endif
- GtFronttrace *front_trace,
- const Polishing_info *pol_info,
+static void ft_update_trace_and_polished(
+ GtFtPolished_point *best_polished_point,
+ GtFrontTrace *front_trace,
+ const GtFtPolishing_info *pol_info,
GtUword distance,
GtUword trimleft,
- Frontvalue *midfront,
- Frontvalue *lowfront,
- Frontvalue *highfront)
+ GtFtFrontvalue *midfront,
+ GtFtFrontvalue *lowfront,
+ GtFtFrontvalue *highfront,
+ GT_UNUSED bool showfrontinfo)
{
- const Frontvalue *frontptr;
+ const GtFtFrontvalue *frontptr;
-#ifndef OUTSIDE_OF_GT
- *minrow = GT_UWORD_MAX;
- *mincol = GT_UWORD_MAX;
-#endif
for (frontptr = lowfront; frontptr <= highfront; frontptr++)
{
- GtUword alignedlen = GT_MULT2(frontptr->row) + FRONT_DIAGONAL(frontptr);
- uint64_t filled_matchhistory_bits;
+ GtUword alignedlen = GT_MULT2(frontptr->row) + GT_FRONT_DIAGONAL(frontptr);
-#ifndef OUTSIDE_OF_GT
- GtUword currentcol;
-
- if (*minrow > frontptr->row)
- {
- *minrow = frontptr->row;
- }
- gt_assert(FRONT_DIAGONAL(frontptr) >= 0 ||
- frontptr->row >= -FRONT_DIAGONAL(frontptr));
- currentcol = frontptr->row + FRONT_DIAGONAL(frontptr);
- if (*mincol > currentcol)
- {
- *mincol = currentcol;
- }
-#endif
- if (frontptr->matchhistory_size >= GT_MULT2(pol_info->cut_depth))
+ gt_assert(GT_FRONT_DIAGONAL(frontptr) >= 0 ||
+ frontptr->row >= -GT_FRONT_DIAGONAL(frontptr));
+ if (alignedlen > best_polished_point->alignedlen)
{
- filled_matchhistory_bits = frontptr->matchhistory_bits;
- } else
- {
- int shift = GT_MULT2(pol_info->cut_depth) - frontptr->matchhistory_size;
- uint64_t fill_bits = ((uint64_t) 1 << shift) - 1;
- filled_matchhistory_bits = frontptr->matchhistory_bits |
- (fill_bits << frontptr->matchhistory_size);
- }
- if (alignedlen > best_polished_point->alignedlen &&
- GT_HISTORY_IS_POLISHED(pol_info,filled_matchhistory_bits))
- {
- best_polished_point->alignedlen = alignedlen;
- best_polished_point->row = frontptr->row;
- best_polished_point->distance = distance;
- best_polished_point->trimleft = trimleft;
-#ifdef TRIM_INFO_OUT
- printf("new polished point (alignlen=" GT_WU ",row=%u,distance=" GT_WU
- ")\n",alignedlen,frontptr->row,distance);
-#endif
+ uint64_t filled_matchhistory_bits = frontptr->matchhistory_bits;
+
+ if (frontptr->matchhistory_size < pol_info->pol_size)
+ {
+ const int shift = pol_info->pol_size - frontptr->matchhistory_size;
+ const uint64_t fill_bits = ((uint64_t) 1 << shift) - 1;
+ filled_matchhistory_bits |= (fill_bits << frontptr->matchhistory_size);
+ }
+ if (GT_HISTORY_IS_POLISHED(pol_info,filled_matchhistory_bits))
+ {
+ best_polished_point->alignedlen = alignedlen;
+ best_polished_point->row = frontptr->row;
+ best_polished_point->distance = distance;
+ best_polished_point->trimleft = trimleft;
+ best_polished_point->max_mismatches
+ = (GtUword) frontptr->max_mismatches;
+ }
}
if (front_trace != NULL)
{
@@ -642,52 +624,48 @@ static void update_trace_and_polished(Polished_point *best_polished_point,
}
GtUword front_prune_edist_inplace(
-#ifndef OUTSIDE_OF_GT
bool rightextension,
GtAllocatedMemory *frontspace,
-#endif
- Trimstat *trimstat,
- Polished_point *best_polished_point,
- GtFronttrace *front_trace,
- const Polishing_info *pol_info,
+ GtFtPolished_point *best_polished_point,
+ GtFrontTrace *front_trace,
+ const GtFtPolishing_info *pol_info,
+ GtTrimmingStrategy trimstrategy,
GtUword max_history,
GtUword minmatchpercentage,
GtUword maxalignedlendifference,
+ bool showfrontinfo,
GtUword seedlength,
- FTsequenceResources *ufsr,
+ GtFTsequenceResources *ufsr,
GtUword ustart,
GtUword ulen,
GtUword vseqstartpos,
- FTsequenceResources *vfsr,
+ GtFTsequenceResources *vfsr,
GtUword vstart,
- GtUword vlen)
+ GtUword vlen,
+ bool cam_generic,
+ GtFtTrimstat *trimstat)
{
const GtUword sumseqlength = ulen + vlen,
minsizeforshift = sumseqlength/1000;
/* so the space for allocating the fronts is
- sizeof (Frontvalue) * ((m+n)/1000 + maxvalid), where maxvalid is a small
- constant. */
+ sizeof (GtFtFrontvalue) * ((m+n)/1000 + maxvalid), where maxvalid is a
+ small constant. */
GtUword distance, trimleft = 0, valid = 1UL, maxvalid = 0, sumvalid = 0;
- const uint64_t leftmostbit = ((uint64_t) 1) << (max_history-1);
- Frontvalue *validbasefront;
+ GtFtFrontvalue *validbasefront;
bool diedout = false;
- Sequenceobject useq, vseq;
+ GtFtSequenceObject useq, vseq;
+ /* This transformation allows to compute the /100 by >> 7 */
+ const GtUword minmatchpercentage128
+ = (minmatchpercentage * 128)/100 +
+ (((minmatchpercentage * 128) % 100 == 0) ? 0 : 1);
+ const uint64_t max_history_mask
+ = max_history == 64 ? (~((uint64_t) 0))
+ : ((((uint64_t) 1) << max_history) - 1);
+ GtLongestCommonFunc ft_longest_common;
-#ifdef OUTSIDE_OF_GT
- GtAllocatedMemory *frontspace = gt_malloc(sizeof *frontspace);
- frontspace->space = NULL;
- frontspace->allocated = 0;
- frontspace->offset = 0;
- ft_sequenceobject_init(&useq,useqptr,0,ustart,ulen);
- ft_sequenceobject_init(&vseq,vseqptr,vseqstartpos,vstart,vlen);
-#else
- /*
- printf("%sextension:useq->readmode=%s,vseq->readmode=%s\n",
- rightextension ? "right" : "left",
- gt_readmode_show(ufsr->readmode),gt_readmode_show(ufsr->readmode));
- */
ft_sequenceobject_init(&useq,
ufsr->extend_char_access,
+ ufsr->twobit_possible,
ufsr->encseq,
rightextension,
ufsr->readmode,
@@ -696,10 +674,12 @@ GtUword front_prune_edist_inplace(
ulen,
ufsr->encseq_r,
ufsr->sequence_cache,
- NULL,
- ufsr->totallength);
+ ufsr->bytesequence,
+ ufsr->totallength,
+ ufsr->full_totallength);
ft_sequenceobject_init(&vseq,
vfsr->extend_char_access,
+ vfsr->twobit_possible,
vfsr->encseq,
rightextension,
vfsr->readmode,
@@ -709,22 +689,24 @@ GtUword front_prune_edist_inplace(
vfsr->encseq_r,
vfsr->sequence_cache,
vfsr->bytesequence,
- vfsr->totallength);
-#ifdef SKDEBUG
- gt_greedy_show_context(rightextension,&useq,&vseq);
-#endif
+ vfsr->totallength,
+ vfsr->full_totallength);
+ if (cam_generic)
+ {
+ ft_longest_common = ft_longest_common_all;
+ } else
+ {
+ const bool haswildcards
+ = (ufsr->haswildcards && vfsr->haswildcards) ? true : false;
+ const int func_index
+ = gt_sequenceobject_longest_func_index(&useq,&vseq,haswildcards);
+ ft_longest_common = ft_longest_common_func_tab[func_index];
+ }
frontspace->offset = 0;
-#endif
for (distance = 0, valid = 1UL; /* Nothing */; distance++, valid += 2)
{
GtUword trim, maxalignedlen, minlenfrommaxdiff;
-#ifdef TRIM_INFO_OUT
- printf("distance=" GT_WU ",full=" GT_WU ",trimleft=" GT_WU
- ",valid=" GT_WU "\n",distance,
- GT_MULT2(distance) + 1,
- trimleft,valid);
-#endif
gt_assert(valid <= GT_MULT2(distance) + 1);
sumvalid += valid;
if (maxvalid < valid)
@@ -743,63 +725,62 @@ GtUword front_prune_edist_inplace(
{
validbasefront->matchhistory_bits = (((uint64_t) 1) << seedlength) - 1;
}
- validbasefront->matchhistory_size
- = validbasefront->matchhistory_count = MIN(max_history,seedlength);
+ validbasefront->matchhistory_size = MIN(max_history,seedlength);
validbasefront->backreference = 0; /* No back reference */
- front_prune_add_matches(validbasefront + distance,validbasefront,
- leftmostbit,max_history,&useq,&vseq);
+ validbasefront->max_mismatches = 0;
+ front_prune_add_matches(ft_longest_common,validbasefront + distance,
+ validbasefront,max_history,&useq,&vseq,trimstat);
maxalignedlen = GT_MULT2(validbasefront->row);
} else
{
gt_assert(valid >= 3UL);
- frontspace_check((const Frontvalue *) frontspace->space,
- ((const Frontvalue *) frontspace->space)
+ frontspace_check((const GtFtFrontvalue *) frontspace->space,
+ ((const GtFtFrontvalue *) frontspace->space)
+ frontspace->allocated - 1,
validbasefront + trimleft);
- frontspace_check((const Frontvalue *) frontspace->space,
- ((const Frontvalue *) frontspace->space)
+ frontspace_check((const GtFtFrontvalue *) frontspace->space,
+ ((const GtFtFrontvalue *) frontspace->space)
+ frontspace->allocated - 1,
validbasefront + trimleft + valid - 1);
if (valid == 3UL)
{
- maxalignedlen
- = front_second_inplace(validbasefront + distance,
- validbasefront + trimleft,
- max_history,
- &useq,
- &vseq);
+ maxalignedlen = front_second_inplace(ft_longest_common,
+ validbasefront + distance,
+ validbasefront + trimleft,
+ max_history,
+ &useq,
+ &vseq,
+ trimstat);
} else
{
maxalignedlen
- = front_next_inplace(validbasefront + distance,
+ = front_next_inplace(ft_longest_common,
+ validbasefront + distance,
validbasefront + trimleft,
validbasefront + trimleft + valid - 1,
max_history,
&useq,
- &vseq);
+ &vseq,
+ trimstat);
}
}
gt_assert(valid > 0);
minlenfrommaxdiff = maxalignedlen >= maxalignedlendifference
? maxalignedlen - maxalignedlendifference
: 0;
-#ifdef TRIM_INFO_OUT
- printf("maxalignedlen=" GT_WU ",maxlenfrommaxdiff=" GT_WU "\n",
- maxalignedlen,minlenfrommaxdiff);
-#endif
trim = trim_front(true,
distance,
ulen,
vlen,
- max_history,
- minmatchpercentage,
+ minmatchpercentage128,
minlenfrommaxdiff,
+ trimstrategy,
+ best_polished_point,
validbasefront + distance,
validbasefront + trimleft,
- validbasefront + trimleft + valid);
-#ifdef TRIM_INFO_OUT
- printf("trim on left=" GT_WU "\n",trim);
-#endif
+ validbasefront + trimleft + valid,
+ max_history_mask,
+ showfrontinfo);
if (trim > 0)
{
trimleft += trim;
@@ -812,15 +793,15 @@ GtUword front_prune_edist_inplace(
distance,
ulen,
vlen,
- max_history,
- minmatchpercentage,
+ minmatchpercentage128,
minlenfrommaxdiff,
+ trimstrategy,
+ best_polished_point,
validbasefront + distance,
validbasefront + trimleft + valid - 1,
- validbasefront + trimleft - 1);
-#ifdef TRIM_INFO_OUT
- printf("trim on right=" GT_WU "\n",trim);
-#endif
+ validbasefront + trimleft - 1,
+ max_history_mask,
+ showfrontinfo);
gt_assert(trim < valid);
if (trim > 0)
{
@@ -837,18 +818,15 @@ GtUword front_prune_edist_inplace(
{
front_trace_add_gen(front_trace,trimleft,valid);
}
- update_trace_and_polished(best_polished_point,
-#ifndef OUTSIDE_OF_GT
- &useq.min_access_pos,
- &vseq.min_access_pos,
-#endif
- front_trace,
- pol_info,
- distance,
- trimleft,
- validbasefront + distance,
- validbasefront + trimleft,
- validbasefront + trimleft + valid - 1);
+ ft_update_trace_and_polished(best_polished_point,
+ front_trace,
+ pol_info,
+ distance,
+ trimleft,
+ validbasefront + distance,
+ validbasefront + trimleft,
+ validbasefront + trimleft + valid - 1,
+ showfrontinfo);
if ((vlen > ulen && vlen - ulen <= distance) ||
(vlen <= ulen && ulen - vlen <= distance))
{
@@ -864,20 +842,227 @@ GtUword front_prune_edist_inplace(
break;
}
}
- trimstat_add(trimstat,diedout,sumvalid,maxvalid,distance,
- sizeof (Frontvalue) * frontspace->allocated,
-#ifndef OUTSIDE_OF_GT
- useq.sequence_cache != NULL &&
- vseq.sequence_cache != NULL ? MAX(useq.sequence_cache->allocated,
- vseq.sequence_cache->allocated)
- : 0
-#else
- 0
-#endif
- );
-#ifdef OUTSIDE_OF_GT
- gt_free(frontspace->space);
- gt_free(frontspace);
-#endif
+ if (trimstat != NULL)
+ {
+ gt_ft_trimstat_add(trimstat,diedout,sumvalid,maxvalid,distance,
+ sizeof (GtFtFrontvalue) * frontspace->allocated);
+ }
return diedout ? sumseqlength + 1 : distance;
}
+static void inline gt_full_front_prune_add_matches(GtFtFrontvalue *midfront,
+ GtFtFrontvalue *fv,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen)
+{
+ GtUword upos, vpos;
+
+ for (upos = fv->row, vpos = fv->row + GT_FRONT_DIAGONAL(fv);
+ upos < ulen && vpos < vlen &&
+ useq[upos] == vseq[vpos]
+ && ISNOTSPECIAL(useq[upos])
+ ;
+ upos++, vpos++)
+ /* Nothing */;
+ fv->localmatch_count = upos - fv->row;
+ fv->row = upos;
+}
+
+static void gt_full_front_next_inplace(GtFtFrontvalue *midfront,
+ GtFtFrontvalue *lowfront,
+ GtFtFrontvalue *highfront,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen)
+{
+ GtFtFrontvalue bestfront, insertion_value, replacement_value, *frontptr;
+
+ insertion_value = *lowfront; /* from previous diag -(d-1) => -d => DELETION */
+ bestfront = insertion_value;
+ bestfront.row++;
+ *lowfront = bestfront;
+ lowfront->backreference = FT_EOP_DELETION;
+ gt_full_front_prune_add_matches(midfront,lowfront,useq,ulen,vseq,vlen);
+
+ replacement_value = *(lowfront+1);
+ if (bestfront.row < replacement_value.row + 1)
+ {
+ bestfront = replacement_value;
+ bestfront.backreference = FT_EOP_DELETION;
+ bestfront.row++;
+ } else
+ {
+ bestfront.backreference = FT_EOP_MISMATCH;
+ if (bestfront.row == replacement_value.row + 1)
+ {
+ bestfront.backreference |= FT_EOP_DELETION;
+ }
+ }
+ *(lowfront+1) = bestfront;
+ gt_full_front_prune_add_matches(midfront,lowfront + 1,useq,ulen,vseq,vlen);
+ for (frontptr = lowfront+2; frontptr <= highfront; frontptr++)
+ {
+ bestfront = insertion_value;
+ bestfront.backreference = FT_EOP_INSERTION;
+ if (frontptr <= highfront - 1)
+ {
+ if (bestfront.row < replacement_value.row + 1)
+ {
+ bestfront = replacement_value;
+ bestfront.backreference = FT_EOP_MISMATCH;
+ bestfront.row++;
+ } else
+ {
+ if (bestfront.row == replacement_value.row + 1)
+ {
+ bestfront.backreference |= FT_EOP_MISMATCH;
+ }
+ }
+ }
+ if (frontptr <= highfront - 2)
+ {
+ if (bestfront.row < frontptr->row + 1)
+ {
+ bestfront = *frontptr;
+ bestfront.backreference = FT_EOP_DELETION;
+ bestfront.row++;
+ } else
+ {
+ if (bestfront.row == frontptr->row + 1)
+ {
+ bestfront.backreference |= FT_EOP_DELETION;
+ }
+ }
+ }
+ if (frontptr < highfront)
+ {
+ insertion_value = replacement_value;
+ replacement_value = *frontptr;
+ }
+ *frontptr = bestfront;
+ gt_full_front_prune_add_matches(midfront,frontptr,useq,ulen,vseq,vlen);
+ }
+}
+
+static void gt_full_front_second_inplace(GtFtFrontvalue *midfront,
+ GtFtFrontvalue *lowfront,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen)
+{
+ *(lowfront+1) = *(lowfront+2) = *lowfront;
+ lowfront->row++;
+ lowfront->backreference = FT_EOP_DELETION;
+ gt_full_front_prune_add_matches(midfront,lowfront,useq,ulen,vseq,vlen);
+
+ (lowfront+1)->row++;
+ (lowfront+1)->backreference = FT_EOP_MISMATCH;
+ gt_full_front_prune_add_matches(midfront,lowfront + 1,useq,ulen,vseq,vlen);
+
+ (lowfront+2)->backreference = FT_EOP_INSERTION;
+ gt_full_front_prune_add_matches(midfront,lowfront + 2,useq,ulen,vseq,vlen);
+}
+
+struct GtFullFrontEdistTrace
+{
+ GtFtFrontvalue *spaceGtFtFrontvalue;
+ GtUword allocatedGtFtFrontvalue;
+ GtFrontTrace *front_trace;
+};
+
+GtFullFrontEdistTrace *gt_full_front_edist_trace_new(void)
+{
+ GtFullFrontEdistTrace *fet = gt_malloc(sizeof *fet);
+
+ gt_assert(fet != NULL);
+ fet->spaceGtFtFrontvalue = NULL;
+ fet->allocatedGtFtFrontvalue = 0;
+ fet->front_trace = front_trace_new();
+ return fet;
+}
+
+void gt_full_front_edist_trace_delete(GtFullFrontEdistTrace *fet)
+{
+ if (fet != NULL)
+ {
+ gt_free(fet->spaceGtFtFrontvalue);
+ front_trace_delete(fet->front_trace);
+ gt_free(fet);
+ }
+}
+
+GtFrontTrace *gt_full_front_trace_get(GtFullFrontEdistTrace *fet)
+{
+ gt_assert(fet != NULL);
+ return fet->front_trace;
+}
+
+static void gt_full_front_trace_add_gen(GtFrontTrace *front_trace,
+ const GtFtFrontvalue *lowfront,
+ const GtFtFrontvalue *highfront)
+{
+ const GtFtFrontvalue *fv;
+
+ for (fv = lowfront; fv <= highfront; fv++)
+ {
+ front_trace_add_trace(front_trace,fv->backreference,fv->localmatch_count);
+ }
+}
+
+GtUword gt_full_front_edist_trace_distance(GtFullFrontEdistTrace *fet,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen)
+{
+ const GtUword sumseqlength = ulen + vlen;
+ GtUword distance;
+
+ front_trace_reset(fet->front_trace,ulen+vlen);
+ for (distance = 0; distance <= sumseqlength; distance++)
+ {
+ GtFtFrontvalue *basefront;
+ if (2 * distance >= fet->allocatedGtFtFrontvalue)
+ {
+ fet->allocatedGtFtFrontvalue = fet->allocatedGtFtFrontvalue * 1.2 + 32;
+ fet->spaceGtFtFrontvalue = gt_realloc(fet->spaceGtFtFrontvalue,
+ sizeof *fet->spaceGtFtFrontvalue *
+ fet->allocatedGtFtFrontvalue);
+ gt_assert(fet->spaceGtFtFrontvalue != NULL);
+ }
+ basefront = fet->spaceGtFtFrontvalue;
+ if (distance == 0)
+ {
+ basefront->row = 0;
+ basefront->backreference = 0; /* No back reference */
+ gt_full_front_prune_add_matches(basefront,basefront,useq,ulen,vseq,vlen);
+ } else
+ {
+ if (distance == 1)
+ {
+ gt_full_front_second_inplace(basefront + distance,basefront,
+ useq,ulen,vseq,vlen);
+ } else
+ {
+ gt_full_front_next_inplace(basefront + distance,basefront,
+ basefront + 2 * distance,
+ useq,ulen,vseq,vlen);
+ }
+ }
+ gt_full_front_trace_add_gen(fet->front_trace,basefront,
+ basefront + 2 * distance);
+ if ((vlen > ulen && vlen - ulen <= distance) ||
+ (vlen <= ulen && ulen - vlen <= distance))
+ {
+ if (basefront[distance + vlen - ulen].row == ulen)
+ {
+ break;
+ }
+ }
+ }
+ gt_assert(distance <= sumseqlength);
+ return distance;
+}
diff --git a/src/match/ft-front-prune.h b/src/match/ft-front-prune.h
index b87a12d..6614ac5 100644
--- a/src/match/ft-front-prune.h
+++ b/src/match/ft-front-prune.h
@@ -1,9 +1,8 @@
#ifndef FT_FRONT_PRUNE_H
#define FT_FRONT_PRUNE_H
-#include "core/types_api.h"
-#include "ft-trimstat.h"
-#include "ft-polish.h"
-#include "ft-front-generation.h"
+#include "match/ft-trimstat.h"
+#include "match/ft-polish.h"
+#include "match/ft-front-generation.h"
#include "core/encseq_api.h"
typedef struct
@@ -12,7 +11,13 @@ typedef struct
GtUword offset, allocated;
} GtAllocatedMemory;
-#ifndef OUTSIDE_OF_GT
+typedef enum
+{
+ GT_OUTSENSE_TRIM_ALWAYS,
+ GT_OUTSENSE_TRIM_ON_NEW_PP,
+ GT_OUTSENSE_TRIM_NEVER
+} GtTrimmingStrategy;
+
typedef enum
{
GT_EXTEND_CHAR_ACCESS_ENCSEQ,
@@ -24,34 +29,50 @@ typedef enum
typedef struct
{
const GtEncseq *encseq;
- GtReadmode readmode;
GtAllocatedMemory *sequence_cache;
GtEncseqReader *encseq_r;
const GtUchar *bytesequence;
+ GtUword totallength,
+ full_totallength;
+ GtReadmode readmode;
GtExtendCharAccess extend_char_access;
- GtUword totallength;
-} FTsequenceResources;
-#endif
+ bool twobit_possible, haswildcards;
+} GtFTsequenceResources;
GtUword front_prune_edist_inplace(
-#ifndef OUTSIDE_OF_GT
bool forward,
GtAllocatedMemory *frontspace_reservoir,
-#endif
- Trimstat *trimstat,
- Polished_point *best_polished_point,
- GtFronttrace *fronttrace,
- const Polishing_info *pol_info,
+ GtFtPolished_point *best_polished_point,
+ GtFrontTrace *fronttrace,
+ const GtFtPolishing_info *pol_info,
+ GtTrimmingStrategy trimstrategy,
GtUword history,
GtUword minmatchnum,
GtUword maxalignedlendifference,
+ bool showfrontinfo,
GtUword seedlength,
- FTsequenceResources *ufsr,
+ GtFTsequenceResources *ufsr,
GtUword ustart,
GtUword uulen,
GtUword vseqstartpos,
- FTsequenceResources *vfsr,
+ GtFTsequenceResources *vfsr,
GtUword vstart,
- GtUword vlen);
+ GtUword vlen,
+ bool cam_generic,
+ GtFtTrimstat *trimstat);
+
+typedef struct GtFullFrontEdistTrace GtFullFrontEdistTrace;
+
+GtFullFrontEdistTrace *gt_full_front_edist_trace_new(void);
+
+void gt_full_front_edist_trace_delete(GtFullFrontEdistTrace *fet);
+
+GtFrontTrace *gt_full_front_trace_get(GtFullFrontEdistTrace *fet);
+
+GtUword gt_full_front_edist_trace_distance(GtFullFrontEdistTrace *fet,
+ const GtUchar *useq,
+ GtUword ulen,
+ const GtUchar *vseq,
+ GtUword vlen);
#endif
diff --git a/src/match/ft-longest-common.inc b/src/match/ft-longest-common.inc
new file mode 100644
index 0000000..764eb8a
--- /dev/null
+++ b/src/match/ft-longest-common.inc
@@ -0,0 +1,1839 @@
+static GtUword ft_longest_common_twobit_twobit(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_encseq_reader(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_encseq(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_bytes(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; const GtUchar *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr) != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_twobit(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_encseq_reader(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr = vstart;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr++;
+ vptr++;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr++;
+ vptr++;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_encseq(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_bytes(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart; const GtUchar *vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_sequenceobject_esr_get(useq,uptr) != *vptr)
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_twobit(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_encseq_reader(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_encseq(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_bytes(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; const GtUchar *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD) != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_twobit(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; GtUword vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (*uptr !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (*uptr !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_encseq_reader(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (*uptr !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (*uptr !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_encseq(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; GtUword vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (*uptr !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (*uptr !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_bytes(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr, *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ if (*uptr != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ if (*uptr != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_twobit_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_encseq_reader_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_encseq_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_twobit_bytes_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; const GtUchar *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD || cu != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_twobitencoding_char_at_pos(
+ useq->twobitencoding,
+ uptr);
+ if (cu == WILDCARD || cu != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_twobit_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_encseq_reader_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr = vstart;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr++;
+ vptr++;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr++;
+ vptr++;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_encseq_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart, vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_reader_bytes_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr = ustart; const GtUchar *vptr; int vstep;
+ GtUword minsubstringlength = ustart + vseq->substringlength - vstart;
+ if (useq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = useq->substringlength;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD || cu != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_sequenceobject_esr_get(useq,uptr);
+ if (cu == WILDCARD || cu != *vptr)
+ break;
+ uptr++;
+ vptr += vstep;
+ } while (uptr < minsubstringlength);
+ }
+ return uptr - ustart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_twobit_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_encseq_reader_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_encseq_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr, vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD ||
+ cu !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_encseq_bytes_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ GtUword uptr; const GtUchar *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD || cu != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = gt_encseq_get_encoded_char(useq->encseq,
+ uptr,
+ GT_READMODE_FORWARD);
+ if (cu == WILDCARD || cu != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_twobit_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; GtUword vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ gt_twobitencoding_char_at_pos(
+ vseq->twobitencoding,
+ vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_encseq_reader_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; int ustep; GtUword vptr = vstart;
+ GtUword minsubstringlength = vstart + useq->substringlength - ustart;
+ if (vseq->substringlength < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_sequenceobject_esr_get(vseq,vptr)))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ gt_sequenceobject_esr_get(vseq,vptr))
+ break;
+ uptr += ustep;
+ vptr++;
+ } while (vptr < minsubstringlength);
+ }
+ return vptr - vstart;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_encseq_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr; GtUword vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ GT_COMPLEMENTBASE(gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD)))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD ||
+ cu !=
+ gt_encseq_get_encoded_char(vseq->encseq,
+ vptr,
+ GT_READMODE_FORWARD))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+static GtUword ft_longest_common_bytes_bytes_wildcard(
+ GtFtSequenceObject *useq,
+ GtUword ustart,
+ GtFtSequenceObject *vseq,
+ const GtUword vstart)
+{
+ if (ustart < useq->substringlength && vstart < vseq->substringlength)
+ {
+ const GtUchar *uptr, *vptr; int ustep, vstep;
+ GtUword minsubstringlength = useq->substringlength - ustart,
+ matchlength = 0;
+ if (vseq->substringlength - vstart < minsubstringlength)
+ {
+ minsubstringlength = vseq->substringlength - vstart;
+ }
+ if (useq->read_seq_left2right)
+ {
+ uptr = useq->bytesequenceptr + useq->offset + ustart; ustep = 1;
+ } else
+ {
+ uptr = useq->bytesequenceptr + useq->offset - ustart; ustep = -1;
+ }
+ if (vseq->read_seq_left2right)
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset + vstart; vstep = 1;
+ } else
+ {
+ vptr = vseq->bytesequenceptr + vseq->offset - vstart; vstep = -1;
+ }
+ if (vseq->dir_is_complement)
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD || cu != GT_COMPLEMENTBASE(*vptr))
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ } else
+ {
+ do
+ {
+ const GtUchar cu = *uptr;
+ if (cu == WILDCARD || cu != *vptr)
+ break;
+ uptr += ustep;
+ vptr += vstep;matchlength++;
+ } while (matchlength < minsubstringlength);
+ }
+ return matchlength;
+ }
+ return 0;
+}
+
+GtLongestCommonFunc ft_longest_common_func_tab[] =
+{
+ /* 0 */ ft_longest_common_twobit_twobit,
+ /* 1 */ ft_longest_common_twobit_encseq_reader,
+ /* 2 */ ft_longest_common_twobit_encseq,
+ /* 3 */ ft_longest_common_twobit_bytes,
+ /* 4 */ ft_longest_common_encseq_reader_twobit,
+ /* 5 */ ft_longest_common_encseq_reader_encseq_reader,
+ /* 6 */ ft_longest_common_encseq_reader_encseq,
+ /* 7 */ ft_longest_common_encseq_reader_bytes,
+ /* 8 */ ft_longest_common_encseq_twobit,
+ /* 9 */ ft_longest_common_encseq_encseq_reader,
+ /* 10 */ ft_longest_common_encseq_encseq,
+ /* 11 */ ft_longest_common_encseq_bytes,
+ /* 12 */ ft_longest_common_bytes_twobit,
+ /* 13 */ ft_longest_common_bytes_encseq_reader,
+ /* 14 */ ft_longest_common_bytes_encseq,
+ /* 15 */ ft_longest_common_bytes_bytes,
+ /* 16 */ ft_longest_common_twobit_twobit_wildcard,
+ /* 17 */ ft_longest_common_twobit_encseq_reader_wildcard,
+ /* 18 */ ft_longest_common_twobit_encseq_wildcard,
+ /* 19 */ ft_longest_common_twobit_bytes_wildcard,
+ /* 20 */ ft_longest_common_encseq_reader_twobit_wildcard,
+ /* 21 */ ft_longest_common_encseq_reader_encseq_reader_wildcard,
+ /* 22 */ ft_longest_common_encseq_reader_encseq_wildcard,
+ /* 23 */ ft_longest_common_encseq_reader_bytes_wildcard,
+ /* 24 */ ft_longest_common_encseq_twobit_wildcard,
+ /* 25 */ ft_longest_common_encseq_encseq_reader_wildcard,
+ /* 26 */ ft_longest_common_encseq_encseq_wildcard,
+ /* 27 */ ft_longest_common_encseq_bytes_wildcard,
+ /* 28 */ ft_longest_common_bytes_twobit_wildcard,
+ /* 29 */ ft_longest_common_bytes_encseq_reader_wildcard,
+ /* 30 */ ft_longest_common_bytes_encseq_wildcard,
+ /* 31 */ ft_longest_common_bytes_bytes_wildcard
+};
+const int ft_longest_common_num_modes = 4;
+const int ft_longest_common_func_first_wildcard = 16;
diff --git a/src/match/ft-polish.c b/src/match/ft-polish.c
index 79c2224..a239c98 100644
--- a/src/match/ft-polish.c
+++ b/src/match/ft-polish.c
@@ -4,12 +4,12 @@
#include <stdbool.h>
#include <limits.h>
#include "core/assert_api.h"
-#include "core/ma_api.h"
-#include "core/types_api.h"
#include "core/minmax.h"
-#include "ft-polish.h"
+#include "core/types_api.h"
+#include "core/ma_api.h"
+#include "match/ft-polish.h"
-static void fill_polishing_info(Polishing_info *pol_info,
+static void fill_polishing_info(GtFtPolishing_info *pol_info,
GtUword currentdepth,
GtUword prefix, GtWord score, GtWord maxscore)
{
@@ -34,11 +34,11 @@ static void fill_polishing_info(Polishing_info *pol_info,
}
}
-Polishing_info *polishing_info_new_with_bias(double errorpercentage,
- double matchscore_bias,
- GtUword history_size)
+GtFtPolishing_info *polishing_info_new_with_bias(double errorpercentage,
+ double matchscore_bias,
+ GtUword history_size)
{
- Polishing_info *pol_info = gt_malloc(sizeof *pol_info);
+ GtFtPolishing_info *pol_info = gt_malloc(sizeof *pol_info);
gt_assert(pol_info != NULL);
if (history_size == 0)
@@ -48,6 +48,7 @@ Polishing_info *polishing_info_new_with_bias(double errorpercentage,
{
pol_info->cut_depth = MIN(history_size/2,(GtUword) 15);
}
+ pol_info->pol_size = 2 * pol_info->cut_depth;
pol_info->entries = 1UL << pol_info->cut_depth;
pol_info->mask = pol_info->entries - 1;
pol_info->values = gt_malloc(sizeof *pol_info->values * pol_info->entries);
@@ -59,13 +60,13 @@ Polishing_info *polishing_info_new_with_bias(double errorpercentage,
return pol_info;
}
-Polishing_info *polishing_info_new(double errorpercentage,
+GtFtPolishing_info *polishing_info_new(double errorpercentage,
GtUword history_size)
{
return polishing_info_new_with_bias(errorpercentage,1.0,history_size);
}
-uint64_t polishing_info_maxvalue(const Polishing_info *pol_info)
+uint64_t polishing_info_maxvalue(const GtFtPolishing_info *pol_info)
{
return (((uint64_t) 1) << (2 * pol_info->cut_depth)) - 1;
}
@@ -86,7 +87,7 @@ static char *polish_intbits2string(GtUword bits,GtUword bs)
return cs;
}
-void polishing_info_show(const Polishing_info *pol_info)
+void polishing_info_show(const GtFtPolishing_info *pol_info)
{
GtUword idx;
@@ -104,7 +105,7 @@ void polishing_info_show(const Polishing_info *pol_info)
}
}
-void polishing_info_delete(Polishing_info *pol_info)
+void polishing_info_delete(GtFtPolishing_info *pol_info)
{
if (pol_info != NULL)
{
@@ -113,7 +114,7 @@ void polishing_info_delete(Polishing_info *pol_info)
}
}
-bool history_is_polished_brute_force(const Polishing_info *pol_info,
+bool history_is_polished_brute_force(const GtFtPolishing_info *pol_info,
uint64_t matchhistory,
bool withoutput)
{
diff --git a/src/match/ft-polish.h b/src/match/ft-polish.h
index f5e318a..aec42c3 100644
--- a/src/match/ft-polish.h
+++ b/src/match/ft-polish.h
@@ -1,7 +1,6 @@
#ifndef FT_POLISH_H
#define FT_POLISH_H
#include <stdint.h>
-#include "core/types_api.h"
/* The following values are used when no pruning is performed */
#define GT_MIN_PERC_MAT_HISTORY 1
#define GT_MAX_ALI_LEN_DIFF UINT32_MAX
@@ -9,29 +8,29 @@
typedef struct
{
int16_t score_sum, diff_from_max;
-} Polishing_value;
+} GtFtPolishing_value;
typedef struct
{
- GtUword entries, cut_depth, mask;
+ GtUword entries, cut_depth, pol_size, mask;
GtWord difference_score, match_score;
- Polishing_value *values;
-} Polishing_info;
+ GtFtPolishing_value *values;
+} GtFtPolishing_info;
-Polishing_info *polishing_info_new(double errorpercentage,
- GtUword history_size);
+GtFtPolishing_info *polishing_info_new(double errorpercentage,
+ GtUword history_size);
-Polishing_info *polishing_info_new_with_bias(double errorpercentage,
- double matchscore_bias,
- GtUword history_size);
+GtFtPolishing_info *polishing_info_new_with_bias(double errorpercentage,
+ double matchscore_bias,
+ GtUword history_size);
-void polishing_info_delete(Polishing_info *pol_info);
+void polishing_info_delete(GtFtPolishing_info *pol_info);
-bool history_is_polished_brute_force(const Polishing_info *pol_info,
+bool history_is_polished_brute_force(const GtFtPolishing_info *pol_info,
uint64_t matchhistory,
bool withoutput);
-uint64_t polishing_info_maxvalue(const Polishing_info *pol_info);
+uint64_t polishing_info_maxvalue(const GtFtPolishing_info *pol_info);
#define GT_HISTORY_IS_POLISHED(POL_INFO,MATCHHISTORY)\
((POL_INFO)->values[(MATCHHISTORY) & (POL_INFO)->mask].diff_from_max \
diff --git a/src/match/ft-trimstat.c b/src/match/ft-trimstat.c
index f3a6fd6..d94cc34 100644
--- a/src/match/ft-trimstat.c
+++ b/src/match/ft-trimstat.c
@@ -1,72 +1,65 @@
-#include "core/ma_api.h"
-#include "core/types_api.h"
+#include "core/unused_api.h"
#include "core/assert_api.h"
-#include "ft-trimstat.h"
+#include "core/arraydef.h"
+#include "core/minmax.h"
+#include "match/ft-trimstat.h"
-struct Trimstat
+struct GtFtTrimstat
{
- GtUword diedout, dist_nextfree, dist_allocated, allocated_maxvalid,
- *dist_maxvalid, *trimdist, *distarray;
+ GtUword diedout, *trim_dist, *matchlength_dist;
+ GtArrayGtUword distance_dist, maxvalid_dist;
size_t spaceforfront_total;
double sum_meanvalid;
- /* the following are to create the output at successive statements. */
- double errorpercentage;
- GtUword minmatchpercentage;
- GtUword maxalignedlendifference;
- GtUword max_cache_size;
};
-Trimstat *trimstat_new(double errorpercentage,
- GtUword minmatchpercentage,
- GtUword maxalignedlendifference)
+GtFtTrimstat *gt_ft_trimstat_new(void)
{
- Trimstat *trimstat = gt_malloc(sizeof *trimstat);
+ GtFtTrimstat *trimstat = gt_malloc(sizeof *trimstat);
gt_assert(trimstat != 0);
- trimstat->trimdist = gt_calloc(101,sizeof *trimstat->trimdist);
- gt_assert(trimstat->trimdist != NULL);
+ trimstat->trim_dist = gt_calloc(101,sizeof *trimstat->trim_dist);
+ gt_assert(trimstat->trim_dist != NULL);
+ trimstat->matchlength_dist = gt_calloc(101,
+ sizeof *trimstat->matchlength_dist);
+ gt_assert(trimstat->matchlength_dist != NULL);
trimstat->diedout = 0;
- trimstat->distarray = NULL;
- trimstat->dist_nextfree = 0;
- trimstat->dist_allocated = 0;
- trimstat->allocated_maxvalid = 0;
- trimstat->dist_maxvalid = NULL;
+ GT_INITARRAY(&trimstat->distance_dist,GtUword);
+ GT_INITARRAY(&trimstat->maxvalid_dist,GtUword);
trimstat->spaceforfront_total = 0;
trimstat->sum_meanvalid = 0.0;
- trimstat->max_cache_size = 0;
- trimstat->errorpercentage = errorpercentage;
- trimstat->minmatchpercentage = minmatchpercentage;
- trimstat->maxalignedlendifference = maxalignedlendifference;
return trimstat;
}
-void trimstat_add(Trimstat *trimstat,bool diedout,
- GtUword sumvalid,
- GtUword maxvalid,
- GtUword d,
- size_t spaceforfront,
- GtUword cache_size)
+#ifndef NDEBUG
+void gt_ft_trimstat_add(GtFtTrimstat *trimstat,
+ bool diedout,
+ GtUword sumvalid,
+ GtUword maxvalid,
+ GtUword d,
+ size_t spaceforfront)
{
if (trimstat == NULL)
{
return;
}
- while (maxvalid >= trimstat->allocated_maxvalid)
+ while (maxvalid >= trimstat->maxvalid_dist.allocatedGtUword)
{
GtUword idx;
- const GtUword allocated = trimstat->allocated_maxvalid;
+ const GtUword allocated = trimstat->maxvalid_dist.allocatedGtUword;
- trimstat->allocated_maxvalid = trimstat->allocated_maxvalid * 1.2 + 128UL;
- trimstat->dist_maxvalid = gt_realloc(trimstat->dist_maxvalid,
- sizeof *trimstat->dist_maxvalid *
- trimstat->allocated_maxvalid);
- for (idx = allocated; idx < trimstat->allocated_maxvalid; idx++)
+ trimstat->maxvalid_dist.allocatedGtUword
+ = trimstat->maxvalid_dist.allocatedGtUword * 1.2 + 128UL;
+ trimstat->maxvalid_dist.spaceGtUword
+ = gt_realloc(trimstat->maxvalid_dist.spaceGtUword,
+ sizeof *trimstat->maxvalid_dist.spaceGtUword *
+ trimstat->maxvalid_dist.allocatedGtUword);
+ for (idx = allocated; idx < trimstat->maxvalid_dist.allocatedGtUword; idx++)
{
- trimstat->dist_maxvalid[idx] = 0;
+ trimstat->maxvalid_dist.spaceGtUword[idx] = 0;
}
}
- gt_assert(maxvalid < trimstat->allocated_maxvalid);
- trimstat->dist_maxvalid[maxvalid]++;
+ gt_assert(maxvalid < trimstat->maxvalid_dist.allocatedGtUword);
+ trimstat->maxvalid_dist.spaceGtUword[maxvalid]++;
if (diedout)
{
trimstat->diedout++;
@@ -79,26 +72,39 @@ void trimstat_add(Trimstat *trimstat,bool diedout,
= (GtUword) (100.0 * (double) (fullfronts - sumvalid)/fullfronts);
gt_assert(percentage <= 100UL);
trimstat->sum_meanvalid += (double) sumvalid/(d+1);
- trimstat->trimdist[percentage]++;
- if (trimstat->dist_nextfree >= trimstat->dist_allocated)
- {
- trimstat->dist_allocated = trimstat->dist_allocated +
- trimstat->dist_allocated/5 + 1024;
- trimstat->distarray
- = gt_realloc(trimstat->distarray,
- sizeof *trimstat->distarray * trimstat->dist_allocated);
- gt_assert(trimstat->distarray != NULL);
- }
- trimstat->distarray[trimstat->dist_nextfree++] = d;
+ trimstat->trim_dist[percentage]++;
+ GT_CHECKARRAYSPACE(&trimstat->distance_dist,GtUword,32);
+ trimstat->distance_dist.spaceGtUword[trimstat->
+ distance_dist.nextfreeGtUword++] = d;
trimstat->spaceforfront_total += spaceforfront;
}
- if (trimstat->max_cache_size < cache_size)
- {
- trimstat->max_cache_size = cache_size;
- }
}
-static int compare_ulong(const void *va, const void *vb)
+void gt_ft_trimstat_add_matchlength(GtFtTrimstat *trimstat,
+ uint32_t matchlength)
+{
+ gt_assert(trimstat != NULL && trimstat->matchlength_dist != NULL);
+ trimstat->matchlength_dist[MIN(100,matchlength)]++;
+}
+#else
+void gt_ft_trimstat_add(GT_UNUSED GtFtTrimstat *trimstat,
+ GT_UNUSED bool diedout,
+ GT_UNUSED GtUword sumvalid,
+ GT_UNUSED GtUword maxvalid,
+ GT_UNUSED GtUword d,
+ GT_UNUSED size_t spaceforfront)
+{
+ return;
+}
+
+void gt_ft_trimstat_add_matchlength(GT_UNUSED GtFtTrimstat *trimstat,
+ GT_UNUSED uint32_t matchlength)
+{
+ return;
+}
+#endif
+
+static int gt_ft_trimstat_compare_GtUword(const void *va, const void *vb)
{
GtUword a = *((const GtUword *) va);
GtUword b = *((const GtUword *) vb);
@@ -116,72 +122,95 @@ static int compare_ulong(const void *va, const void *vb)
#define MEGABYTES(X) ((double) (X)/(1UL << 20))
-void trimstat_delete(Trimstat *trimstat,double total_time,bool verbose)
+void gt_ft_trimstat_delete(GtFtTrimstat *trimstat)
+{
+ if (trimstat != NULL)
+ {
+ gt_free(trimstat->trim_dist);
+ GT_FREEARRAY(&trimstat->distance_dist,GtUword);
+ GT_FREEARRAY(&trimstat->maxvalid_dist,GtUword);
+ gt_free(trimstat->matchlength_dist);
+ gt_free(trimstat);
+ }
+}
+
+void gt_ft_trimstat_out(const GtFtTrimstat *trimstat,bool verbose)
{
if (trimstat != NULL)
{
- printf("erp=%.1f\t",trimstat->errorpercentage);
- printf("mmp=" GT_WU "\t",trimstat->minmatchpercentage);
- printf("mad=" GT_WU "\t",trimstat->maxalignedlendifference);
printf("died_out=" GT_WU "\t",trimstat->diedout);
- if (trimstat->dist_nextfree > 0)
+ if (trimstat->distance_dist.nextfreeGtUword > 0)
{
printf("mean_valid=%.2f\t",
- trimstat->sum_meanvalid/trimstat->dist_nextfree);
- printf("frontspace=%.2f\t",
+ trimstat->sum_meanvalid/trimstat->distance_dist.nextfreeGtUword);
+ printf("frontspace=%.2f\n",
MEGABYTES((double) trimstat->spaceforfront_total/
- trimstat->dist_nextfree));
+ trimstat->distance_dist.nextfreeGtUword));
} else
{
printf("mean_valid=undef\t");
- printf("frontspace=undef\t");
+ printf("frontspace=undef\n");
}
- printf("time=%.2f\n",total_time);
if (verbose)
{
- GtUword idx, count = 1UL;
+ GtUword idx, count = 1UL, matchlength_sum = 0, matchlength_cum = 0;
- printf("max_cache_size = " GT_WU " bytes\n",trimstat->max_cache_size);
for (idx = 0; idx <= 100UL; idx++)
{
- if (trimstat->trimdist[idx] > 0)
+ matchlength_sum += trimstat->matchlength_dist[idx];
+ }
+ for (idx = 0; idx <= 100UL; idx++)
+ {
+ if (trimstat->matchlength_dist[idx] > 0)
+ {
+ matchlength_cum += trimstat->matchlength_dist[idx];
+ printf("# matchlength%s" GT_WU ": " GT_WU " times, "
+ "total=" GT_WU " (%.2f), "
+ "cum=%.2f%%\n",
+ idx < 100UL ? "=" : ">=",
+ idx,trimstat->matchlength_dist[idx],
+ idx * trimstat->matchlength_dist[idx],
+ (double) trimstat->matchlength_dist[idx]/matchlength_sum,
+ 100.0 * (double) matchlength_cum/matchlength_sum);
+ }
+ }
+ for (idx = 0; idx <= 100UL; idx++)
+ {
+ if (trimstat->trim_dist[idx] > 0)
{
printf("# trim by " GT_WU "%%: " GT_WU " times\n",
- idx,trimstat->trimdist[idx]);
+ idx,trimstat->trim_dist[idx]);
}
}
- qsort(trimstat->distarray,trimstat->dist_nextfree,
- sizeof *trimstat->distarray,
- compare_ulong);
- if (trimstat->dist_nextfree > 0)
+ qsort(trimstat->distance_dist.spaceGtUword,
+ trimstat->distance_dist.nextfreeGtUword,
+ sizeof *trimstat->distance_dist.spaceGtUword,
+ gt_ft_trimstat_compare_GtUword);
+ if (trimstat->distance_dist.nextfreeGtUword > 0)
{
- GtUword previous = trimstat->distarray[0];
- for (idx = 1UL; idx < trimstat->dist_nextfree; idx++)
+ GtUword previous = trimstat->distance_dist.spaceGtUword[0];
+ for (idx = 1UL; idx < trimstat->distance_dist.nextfreeGtUword; idx++)
{
- if (previous == trimstat->distarray[idx])
+ if (previous == trimstat->distance_dist.spaceGtUword[idx])
{
count++;
} else
{
printf("distance " GT_WU ": " GT_WU " times\n",previous,count);
count = 1UL;
- previous = trimstat->distarray[idx];
+ previous = trimstat->distance_dist.spaceGtUword[idx];
}
}
printf("distance " GT_WU ": " GT_WU " times\n",previous,count);
}
- for (idx = 0; idx < trimstat->allocated_maxvalid; idx++)
+ for (idx = 0; idx < trimstat->maxvalid_dist.allocatedGtUword; idx++)
{
- if (trimstat->dist_maxvalid[idx] > 0)
+ if (trimstat->maxvalid_dist.spaceGtUword[idx] > 0)
{
printf("maxvalid=" GT_WU ": " GT_WU " times\n",idx,
- trimstat->dist_maxvalid[idx]);
+ trimstat->maxvalid_dist.spaceGtUword[idx]);
}
}
}
- gt_free(trimstat->trimdist);
- gt_free(trimstat->distarray);
- gt_free(trimstat->dist_maxvalid);
- gt_free(trimstat);
}
}
diff --git a/src/match/ft-trimstat.h b/src/match/ft-trimstat.h
index fd951a8..947d87f 100644
--- a/src/match/ft-trimstat.h
+++ b/src/match/ft-trimstat.h
@@ -3,21 +3,33 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
-#include "core/types_api.h"
-typedef struct Trimstat Trimstat;
+typedef struct GtFtTrimstat GtFtTrimstat;
-Trimstat *trimstat_new(double errorpercentage,
- GtUword minmatchpercentage,
- GtUword maxalignedlendifference);
+GtFtTrimstat *gt_ft_trimstat_new(void);
-void trimstat_add(Trimstat *trimstat,bool diedout,
- GtUword sumvalid,
- GtUword maxvalid,
- GtUword d,
- size_t spaceforfront,
- GtUword cache_size);
+#ifndef NDEBUG
+void gt_ft_trimstat_add(GtFtTrimstat *trimstat,
+ bool diedout,
+ GtUword sumvalid,
+ GtUword maxvalid,
+ GtUword d,
+ size_t spaceforfront);
+void gt_ft_trimstat_add_matchlength(GtFtTrimstat *trimstat,
+ uint32_t matchlength);
+#else
+void gt_ft_trimstat_add(GT_UNUSED GtFtTrimstat *trimstat,
+ GT_UNUSED bool diedout,
+ GT_UNUSED GtUword sumvalid,
+ GT_UNUSED GtUword maxvalid,
+ GT_UNUSED GtUword d,
+ GT_UNUSED size_t spaceforfront);
+void gt_ft_trimstat_add_matchlength(GT_UNUSED GtFtTrimstat *trimstat,
+ GT_UNUSED uint32_t matchlength);
+#endif
+
+void gt_ft_trimstat_delete(GtFtTrimstat *trimstat);
-void trimstat_delete(Trimstat *trimstat,double total_time,bool verbose);
+void gt_ft_trimstat_out(const GtFtTrimstat *trimstat,bool verbose);
#endif
diff --git a/src/match/gfa_writer.c b/src/match/gfa_writer.c
new file mode 100644
index 0000000..3986132
--- /dev/null
+++ b/src/match/gfa_writer.c
@@ -0,0 +1,227 @@
+/*
+ Copyright (c) 2012 Giorgio Gonnella <gonnella at zbh.uni-hamburg.de>
+ Copyright (c) 2012 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include "core/unused_api.h"
+#include "core/log_api.h"
+#include "match/gfa_writer.h"
+
+struct GtGfaWriter
+{
+ GtFile *file;
+ GtEncseq *encseq;
+ GtGfaVersion version;
+};
+
+GtGfaWriter* gt_gfa_writer_new(GtFile *file,
+ const GtEncseq *encseq,
+ GtGfaVersion version)
+{
+ GtGfaWriter *gw;
+ gw = gt_malloc(sizeof (*gw));
+ gw->file = gt_file_ref(file);
+ gw->encseq = gt_encseq_ref((GtEncseq*)encseq);
+ gw->version = version;
+ return gw;
+}
+
+static inline const char *gt_gfa_writer_versionstr(GtGfaVersion version)
+{
+ switch (version) {
+ case GT_GFA_VERSION_1_0:
+ return "1.0";
+ case GT_GFA_VERSION_2_0:
+ return "2.0";
+ default:
+ gt_assert(false);
+ }
+ return "UNKNOWN";
+}
+
+int gt_gfa_writer_show_header(GtGfaWriter *gw,
+ GtUword minlen, const char *inputfilename, bool has_containments,
+ bool has_transitives, GT_UNUSED GtError *err)
+{
+ gt_assert(gw != NULL);
+ gt_file_xprintf(gw->file,
+ "H\tVN:Z:%s\n"
+ "H\tpn:Z:readjoiner\n"
+ "H\tol:i:"GT_WU"\n"
+ "H\tin:Z:%s\n"
+ "H\tcn:i:%c\n"
+ "H\tte:i:%c\n",
+ gt_gfa_writer_versionstr(gw->version),
+ minlen,
+ inputfilename,
+ has_containments ? '1' : '0',
+ has_transitives ? '1' : '0');
+ return 0;
+}
+
+static inline void gt_gfa_writer_show_gfa1_segment(GtFile *file,
+ GtUword seqnum, const char *sequence)
+{
+ gt_file_xprintf(file, "S\t"GT_WU"\t%s\n", seqnum, sequence);
+}
+
+static inline void gt_gfa_writer_show_gfa2_segment(GtFile *file,
+ GtUword seqnum, const char *sequence)
+{
+ gt_file_xprintf(file, "S\t"GT_WU"\t"GT_WU"\t%s\n", seqnum,
+ (GtUword)strlen(sequence), sequence);
+}
+
+static inline void gt_gfa_writer_show_segment(GtGfaVersion version,
+ GtFile *file, GtUword seqnum, const char *sequence)
+{
+ switch (version) {
+ case GT_GFA_VERSION_1_0:
+ gt_gfa_writer_show_gfa1_segment(file, seqnum, sequence);
+ break;
+ case GT_GFA_VERSION_2_0:
+ gt_gfa_writer_show_gfa2_segment(file, seqnum, sequence);
+ break;
+ default:
+ gt_assert(false);
+ }
+}
+
+int gt_gfa_writer_show_segments(GtGfaWriter *gw, GT_UNUSED GtError *err)
+{
+ const GtTwobitencoding *nextencoded;
+ GtTwobitencoding code = 0;
+ GtUword seqnum = 0, nofseqs = gt_encseq_num_of_sequences(gw->encseq),
+ pos = 0, next_stop, i,
+ tlen = gt_encseq_total_length(gw->encseq), charsincode = 0;
+ char *seqbuffer;
+ bool last_seq = false;
+ const char code2char[] = "ACGT";
+ gt_assert(gw != NULL);
+ seqbuffer = gt_malloc(sizeof (*seqbuffer) *
+ (gt_encseq_max_seq_length(gw->encseq) + 1UL));
+ nextencoded = gt_encseq_twobitencoding_export(gw->encseq);
+ i = 0;
+ while (!last_seq)
+ {
+ if (seqnum + 1UL == nofseqs)
+ {
+ last_seq = true;
+ next_stop = tlen;
+ }
+ else
+ next_stop = gt_encseq_seqstartpos(gw->encseq, seqnum + 1UL) - 1UL;
+ for (/**/; i < next_stop; i++)
+ {
+ if (charsincode == 0)
+ {
+ code = *(nextencoded++);
+ charsincode = (GtUword)GT_UNITSIN2BITENC;
+ }
+ seqbuffer[pos++] = code2char[code >> ((--charsincode) << 1) & 3];
+ }
+ seqbuffer[pos] = '\0';
+ gt_gfa_writer_show_segment(gw->version, gw->file, seqnum, seqbuffer);
+ pos = 0;
+ /* consume separator */
+ i++;
+ if (charsincode == 0)
+ {
+ code = *(nextencoded++);
+ charsincode = (GtUword)GT_UNITSIN2BITENC;
+ }
+ charsincode--;
+ seqnum++;
+ }
+ gt_free(seqbuffer);
+ return 0;
+}
+
+static inline void gt_gfa_writer_show_edge_gfa1(GtFile *file,
+ GtUword seqnum1, bool seq1_direct,
+ GtUword seqnum2, bool seq2_direct,
+ GtUword spmlen)
+{
+ gt_file_xprintf(file, "L\t"GT_WU"\t%c\t"GT_WU"\t%c\t"
+ GT_WU"M\n",
+ seqnum1, seq1_direct ? '+' : '-',
+ seqnum2, seq2_direct ? '+' : '-',
+ spmlen);
+}
+
+static inline void gt_gfa_writer_show_edge_gfa2(GtFile *file,
+ GtUword seqnum1, bool seq1_direct,
+ GtUword seqnum2, bool seq2_direct,
+ GtUword start1, GtUword end1, bool end1_last,
+ GtUword start2, GtUword end2, bool end2_last,
+ GtUword spmlen)
+{
+ gt_file_xprintf(file, "E\t*\t"GT_WU"%c\t"GT_WU"%c\t"
+ GT_WU"\t"GT_WU"%s\t"GT_WU"\t"GT_WU"%s\t"
+ GT_WU"M\n",
+ seqnum1, seq1_direct ? '+' : '-',
+ seqnum2, seq2_direct ? '+' : '-',
+ start1, end1, end1_last ? "$" : "",
+ start2, end2, end2_last ? "$" : "",
+ spmlen);
+}
+
+static inline void gt_gfa_writer_show_edge(GtGfaVersion version, GtFile *file,
+ GtUword seqnum1, bool seq1_direct, GtUword seqnum2, bool seq2_direct,
+ GtUword start1, GtUword end1, bool end1_last,
+ GtUword start2, GtUword end2, bool end2_last,
+ GtUword spmlen)
+{
+
+ switch (version) {
+ case GT_GFA_VERSION_1_0:
+ gt_gfa_writer_show_edge_gfa1(file, seqnum1, seq1_direct, seqnum2,
+ seq2_direct, spmlen);
+ break;
+ case GT_GFA_VERSION_2_0:
+ gt_gfa_writer_show_edge_gfa2(file, seqnum1, seq1_direct, seqnum2,
+ seq2_direct, start1, end1, end1_last, start2, end2, end2_last,
+ spmlen);
+ break;
+ default:
+ gt_assert(false);
+ }
+}
+
+void gt_spmproc_show_gfa(GtUword suffix_readnum,
+ GtUword prefix_readnum, GtUword length,
+ bool suffixseq_direct, bool prefixseq_direct, void *gfa_writer)
+{
+ GtGfaWriter *gw = gfa_writer;
+ const GtUword sl1 = gt_encseq_seqlength(gw->encseq, suffix_readnum),
+ sl2 = gt_encseq_seqlength(gw->encseq, prefix_readnum);
+ gt_gfa_writer_show_edge(gw->version, gw->file,
+ suffix_readnum, suffixseq_direct,
+ prefix_readnum, prefixseq_direct,
+ suffixseq_direct ? sl1 - length : 0,
+ suffixseq_direct ? sl1 : length,
+ suffixseq_direct,
+ prefixseq_direct ? 0 : sl2 - length,
+ prefixseq_direct ? length : sl2,
+ !prefixseq_direct,
+ length);
+}
+
+void gt_gfa_writer_delete(GtGfaWriter *gw)
+{
+ gt_file_delete(gw->file);
+ gt_encseq_delete(gw->encseq);
+ gt_free(gw);
+}
diff --git a/src/match/gfa_writer.h b/src/match/gfa_writer.h
new file mode 100644
index 0000000..732e095
--- /dev/null
+++ b/src/match/gfa_writer.h
@@ -0,0 +1,70 @@
+/*
+ Copyright (c) 2012 Giorgio Gonnella <gonnella at zbh.uni-hamburg.de>
+ Copyright (c) 2012 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef GFA_WRITER_H
+#define GFA_WRITER_H
+
+#include "core/file.h"
+#include "core/encseq.h"
+#include "core/error.h"
+
+/* The <GtGfaWriter> class allows one to write string graph information in
+ the GFA format of SGA (Simpsons and Durbin, 2012). */
+typedef struct GtGfaWriter GtGfaWriter;
+
+/* Supported versions of the gfa format. */
+typedef enum
+{
+ GT_GFA_VERSION_1_0,
+ GT_GFA_VERSION_2_0
+} GtGfaVersion;
+
+/* Creates a new <GtGfaWriter> object, using <file> for output
+ and <encseq> as source of information.
+ <version> is the GFA version. */
+GtGfaWriter* gt_gfa_writer_new(GtFile *file,
+ const GtEncseq *encseq,
+ GtGfaVersion version);
+
+/* Writes the header using the provided information: <minlen> is the
+ minimal match length, <inputfilename> is a string to use as input filename,
+ <has_containments> shall be true, if containments
+ are present, <has_transitives> shall be true, if transitive edges are
+ present. Returns 0 on success, -1 on error and sets <err>. */
+int gt_gfa_writer_show_header(GtGfaWriter *aw,
+ GtUword minlen,
+ const char *inputfilename,
+ bool has_containments,
+ bool has_transitives,
+ GtError *err);
+
+/* Writes the vertices. Returns 0 on success, -1 on error and sets <err>. */
+int gt_gfa_writer_show_segments(GtGfaWriter *aw,
+ GtError *err);
+
+/* Writes an edge using Readjoiner SPM information. */
+void gt_spmproc_show_gfa(GtUword suffix_readnum,
+ GtUword prefix_readnum,
+ GtUword length,
+ bool suffixseq_direct,
+ bool prefixseq_direct,
+ void *gfa_writer);
+
+/* Deletes a <GtGfa> object. */
+void gt_gfa_writer_delete(GtGfaWriter *aw);
+
+#endif
diff --git a/src/match/karlin_altschul_stat.c b/src/match/karlin_altschul_stat.c
new file mode 100644
index 0000000..b012d18
--- /dev/null
+++ b/src/match/karlin_altschul_stat.c
@@ -0,0 +1,945 @@
+/*
+ Copyright (c) 2016 Annika Seidel <annika.seidel at studium.uni-hamburg.de>
+ Copyright (c) 2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include <float.h>
+#include <math.h>
+#include "core/unused_api.h"
+#include "core/ensure.h"
+#include "core/error.h"
+#include "core/ma.h"
+#include "core/minmax.h"
+#include "core/types_api.h"
+#include "core/encseq.h"
+#include "core/radix_sort.h"
+#include "extended/scorehandler.h"
+#include "karlin_altschul_stat.h"
+
+/*
+ the first part of this file implements calculation of karlin-altschul
+ parameter for E-value of Alignments in analogy to NCBI tool BLAST:
+
+ Altschul S.F., Gish W., Miller W., Myers E.W. and Lipman D.J. (1990)
+ Basic local alignment search tool. J. Mol. Biol. 215: 403-410.
+ */
+
+/* stores karlin altschul parameters */
+struct GtKarlinAltschulStat
+{
+ double lambda,
+ K,
+ logK,
+ H,
+ alpha_div_lambda,
+ beta,
+ log2;
+ GtWord matchscore, mismatchscore, gapscore;
+ GtUword actual_length_db, num_of_db_seqs, num_of_query_seqs,
+ different_lengths;
+ GtUwordPair *searchspace_store;
+};
+
+typedef struct{
+ double *sprob,
+ score_avg;
+ GtWord low_align_score,
+ high_align_score;
+} ScoringFrequency;
+
+/*
+ precomputed values
+ analog to BLAST
+
+ 1. Gap score,
+ 2. Lambda,
+ 3. K,
+ 4. H,
+ 5. Alpha,
+ 6. Beta,
+ */
+
+typedef enum
+{
+ gapextdidx,
+ lambdaidx,
+ Kidx,
+ Hidx,
+ alphaidx,
+ betaidx
+} GT_ValuesindeX;
+
+/* the Blast Implementation uses matrices with more than one row, namely
+ a row for each gap extension. If required, this should be adjusted
+ accordingly. */
+
+/* matchscore = 1 && mismatchscore = -1 */
+static const double ga_vector_1_1[] = {
+ -2, 0.80, 0.064, 0.17, 4.8, -16
+};
+
+/* matchscore = 1 && mismatchscore = -4 */
+static const double ga_vector_1_4[] = {
+ -2, 1.26, 0.43, 0.90, 1.4, -1
+};
+
+/* matchscore = 2 && mismatchscore = -7 */
+static const double ga_vector_2_7[] = {
+ -4, 0.63, 0.43, 0.90, 0.7, -1
+};
+
+/* matchscore = 1 && mismatchscore = -3 */
+static const double ga_vector_1_3[] = {
+ -2, 1.25, 0.42, 0.83, 1.5, -2
+};
+
+/* matchscore = 2 && mismatchscore = -5 */
+static const double ga_vector_2_5[] = {
+ -4, 0.62, 0.39, 0.78, 0.8, -2
+};
+
+/* matchscore = 1 && mismatchscore = -2 */
+static const double ga_vector_1_2[] = {
+ -2, 1.19, 0.34, 0.66, 1.8, -3
+};
+
+/* matchscore = 2 && mismatchscore = -3 */
+static const double ga_vector_2_3[] = {
+ -4, 0.55, 0.21, 0.46, 1.2, -5
+};
+
+void gt_karlin_altschul_stat_delete(GtKarlinAltschulStat *ka)
+{
+ if (ka != NULL)
+ {
+ gt_free(ka->searchspace_store);
+ gt_free(ka);
+ }
+}
+
+static double gt_karlin_altschul_stat_get_lambda(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->lambda;
+}
+
+static double gt_karlin_altschul_stat_get_logK(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->logK;
+}
+
+static double gt_karlin_altschul_stat_get_K(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->K;
+}
+
+static double gt_karlin_altschul_stat_get_alphadlambda(
+ const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->alpha_div_lambda;
+}
+
+static double gt_karlin_altschul_stat_get_beta(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->beta;
+}
+
+/* calculate probabilities of scores */
+static ScoringFrequency *gt_karlin_altschul_stat_scoring_frequency(
+ unsigned int numofchars,
+ const GtScoreHandler *scorehandler)
+{
+ unsigned int idx, jdx;
+ GtWord score, obs_min = 0, obs_max = 0, range;
+ double score_avg, score_sum;
+ ScoringFrequency *sf;
+ static double nt_prob[] = {
+ 0.25,
+ 0.25,
+ 0.25,
+ 0.25
+ };
+
+ gt_assert(scorehandler != NULL);
+ for (idx = 0; idx < numofchars; idx++)
+ {
+ for (jdx = 0; jdx < numofchars; jdx++)
+ {
+ score = gt_scorehandler_get_replacement(scorehandler, idx, jdx);
+ obs_min = MIN(obs_min, score);
+ obs_max = MAX(obs_max, score);
+ }
+ }
+
+ /* for theoretically valid scoring systems */
+ gt_assert(obs_min <= 0 && obs_max >= 0);
+ sf = gt_malloc(sizeof (*sf));
+ gt_assert(sf);
+ sf->low_align_score = obs_min;
+ sf->high_align_score = obs_max;
+
+ range = obs_max - obs_min + 1;
+ sf->sprob = gt_calloc(range, sizeof (*sf->sprob));
+
+ for (idx = 0; idx < numofchars; idx++)
+ {
+ for (jdx = 0; jdx < numofchars; jdx++)
+ {
+ score = gt_scorehandler_get_replacement(scorehandler, idx, jdx);
+ gt_assert(score >= obs_min);
+ if (score >= obs_min)
+ {
+ sf->sprob[score - obs_min] += nt_prob[idx] * nt_prob[jdx];
+ }
+ }
+ }
+
+ score_sum = 0.0;
+ for (score = obs_min; score <= obs_max; score++)
+ {
+ if (sf->sprob[score - obs_min] > 0)
+ {
+ score_sum += sf->sprob[score - obs_min];
+ }
+ }
+
+ score_avg = 0.0;
+ for (score = obs_min; score <= obs_max; score++)
+ {
+ sf->sprob[score - obs_min] /= score_sum;
+ score_avg += score * sf->sprob[score - obs_min];
+ }
+ sf->score_avg = score_avg;
+ return sf;
+}
+
+static double gt_karlin_altschul_stat_calculate_ungapped_lambda(
+ const ScoringFrequency *sf)
+{
+ double x0, x, lambda, tolerance, q, dq;
+ GtWord low, high;
+ GtUword k_max_iterations = 20, idx, jdx;
+
+ /* solve phi(lambda) = -1 + sum_{i=l}^{u} sprob(i)*exp(i*lambda) = 0 */
+
+ x0 = 0.5; /* x0 in (0,1) */
+ tolerance = 1.e-5;
+
+ low = sf->low_align_score;
+ high = sf->high_align_score;
+
+ /* write phi as phi(lambda) = exp(u*lambda) * q(exp(-lambda)) and solve the
+ polynomial q by apply newton's method
+ q(x) = -x^u + sum_{k=0}^{u-l} sprob(u-k)* x^k */
+ for (idx = 0; idx < k_max_iterations; idx++)
+ {
+ q = -pow(x0,high);
+ for (jdx = 0; jdx <= high-low; jdx++)
+ q += sf->sprob[high-low-jdx] * pow(x0,jdx);
+
+ dq = -high*pow(x0,high-1);
+ for (jdx = 1; jdx <= high-low; jdx++)
+ dq += sf->sprob[high-low-jdx] * jdx * pow(x0,jdx-1);
+
+ x = x0 - (q/dq);
+
+ if (fabs(x-x0) < tolerance)
+ break;
+
+ x0 = x;
+ }
+
+ lambda = -log(x);
+
+ /* better solution would be to apply Horner's rule for evaluating a
+ polynomial and its derivative (s. BLAST), but for the moment it works */
+
+ return lambda;
+}
+
+static double gt_karlin_altschul_stat_calculate_H(const ScoringFrequency *sf,
+ double lambda)
+{
+ double H, sum, etonlambda;
+ GtWord idx, low, high, scale;
+ gt_assert(sf->sprob);
+
+ low = sf->low_align_score;
+ high = sf->high_align_score;
+
+ etonlambda = exp(-lambda);
+ sum = low * sf->sprob[0];
+ for (idx = low + 1; idx <= high; idx++)
+ {
+ sum = idx * sf->sprob[idx-low] + etonlambda * sum;
+ }
+
+ scale = pow(etonlambda,high);
+ if (scale > 0.0)
+ H = lambda * sum/scale;
+ else /* case underflow */
+ H = lambda * exp(lambda * high + log(sum));
+
+ return H;
+}
+
+static GtWord gt_karlin_altschul_stat_gcd(const ScoringFrequency *sf)
+{
+ GtWord idx, range, divisor;
+
+ range = sf->high_align_score - sf->low_align_score+1;
+ divisor = -sf->low_align_score;
+ for (idx = 1; idx < range && divisor > 1; idx++)
+ {
+ if (sf->sprob[idx] != 0.0)
+ {
+ GtWord val = labs(idx+sf->low_align_score);
+ if (val > divisor)
+ {
+ GtWord tmp = divisor;
+ divisor = val;
+ val = tmp;
+ }
+ while (val != 0)
+ {
+ GtWord tmp = divisor % val;
+ divisor = val;
+ val = tmp;
+ }
+ }
+ }
+ return divisor;
+}
+
+static double gt_karlin_altschul_stat_calculate_ungapped_K(
+ const ScoringFrequency *sf,
+ double lambda,
+ double H)
+{
+ GtWord low,
+ high,
+ divisor;
+ double expnlambda,
+ K;
+
+ gt_assert(lambda > 0 && H > 0);
+ divisor = gt_karlin_altschul_stat_gcd(sf); /* greatest common divisor */
+ low = sf->low_align_score/divisor;
+ high = sf->high_align_score/divisor;
+ lambda *= divisor;
+ expnlambda = exp(-lambda);
+ if (low == -1 && high == 1)
+ {
+ K = (sf->sprob[0] - sf->sprob[sf->high_align_score - sf->low_align_score]) *
+ (sf->sprob[0] - sf->sprob[sf->high_align_score - sf->low_align_score])/
+ sf->sprob[0];
+ }
+ else if (low == -1 || high == 1)
+ {
+ const double score_avg = sf->score_avg,
+ one_minus_expnlambda = 1-expnlambda;
+
+ gt_assert(score_avg < 0.0);
+ if (high != 1)
+ {
+ const double score_avg_div = score_avg / divisor;
+ K = lambda * one_minus_expnlambda / H *(score_avg_div * score_avg_div);
+ }
+ else
+ {
+ K = H/lambda * one_minus_expnlambda;
+ }
+ }
+ else
+ {
+ const GtUword range = (GtUword) (high - low);
+ const GtUword iterlimit = 100;
+ const double sumlimit = 0.0001;
+ const GtUword size = iterlimit * range + 1;
+ GtWord count;
+ GtUword sigma = 0;
+ GtWord low_align_score = 0, high_align_score = 0;
+ double inner_sum = 1.0,
+ *alignnment_score_probs
+ = gt_calloc(size, sizeof (*alignnment_score_probs));
+
+ gt_assert(low <= high);
+ /* K = lambda*exp(-2*sigma)/(H*(1-exp(-lambda)) */
+
+ alignnment_score_probs[0] = 1.0;
+ for (count = 0; count < iterlimit && inner_sum > sumlimit; count++)
+ {
+ GtWord idx, jdx, first, last;
+ if (count > 0)
+ {
+ inner_sum /= count;
+ sigma += inner_sum;
+ }
+
+ first = last = range;
+ low_align_score += low;
+ high_align_score += high;
+ for (idx = high_align_score-low_align_score; idx >= 0; idx--)
+ {
+ GtWord firstidx = idx-first;
+ GtWord lastidx = idx-last;
+ GtWord secondidx = sf->sprob[low] + first;
+ for (inner_sum = 0.; firstidx >= lastidx; )
+ {
+ inner_sum += alignnment_score_probs[firstidx] *
+ alignnment_score_probs[secondidx];
+ firstidx--;
+ secondidx++;
+ }
+
+ if (first > 0)
+ --first;
+ if (idx <= range)
+ --last;
+
+ alignnment_score_probs[idx] = inner_sum;
+ if (idx == 0)
+ break;
+ }
+
+ inner_sum = alignnment_score_probs[++idx];
+ for (jdx = low_align_score + 1; jdx < 0; jdx++)
+ {
+ inner_sum = alignnment_score_probs[++idx] + inner_sum * expnlambda;
+ }
+ inner_sum *= expnlambda;
+ for (/*Nothing*/; jdx <= high_align_score; ++jdx)
+ inner_sum += alignnment_score_probs[++jdx];
+ }
+ gt_free(alignnment_score_probs);
+ /* no terms of geometric progression, check to add these terms for
+ correction in future */
+
+ K = -exp(-2.0*sigma)/(H/lambda*expnlambda);
+ }
+
+ return K;
+}
+
+static void get_values_from_vector(GtKarlinAltschulStat *ka,
+ const double *vector)
+{
+ ka->lambda = vector[lambdaidx];
+ gt_assert(ka->lambda != 0.0);
+ ka->K = vector[Kidx];
+ ka->logK = log(ka->K);
+ ka->H = vector[Hidx];
+ ka->alpha_div_lambda = vector[alphaidx]/ka->lambda;
+ ka->beta = vector[betaidx];
+}
+
+static const double *gt_karlin_altschul_score_vector(GtWord matchscore,
+ GtWord mismatchscore)
+{
+ if (matchscore == 1 && mismatchscore == -1)
+ {
+ return ga_vector_1_1;
+ }
+ if (matchscore == 1 && mismatchscore == -4)
+ {
+ return ga_vector_1_4;
+ }
+ if (matchscore == 2 && mismatchscore == -7)
+ {
+ return ga_vector_2_7;
+ }
+ if (matchscore == 1 && mismatchscore == -3)
+ {
+ return ga_vector_1_3;
+ }
+ if (matchscore == 2 && mismatchscore == -5)
+ {
+ return ga_vector_2_5;
+ }
+ if (matchscore == 1 && mismatchscore == -2)
+ {
+ return ga_vector_1_2;
+ }
+ if (matchscore == 2 && mismatchscore == -3)
+ {
+ return ga_vector_2_3;
+ }
+ return NULL;
+}
+
+static void gt_karlin_altschul_stat_get_gapped_params(GtKarlinAltschulStat *ka)
+{
+ const double *ga_vector = NULL;
+
+ gt_assert(ka != NULL);
+ ga_vector = gt_karlin_altschul_score_vector(ka->matchscore,ka->mismatchscore);
+ if (ga_vector == NULL)
+ {
+ fprintf(stderr,"no precomputed values for combination matchscore "
+ GT_WD " and mismatchscore " GT_WD " in evalue calculation "
+ "of gapped alignments",ka->matchscore, ka->mismatchscore);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ gt_assert(ga_vector[gapextdidx] == ka->gapscore);
+ get_values_from_vector(ka, ga_vector);
+}
+
+GtKarlinAltschulStat *gt_karlin_altschul_stat_new(unsigned int numofchars,
+ const GtScoreHandler
+ *scorehandler)
+{
+ GtKarlinAltschulStat *ka = gt_malloc(sizeof *ka);
+
+ gt_assert(ka != NULL);
+ ka->searchspace_store = NULL;
+ ka->num_of_query_seqs = 0;
+ ka->different_lengths = 0;
+ ka->lambda = 0;
+ ka->K = 0;
+ ka->logK = 0;
+ ka->H = 0;
+ ka->log2 = log(2);
+ ka->actual_length_db = GT_UWORD_MAX;
+ ka->num_of_db_seqs = GT_UWORD_MAX;
+ gt_assert(gt_scorehandler_get_gap_opening(scorehandler) == 0);
+ ka->matchscore = gt_scorehandler_get_matchscore(scorehandler);
+ ka->mismatchscore = gt_scorehandler_get_mismatchscore(scorehandler);
+ ka->gapscore = gt_scorehandler_get_gapscore(scorehandler);
+ /* only implemented for linear scores */
+ if (numofchars == 0)
+ { /* gapped alignment */
+ gt_karlin_altschul_stat_get_gapped_params(ka);
+ } else
+ {
+ /* New ScoringFrequency */
+ ScoringFrequency *sf
+ = gt_karlin_altschul_stat_scoring_frequency(numofchars,scorehandler);
+ gt_assert(sf != NULL);
+
+ /* karlin altschul parameters for ungapped alignments */
+ ka->lambda = gt_karlin_altschul_stat_calculate_ungapped_lambda(sf);
+ ka->H = gt_karlin_altschul_stat_calculate_H(sf, ka->lambda);
+ ka->K = gt_karlin_altschul_stat_calculate_ungapped_K(sf, ka->lambda, ka->H);
+ ka->logK = log(ka->K);
+ gt_assert(ka->H != 0.0);
+ ka->alpha_div_lambda = 1/ka->H;
+ ka->beta = 0;
+ gt_free(sf->sprob);
+ gt_free(sf);
+ }
+ return ka;
+}
+
+GtKarlinAltschulStat *gt_karlin_altschul_stat_new_gapped(
+ GtUword total_length_db,
+ GtUword num_of_db_seqs,
+ GT_UNUSED const GtEncseq *query_encseq)
+{
+ const unsigned int gapped_alignment_flag = 0;
+ GtScoreHandler *scorehandler = gt_scorehandler_new(1,-2,0,-2);
+ GtKarlinAltschulStat *ka
+ = gt_karlin_altschul_stat_new(gapped_alignment_flag,scorehandler);
+
+ gt_scorehandler_delete(scorehandler);
+ gt_assert(num_of_db_seqs > 0 &&
+ ka->actual_length_db == GT_UWORD_MAX);
+ ka->actual_length_db = total_length_db - (num_of_db_seqs - 1);
+ ka->num_of_db_seqs = num_of_db_seqs;
+ if (query_encseq != NULL)
+ {
+ GtUword *seq_length_tab = gt_all_sequence_lengths_get(query_encseq);
+ GtUwordPair *store_under_construction;
+
+ ka->num_of_query_seqs = gt_encseq_num_of_sequences(query_encseq);
+ if (seq_length_tab == NULL) /* all are of the same length */
+ {
+ store_under_construction = gt_malloc(sizeof *ka->searchspace_store * 1);
+ store_under_construction[0].a = gt_encseq_seqlength(query_encseq,0);
+ store_under_construction[0].b
+ = gt_evalue_searchspace(ka,store_under_construction[0].a);
+ ka->different_lengths = 1;
+ } else
+ {
+ GtUword ridx, widx;
+
+ gt_radixsort_inplace_ulong(seq_length_tab,ka->num_of_query_seqs);
+ gt_assert(ka->num_of_query_seqs > 0);
+ for (ridx = 1, widx = 0; ridx < ka->num_of_query_seqs; ridx++)
+ {
+ if (seq_length_tab[ridx] != seq_length_tab[widx])
+ {
+ seq_length_tab[++widx] = seq_length_tab[ridx];
+ }
+ }
+ ka->different_lengths = widx + 1;
+ store_under_construction = gt_malloc(sizeof *ka->searchspace_store *
+ ka->different_lengths);
+ for (widx = 0; widx < ka->different_lengths; widx++)
+ {
+ store_under_construction[widx].a = seq_length_tab[widx];
+ store_under_construction[widx].b
+ = gt_evalue_searchspace(ka,store_under_construction[widx].a);
+ }
+ gt_free(seq_length_tab);
+ }
+ ka->searchspace_store = store_under_construction;
+ }
+ return ka;
+}
+
+static GtWord gt_karlin_altschul_stat_mismatchscore(
+ const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->mismatchscore;
+}
+
+static GtWord gt_karlin_altschul_stat_matchscore(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->matchscore;
+}
+
+static GtWord gt_karlin_altschul_stat_gapscore(const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL);
+ return ka->gapscore;
+}
+
+static GtWord gt_karlin_altschul_get_actual_length_db(
+ const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL && ka->actual_length_db != GT_UWORD_MAX);
+ return ka->actual_length_db;
+}
+
+static GtWord gt_karlin_altschul_get_num_of_db_seqs(
+ const GtKarlinAltschulStat *ka)
+{
+ gt_assert(ka != NULL && ka->num_of_db_seqs != GT_UWORD_MAX);
+ return ka->num_of_db_seqs;
+}
+
+int gt_karlin_altschul_stat_unit_test(GtError *err)
+{
+ GtKarlinAltschulStat *ka;
+ GtScoreHandler *scorehandler;
+ double q;
+ unsigned int numofchars = 0;
+
+ int had_err = 0;
+ gt_error_check(err);
+
+ scorehandler = gt_scorehandler_new(1,-2,0,-2);
+
+ /* check function for gapped alignments */
+ ka = gt_karlin_altschul_stat_new(0, scorehandler); /* unit test */
+ gt_ensure(ka->lambda == 1.19);
+ gt_ensure(ka->H == 0.66);
+ gt_ensure(ka->K == 0.34);
+ gt_karlin_altschul_stat_delete(ka);
+
+ /* check function for ungapped alignments */
+ numofchars = 4;
+ ka = gt_karlin_altschul_stat_new(numofchars, scorehandler); /* unit test */
+ q = ka->lambda/1.33; /* lambda = 1.33 */
+ gt_ensure(0.99 < q && q < 1.01);
+ q = ka->H/1.12; /* H = 1.12 */
+ gt_ensure(0.99 < q && q < 1.01);
+ q = ka->K/0.621; /* K = 0.621 */
+ gt_ensure(0.99 < q && q < 1.01);
+ gt_karlin_altschul_stat_delete(ka);
+
+ gt_scorehandler_delete(scorehandler);
+ return had_err;
+}
+
+/*
+ the rest of this file implements function for calculation of E-value of
+ Alignments.
+ */
+
+/*
+ information for invoking procedure:
+ -gt_karlin_altschul_stat_new
+ -gt_evalue_searchspace
+ -gt_evalue_from_eop_count -> evalue
+ -gt_karlin_altschul_stat_delete
+ */
+
+static GtUword gt_evalue_length_adjustment(GtUword query_length,
+ GtUword actual_db_length,
+ GtUword num_of_db_seqs,
+ double alpha_div_lambda,
+ double beta,
+ double K,
+ double logK)
+{
+ unsigned int idx;
+ const unsigned int kMaxIterations = 20;
+ double len_min = 0, len_max, len_next, len, len_bar, space, nNm;
+ GtUword length_adjustment;
+ bool converged = false;
+
+ /* l_max is the largest nonnegative solution of
+ K * (m - l) * (n - N * l) > MAX(m,n) */
+
+ space = actual_db_length * query_length
+ - MAX(query_length, actual_db_length)/K;
+ if (space < 0)
+ return 0; /* length_adjustnment = 0 */
+
+ nNm = query_length * num_of_db_seqs + actual_db_length;
+ /* quadratic formula */
+ len_max = 2 * space / (nNm + sqrt(nNm * nNm - 4 * num_of_db_seqs * space));
+
+ len_next = 0;
+
+ for (idx = 0; idx < kMaxIterations; idx++)
+ {
+ len = len_next;
+ len_bar = beta + alpha_div_lambda *
+ (logK + log((double) (query_length - len) *
+ (double) (actual_db_length - num_of_db_seqs*len)));
+ if (len_bar >= len)
+ {
+ len_min = len;
+ if (len_bar -len_min <= 1.0)
+ {
+ converged = true;
+ break;
+ }
+ if (len_min == len_max)
+ break;
+ }
+ else
+ {
+ len_max = len;
+ }
+ if (len_min <= len_bar && len_bar <= len_max)
+ len_next = len_bar;
+ else if (idx == 0)
+ len_next = len_max;
+ else
+ len_next = (len_min+len_max)/2;
+ }
+
+ length_adjustment = (GtUword) len_min; /* floor(fixed point) */
+ if (converged)
+ {
+ len = ceil(len_min);
+ if (len <= len_max)
+ {
+ if (alpha_div_lambda * (logK +
+ log((query_length-len) *
+ (actual_db_length-num_of_db_seqs*len))) + beta
+ >= len)
+ {
+ length_adjustment = (GtUword) len;
+ }
+ }
+ }
+
+ return length_adjustment;
+}
+
+static GtUword gt_searchspace_store_find(const GtUwordPair *arr,
+ GtUword len,
+ GtUword key)
+{
+ const GtUwordPair *left = arr, *right = arr + len - 1;
+
+ while (left <= right)
+ {
+ const GtUwordPair *mid = left + GT_DIV2(right - left);
+
+ if (key < mid->a)
+ {
+ right = mid - 1;
+ } else
+ {
+ if (key > mid->a)
+ {
+ left = mid + 1;
+ } else
+ {
+ return mid->b;
+ }
+ }
+ }
+ fprintf(stderr,"%s: cannot find entry for " GT_WU "\n",__func__,key);
+ gt_assert(false);
+ return GT_UWORD_MAX;
+}
+
+GtUword gt_evalue_searchspace(const GtKarlinAltschulStat *ka,
+ GtUword query_idx_length)
+{
+ if (ka->searchspace_store != NULL)
+ {
+ return gt_searchspace_store_find(ka->searchspace_store,
+ ka->different_lengths,
+ query_idx_length);
+ } else
+ {
+ GtUword actual_db_length,
+ num_of_db_seqs,
+ effective_db_length,
+ effective_query_length,
+ length_adjustment;
+ double alpha_div_lambda, beta, K, logK;
+
+ gt_assert(ka != NULL);
+ alpha_div_lambda = gt_karlin_altschul_stat_get_alphadlambda(ka);
+
+ beta = gt_karlin_altschul_stat_get_beta(ka);
+ K = gt_karlin_altschul_stat_get_K(ka);
+ logK = gt_karlin_altschul_stat_get_logK(ka);
+
+ num_of_db_seqs = gt_karlin_altschul_get_num_of_db_seqs(ka);
+ actual_db_length = gt_karlin_altschul_get_actual_length_db(ka);
+ length_adjustment = gt_evalue_length_adjustment(query_idx_length,
+ actual_db_length,
+ num_of_db_seqs,
+ alpha_div_lambda,
+ beta,
+ K,
+ logK);
+
+ effective_query_length = query_idx_length - length_adjustment;
+ effective_db_length
+ = actual_db_length - (num_of_db_seqs * length_adjustment);
+
+ return effective_query_length * effective_db_length;
+ }
+}
+
+GtWord gt_evalue_raw_score(const GtKarlinAltschulStat *ka,
+ GtUword matches,
+ GtUword mismatches,
+ GtUword indels)
+{
+ GtWord matchscore, mismatchscore, gapscore;
+
+ gt_assert(ka != NULL);
+ matchscore = gt_karlin_altschul_stat_matchscore(ka);
+ mismatchscore = gt_karlin_altschul_stat_mismatchscore(ka);
+ gapscore = gt_karlin_altschul_stat_gapscore(ka);
+ gt_assert(matchscore > 0 && mismatchscore < 0 && gapscore < 0);
+ return (GtWord) matches * matchscore +
+ (GtWord) mismatches * mismatchscore +
+ (GtWord) indels * gapscore;
+}
+
+double gt_evalue_raw_score2bit_score(const GtKarlinAltschulStat *ka,
+ GtWord raw_score)
+{
+ double lambda, logK;
+
+ gt_assert(ka != NULL);
+ lambda = gt_karlin_altschul_stat_get_lambda(ka);
+ logK = gt_karlin_altschul_stat_get_logK(ka);
+ return (lambda * (double) raw_score - logK)/ka->log2;
+}
+
+GtWord gt_evalue_bit_score2raw_score(const GtKarlinAltschulStat *ka,
+ double bit_score)
+{
+ double raw_score, lambda, logK;
+
+ gt_assert(ka != NULL);
+ lambda = gt_karlin_altschul_stat_get_lambda(ka);
+ logK = gt_karlin_altschul_stat_get_logK(ka);
+
+ raw_score = (bit_score * ka->log2 + logK)/lambda;
+ return (GtWord) round(raw_score);
+}
+
+double gt_evalue_from_raw_score(const GtKarlinAltschulStat *ka,
+ GtWord raw_score,
+ GtUword searchspace)
+{
+ double logK = gt_karlin_altschul_stat_get_logK(ka);
+ double lambda = gt_karlin_altschul_stat_get_lambda(ka);
+ return searchspace * exp(-lambda * raw_score + logK);
+}
+
+double gt_evalue_from_bitscore(const GtKarlinAltschulStat *ka,
+ double bit_score,
+ GtUword searchspace)
+{
+ GtWord raw_score;
+
+ gt_assert(ka != NULL);
+ raw_score = gt_evalue_bit_score2raw_score(ka, bit_score);
+ return gt_evalue_from_raw_score(ka,raw_score,searchspace);
+}
+
+double gt_evalue_from_eop_count(const GtKarlinAltschulStat *ka,
+ GtUword matches,
+ GtUword mismatches,
+ GtUword indels,
+ GtUword searchspace)
+{
+ GtWord raw_score;
+
+ gt_assert(ka != NULL);
+ raw_score = gt_evalue_raw_score(ka, matches, mismatches, indels);
+ return gt_evalue_from_raw_score(ka,raw_score,searchspace);
+}
+
+int gt_evalue_unit_test(GT_UNUSED GtError *err)
+{
+ GtKarlinAltschulStat *ka;
+ GtScoreHandler *scorehandler;
+ GtUword searchspace;
+ double evalue_variance;
+ const unsigned int numchars = 0; /* means gapped case */
+ int had_err = 0;
+
+ scorehandler = gt_scorehandler_new(1,-2,0,-2);
+ ka = gt_karlin_altschul_stat_new(numchars,scorehandler); /* unit test */
+ ka->actual_length_db = 772376 - (1952 - 1);
+ ka->num_of_db_seqs = 1952;
+
+ /* checks searchspace calculation */
+ gt_ensure(gt_evalue_searchspace(ka, 450)== 308243802);
+ gt_ensure(gt_evalue_searchspace(ka, 300)== 199707252);
+ gt_ensure(gt_evalue_searchspace(ka, 475)== 324731250);
+
+ searchspace = gt_evalue_searchspace(ka, 300);
+
+ /* checks evalue calculation */
+ evalue_variance
+ = gt_evalue_from_eop_count(ka, 300, 0, 0, searchspace)
+ /(6.148125 * pow(10,-148));
+ gt_ensure(evalue_variance > 0.99 && evalue_variance < 1.01);
+ evalue_variance
+ = gt_evalue_from_eop_count(ka, 213, 25, 1, searchspace)
+ /(4.220782 * pow(10,-76));
+ gt_ensure(evalue_variance > 0.99 && evalue_variance < 1.01);
+ evalue_variance
+ = gt_evalue_from_eop_count(ka, 206, 23, 1, searchspace)
+ /(1.499078 * pow(10,-74));
+ gt_ensure(evalue_variance > 0.99 && evalue_variance < 1.01);
+
+ gt_scorehandler_delete(scorehandler);
+ gt_karlin_altschul_stat_delete(ka);
+ return had_err;
+}
diff --git a/src/match/karlin_altschul_stat.h b/src/match/karlin_altschul_stat.h
new file mode 100644
index 0000000..689fe0e
--- /dev/null
+++ b/src/match/karlin_altschul_stat.h
@@ -0,0 +1,90 @@
+/*
+ Copyright (c) 2016 Annika Seidel <annika.seidel at studium.uni-hamburg.de>
+ Copyright (c) 2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef KARLIN_ALTSCHUL_STAT_H
+#define KARLIN_ALTSCHUL_STAT_H
+
+#include <stdbool.h>
+#include "extended/scorehandler.h"
+#include "core/error_api.h"
+#include "core/encseq_api.h"
+
+typedef struct GtKarlinAltschulStat GtKarlinAltschulStat;
+
+/*
+ determine karlin altschul parameters lambda, H, K, alpha and beta for
+ scorefunction given as <scorehandler>
+
+ If <numofchars> is 0, then the precomputation is done for
+ gapped alignments. Otherwise, the precomputation is
+ based on an alphabet of size <numchars> and calculated by using scoring
+ frequency statistics for ungapped alignments,
+
+ returns a GtKarlinAltschulStat object if no error occured, otherwise returns
+ NULL and <err> is set
+ */
+GtKarlinAltschulStat *gt_karlin_altschul_stat_new(unsigned int numchars,
+ const GtScoreHandler *scorehandler);
+
+GtKarlinAltschulStat *gt_karlin_altschul_stat_new_gapped(
+ GtUword total_length_db,
+ GtUword num_of_db_seqs,
+ const GtEncseq *query_encseq);
+
+void gt_karlin_altschul_stat_delete(GtKarlinAltschulStat *ka);
+
+int gt_karlin_altschul_stat_unit_test(GtError *err);
+
+/*
+ the remaining function
+ calculate effective searchspace for query sequence of length
+ <query_idx_length> and a set of database sequences.
+ <total_length_of_db> is the total number of characters in all db sequences
+ including separators and wildcards
+ */
+
+GtUword gt_evalue_searchspace(const GtKarlinAltschulStat *ka,
+ GtUword query_idx_length);
+
+GtWord gt_evalue_raw_score(const GtKarlinAltschulStat *ka,
+ GtUword matches,
+ GtUword mismatches,
+ GtUword indels);
+
+double gt_evalue_raw_score2bit_score(const GtKarlinAltschulStat *ka,
+ GtWord raw_score);
+
+GtWord gt_evalue_bit_score2raw_score(const GtKarlinAltschulStat *ka,
+ double bit_score);
+
+double gt_evalue_from_raw_score(const GtKarlinAltschulStat *ka,
+ GtWord raw_score,
+ GtUword searchspace);
+
+double gt_evalue_from_bitscore(const GtKarlinAltschulStat *ka,
+ double bit_score,
+ GtUword searchspace);
+
+double gt_evalue_from_eop_count(const GtKarlinAltschulStat *ka,
+ GtUword matches,
+ GtUword mismatches,
+ GtUword indels,
+ GtUword searchspace);
+
+int gt_evalue_unit_test(GT_UNUSED GtError *err);
+
+#endif
diff --git a/src/match/lua_tools.h b/src/match/lua_tools.h
index 99158d4..f83ee18 100644
--- a/src/match/lua_tools.h
+++ b/src/match/lua_tools.h
@@ -22,6 +22,9 @@
#include "lua.h"
#include "lualib.h"
+/* GtLuaTools module */
+
+/* Prints the content of <L> to stderr in a human readable format. */
void gt_lua_stack_dump(lua_State *L);
#endif
diff --git a/src/match/querymatch-align.c b/src/match/querymatch-align.c
index bc925ad..4de5b2b 100644
--- a/src/match/querymatch-align.c
+++ b/src/match/querymatch-align.c
@@ -1,6 +1,6 @@
/*
- Copyright (c) 2007-2015 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
- Copyright (c) 2007-2015 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2007-2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2007-2016 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -15,202 +15,150 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <float.h>
#include "core/ma_api.h"
-#include "core/unused_api.h"
#include "core/types_api.h"
#include "core/minmax.h"
-#include "extended/alignment.h"
-#include "extended/linearalign.h"
-#include "extended/linspace_management.h"
+#include "core/encseq_metadata.h"
#include "revcompl.h"
#include "seed-extend.h"
#include "ft-polish.h"
#include "querymatch-align.h"
-static void eoplist_reverse_order(uint8_t *start,uint8_t *end)
-{
- if (start < end)
- {
- uint8_t *fwd, *bwd;
-
- for (fwd = start, bwd = end; fwd < bwd; fwd++, bwd--)
- {
- uint8_t tmp = *fwd;
- *fwd = *bwd;
- *bwd = tmp;
- }
- }
-}
-
-static void converteoplist2alignment(GtAlignment *alignment,
- const GtArrayuint8_t *eoplist)
-{
- uint8_t *ptr;
-
- for (ptr = eoplist->spaceuint8_t;
- ptr < eoplist->spaceuint8_t + eoplist->nextfreeuint8_t; ptr++)
- {
- if (*ptr == FT_EOPCODE_DELETION)
- {
- gt_alignment_add_deletion(alignment);
- } else
- {
- if (*ptr == FT_EOPCODE_INSERTION)
- {
- gt_alignment_add_insertion(alignment);
- } else
- {
- gt_alignment_add_replacement_multi(alignment,(GtUword) ((*ptr) + 1));
- }
- }
- }
-}
-
-void gt_querymatch_showeoplist(const GtArrayuint8_t *eoplist)
-{
- uint8_t *ptr;
-
- gt_assert(eoplist != NULL);
- if (eoplist->nextfreeuint8_t == 0)
- {
- printf("[]\n");
- return;
- }
- for (ptr = eoplist->spaceuint8_t;
- ptr < eoplist->spaceuint8_t + eoplist->nextfreeuint8_t;
- ptr++)
- {
- if (*ptr == FT_EOP_DELETION)
- {
- printf("D");
- } else
- {
- if (*ptr == FT_EOP_INSERTION)
- {
- printf("I");
- } else
- {
- printf("R %d",(int) ((*ptr) + 1));
- }
- }
- if (ptr < eoplist->spaceuint8_t + eoplist->nextfreeuint8_t - 1)
- {
- printf(",");
- } else
- {
- printf("\n");
- }
- }
-}
-
struct GtQuerymatchoutoptions
{
- GtUword totallength,
- alignmentwidth,
- useqbuffer_size,
- vseqbuffer_size;
- GtArrayuint8_t eoplist;
- GtFronttrace *front_trace;
+ GtUword useqbuffer_size,
+ vseqbuffer_size,
+ trace_delta;
+ GtUchar *useqbuffer, *vseqbuffer;
+ GtEoplist *eoplist;
+ GtEoplistReader *eoplist_reader, *eoplist_reader_verify;
+ GtFrontTrace *front_trace;
GtGreedyextendmatchinfo *ggemi;
- GtUchar *useqbuffer, *vseqbuffer, *alignment_show_buffer;
const GtUchar *characters;
- GtAlignment *alignment;
- GtEncseqReader *esr_for_align_show;
+ GtEncseqReader *db_esr_for_align_show,
+ *query_esr_for_align_show;
+ GtEncseqMetadata *emd;
GtUchar wildcardshow;
GtSeqpaircoordinates correction_info;
- GtLinspaceManagement *linspace_spacemanager;
- GtScoreHandler *linspace_scorehandler;
- bool always_polished_ends,
- generatealignment,
- showeoplist;
- Polishing_info *pol_info;
+ bool always_polished_ends;
+ GtFtPolishing_info *pol_info;
};
-GtQuerymatchoutoptions *gt_querymatchoutoptions_new(bool generatealignment,
- bool showeoplist,
- GtUword alignmentwidth)
+GtQuerymatchoutoptions *gt_querymatchoutoptions_new(const
+ GtSeedExtendDisplayFlag
+ *out_display_flag,
+ const char *indexname,
+ GtError *err)
{
- GtQuerymatchoutoptions *querymatchoutoptions
- = gt_malloc(sizeof *querymatchoutoptions);
+ GtQuerymatchoutoptions *querymatchoutoptions;
- querymatchoutoptions->generatealignment
- = generatealignment || alignmentwidth > 0 || showeoplist;
- querymatchoutoptions->showeoplist = showeoplist;
- querymatchoutoptions->alignmentwidth = alignmentwidth;
+ if (indexname != NULL)
+ {
+ GtAlphabet *alphabet;
+ GtEncseqMetadata *emd = gt_encseq_metadata_new(indexname,err);
+
+ if (emd == NULL)
+ {
+ return NULL;
+ }
+ alphabet = gt_encseq_metadata_alphabet(emd);
+ querymatchoutoptions = gt_malloc(sizeof *querymatchoutoptions);
+ querymatchoutoptions->emd = emd;
+ querymatchoutoptions->characters = gt_alphabet_characters(alphabet);
+ querymatchoutoptions->wildcardshow = gt_alphabet_wildcard_show(alphabet);
+ } else
+ {
+ querymatchoutoptions = gt_malloc(sizeof *querymatchoutoptions);
+ querymatchoutoptions->emd = NULL;
+ querymatchoutoptions->characters = NULL;
+ querymatchoutoptions->wildcardshow = 0;
+ }
querymatchoutoptions->front_trace = NULL;
querymatchoutoptions->ggemi = NULL;
querymatchoutoptions->useqbuffer = NULL;
querymatchoutoptions->useqbuffer_size = 0;
querymatchoutoptions->vseqbuffer = NULL;
querymatchoutoptions->vseqbuffer_size = 0;
- GT_INITARRAY(&querymatchoutoptions->eoplist,uint8_t);
- querymatchoutoptions->totallength = GT_UWORD_MAX; /* not yet known */
- querymatchoutoptions->esr_for_align_show = NULL;
- querymatchoutoptions->characters = NULL;
- querymatchoutoptions->alignment = NULL;
- querymatchoutoptions->linspace_spacemanager = NULL;
- querymatchoutoptions->linspace_scorehandler = NULL;
- querymatchoutoptions->always_polished_ends = true;
- querymatchoutoptions->alignment_show_buffer = NULL;
- if (generatealignment)
+ querymatchoutoptions->eoplist_reader_verify = NULL;
+ querymatchoutoptions->pol_info = NULL;
+ querymatchoutoptions->trace_delta
+ = gt_querymatch_trace_delta_display(out_display_flag);
+ querymatchoutoptions->eoplist_reader = gt_eoplist_reader_new();
+ querymatchoutoptions->eoplist = gt_eoplist_new();
+ if (gt_querymatch_alignment_display(out_display_flag))
{
- querymatchoutoptions->alignment = gt_alignment_new();
+ gt_eoplist_reader_reset_width(querymatchoutoptions->eoplist_reader,
+ gt_querymatch_display_alignmentwidth(
+ out_display_flag));
}
- if (alignmentwidth > 0)
+ querymatchoutoptions->db_esr_for_align_show = NULL;
+ querymatchoutoptions->query_esr_for_align_show = NULL;
+ querymatchoutoptions->always_polished_ends = true;
+ return querymatchoutoptions;
+}
+
+void gt_querymatchoutoptions_reset(GtQuerymatchoutoptions *querymatchoutoptions)
+{
+ if (querymatchoutoptions != NULL)
{
- querymatchoutoptions->alignment_show_buffer
- = gt_alignment_buffer_new(alignmentwidth);
- querymatchoutoptions->linspace_spacemanager = gt_linspace_management_new();
- querymatchoutoptions->linspace_scorehandler = gt_scorehandler_new(0,1,0,1);
+ if (querymatchoutoptions->vseqbuffer_size == 0)
+ {
+ querymatchoutoptions->vseqbuffer = NULL;
+ }
+ if (querymatchoutoptions->useqbuffer_size == 0)
+ {
+ querymatchoutoptions->useqbuffer = NULL;
+ }
}
- return querymatchoutoptions;
}
void gt_querymatchoutoptions_extend(
GtQuerymatchoutoptions *querymatchoutoptions,
GtUword errorpercentage,
+ double evalue_threshold,
GtUword maxalignedlendifference,
GtUword history_size,
GtUword perc_mat_history,
- GtExtendCharAccess extend_char_access,
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ bool cam_generic,
bool weakends,
GtUword sensitivity,
double matchscore_bias,
bool always_polished_ends,
- unsigned int display_flag)
+ const GtSeedExtendDisplayFlag *out_display_flag)
{
if (errorpercentage > 0)
{
gt_assert(querymatchoutoptions != NULL);
- if (querymatchoutoptions->generatealignment)
- {
- querymatchoutoptions->front_trace = front_trace_new();
- }
+ querymatchoutoptions->front_trace = front_trace_new();
querymatchoutoptions->pol_info
= polishing_info_new_with_bias(weakends ? MAX(errorpercentage,20)
: errorpercentage,
matchscore_bias,
history_size);
querymatchoutoptions->ggemi
- = gt_greedy_extend_matchinfo_new(errorpercentage,
- maxalignedlendifference,
+ = gt_greedy_extend_matchinfo_new(maxalignedlendifference,
history_size, /* default value */
perc_mat_history,
0,/* userdefinedleastlength not used */
- extend_char_access,
+ errorpercentage,
+ evalue_threshold,
+ a_extend_char_access,
+ b_extend_char_access,
+ cam_generic,
sensitivity,
querymatchoutoptions->pol_info);
- if (querymatchoutoptions->alignment != NULL)
+ if (always_polished_ends)
+ {
+ gt_eoplist_polished_ends(querymatchoutoptions->eoplist,
+ querymatchoutoptions->pol_info,true,
+ gt_querymatch_polinfo_display(out_display_flag));
+ }
+ if (gt_querymatch_seed_in_algn_display(out_display_flag))
{
- if (always_polished_ends)
- {
- gt_alignment_polished_ends(querymatchoutoptions->alignment,
- querymatchoutoptions->pol_info,true);
- }
- if (gt_querymatch_seed_display(display_flag))
- {
- gt_alignment_seed_display_set(querymatchoutoptions->alignment);
- }
+ gt_eoplist_display_seed_in_alignment_set(querymatchoutoptions->eoplist);
}
querymatchoutoptions->always_polished_ends = always_polished_ends;
}
@@ -222,19 +170,29 @@ void gt_querymatchoutoptions_for_align_only(
double matchscore_bias,
GtUword history_size,
bool always_polished_ends,
- unsigned int display_flag)
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ const GtSeedExtendDisplayFlag *out_display_flag)
{
+ const bool weakends = false;
+ const bool cam_generic = false;
+ const GtUword sensitivity = 100;
+ const double evalue_threshold = DBL_MAX;
+
gt_querymatchoutoptions_extend(querymatchoutoptions,
errorpercentage,
+ evalue_threshold,
GT_MAX_ALI_LEN_DIFF,
history_size,
GT_MIN_PERC_MAT_HISTORY,
- GT_EXTEND_CHAR_ACCESS_ANY,
- false,
- 100,
+ a_extend_char_access,
+ b_extend_char_access,
+ cam_generic,
+ weakends,
+ sensitivity,
matchscore_bias,
always_polished_ends,
- display_flag);
+ out_display_flag);
}
void gt_querymatchoutoptions_delete(
@@ -244,237 +202,347 @@ void gt_querymatchoutoptions_delete(
{
front_trace_delete(querymatchoutoptions->front_trace);
gt_greedy_extend_matchinfo_delete(querymatchoutoptions->ggemi);
- gt_free(querymatchoutoptions->useqbuffer);
+ if (querymatchoutoptions->useqbuffer_size > 0)
+ {
+ gt_free(querymatchoutoptions->useqbuffer);
+ }
if (querymatchoutoptions->vseqbuffer_size > 0)
{
gt_free(querymatchoutoptions->vseqbuffer);
}
- gt_alignment_delete(querymatchoutoptions->alignment);
- GT_FREEARRAY(&querymatchoutoptions->eoplist,uint8_t);
- gt_alignment_buffer_delete(querymatchoutoptions->alignment_show_buffer);
- gt_encseq_reader_delete(querymatchoutoptions->esr_for_align_show);
- gt_linspace_management_delete(querymatchoutoptions->linspace_spacemanager);
- gt_scorehandler_delete(querymatchoutoptions->linspace_scorehandler);
+ gt_eoplist_delete(querymatchoutoptions->eoplist);
+ gt_eoplist_reader_delete(querymatchoutoptions->eoplist_reader);
+ gt_eoplist_reader_delete(querymatchoutoptions->eoplist_reader_verify);
+ gt_encseq_reader_delete(querymatchoutoptions->db_esr_for_align_show);
+ gt_encseq_reader_delete(querymatchoutoptions->query_esr_for_align_show);
polishing_info_delete(querymatchoutoptions->pol_info);
+ gt_encseq_metadata_delete(querymatchoutoptions->emd);
gt_free(querymatchoutoptions);
}
}
-static bool seededmatch2eoplist(GtQuerymatchoutoptions *querymatchoutoptions,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtReadmode query_readmode,
- GtUword query_seqstartpos,
- GtUword query_totallength,
- GtUword dbstart,
+static void gt_querymtch_alignment_verification(
+ GtQuerymatchoutoptions *querymatchoutoptions,
+ GtUword dbstart,
+ GtUword dblen,
+ GtUword abs_querystart,
+ GtUword querylen,
+ GtUword sumdist)
+{
+ if (querymatchoutoptions->eoplist_reader_verify == NULL)
+ {
+ querymatchoutoptions->eoplist_reader_verify = gt_eoplist_reader_new();
+ }
+ gt_eoplist_set_sequences(querymatchoutoptions->eoplist,NULL,
+ dbstart,
+ dblen,
+ NULL,
+ abs_querystart,
+ querylen);
+ gt_eoplist_verify(querymatchoutoptions->eoplist,
+ querymatchoutoptions->eoplist_reader_verify,
+ sumdist);
+}
+
+void gt_querymatchoutoptions_seededmatch2eoplist(
+ GtQuerymatchoutoptions *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart_relative,
+ GtUword db_seqstart,
GtUword dblen,
- GtUword abs_querystart,
+ GtReadmode query_readmode,
+ const GtSeqorEncseq *queryes,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword querystart_rel,
GtUword querylen,
- GtUword seedpos1,
- GtUword seedpos2,
+ GtUword db_seedpos_rel,
+ GtUword query_seedpos_rel,
GtUword seedlen,
+ bool verify_alignment,
bool greedyextension)
{
GtUword ulen, vlen, ustart, vstart;
- bool alignment_succeeded = true;
- Polished_point right_best_polished_point = {0,0,0};
- Polished_point left_best_polished_point = {0,0,0};
+ GtFtPolished_point right_best_polished_point = {0,0,0,0,0},
+ left_best_polished_point = {0,0,0,0,0};
GtUword pol_size;
GtSeqpaircoordinates *coords;
+ GtUword leftcolumn, rightcolumn;
gt_assert(querymatchoutoptions != NULL &&
querymatchoutoptions->pol_info != NULL);
pol_size = GT_MULT2(querymatchoutoptions->pol_info->cut_depth);
- querymatchoutoptions->eoplist.nextfreeuint8_t = 0;
- if (querymatchoutoptions->totallength == GT_UWORD_MAX)
- {
- querymatchoutoptions->totallength = gt_encseq_total_length(encseq);
- }
- ustart = seedpos1 + seedlen;
- vstart = seedpos2 + seedlen;
- gt_assert(dbstart + dblen >= ustart);
- ulen = dbstart + dblen - ustart;
- gt_assert(abs_querystart + querylen >= vstart);
- vlen = abs_querystart + querylen - vstart;
+ gt_eoplist_reset(querymatchoutoptions->eoplist);
+ ustart = db_seedpos_rel + seedlen;
+ vstart = query_seedpos_rel + seedlen;
+ gt_assert(dbstart_relative + dblen >= ustart);
+ ulen = dbstart_relative + dblen - ustart;
+ gt_assert(querystart_rel + querylen >= vstart);
+ vlen = querystart_rel + querylen - vstart;
if (ulen > 0 && vlen > 0)
{
- if (gt_align_front_prune_edist(true,
- &right_best_polished_point,
- querymatchoutoptions->front_trace,
- encseq,
- query,
- query_readmode,
- query_seqstartpos,
- query_totallength,
- querymatchoutoptions->ggemi,
- greedyextension,
- seedlen,
- ustart,
- ulen,
- vstart,
- vlen) == ulen + vlen + 1)
- {
- alignment_succeeded = false;
- } else
- {
- if (querymatchoutoptions->front_trace != NULL)
- {
- front_trace2eoplist(querymatchoutoptions->always_polished_ends,
- &querymatchoutoptions->eoplist,
- querymatchoutoptions->front_trace,
- &right_best_polished_point,
- pol_size,
- querymatchoutoptions->pol_info->match_score,
- querymatchoutoptions->pol_info->difference_score,
- NULL,
- ulen,
- NULL,
- vlen);
- }
- }
+ gt_align_front_prune_edist(true,
+ &right_best_polished_point,
+ querymatchoutoptions->front_trace,
+ dbes,
+ queryes,
+ query_readmode,
+ query_seqstart,
+ query_seqlen,
+ querymatchoutoptions->ggemi,
+ greedyextension,
+ seedlen,
+ db_seqstart + ustart,
+ ulen,
+ query_seqstart + vstart,
+ vlen);
if (querymatchoutoptions->front_trace != NULL)
{
- gt_assert(querymatchoutoptions->generatealignment);
+ front_trace2eoplist(querymatchoutoptions->always_polished_ends,
+ querymatchoutoptions->eoplist,
+ querymatchoutoptions->front_trace,
+ &right_best_polished_point,
+ pol_size,
+ querymatchoutoptions->pol_info->match_score,
+ querymatchoutoptions->pol_info->difference_score,
+ NULL,
+ ulen,
+ NULL,
+ vlen);
front_trace_reset(querymatchoutoptions->front_trace,ulen+vlen);
}
}
- if (alignment_succeeded)
+ gt_eoplist_match_add(querymatchoutoptions->eoplist,seedlen);
+ if (db_seedpos_rel > dbstart_relative && query_seedpos_rel > querystart_rel)
{
- if (querymatchoutoptions->generatealignment)
- {
- front_trace_multireplacement(&querymatchoutoptions->eoplist,seedlen);
- }
- if (seedpos1 > dbstart && seedpos2 > abs_querystart)
+ ulen = db_seedpos_rel - dbstart_relative;
+ vlen = query_seedpos_rel - querystart_rel;
+ gt_align_front_prune_edist(false,
+ &left_best_polished_point,
+ querymatchoutoptions->front_trace,
+ dbes,
+ queryes,
+ query_readmode,
+ query_seqstart,
+ query_seqlen,
+ querymatchoutoptions->ggemi,
+ greedyextension,
+ seedlen,
+ db_seqstart + dbstart_relative,
+ ulen,
+ query_seqstart + querystart_rel,
+ vlen);
+ if (querymatchoutoptions->front_trace != NULL)
{
- ulen = seedpos1 - dbstart;
- vlen = seedpos2 - abs_querystart;
- if (gt_align_front_prune_edist(false,
- &left_best_polished_point,
- querymatchoutoptions->front_trace,
- encseq,
- query,
- query_readmode,
- query_seqstartpos,
- query_totallength,
- querymatchoutoptions->ggemi,
- greedyextension,
- seedlen,
- dbstart,
- ulen,
- abs_querystart,
- vlen) == ulen + vlen + 1)
- {
- alignment_succeeded = false;
- } else
- {
- if (querymatchoutoptions->front_trace != NULL)
- {
- GtUword eoplistlen = querymatchoutoptions->eoplist.nextfreeuint8_t;
-
- front_trace2eoplist(querymatchoutoptions->always_polished_ends,
- &querymatchoutoptions->eoplist,
- querymatchoutoptions->front_trace,
- &left_best_polished_point,
- pol_size,
- querymatchoutoptions->pol_info->match_score,
- querymatchoutoptions->pol_info->difference_score,
- NULL,
- ulen,
- NULL,
- vlen);
- eoplist_reverse_order(querymatchoutoptions->eoplist.spaceuint8_t +
- eoplistlen,
- querymatchoutoptions->eoplist.spaceuint8_t +
- querymatchoutoptions->eoplist.nextfreeuint8_t -
- 1);
- }
- }
- if (querymatchoutoptions->front_trace != NULL)
- {
- front_trace_reset(querymatchoutoptions->front_trace,ulen+vlen);
- }
+ GtUword previous_eoplistlen
+ = gt_eoplist_length(querymatchoutoptions->eoplist);
+ front_trace2eoplist(querymatchoutoptions->always_polished_ends,
+ querymatchoutoptions->eoplist,
+ querymatchoutoptions->front_trace,
+ &left_best_polished_point,
+ pol_size,
+ querymatchoutoptions->pol_info->match_score,
+ querymatchoutoptions->pol_info->difference_score,
+ NULL,
+ ulen,
+ NULL,
+ vlen);
+ gt_eoplist_reverse_end(querymatchoutoptions->eoplist,previous_eoplistlen);
+ front_trace_reset(querymatchoutoptions->front_trace,ulen+vlen);
}
}
coords = &querymatchoutoptions->correction_info;
- if (alignment_succeeded)
+ gt_assert(db_seedpos_rel >= dbstart_relative + left_best_polished_point.row);
+ coords->uoffset = db_seedpos_rel - left_best_polished_point.row -
+ dbstart_relative;
+ coords->ulen = seedlen + left_best_polished_point.row +
+ right_best_polished_point.row;
+ leftcolumn = left_best_polished_point.alignedlen -
+ left_best_polished_point.row;
+ rightcolumn = right_best_polished_point.alignedlen -
+ right_best_polished_point.row;
+ gt_assert(query_seedpos_rel >= leftcolumn + querystart_rel);
+ coords->voffset = query_seedpos_rel - leftcolumn - querystart_rel;
+ coords->vlen = seedlen + leftcolumn + rightcolumn;
+ coords->sumdist = left_best_polished_point.distance +
+ right_best_polished_point.distance;
+ coords->sum_max_mismatches = left_best_polished_point.max_mismatches +
+ right_best_polished_point.max_mismatches;
+ gt_eoplist_reverse_end(querymatchoutoptions->eoplist,0);
+ if (verify_alignment)
{
- GtUword leftcolumn, rightcolumn;
+ gt_querymtch_alignment_verification(querymatchoutoptions,
+ db_seqstart + dbstart_relative,
+ coords->ulen,
+ query_seqstart + querystart_rel,
+ coords->vlen,
+ coords->sumdist);
+ }
+ gt_eoplist_set_seedoffset(querymatchoutoptions->eoplist,
+ db_seedpos_rel - dbstart_relative,
+ seedlen);
+}
- gt_assert(dbstart <= seedpos1 - left_best_polished_point.row);
- coords->uoffset = seedpos1 - left_best_polished_point.row - dbstart;
- coords->ulen = seedlen + left_best_polished_point.row +
- right_best_polished_point.row;
- leftcolumn = left_best_polished_point.alignedlen -
- left_best_polished_point.row;
- rightcolumn = right_best_polished_point.alignedlen -
- right_best_polished_point.row;
- gt_assert(seedpos2 >= leftcolumn &&
- abs_querystart <= seedpos2 - leftcolumn);
- coords->voffset = seedpos2 - leftcolumn - abs_querystart;
- coords->vlen = seedlen + leftcolumn + rightcolumn;
- coords->sumdist = left_best_polished_point.distance +
- right_best_polished_point.distance;
- } else
+void gt_frontprune2eoplist(GtQuerymatchoutoptions *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart,
+ GtUword dblen,
+ const GtSeqorEncseq *queryes,
+ GtReadmode query_readmode,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword querystart,
+ GtUword querylen,
+ bool verify_alignment)
+{
+ GtFtPolished_point right_best_polished_point = {0,0,0,0,0};
+ GtUword pol_size;
+ GtSeqpaircoordinates *coords;
+ const bool greedyextension = true, rightextension = true;
+
+ gt_assert(querymatchoutoptions != NULL &&
+ querymatchoutoptions->pol_info != NULL);
+ pol_size = GT_MULT2(querymatchoutoptions->pol_info->cut_depth);
+ gt_eoplist_reset(querymatchoutoptions->eoplist);
+ gt_assert(dblen > 0 && querylen > 0);
+ gt_align_front_prune_edist(rightextension,
+ &right_best_polished_point,
+ querymatchoutoptions->front_trace,
+ dbes,
+ queryes,
+ query_readmode,
+ query_seqstart,
+ query_seqlen,
+ querymatchoutoptions->ggemi,
+ greedyextension,
+ 0,
+ dbstart,
+ dblen,
+ query_seqstart + querystart,
+ querylen);
+ gt_assert(querymatchoutoptions->front_trace != NULL);
+ front_trace2eoplist(querymatchoutoptions->always_polished_ends,
+ querymatchoutoptions->eoplist,
+ querymatchoutoptions->front_trace,
+ &right_best_polished_point,
+ pol_size,
+ querymatchoutoptions->pol_info->match_score,
+ querymatchoutoptions->pol_info->difference_score,
+ NULL,
+ dblen,
+ NULL,
+ querylen);
+ gt_eoplist_reverse_end(querymatchoutoptions->eoplist,0);
+ front_trace_reset(querymatchoutoptions->front_trace,dblen+querylen);
+ coords = &querymatchoutoptions->correction_info;
+ coords->uoffset = 0;
+ coords->ulen = right_best_polished_point.row;
+ coords->voffset = 0;
+ coords->vlen = right_best_polished_point.alignedlen -
+ right_best_polished_point.row;
+ coords->sumdist = right_best_polished_point.distance;
+ coords->sum_max_mismatches = right_best_polished_point.max_mismatches;
+ if (verify_alignment)
{
- coords->uoffset = coords->voffset = 0;
- coords->ulen = dblen;
- coords->vlen = querylen;
- coords->sumdist = 0;
+ gt_querymtch_alignment_verification(querymatchoutoptions,
+ dbstart,
+ coords->ulen,
+ query_seqstart + querystart,
+ coords->vlen,
+ coords->sumdist);
}
- return alignment_succeeded;
}
-bool gt_querymatchoutoptions_alignment_prepare(GtQuerymatchoutoptions
- *querymatchoutoptions,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtReadmode query_readmode,
- GtUword query_seqstartpos,
- GtUword query_totallength,
- GtUword dbstart,
- GtUword dblen,
- GtUword abs_querystart,
- GtUword abs_querystart_fwdstrand,
- GtUword querylen,
- GtUword edist,
- GtUword seedpos1,
- GtUword seedpos2,
- GtUword seedlen,
- bool greedyextension)
+static void gt_querymatchoutoptions_set_sequences(GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ GtUword dbstart_relative,
+ GtUword dblen,
+ GtUword querystart,
+ GtUword querylen,
+ bool withcorrection)
{
- bool seededalignment = false;
-
gt_assert(querymatchoutoptions != NULL);
- if (querymatchoutoptions->alignmentwidth > 0 &&
- querymatchoutoptions->characters == NULL)
+
+ if (withcorrection)
{
- querymatchoutoptions->characters
- = gt_encseq_alphabetcharacters(encseq);
- querymatchoutoptions->wildcardshow
- = gt_alphabet_wildcard_show(gt_encseq_alphabet(encseq));
- }
- if (querymatchoutoptions->esr_for_align_show == NULL)
+ gt_eoplist_set_sequences(querymatchoutoptions->eoplist,
+ querymatchoutoptions->useqbuffer +
+ querymatchoutoptions->correction_info.uoffset,
+ dbstart_relative +
+ querymatchoutoptions->correction_info.uoffset,
+ querymatchoutoptions->correction_info.ulen,
+ querymatchoutoptions->vseqbuffer +
+ querymatchoutoptions->correction_info.voffset,
+ querystart +
+ querymatchoutoptions->correction_info.voffset,
+ querymatchoutoptions->correction_info.vlen);
+ } else
{
- querymatchoutoptions->esr_for_align_show
- = gt_encseq_create_reader_with_readmode(encseq,
- GT_READMODE_FORWARD,
- 0);
+ gt_eoplist_set_sequences(querymatchoutoptions->eoplist,
+ querymatchoutoptions->useqbuffer,
+ dbstart_relative,
+ dblen,
+ querymatchoutoptions->vseqbuffer,
+ querystart,
+ querylen);
}
- if (dblen > querymatchoutoptions->useqbuffer_size)
+}
+
+void gt_querymatchoutoptions_extract_seq(GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart_relative,
+ GtUword dbstart,
+ GtUword dblen,
+ GtReadmode query_readmode,
+ const GtSeqorEncseq *queryes,
+ GtUword querystart,
+ GtUword abs_querystart_fwdstrand,
+ GtUword querylen,
+ bool withcorrection)
+{
+ gt_assert(querymatchoutoptions != NULL);
+ if (querymatchoutoptions->characters == NULL)
{
- querymatchoutoptions->useqbuffer
- = gt_realloc(querymatchoutoptions->useqbuffer,
- sizeof *querymatchoutoptions->useqbuffer * dblen);
- querymatchoutoptions->useqbuffer_size = dblen;
+ if (dbes->encseq != NULL)
+ {
+ querymatchoutoptions->characters
+ = gt_encseq_alphabetcharacters(dbes->encseq);
+ querymatchoutoptions->wildcardshow
+ = gt_alphabet_wildcard_show(gt_encseq_alphabet(dbes->encseq));
+ } else
+ {
+ querymatchoutoptions->characters = dbes->characters;
+ querymatchoutoptions->wildcardshow = dbes->wildcardshow;
+ }
}
- gt_encseq_extract_encoded_with_reader(
- querymatchoutoptions->esr_for_align_show,
- encseq,
+ if (dbes->encseq != NULL)
+ {
+ if (querymatchoutoptions->db_esr_for_align_show == NULL)
+ {
+ querymatchoutoptions->db_esr_for_align_show
+ = gt_encseq_create_reader_with_readmode(dbes->encseq,
+ GT_READMODE_FORWARD,
+ 0);
+ }
+ if (dblen > querymatchoutoptions->useqbuffer_size)
+ {
+ querymatchoutoptions->useqbuffer
+ = gt_realloc(querymatchoutoptions->useqbuffer,
+ sizeof *querymatchoutoptions->useqbuffer * dblen);
+ querymatchoutoptions->useqbuffer_size = dblen;
+ }
+ gt_encseq_extract_encoded_with_reader(
+ querymatchoutoptions->db_esr_for_align_show,
+ dbes->encseq,
querymatchoutoptions->useqbuffer,
dbstart,
dbstart + dblen - 1);
- if ((query == NULL || query->seq == NULL ||
- query_readmode != GT_READMODE_FORWARD) &&
+ } else
+ {
+ querymatchoutoptions->useqbuffer = (GtUchar *) (dbes->seq + dbstart);
+ }
+ if ((queryes->encseq != NULL || query_readmode != GT_READMODE_FORWARD) &&
querylen > querymatchoutoptions->vseqbuffer_size)
{
querymatchoutoptions->vseqbuffer
@@ -482,26 +550,32 @@ bool gt_querymatchoutoptions_alignment_prepare(GtQuerymatchoutoptions
sizeof *querymatchoutoptions->vseqbuffer * querylen);
querymatchoutoptions->vseqbuffer_size = querylen;
}
- if (query == NULL || query->seq == NULL)
+ if (queryes->encseq != NULL)
{
- gt_assert(query == NULL || query->encseq != NULL);
+ if (querymatchoutoptions->query_esr_for_align_show == NULL)
+ {
+ querymatchoutoptions->query_esr_for_align_show
+ = gt_encseq_create_reader_with_readmode(queryes->encseq,
+ GT_READMODE_FORWARD,
+ 0);
+ }
gt_encseq_extract_encoded_with_reader(
- querymatchoutoptions->esr_for_align_show,
- query == NULL ? encseq : query->encseq,
+ querymatchoutoptions->query_esr_for_align_show,
+ queryes->encseq,
querymatchoutoptions->vseqbuffer,
abs_querystart_fwdstrand,
abs_querystart_fwdstrand + querylen - 1);
} else
{
- if (query_readmode == GT_READMODE_FORWARD)
- {
- querymatchoutoptions->vseqbuffer
- = (GtUchar *) (query->seq + abs_querystart_fwdstrand);
- } else
+ if (query_readmode != GT_READMODE_FORWARD)
{
memcpy(querymatchoutoptions->vseqbuffer,
- query->seq + abs_querystart_fwdstrand,
+ queryes->seq + abs_querystart_fwdstrand,
querylen * sizeof *querymatchoutoptions->vseqbuffer);
+ } else
+ {
+ querymatchoutoptions->vseqbuffer
+ = (GtUchar *) (queryes->seq + abs_querystart_fwdstrand);
}
}
if (query_readmode == GT_READMODE_REVERSE)
@@ -511,148 +585,108 @@ bool gt_querymatchoutoptions_alignment_prepare(GtQuerymatchoutoptions
{
if (query_readmode == GT_READMODE_REVCOMPL)
{
- gt_inplace_reverse_complement(querymatchoutoptions->vseqbuffer,
- querylen);
+ gt_inplace_reverse_complement(querymatchoutoptions->vseqbuffer,querylen);
} else
{
- if (query_readmode == GT_READMODE_COMPL)
- {
- gt_inplace_complement(querymatchoutoptions->vseqbuffer,querylen);
- }
+ gt_assert(query_readmode == GT_READMODE_FORWARD);
}
}
- if (edist > 0)
+ gt_querymatchoutoptions_set_sequences(querymatchoutoptions,
+ dbstart_relative,
+ dblen,
+ querystart,
+ querylen,
+ withcorrection);
+}
+
+void gt_querymatchoutoptions_cigar_show(const GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ bool distinguish_mismatch_match,
+ FILE *fp)
+{
+ gt_assert(querymatchoutoptions != NULL &&
+ querymatchoutoptions->eoplist != NULL);
+ gt_eoplist_reader_reset(querymatchoutoptions->eoplist_reader,
+ querymatchoutoptions->eoplist,true);
+ gt_eoplist_show_cigar(querymatchoutoptions->eoplist_reader,
+ distinguish_mismatch_match,fp);
+}
+
+void gt_querymatchoutoptions_trace_show(const GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ bool dtrace,
+ FILE *fp)
+{
+ GtEoplistSegment segment;
+ bool first = true;
+
+ gt_assert(querymatchoutoptions != NULL);
+ gt_eoplist_reader_reset(querymatchoutoptions->eoplist_reader,
+ querymatchoutoptions->eoplist,true);
+ while (gt_eoplist_reader_next_segment(&segment,
+ querymatchoutoptions->eoplist_reader,
+ querymatchoutoptions->trace_delta))
{
- if (seededmatch2eoplist(querymatchoutoptions,
- encseq,
- query,
- query_readmode,
- query_seqstartpos,
- query_totallength,
- dbstart,
- dblen,
- abs_querystart,
- querylen,
- seedpos1,
- seedpos2,
- seedlen,
- greedyextension))
+ if (!first)
{
- if (querymatchoutoptions->generatealignment)
- {
- gt_alignment_reset(querymatchoutoptions->alignment);
- converteoplist2alignment(querymatchoutoptions->alignment,
- &querymatchoutoptions->eoplist);
- }
- if (querymatchoutoptions->alignmentwidth > 0)
- {
- gt_assert(dbstart <= seedpos1);
- gt_alignment_set_seedoffset(querymatchoutoptions->alignment,
- seedpos1 - dbstart,
- seedlen);
- gt_alignment_set_seqs(querymatchoutoptions->alignment,
- querymatchoutoptions->useqbuffer +
- querymatchoutoptions->correction_info.uoffset,
- querymatchoutoptions->correction_info.ulen,
- querymatchoutoptions->vseqbuffer +
- querymatchoutoptions->correction_info.voffset,
- querymatchoutoptions->correction_info.vlen);
- }
- seededalignment = true;
+ fputc(',',fp);
} else
{
- if (querymatchoutoptions->generatealignment)
- {
-#ifndef NDEBUG
- GtUword linedist;
-#endif
- gt_assert(!greedyextension);
- gt_alignment_set_seqs(querymatchoutoptions->alignment,
- querymatchoutoptions->useqbuffer,
- dblen,
- querymatchoutoptions->vseqbuffer,
- querylen);
-#ifndef NDEBUG
- linedist =
-#else
- (void)
-#endif
- gt_linearalign_compute_generic(
- querymatchoutoptions->linspace_spacemanager,
- querymatchoutoptions->linspace_scorehandler,
- querymatchoutoptions->alignment,
- querymatchoutoptions->useqbuffer,
- 0,
- dblen,
- querymatchoutoptions->vseqbuffer,
- 0,
- querylen);
- gt_assert(linedist <= edist);
- }
- }
- } else
- {
- if (querymatchoutoptions->alignmentwidth > 0)
- {
- gt_alignment_set_seqs(querymatchoutoptions->alignment,
- querymatchoutoptions->useqbuffer,
- dblen,
- querymatchoutoptions->vseqbuffer,
- querylen);
+ first = false;
}
+ fprintf(fp,"%d",dtrace ? ((int) querymatchoutoptions->trace_delta -
+ (int) segment.aligned_v)
+ : (int) segment.aligned_v);
}
- return seededalignment;
}
void gt_querymatchoutoptions_alignment_show(const GtQuerymatchoutoptions
*querymatchoutoptions,
+ GtUword subject_seqlength,
+ GtUword query_reference,
+ GtUword one_off,
GtUword distance,
- GT_UNUSED bool verify_alignment,
+ bool distinguish_mismatch_match,
+ bool verify_alignment,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
FILE *fp)
{
- if (querymatchoutoptions != NULL)
+ gt_assert(querymatchoutoptions != NULL);
+ if (distance > 0)
{
- if (querymatchoutoptions->alignmentwidth > 0)
- {
- if (distance > 0)
- {
- gt_alignment_show_generic(querymatchoutoptions->alignment_show_buffer,
- false,
- querymatchoutoptions->alignment,
- fp,
- (unsigned int)
- querymatchoutoptions->alignmentwidth,
- querymatchoutoptions->characters,
- querymatchoutoptions->wildcardshow);
- } else
- {
- gt_alignment_exact_show(querymatchoutoptions->alignment_show_buffer,
- querymatchoutoptions->alignment,
- fp,
- querymatchoutoptions->alignmentwidth,
- querymatchoutoptions->characters);
- }
- if (verify_alignment)
- {
- (void) gt_alignment_check_edist(querymatchoutoptions->alignment,
- distance,NULL);
- }
- }
- if (querymatchoutoptions->showeoplist)
+ if (verify_alignment)
{
- if (distance > 0)
- {
- gt_alignment_show_multieop_list(querymatchoutoptions->alignment, fp);
- } else
- {
- fprintf(fp, "[]\n");
- }
- }
- if (querymatchoutoptions->alignmentwidth > 0 ||
- querymatchoutoptions->showeoplist)
- {
- gt_alignment_reset(querymatchoutoptions->alignment);
+ gt_assert(querymatchoutoptions->eoplist_reader_verify != NULL);
+ gt_eoplist_verify(querymatchoutoptions->eoplist,
+ querymatchoutoptions->eoplist_reader_verify,
+ distance);
}
+ gt_eoplist_format_generic(fp,
+ querymatchoutoptions->eoplist,
+ querymatchoutoptions->eoplist_reader,
+ querymatchoutoptions->characters,
+ subject_seqlength,
+ query_reference,
+ one_off,
+ distinguish_mismatch_match,
+ subject_first,
+ alignment_show_forward,
+ show_complement_characters,
+ querymatchoutoptions->wildcardshow);
+ } else
+ {
+ gt_eoplist_format_exact(fp,
+ querymatchoutoptions->eoplist,
+ querymatchoutoptions->eoplist_reader,
+ subject_seqlength,
+ query_reference,
+ one_off,
+ subject_first,
+ alignment_show_forward,
+ show_complement_characters,
+ querymatchoutoptions->characters);
}
}
@@ -663,9 +697,12 @@ const GtSeqpaircoordinates *gt_querymatchoutoptions_correction_get(
return &querymatchoutoptions->correction_info;
}
-const GtAlignment *gt_querymatchoutoptions_alignment_get(
- const GtQuerymatchoutoptions *querymatchoutoptions)
+GtEoplist *gt_querymatchoutoptions_eoplist(const GtQuerymatchoutoptions
+ *querymatchoutoptions)
{
- gt_assert(querymatchoutoptions != NULL);
- return querymatchoutoptions->alignment;
+ if (querymatchoutoptions != NULL)
+ {
+ return querymatchoutoptions->eoplist;
+ }
+ return NULL;
}
diff --git a/src/match/querymatch-align.h b/src/match/querymatch-align.h
index eeaf3cd..849fdbb 100644
--- a/src/match/querymatch-align.h
+++ b/src/match/querymatch-align.h
@@ -19,28 +19,37 @@
#define QUERYMATCH_ALIGN_H
#include "core/types_api.h"
+#include "core/error_api.h"
#include "match/ft-front-prune.h"
#include "match/seq_or_encseq.h"
-#include "extended/alignment.h"
+#include "match/querymatch-display.h"
typedef struct GtQuerymatchoutoptions GtQuerymatchoutoptions;
-GtQuerymatchoutoptions *gt_querymatchoutoptions_new(bool generatealignment,
- bool showeoplist,
- GtUword alignmentwidth);
+GtQuerymatchoutoptions *gt_querymatchoutoptions_new(const
+ GtSeedExtendDisplayFlag
+ *out_display_flag,
+ const char *indexname,
+ GtError *err);
+
+void gt_querymatchoutoptions_reset(GtQuerymatchoutoptions
+ *querymatchoutoptions);
void gt_querymatchoutoptions_extend(
GtQuerymatchoutoptions *querymatchoutoptions,
GtUword errorpercentage,
+ double evalue_threshold,
GtUword maxalignedlendifference,
GtUword history,
GtUword perc_mat_history,
- GtExtendCharAccess extend_char_access,
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ bool cam_generic,
bool weakends,
GtUword sensitivity,
double matchscore_bias,
bool always_polished_ends,
- unsigned int display_flag);
+ const GtSeedExtendDisplayFlag *out_display_flag);
void gt_querymatchoutoptions_for_align_only(
GtQuerymatchoutoptions *querymatchoutoptions,
@@ -48,45 +57,91 @@ void gt_querymatchoutoptions_for_align_only(
double matchscore_bias,
GtUword history_size,
bool always_polished_ends,
- unsigned int display_flag);
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ const GtSeedExtendDisplayFlag *out_display_flag);
void gt_querymatchoutoptions_delete(
GtQuerymatchoutoptions *querymatchoutoptions);
-bool gt_querymatchoutoptions_alignment_prepare(
- GtQuerymatchoutoptions
- *querymatchoutoptions,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtReadmode query_readmode,
- GtUword query_seqstartpos,
- GtUword query_totallength,
- GtUword dbstart,
- GtUword dblen,
- GtUword querystart,
- GtUword querystart_fwdstrand,
- GtUword querylen,
- GtUword edist,
- GtUword seedpos1,
- GtUword seedpos2,
- GtUword seedlen,
- GT_UNUSED bool greedyextension);
+void gt_frontprune2eoplist(GtQuerymatchoutoptions *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart,
+ GtUword dblen,
+ const GtSeqorEncseq *queryes,
+ GtReadmode query_readmode,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword querystart,
+ GtUword querylen,
+ bool verify_alignment);
+
+void gt_querymatchoutoptions_cigar_show(const GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ bool distinguish_mismatch_match,
+ FILE *fp);
+
+void gt_querymatchoutoptions_trace_show(const GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ bool dtrace,
+ FILE *fp);
void gt_querymatchoutoptions_alignment_show(const GtQuerymatchoutoptions
*querymatchoutoptions,
+ GtUword subject_seqlength,
+ GtUword query_reference,
+ GtUword one_off,
GtUword distance,
+ bool distinguish_mismatch_match,
bool verify_alignment,
+ bool subject_first,
+ bool alignment_show_forward,
+ bool show_complement_characters,
FILE *fp);
typedef struct
{
- GtUword uoffset, voffset, ulen, vlen, sumdist;
+ GtUword uoffset, voffset, ulen, vlen, sumdist, sum_max_mismatches;
} GtSeqpaircoordinates;
const GtSeqpaircoordinates *gt_querymatchoutoptions_correction_get(
const GtQuerymatchoutoptions *querymatchoutoptions);
-const GtAlignment *gt_querymatchoutoptions_alignment_get(
- const GtQuerymatchoutoptions *querymatchoutoptions);
+void gt_querymatch_column_header_output(const GtSeedExtendDisplayFlag
+ *out_display_flag,FILE *stream);
+
+void gt_querymatchoutoptions_extract_seq(GtQuerymatchoutoptions
+ *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart_relative,
+ GtUword dbstart,
+ GtUword dblen,
+ GtReadmode query_readmode,
+ const GtSeqorEncseq *queryes,
+ GtUword querystart,
+ GtUword abs_querystart_fwdstrand,
+ GtUword querylen,
+ bool withcorrection);
+
+void gt_querymatchoutoptions_seededmatch2eoplist(
+ GtQuerymatchoutoptions *querymatchoutoptions,
+ const GtSeqorEncseq *dbes,
+ GtUword dbstart_relative,
+ GtUword db_seqstart,
+ GtUword dblen,
+ GtReadmode query_readmode,
+ const GtSeqorEncseq *queryes,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword querystart,
+ GtUword querylen,
+ GtUword db_seedpos,
+ GtUword query_seedpos,
+ GtUword seedlen,
+ bool verify_alignment,
+ bool greedyextension);
+
+GtEoplist *gt_querymatchoutoptions_eoplist(const GtQuerymatchoutoptions
+ *querymatchoutoptions);
#endif
diff --git a/src/match/querymatch-display.c b/src/match/querymatch-display.c
new file mode 100644
index 0000000..edb1d6e
--- /dev/null
+++ b/src/match/querymatch-display.c
@@ -0,0 +1,636 @@
+/*
+ Copyright (c) 2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2017 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+#include <stdbool.h>
+#include <string.h>
+#include <ctype.h>
+#include <inttypes.h>
+#include "core/ma_api.h"
+#include "core/assert_api.h"
+#include "match/querymatch-display.h"
+
+typedef struct
+{
+ const char *name;
+ GtSeedExtendDisplay_enum flag;
+ bool incolumn;
+} GtSEdisplayStruct;
+
+struct GtSeedExtendDisplayFlag
+{
+ uint64_t flags;
+ unsigned int order[GT_DISPLAY_LARGEST_FLAG+1];
+ GtUword alignmentwidth, trace_delta, nextfree;
+};
+
+static uint64_t gt_display_mask(GtSeedExtendDisplay_enum flag)
+{
+ gt_assert(flag <= GT_DISPLAY_LARGEST_FLAG);
+ return ((uint64_t) 1) << flag;
+}
+
+static bool gt_querymatch_display_on(const GtSeedExtendDisplayFlag
+ *display_flag,
+ GtSeedExtendDisplay_enum display)
+{
+ return (display_flag != NULL &&
+ (display_flag->flags & gt_display_mask(display))) ? true : false;
+}
+
+#include "match/se-display.inc"
+
+bool gt_querymatch_has_seed(const GtSeedExtendDisplayFlag *display_flag)
+{
+ return gt_querymatch_seed_s_display(display_flag) &&
+ gt_querymatch_seed_q_display(display_flag) &&
+ gt_querymatch_seed_len_display(display_flag);
+}
+
+static int strcmp_ignore_ws(const char *s,const char *t)
+{
+ const char *sptr = s, *tptr = t;
+ while (true)
+ {
+ if (isspace(*sptr))
+ {
+ sptr++;
+ } else
+ {
+ if (isspace(*tptr))
+ {
+ tptr++;
+ } else
+ {
+ if (*sptr < *tptr)
+ {
+ return -1;
+ }
+ if (*sptr > *tptr)
+ {
+ return 1;
+ }
+ if (*sptr == '\0')
+ {
+ return 0;
+ }
+ sptr++;
+ tptr++;
+ }
+ }
+ }
+}
+
+static const GtSEdisplayStruct *gt_display_arg_get(char *copyspace,
+ const char *str,
+ size_t cmplen)
+{
+ char *copy = NULL;
+ const GtSEdisplayStruct *left = gt_display_arguments_table,
+ *right = gt_display_arguments_table +
+ sizeof gt_display_arguments_table/
+ sizeof gt_display_arguments_table[0] - 1;
+
+ if (cmplen > 0)
+ {
+ copy = copyspace;
+ memcpy(copy,str,sizeof *copy * cmplen);
+ copy[cmplen] = '\0';
+ }
+ while (left <= right)
+ {
+ const GtSEdisplayStruct *mid = left + (right - left + 1)/2;
+ const int cmp = strcmp_ignore_ws(copy == NULL ? str : copy,mid->name);
+
+ if (cmp < 0)
+ {
+ right = mid - 1;
+ } else
+ {
+ if (cmp > 0)
+ {
+ left = mid + 1;
+ } else
+ {
+ return mid;
+ }
+ }
+ }
+ return NULL;
+}
+
+const unsigned int *gt_querymatch_display_order(GtUword *numcolumns,
+ const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ gt_assert(display_flag != NULL);
+ *numcolumns = display_flag->nextfree;
+ return &display_flag->order[0];
+}
+
+static void gt_querymatch_display_flag_add(GtSeedExtendDisplayFlag
+ *display_flag,
+ GtSeedExtendDisplay_enum flag)
+{
+ const uint64_t mask = gt_display_mask(flag);
+
+ gt_assert(display_flag != NULL);
+ if ((display_flag->flags & mask) == 0)
+ {
+ display_flag->flags |= mask;
+ gt_assert(flag <= GT_DISPLAY_LARGEST_FLAG);
+ if (gt_display_arguments_table[gt_display_flag2index[flag]].incolumn)
+ {
+ gt_assert(display_flag->nextfree <= GT_DISPLAY_LARGEST_FLAG);
+ display_flag->order[display_flag->nextfree++] = flag;
+ }
+ }
+}
+
+GtUword gt_querymatch_display_alignmentwidth(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return (display_flag == NULL) ? 0 : display_flag->alignmentwidth;
+}
+
+GtUword gt_querymatch_trace_delta_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return (display_flag == NULL) ? 0 : display_flag->trace_delta;
+}
+
+bool gt_querymatch_alignment_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return (display_flag != NULL &&
+ display_flag->alignmentwidth > 0) ? true : false;
+}
+
+#define GT_SE_ASSERT_DISPLAY_ID(PTR,ID)\
+ if ((PTR) == NULL)\
+ {\
+ fprintf(stderr,"%s, %d: illegal identifier %s\n",\
+ __FILE__,__LINE__,ID);\
+ exit(GT_EXIT_PROGRAMMING_ERROR);\
+ }
+
+static int gt_querymatch_display_flag_set(char *copyspace,
+ GtWord *parameter,
+ GtSeedExtendDisplayFlag *display_flag,
+ const char *arg,
+ GtError *err)
+{
+ const char *exclude_list[] = {"alignment","cigar",
+ "alignment","cigarX",
+ "cigar","cigarX",
+ "blast","custom",
+ "trace","alignment",
+ "trace","cigar",
+ "trace","cigarX",
+ "dtrace","alignment",
+ "dtrace","cigar",
+ "dtrace","cigarX",
+ "dtrace","trace",
+ "gfa2","blast",
+ "gfa2","alignment",
+ "gfa2","custom",
+ "gfa2","failed_seed",
+ "gfa2","seed_in_algn"};
+ size_t ex_idx, numexcl = sizeof exclude_list/sizeof exclude_list[0];
+ const GtSEdisplayStruct *dstruct;
+ const char *ptr;
+ size_t cmplen = 0;
+
+ gt_assert(display_flag != NULL && numexcl % 2 == 0);
+ ptr = strchr(arg,'=');
+ if (ptr != NULL)
+ {
+ cmplen = (size_t) (ptr - arg);
+ if (sscanf(ptr+1,GT_WD,parameter) != 1)
+ {
+ gt_error_set(err,"illegal argument \"%s\" to option -outfmt: "
+ "expect integer following symbol =",arg);
+ return -1;
+ }
+ }
+ dstruct = gt_display_arg_get(copyspace,arg,cmplen);
+ if (dstruct == NULL)
+ {
+ gt_error_set(err,"illegal identifier \"%s\" as argument of options "
+ "-outfmt, possible identifiers are: %s",arg,
+ GT_SE_POSSIBLE_DISPLAY_ARGS);
+ return -1;
+ }
+ gt_querymatch_display_flag_add(display_flag,dstruct->flag);
+ if (dstruct->flag == Gt_Seed_display)
+ {
+ gt_querymatch_display_flag_add(display_flag,Gt_Seed_len_display);
+ gt_querymatch_display_flag_add(display_flag,Gt_Seed_s_display);
+ gt_querymatch_display_flag_add(display_flag,Gt_Seed_q_display);
+ }
+ for (ex_idx = 0; ex_idx < numexcl; ex_idx+=2)
+ {
+ const GtSEdisplayStruct
+ *dstruct0 = gt_display_arg_get(NULL,exclude_list[ex_idx],0),
+ *dstruct1 = gt_display_arg_get(NULL,exclude_list[ex_idx+1],0);
+
+ GT_SE_ASSERT_DISPLAY_ID(dstruct0,exclude_list[ex_idx]);
+ GT_SE_ASSERT_DISPLAY_ID(dstruct1,exclude_list[ex_idx+1]);
+ if ((display_flag->flags & gt_display_mask(dstruct0->flag)) &&
+ (display_flag->flags & gt_display_mask(dstruct1->flag)))
+ {
+ gt_error_set(err,"argument \"%s\" and \"%s\" of option -outfmt exclude "
+ "each other",exclude_list[ex_idx],
+ exclude_list[ex_idx+1]);
+ return -1;
+ }
+ }
+ return cmplen > 0 ? 1 : 0;
+}
+
+void gt_querymatch_display_flag_delete(GtSeedExtendDisplayFlag *display_flag)
+{
+ if (display_flag != NULL)
+ {
+ gt_free(display_flag);
+ }
+}
+
+static void gt_querymatch_display_multi_flag_add(
+ GtSeedExtendDisplayFlag *display_flag,
+ const GtSeedExtendDisplay_enum *flag_enum,
+ size_t numflags)
+{
+ size_t fidx;
+
+ for (fidx = 0; fidx < numflags; fidx++)
+ {
+ gt_querymatch_display_flag_add(display_flag,flag_enum[fidx]);
+ }
+}
+
+static bool gt_querymatch_display_args_contain(const GtStrArray *display_args,
+ const char *keyword)
+{
+ GtUword idx;
+
+ for (idx = 0; idx < gt_str_array_size(display_args); idx++)
+ {
+ if (strcmp_ignore_ws(gt_str_array_get(display_args,idx),keyword) == 0)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+static int gt_querymatch_options_order_check(
+ const GtSeedExtendDisplayFlag *display_flag,
+ size_t num_gfa2_default_flags,
+ GtError *err)
+{
+ GtUword idx, num_columns;
+ bool trace_or_cigar_found = false;
+ const unsigned int *order = gt_querymatch_display_order(&num_columns,
+ display_flag);
+
+ if (!gt_querymatch_trace_display(display_flag) &&
+ !gt_querymatch_cigar_display(display_flag))
+ {
+ gt_error_set(err,"for gfa2 output specify either trace or cigar as "
+ "argument of option -outfmt");
+ return -1;
+ }
+ gt_assert((GtUword) num_gfa2_default_flags < num_columns);
+ for (idx = num_gfa2_default_flags; idx < num_columns; idx++)
+ {
+ if (order[idx] == Gt_Trace_display || order[idx] == Gt_Cigar_display)
+ {
+ trace_or_cigar_found = true;
+ } else
+ {
+ if (!trace_or_cigar_found)
+ {
+ const unsigned int display_arg_num = gt_display_flag2index[order[idx]];
+
+ gt_error_set(err,"for gfa2 output in the list of argument to option "
+ "-outfmt the keyword \"%s\" must come after trace "
+ "or cigar",
+ gt_display_arguments_table[display_arg_num].name);
+ return -1;
+ }
+ }
+ }
+ return 0;
+}
+
+GtSeedExtendDisplayFlag *gt_querymatch_display_flag_new(
+ const GtStrArray *display_args,
+ GtSeedExtendDisplaySetMode setmode,
+ GtError *err)
+{
+ GtSeedExtendDisplayFlag *display_flag = gt_malloc(sizeof *display_flag);
+ char copyspace[GT_MAX_DISPLAY_FLAG_LENGTH+1];
+ bool haserr = false;
+ size_t num_gfa2_default_flags = 0;
+ GtUword da_idx;
+ const uint64_t trace_mask = gt_display_mask(Gt_Trace_display) |
+ gt_display_mask(Gt_Dtrace_display);
+ /* required implications:
+ mandatory: S_seqnum, Q_seqnum, S_start, Q_start
+ either editdist or score
+ either S_len or S_end must be set
+ either Q_len or Q_end must be set
+ if Strand is not set, then order of Q_start and Q_end gives strand
+ */
+ display_flag->alignmentwidth = 0;
+ display_flag->trace_delta = 0;
+ display_flag->nextfree = 0;
+ display_flag->flags = 0;
+ if (setmode != GT_SEED_EXTEND_DISPLAY_SET_NO)
+ {
+ if (gt_querymatch_display_args_contain(display_args,"blast"))
+ {
+ GtSeedExtendDisplay_enum blast_flags[] =
+ {
+ Gt_Queryid_display,
+ Gt_Subjectid_display,
+ Gt_Identity_display,
+ Gt_Alignmentlength_display,
+ Gt_Mismatches_display,
+ Gt_Gapopens_display,
+ Gt_Q_start_display,
+ Gt_Q_end_display,
+ Gt_S_start_display,
+ Gt_S_end_display,
+ Gt_Evalue_display,
+ Gt_Bitscore_display
+ };
+ gt_querymatch_display_multi_flag_add(display_flag,blast_flags,
+ sizeof blast_flags/
+ sizeof blast_flags[0]);
+ } else
+ {
+ if (gt_querymatch_display_args_contain(display_args,"gfa2"))
+ {
+ GtSeedExtendDisplay_enum gfa2_flags[] =
+ {
+ Gt_S_seqnum_display,
+ Gt_Q_seqnum_display,
+ Gt_S_start_display,
+ Gt_S_end_display,
+ Gt_Q_start_display,
+ Gt_Q_end_display
+ };
+ gt_querymatch_display_multi_flag_add(display_flag,gfa2_flags,
+ sizeof gfa2_flags/
+ sizeof gfa2_flags[0]);
+ num_gfa2_default_flags = sizeof gfa2_flags/sizeof gfa2_flags[0];
+ } else
+ {
+ if (!gt_querymatch_display_args_contain(display_args,"custom"))
+ {
+ if (setmode == GT_SEED_EXTEND_DISPLAY_SET_STANDARD)
+ {
+ GtSeedExtendDisplay_enum standard_flags[] =
+ {
+ Gt_S_len_display,
+ Gt_S_seqnum_display,
+ Gt_S_start_display,
+ Gt_Strand_display,
+ Gt_Q_len_display,
+ Gt_Q_seqnum_display,
+ Gt_Q_start_display,
+ Gt_Score_display,
+ Gt_Editdist_display,
+ Gt_Identity_display
+ };
+ gt_querymatch_display_multi_flag_add(display_flag,standard_flags,
+ sizeof standard_flags/
+ sizeof standard_flags[0]);
+ } else
+ {
+
+ gt_assert(setmode == GT_SEED_EXTEND_DISPLAY_SET_EXACT);
+ GtSeedExtendDisplay_enum exact_flags[] =
+ {
+ Gt_S_len_display,
+ Gt_S_seqnum_display,
+ Gt_S_start_display,
+ Gt_Strand_display,
+ Gt_Q_len_display,
+ Gt_Q_seqnum_display,
+ Gt_Q_start_display
+ };
+ gt_querymatch_display_multi_flag_add(display_flag,exact_flags,
+ sizeof exact_flags/
+ sizeof exact_flags[0]);
+ }
+ }
+ }
+ }
+ }
+ for (da_idx = 0; da_idx < gt_str_array_size(display_args); da_idx++)
+ {
+ const char *da = gt_str_array_get(display_args,da_idx);
+ GtWord parameter;
+ int ret = gt_querymatch_display_flag_set(copyspace,¶meter,
+ display_flag,da,err);
+
+ if (ret == -1)
+ {
+ haserr = true;
+ break;
+ }
+ if (ret == 1)
+ {
+ /* the only flag with a parameter is Gt_Alignment_display */
+ if (parameter < 0)
+ {
+ const char *key;
+
+ if (display_flag->flags & gt_display_mask(Gt_Alignment_display))
+ {
+ key = "alignment";
+ } else
+ {
+ if (display_flag->flags & gt_display_mask(Gt_Trace_display))
+ {
+ key = "trace";
+ } else
+ {
+ gt_assert(display_flag->flags & gt_display_mask(Gt_Dtrace_display));
+ key = "dtrace";
+ }
+ }
+ gt_error_set(err,"integer following \"%s=\" must be positive",key);
+ haserr = true;
+ break;
+ }
+ if (display_flag->flags & gt_display_mask(Gt_Alignment_display))
+ {
+ display_flag->alignmentwidth = (GtUword) parameter;
+ } else
+ {
+ gt_assert (display_flag->flags & trace_mask);
+ display_flag->trace_delta = (GtUword) parameter;
+ }
+ }
+ }
+ if (!haserr)
+ {
+ if ((display_flag->flags & gt_display_mask(Gt_Alignment_display)) &&
+ display_flag->alignmentwidth == 0)
+ {
+ display_flag->alignmentwidth = GT_SEED_EXTEND_DEFAULT_ALIGNMENT_WIDTH;
+ }
+ if ((display_flag->flags & trace_mask) && display_flag->trace_delta == 0)
+ {
+ display_flag->trace_delta = GT_SEED_EXTEND_DEFAULT_TRACE_DELTA;
+ }
+ }
+ if (!haserr && num_gfa2_default_flags > 0)
+ {
+ if (gt_querymatch_options_order_check(display_flag,
+ num_gfa2_default_flags,err) != 0)
+ {
+ haserr = true;
+ }
+ }
+ if (haserr)
+ {
+ gt_querymatch_display_flag_delete(display_flag);
+ return NULL;
+ }
+ return display_flag;
+}
+
+void gt_querymatch_Options_output(FILE *stream,int argc,const char **argv,
+ bool idhistout,GtUword minidentity,
+ GtUword historysize)
+{
+ int idx;
+ bool minid_out = false, history_out = false;
+
+ fprintf(stream,"# Options:");
+ for (idx = 1; idx < argc; idx++) {
+ if (strcmp(argv[idx],"-minidentity") == 0) {
+ minid_out = true;
+ }
+ if (strcmp(argv[idx],"-history") == 0) {
+ history_out = true;
+ }
+ fprintf(stream," %s", argv[idx]);
+ }
+ if (idhistout)
+ {
+ if (!minid_out)
+ {
+ fprintf(stream," -minidentity " GT_WU,minidentity);
+ }
+ if (!history_out)
+ {
+ fprintf(stream," -history " GT_WU,historysize);
+ }
+ }
+ fputc('\n',stream);
+}
+
+static void gt_querymatch_display_keyword_out(FILE *stream,const char *s)
+{
+ const char *sptr;
+
+ for (sptr = s; *sptr != '\0'; sptr++)
+ {
+ if (*sptr == '.')
+ {
+ fprintf(stream,". ");
+ } else
+ {
+ fputc(*sptr,stream);
+ }
+ }
+}
+
+void gt_querymatch_Fields_output(FILE *stream,
+ const GtSeedExtendDisplayFlag *display_flag)
+{
+ const unsigned int *column_order;
+ GtUword numcolumns, idx;
+
+ gt_assert(display_flag != NULL);
+ column_order = gt_querymatch_display_order(&numcolumns,display_flag);
+ gt_assert(numcolumns > 0);
+ fprintf(stream,"# Fields: ");
+ gt_assert(numcolumns <= GT_DISPLAY_LARGEST_FLAG);
+ for (idx = 0; idx < numcolumns; idx++)
+ {
+ unsigned int argnum, flag = column_order[idx];
+ gt_assert(flag < sizeof gt_display_flag2index/
+ sizeof gt_display_flag2index[0]);
+ argnum = gt_display_flag2index[flag];
+ gt_assert(argnum < sizeof gt_display_arguments_table/
+ sizeof gt_display_arguments_table[0]);
+ if (flag == Gt_Identity_display)
+ {
+ fprintf(stream,"%% %s",gt_display_arguments_table[argnum].name);
+ } else
+ {
+ gt_querymatch_display_keyword_out(stream,
+ gt_display_arguments_table[argnum].
+ name);
+ }
+ fprintf(stream,"%s",idx < numcolumns - 1 ? ", " : "\n");
+ }
+}
+
+const char *gt_querymatch_flag2name(GtSeedExtendDisplay_enum flag)
+{
+ gt_assert(flag <= GT_DISPLAY_LARGEST_FLAG);
+ return gt_display_arguments_table[gt_display_flag2index[flag]].name;
+}
+
+GtStrArray *gt_querymatch_read_Fields_line(const char *line_ptr)
+{
+ const char *header = "# Fields:", *ptr, *last_start;
+ const size_t header_len = strlen(header);
+ GtStrArray *fields;
+
+ if (strncmp(header,line_ptr,header_len) != 0)
+ {
+ return NULL;
+ }
+ fields = gt_str_array_new();
+ for (last_start = ptr = line_ptr + header_len + 1; /* Nothing */; ptr++)
+ {
+ if (*ptr == ',' || *ptr == '\0')
+ {
+ GtUword len_arg;
+
+ if (*last_start == '%')
+ {
+ last_start += 2;
+ }
+ len_arg = (size_t) (ptr - last_start);
+ gt_str_array_add_cstr_nt(fields, last_start, len_arg);
+ last_start = ptr + 2;
+ }
+ if (*ptr == '\0')
+ {
+ break;
+ }
+ }
+ return fields;
+}
diff --git a/src/match/querymatch-display.h b/src/match/querymatch-display.h
new file mode 100644
index 0000000..fccc434
--- /dev/null
+++ b/src/match/querymatch-display.h
@@ -0,0 +1,67 @@
+/*
+ Copyright (c) 2007-2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2007-2017 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef QUERYMATCH_DISPLAY_H
+#define QUERYMATCH_DISPLAY_H
+#include <stdbool.h>
+#include "core/str_array_api.h"
+#include "core/error_api.h"
+
+typedef struct GtSeedExtendDisplayFlag GtSeedExtendDisplayFlag;
+
+typedef enum
+{
+ GT_SEED_EXTEND_DISPLAY_SET_NO,
+ GT_SEED_EXTEND_DISPLAY_SET_STANDARD,
+ GT_SEED_EXTEND_DISPLAY_SET_EXACT
+} GtSeedExtendDisplaySetMode;
+
+GtSeedExtendDisplayFlag *gt_querymatch_display_flag_new(
+ const GtStrArray *display_args,
+ GtSeedExtendDisplaySetMode setmode,
+ GtError *err);
+
+void gt_querymatch_display_flag_delete(GtSeedExtendDisplayFlag *display_flag);
+
+void gt_querymatch_Fields_output(FILE *stream,
+ const GtSeedExtendDisplayFlag *display_flag);
+
+void gt_querymatch_Options_output(FILE *stream,int argc,const char **argv,
+ bool idhistout,GtUword minidentity,
+ GtUword historysize);
+
+const unsigned int *gt_querymatch_display_order(GtUword *numcolumns,
+ const GtSeedExtendDisplayFlag
+ *display_flag);
+
+const char *gt_querymatch_display_help(void);
+
+bool gt_querymatch_alignment_display(const GtSeedExtendDisplayFlag *);
+
+GtUword gt_querymatch_display_alignmentwidth(const GtSeedExtendDisplayFlag *);
+
+GtUword gt_querymatch_trace_delta_display(const GtSeedExtendDisplayFlag *);
+
+#include "match/se-display-fwd.inc"
+
+const char *gt_querymatch_flag2name(GtSeedExtendDisplay_enum flag);
+
+bool gt_querymatch_has_seed(const GtSeedExtendDisplayFlag *display_flag);
+
+GtStrArray *gt_querymatch_read_Fields_line(const char *line_ptr);
+
+#endif
diff --git a/src/match/querymatch.c b/src/match/querymatch.c
index 9998ddb..5870e59 100644
--- a/src/match/querymatch.c
+++ b/src/match/querymatch.c
@@ -1,6 +1,6 @@
/*
- Copyright (c) 2007-2015 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
- Copyright (c) 2007-2015 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2007-2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2007-2017 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -15,41 +15,47 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <ctype.h>
+#include <float.h>
#include "core/ma_api.h"
#include "core/types_api.h"
#include "core/readmode.h"
#include "core/format64.h"
#include "querymatch.h"
#include "querymatch-align.h"
-
-#define GT_QUERYMATCH_SEED_DISPLAY_FLAG 1U /* display seeds */
-#define GT_QUERYMATCH_SEQLENGTH_DISPLAY_FLAG (1U << 1) /* display seed length */
+#include "karlin_altschul_stat.h"
+#include "ft-eoplist.h"
+#include "revcompl.h"
struct GtQuerymatch
{
GtUword
- dblen, /* length of match in dbsequence */
- querylen, /* same as dblen for exact matches */
- dbstart, /* absolute start position of match in database seq */
- querystart, /* start of match in query, relative to start of query */
- distance, /* 0 for exact match, upper bound on optimal distance */
- dbseqnum, /* sequence number of dbstart */
+ dbseqnum, /* sequence number database sequence */
dbstart_relative, /* start position of match in dbsequence
relative to start of sequence */
+ dblen, /* length of match in dbsequence */
+ db_seqlen, /* length of single database sequence */
+ db_seqstart, /* start of database sequence */
+ queryseqnum, /* ordinal number of match in query */
+ querystart, /* start of match in query, relative to start of query */
querystart_fwdstrand, /* relative start of query on forward strand */
- query_totallength, /* length of single query sequence */
- dbseqlen, /* length of single database sequence */
- seedpos1,
- seedpos2,
- seedlen;
+ querylen, /* length of match on query */
+ query_seqlen, /* length of single query sequence */
+ query_seqstart, /* start of query sequence,
+ 0 if sequence is byte sequence */
+ db_seedpos_rel, /* relative position of seed on db */
+ query_seedpos_rel, /* relative position of seed on query */
+ seedlen,
+ distance, /* 0 for exact match, upper bound on optimal distance */
+ mismatches;
GtWord score; /* 0 for exact match */
- uint64_t queryseqnum; /* ordinal number of match in query */
GtReadmode query_readmode; /* readmode of query sequence */
bool selfmatch, verify_alignment;
- unsigned int display_flag;
GtQuerymatchoutoptions *ref_querymatchoutoptions; /* reference to
resources needed for alignment output */
FILE *fp;
+ const char *db_desc, *query_desc;
+ GtEoplist *ref_eoplist;
};
GtQuerymatch *gt_querymatch_new(void)
@@ -58,10 +64,12 @@ GtQuerymatch *gt_querymatch_new(void)
gt_assert(querymatch != NULL);
querymatch->ref_querymatchoutoptions = NULL;
- querymatch->display_flag = 0;
querymatch->verify_alignment = false;
querymatch->query_readmode = GT_READMODE_FORWARD;
querymatch->fp = stdout;
+ querymatch->queryseqnum = GT_UWORD_MAX;
+ querymatch->db_desc = NULL;
+ querymatch->query_desc = NULL;
return querymatch;
}
@@ -77,8 +85,10 @@ void gt_querymatch_table_add(GtArrayGtQuerymatch *querymatch_table,
void gt_querymatch_outoptions_set(GtQuerymatch *querymatch,
GtQuerymatchoutoptions *querymatchoutoptions)
{
- gt_assert(querymatch != NULL);
+ gt_assert(querymatch != NULL && querymatchoutoptions != NULL);
querymatch->ref_querymatchoutoptions = querymatchoutoptions;
+ querymatch->ref_eoplist
+ = gt_querymatchoutoptions_eoplist(querymatchoutoptions);
}
void gt_querymatch_file_set(GtQuerymatch *querymatch, FILE *fp)
@@ -87,58 +97,217 @@ void gt_querymatch_file_set(GtQuerymatch *querymatch, FILE *fp)
querymatch->fp = fp;
}
-void gt_querymatch_display_set(GtQuerymatch *querymatch,
- unsigned int display_flag)
+GtUword gt_querymatch_querylen(const GtQuerymatch *querymatch)
{
- gt_assert(querymatch != NULL);
- querymatch->display_flag = display_flag;
+ return querymatch->querylen;
}
-unsigned int gt_querymatch_bool2display_flag(bool seed_display,
- bool seqlength_display)
+GtUword gt_querymatch_dbstart(const GtQuerymatch *querymatch)
{
- return (unsigned int)
- (seed_display ? GT_QUERYMATCH_SEED_DISPLAY_FLAG : 0) |
- (seqlength_display ? GT_QUERYMATCH_SEQLENGTH_DISPLAY_FLAG : 0);
+ return querymatch->db_seqstart + querymatch->dbstart_relative;
}
-bool gt_querymatch_seed_display(unsigned int display_flag)
+GtUword gt_querymatch_dbstart_relative(const GtQuerymatch *querymatch)
{
- return (display_flag & GT_QUERYMATCH_SEED_DISPLAY_FLAG) ? true : false;
+ return querymatch->dbstart_relative;
}
-GtUword gt_querymatch_dbseqnum(const GtQuerymatch *querymatch)
+static GtUword gt_querymatch_dbend_relative(const GtQuerymatch *querymatch)
{
- gt_assert(querymatch != NULL);
- return querymatch->dbseqnum;
+ return querymatch->dbstart_relative + querymatch->dblen - 1;
+}
+
+GtUword gt_querymatch_dblen(const GtQuerymatch *querymatch)
+{
+ return querymatch->dblen;
+}
+
+GtUword gt_querymatch_querystart(const GtQuerymatch *querymatch)
+{
+ return querymatch->querystart;
}
-static GtUword gt_querymatch_querystart_derive(GtReadmode query_readmode,
- GtUword querylen,
- GtUword query_totallength,
- GtUword querystart)
+static GtUword gt_querymatch_queryend_relative(const GtQuerymatch *querymatch)
+{
+ return querymatch->querystart + querymatch->querylen - 1;
+}
+
+static GtUword gt_querymatch_aligned_len(const GtQuerymatch *querymatch)
+{
+ return gt_querymatch_dblen(querymatch) + gt_querymatch_querylen(querymatch);
+}
+
+void gt_querymatch_db_coordinates(GtUword *db_seqnum,GtUword *db_seqstart,
+ GtUword *db_seqlen,
+ const GtQuerymatch *querymatch)
+{
+ *db_seqnum = querymatch->dbseqnum;
+ *db_seqstart = querymatch->db_seqstart;
+ *db_seqlen = querymatch->db_seqlen;
+}
+
+void gt_querymatch_query_coordinates(GtUword *query_seqnum,
+ GtUword *query_seqstart,
+ GtUword *query_seqlen,
+ const GtQuerymatch *querymatch)
+{
+ *query_seqnum = querymatch->queryseqnum;
+ *query_seqstart = querymatch->query_seqstart;
+ *query_seqlen = querymatch->query_seqlen;
+}
+
+void gt_querymatch_query_readmode_set(GtQuerymatch *querymatch,
+ GtReadmode query_readmode)
+{
+ querymatch->query_readmode = query_readmode;
+}
+
+void gt_querymatch_verify_alignment_set(GtQuerymatch *querymatch)
+{
+ querymatch->verify_alignment = true;
+}
+
+GtReadmode gt_querymatch_query_readmode(const GtQuerymatch *querymatch)
+{
+ return querymatch->query_readmode;
+}
+
+GtUword gt_querymatch_distance(const GtQuerymatch *querymatch)
+{
+ return querymatch->distance;
+}
+
+GtWord gt_querymatch_distance2score(GtUword distance,GtUword alignedlen)
+{
+ return ((GtWord) alignedlen) - (GtWord) (3 * distance);
+}
+
+double gt_querymatch_error_rate(GtUword distance,GtUword alignedlen)
+{
+ return 200.0 * (double) distance/alignedlen;
+}
+
+static GtUword gt_querymatch_position_convert(GtReadmode query_readmode,
+ GtUword matchlen,
+ GtUword seqlen,
+ GtUword position)
{
if (GT_ISDIRREVERSE(query_readmode))
{
- gt_assert(querystart + querylen <= query_totallength);
- return query_totallength - querystart - querylen;
+ gt_assert(position + matchlen <= seqlen);
+ return seqlen - position - matchlen;
+ }
+ return position;
+}
+
+static GtUword gt_querymatch_matches_generic(GtUword aligned_len,
+ GtUword distance,
+ GtUword mismatches)
+{
+ gt_assert(aligned_len >= distance + mismatches);
+ return (aligned_len - distance - mismatches)/2;
+}
+
+static GtUword gt_querymatch_matches(const GtQuerymatch *querymatch)
+{
+ const GtUword aligned_len = gt_querymatch_aligned_len(querymatch);
+ return gt_querymatch_matches_generic(aligned_len,
+ querymatch->distance,
+ querymatch->mismatches);
+}
+
+static GtUword gt_querymatch_indels_generic(GtUword distance,GtUword mismatches)
+{
+ gt_assert(distance >= mismatches);
+ return distance - mismatches;
+}
+
+static GtUword gt_querymatch_indels(const GtQuerymatch *querymatch)
+{
+ return gt_querymatch_indels_generic(querymatch->distance,
+ querymatch->mismatches);
+}
+
+/*
+ alignment_length = mismatches +
+ indels +
+ matches
+ = mismatches +
+ distance - mimmatches +
+ (aligned_len - distance - mismatches)/2
+ = distance +
+ (aligned_len - distance - mismatches)/2
+ = (2 * distance + aligned_len - distance - mismatches)/2
+ = (distance + aligned_len - mismatches)/2
+ = (aligned_len - indels)/2
+*/
+
+static GtUword gt_querymatch_alignment_length(const GtQuerymatch *querymatch)
+{
+ return (gt_querymatch_aligned_len(querymatch) -
+ gt_querymatch_indels(querymatch))/2;
+}
+
+static void gt_querymatch_evalue_bit_score_generic(double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ GtUword query_seqlen,
+ GtUword matches,
+ GtUword mismatches,
+ GtUword indels)
+{
+ if (karlin_altschul_stat != NULL)
+ {
+ GtUword evalue_searchspace
+ = gt_evalue_searchspace(karlin_altschul_stat,query_seqlen);
+ GtWord raw_score = gt_evalue_raw_score(karlin_altschul_stat,
+ matches,
+ mismatches,
+ indels);
+ *evalue_ptr = gt_evalue_from_raw_score(karlin_altschul_stat,
+ raw_score,
+ evalue_searchspace);
+ *bit_score_ptr = gt_evalue_raw_score2bit_score(karlin_altschul_stat,
+ raw_score);
+ gt_assert(*evalue_ptr != DBL_MAX && *bit_score_ptr != DBL_MAX);
}
- return querystart;
+}
+
+static void gt_querymatch_evalue_bit_score(double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ const GtQuerymatch *querymatch)
+{
+ return gt_querymatch_evalue_bit_score_generic(evalue_ptr,
+ bit_score_ptr,
+ karlin_altschul_stat,
+ querymatch->query_seqlen,
+ gt_querymatch_matches(
+ querymatch),
+ querymatch->mismatches,
+ gt_querymatch_indels(
+ querymatch));
}
void gt_querymatch_init(GtQuerymatch *querymatch,
GtUword dblen,
- GtUword dbstart,
GtUword dbseqnum,
GtUword dbstart_relative,
- GtUword dbseqlen,
+ GtUword db_seqstart,
+ GtUword db_seqlen,
GtWord score,
GtUword distance,
+ GtUword mismatches,
bool selfmatch,
- uint64_t queryseqnum,
+ GtUword queryseqnum,
GtUword querylen,
GtUword querystart,
- GtUword query_totallength)
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ const char *db_desc,
+ const char *query_desc)
{
gt_assert(querymatch != NULL);
querymatch->dblen = dblen;
@@ -148,17 +317,21 @@ void gt_querymatch_init(GtQuerymatch *querymatch,
querymatch->querylen = querylen;
querymatch->querystart = querystart;
querymatch->dbseqnum = dbseqnum;
+ querymatch->mismatches = mismatches;
querymatch->dbstart_relative = dbstart_relative;
gt_assert((int) querymatch->query_readmode < 4);
- querymatch->dbstart = dbstart;
querymatch->selfmatch = selfmatch;
+ querymatch->query_seqlen = query_seqlen;
querymatch->querystart_fwdstrand
- = gt_querymatch_querystart_derive(querymatch->query_readmode,
- querylen,
- query_totallength,
- querymatch->querystart);
- querymatch->query_totallength = query_totallength;
- querymatch->dbseqlen = dbseqlen;
+ = gt_querymatch_position_convert(querymatch->query_readmode,
+ querymatch->querylen,
+ querymatch->query_seqlen,
+ querymatch->querystart);
+ querymatch->query_seqstart = query_seqstart;
+ querymatch->db_seqstart = db_seqstart;
+ querymatch->db_seqlen = db_seqlen;
+ querymatch->db_desc = db_desc;
+ querymatch->query_desc = query_desc;
}
void gt_querymatch_delete(GtQuerymatch *querymatch)
@@ -169,106 +342,477 @@ void gt_querymatch_delete(GtQuerymatch *querymatch)
}
}
-static bool gt_querymatch_okay(const GtQuerymatch *querymatch)
+static bool gt_querymatch_ordered(const GtQuerymatch *querymatch)
+{
+ return (!querymatch->selfmatch ||
+ querymatch->dbseqnum < querymatch->queryseqnum ||
+ (querymatch->dbseqnum == querymatch->queryseqnum &&
+ (querymatch->dbstart_relative <
+ (GT_ISDIRREVERSE(querymatch->query_readmode)
+ ? (querymatch->querystart_fwdstrand + 1)
+ : querymatch->querystart)))) ? true : false;
+}
+
+static double gt_querymatch_similarity(GtUword distance,GtUword aligned_len)
{
- if (!querymatch->selfmatch)
+ return 100.0 - gt_querymatch_error_rate(distance,aligned_len);
+}
+
+static int gt_non_white_space_prefix_length(const char *s)
+{
+ const char *sptr;
+
+ gt_assert(s != NULL);
+ for (sptr = s; !isspace(*sptr); sptr++)
{
- return true;
+ /* Nothing */ ;
}
- if (GT_ISDIRREVERSE(querymatch->query_readmode))
+ return (int) (sptr - s);
+}
+
+static const char *gt_seed_extend_outflag = "FRCP";
+
+static void gt_querymatch_description_out(FILE *fp,const char *description)
+{
+ const int nwspl = gt_non_white_space_prefix_length(description);
+
+ fwrite(description,sizeof *description,nwspl,fp);
+}
+
+static void gt_querymatch_exact_match_trace_show(FILE *fp,
+ bool dtrace,
+ GtUword remaining,
+ GtUword trace_delta)
+{
+ bool first = true;
+
+ while (true)
{
- if ((uint64_t) querymatch->dbseqnum < querymatch->queryseqnum ||
- ((uint64_t) querymatch->dbseqnum == querymatch->queryseqnum &&
- querymatch->dbstart_relative <= querymatch->querystart_fwdstrand))
+ if (!first)
+ {
+ fputc(',',fp);
+ } else
{
- return true;
+ first = false;
}
- } else
- {
- if ((uint64_t) querymatch->dbseqnum < querymatch->queryseqnum ||
- ((uint64_t) querymatch->dbseqnum == querymatch->queryseqnum &&
- querymatch->dbstart_relative < querymatch->querystart_fwdstrand))
+ if (remaining > trace_delta)
+ {
+ fprintf(fp,GT_WU,dtrace ? 0 : trace_delta);
+ remaining -= trace_delta;
+ } else
{
- return true;
+ fprintf(fp,"%d",dtrace ? ((int) trace_delta - (int) remaining)
+ : (int) remaining);
+ break;
}
}
- return false;
}
-void gt_querymatch_coordinates_out(const GtQuerymatch *querymatch)
+void gt_querymatch_gfa2_edge(const GtQuerymatch *querymatch,GtUword edgenum)
{
- const char *outflag = "FRCP";
+ fprintf(querymatch->fp,"E\t" GT_WU "\t",edgenum);
+}
- gt_assert(querymatch != NULL);
- if (querymatch->display_flag & GT_QUERYMATCH_SEED_DISPLAY_FLAG)
+void gt_querymatch_prettyprint(double evalue,double bit_score,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ const GtQuerymatch *querymatch)
+{
+ const unsigned int *column_order;
+ GtUword numcolumns, idx, one_off;
+ char separator;
+ bool gfa2_display;
+
+ gt_assert(querymatch != NULL && querymatch->fp != NULL &&
+ out_display_flag != NULL);
+ gfa2_display = gt_querymatch_gfa2_display(out_display_flag);
+ column_order = gt_querymatch_display_order(&numcolumns,out_display_flag);
+ gt_assert(numcolumns > 0);
+ one_off = gt_querymatch_blast_display(out_display_flag) ? 1 : 0;
+ separator = (gt_querymatch_blast_display(out_display_flag) ||
+ gt_querymatch_tabsep_display(out_display_flag) ||
+ gfa2_display) ? '\t' : ' ';
+ for (idx = 0; idx < numcolumns; idx++)
{
- fprintf(querymatch->fp, "# seed:\t" GT_WU "\t" GT_WU "\t" GT_WU "\n",
- querymatch->seedpos1, querymatch->seedpos2, querymatch->seedlen);
+ const unsigned int co = column_order[idx];
+ bool dtrace;
+
+ if (idx > 0 && (querymatch->score > 0 ||
+ (co != Gt_Score_display &&
+ co != Gt_Editdist_display &&
+ co != Gt_Identity_display)))
+ {
+ fputc(separator,querymatch->fp);
+ }
+ switch (co)
+ {
+ case Gt_Cigar_display:
+ case Gt_Cigarx_display:
+ if (querymatch->distance > 0)
+ {
+ gt_querymatchoutoptions_cigar_show(
+ querymatch->ref_querymatchoutoptions,
+ co == Gt_Cigar_display ? false : true,
+ querymatch->fp);
+ } else
+ {
+ fprintf(querymatch->fp,GT_WU "%c",gt_querymatch_dblen(querymatch),
+ co == Gt_Cigar_display ? 'M' : '=');
+ }
+ break;
+ case Gt_Trace_display:
+ case Gt_Dtrace_display:
+ dtrace = co == Gt_Dtrace_display ? true : false;
+ if (querymatch->distance > 0)
+ {
+ gt_querymatchoutoptions_trace_show(
+ querymatch->ref_querymatchoutoptions,
+ dtrace,
+ querymatch->fp);
+ } else
+ {
+ gt_querymatch_exact_match_trace_show(querymatch->fp,
+ dtrace,
+ gt_querymatch_dblen(querymatch),
+ gt_querymatch_trace_delta_display
+ (out_display_flag));
+ }
+ break;
+ case Gt_S_len_display:
+ fprintf(querymatch->fp,GT_WU,gt_querymatch_dblen(querymatch));
+ break;
+ case Gt_S_seqnum_display:
+ if (gfa2_display)
+ {
+ fputc('S',querymatch->fp);
+ }
+ fprintf(querymatch->fp,GT_WU,querymatch->dbseqnum);
+ if (gfa2_display)
+ {
+ fputc('+',querymatch->fp);
+ }
+ break;
+ case Gt_Subjectid_display:
+ gt_querymatch_description_out(querymatch->fp,querymatch->db_desc);
+ break;
+ case Gt_S_start_display:
+ if (!GT_ISDIRREVERSE(querymatch->query_readmode) ||
+ !gt_querymatch_blast_display(out_display_flag))
+ {
+ fprintf(querymatch->fp,GT_WU,querymatch->dbstart_relative + one_off);
+ } else
+ {
+ fprintf(querymatch->fp,GT_WU,querymatch->db_seqlen - 1 -
+ querymatch->dbstart_relative + one_off);
+ }
+ break;
+ case Gt_S_end_display:
+ if (!GT_ISDIRREVERSE(querymatch->query_readmode) ||
+ !gt_querymatch_blast_display(out_display_flag))
+ {
+ fprintf(querymatch->fp,GT_WU,
+ gt_querymatch_dbend_relative(querymatch) + one_off);
+ } else
+ {
+ gt_assert(querymatch->db_seqlen >= querymatch->dbstart_relative +
+ querymatch->dblen);
+ fprintf(querymatch->fp,GT_WU,querymatch->db_seqlen -
+ querymatch->dbstart_relative -
+ querymatch->dblen + one_off);
+ }
+ break;
+ case Gt_Strand_display:
+ fprintf(querymatch->fp,"%c",
+ gt_seed_extend_outflag[querymatch->query_readmode]);
+ break;
+ case Gt_Q_len_display:
+ fprintf(querymatch->fp,GT_WU,gt_querymatch_querylen(querymatch));
+ break;
+ case Gt_Q_seqnum_display:
+ if (gfa2_display)
+ {
+ fputc(querymatch->selfmatch ? 'S' : 'Q',querymatch->fp);
+ }
+ fprintf(querymatch->fp,GT_WU,querymatch->queryseqnum);
+ if (gfa2_display)
+ {
+ fputc(GT_ISDIRREVERSE(querymatch->query_readmode) ? '-' : '+',
+ querymatch->fp);
+ }
+ break;
+ case Gt_Queryid_display:
+ gt_querymatch_description_out(querymatch->fp,querymatch->query_desc);
+ break;
+ case Gt_Q_start_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->querystart_fwdstrand
+ + one_off);
+ break;
+ case Gt_Q_end_display:
+ if (!gt_querymatch_gfa2_display(out_display_flag) &&
+ (!GT_ISDIRREVERSE(querymatch->query_readmode) ||
+ !gt_querymatch_blast_display(out_display_flag)))
+ {
+ fprintf(querymatch->fp,GT_WU,
+ gt_querymatch_queryend_relative(querymatch) + one_off);
+ } else
+ {
+ fprintf(querymatch->fp,GT_WU,
+ querymatch->querystart_fwdstrand + querymatch->querylen - 1
+ + one_off);
+ }
+ break;
+ case Gt_Alignmentlength_display:
+ fprintf(querymatch->fp,GT_WU,
+ gt_querymatch_alignment_length(querymatch));
+ break;
+ case Gt_Mismatches_display:
+ if (gfa2_display)
+ {
+ fprintf(querymatch->fp,"MM:i:");
+ }
+ fprintf(querymatch->fp,GT_WU,querymatch->mismatches);
+ break;
+ case Gt_Indels_display:
+ case Gt_Gapopens_display:
+ if (gfa2_display)
+ {
+ fprintf(querymatch->fp,"IN:i:");
+ }
+ fprintf(querymatch->fp,GT_WU,gt_querymatch_indels(querymatch));
+ break;
+ case Gt_Score_display:
+ if (querymatch->score > 0)
+ {
+ fprintf(querymatch->fp,GT_WD,querymatch->score);
+ }
+ break;
+ case Gt_Editdist_display:
+ if (gfa2_display)
+ {
+ fprintf(querymatch->fp,"ED:i:");
+ }
+ if (querymatch->score > 0)
+ {
+ fprintf(querymatch->fp,GT_WU,querymatch->distance);
+ }
+ break;
+ case Gt_Identity_display:
+ if (querymatch->score > 0)
+ {
+ if (gfa2_display)
+ {
+ fprintf(querymatch->fp,"ID:f:");
+ }
+ fprintf(querymatch->fp,"%.2f",
+ gt_querymatch_similarity(
+ querymatch->distance,
+ gt_querymatch_aligned_len(querymatch)));
+ }
+ break;
+ case Gt_Seed_len_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->seedlen);
+ break;
+ case Gt_Seed_s_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->db_seedpos_rel + one_off);
+ break;
+ case Gt_Seed_q_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->query_seedpos_rel + one_off);
+ break;
+ case Gt_S_seqlen_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->db_seqlen);
+ break;
+ case Gt_Q_seqlen_display:
+ fprintf(querymatch->fp,GT_WU,querymatch->query_seqlen);
+ break;
+ case Gt_Evalue_display:
+ gt_assert(evalue != DBL_MAX);
+ fprintf(querymatch->fp,"%1.0e",evalue);
+ break;
+ case Gt_Bitscore_display:
+ gt_assert(bit_score != DBL_MAX);
+ fprintf(querymatch->fp,"%.1f",bit_score);
+ break;
+ default: fprintf(stderr,"function %s, file %s, line %d: "
+ "illegal column %u\n",__func__,__FILE__,
+ __LINE__,column_order[idx]);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
}
- fprintf(querymatch->fp,
- GT_WU " " GT_WU " " GT_WU " %c " GT_WU " " Formatuint64_t " " GT_WU,
- querymatch->dblen,
- querymatch->dbseqnum,
- querymatch->dbstart_relative,
- outflag[querymatch->query_readmode],
- querymatch->querylen,
- PRINTuint64_tcast(querymatch->queryseqnum),
- querymatch->querystart_fwdstrand);
- if (querymatch->score > 0)
+ fputc('\n',querymatch->fp);
+ if (gt_querymatch_alignment_display(out_display_flag))
{
- double similarity;
+ bool subject_first = true,
+ alignment_show_forward = true,
+ show_complement_characters = false,
+ distinguish_mismatch_match = true;
+ GtUword subject_seqlength = 0, query_reference = 0;
- if (querymatch->distance == 0)
+ if (gt_querymatch_blast_display(out_display_flag))
{
- similarity = 100.0;
- } else
- {
- similarity = 100.0 - gt_querymatch_error_rate(querymatch->distance,
- querymatch->dblen +
- querymatch->querylen);
+ subject_first = false;
+ if (GT_ISDIRREVERSE(querymatch->query_readmode))
+ {
+ alignment_show_forward = false;
+ if (GT_ISDIRCOMPLEMENT(querymatch->query_readmode))
+ {
+ subject_seqlength = querymatch->db_seqlen;
+ gt_assert(querymatch->query_seqlen >= querymatch->querylen);
+ query_reference = querymatch->query_seqlen - querymatch->querylen;
+ }
+ }
+ if (GT_ISDIRCOMPLEMENT(querymatch->query_readmode))
+ {
+ show_complement_characters = true;
+ }
}
- fprintf(querymatch->fp, " " GT_WD " " GT_WU " %.2f",
- querymatch->score, querymatch->distance, similarity);
+ gt_querymatchoutoptions_alignment_show(querymatch->ref_querymatchoutoptions,
+ subject_seqlength,
+ query_reference,
+ one_off,
+ querymatch->distance,
+ distinguish_mismatch_match,
+ querymatch->verify_alignment,
+ subject_first,
+ alignment_show_forward,
+ show_complement_characters,
+ querymatch->fp);
}
- if (querymatch->display_flag & GT_QUERYMATCH_SEQLENGTH_DISPLAY_FLAG)
+}
+
+void gt_querymatch_show_failed_seed(const GtSeedExtendDisplayFlag
+ *out_display_flag,
+ const GtQuerymatch *querymatch)
+{
+ if (gt_querymatch_failed_seed_display(out_display_flag))
{
- fprintf(querymatch->fp, " " GT_WU " " GT_WU,
- querymatch->dbseqlen, querymatch->query_totallength);
+ const char separator
+ = (gt_querymatch_blast_display(out_display_flag) ||
+ gt_querymatch_tabsep_display(out_display_flag)) ? '\t' : ' ';
+ fprintf(querymatch->fp, "# failed_seed:%c" GT_WU "%c" GT_WU "%c" GT_WU
+ "%c%c%c" GT_WU "%c" GT_WU "\n",
+ separator,
+ querymatch->seedlen,
+ separator,
+ querymatch->dbseqnum,
+ separator,
+ querymatch->db_seedpos_rel,
+ separator,
+ gt_seed_extend_outflag[querymatch->query_readmode],
+ separator,
+ querymatch->queryseqnum,
+ separator,
+ querymatch->query_seedpos_rel);
}
- fprintf(querymatch->fp, "\n");
}
-void gt_querymatch_prettyprint(const GtQuerymatch *querymatch)
+bool gt_querymatch_check_final_generic(
+ double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat *karlin_altschul_stat,
+ GtUword query_seqlen,
+ GtUword aligned_len,
+ GtUword distance,
+ GtUword mismatches,
+ GtUword userdefinedleastlength,
+ GtUword errorpercentage,
+ double evalue_threshold,
+ GT_UNUSED FILE *fp)
{
- if (gt_querymatch_okay(querymatch))
+#undef SKDEBUG
+#ifdef SKDEBUG
+ fprintf(fp, "# errorrate = %.2f <=? " GT_WU " = errorpercentage ",
+ gt_querymatch_error_rate(distance,aligned_len),
+ errorpercentage);
+#endif
+ if (gt_querymatch_error_rate(distance,aligned_len) > (double) errorpercentage)
{
- gt_querymatch_coordinates_out(querymatch);
- gt_querymatchoutoptions_alignment_show(querymatch->ref_querymatchoutoptions,
- querymatch->distance,
- querymatch->verify_alignment,
- querymatch->fp);
+#ifdef SKDEBUG
+ fprintf(fp, "false => reject\n");
+#endif
+ return false;
+ }
+#ifdef SKDEBUG
+ else
+ {
+ fprintf(fp, "true => accept\n");
+ }
+ fprintf(fp, "# aligned_len = " GT_WU " >=? " GT_WU
+ " = 2 * userdefinedleastlen ",
+ aligned_len, 2 * userdefinedleastlength);
+#endif
+ if (aligned_len < 2 * userdefinedleastlength)
+ {
+#ifdef SKDEBUG
+ fprintf(fp, "false => reject\n");
+#endif
+ return false;
+ }
+#ifdef SKDEBUG
+ fprintf(fp, "true => accept\n");
+#endif
+ if (karlin_altschul_stat != NULL)
+ {
+ const GtUword matches = gt_querymatch_matches_generic(aligned_len,
+ distance,
+ mismatches);
+ const GtUword indels = gt_querymatch_indels_generic(distance,mismatches);
+
+ gt_querymatch_evalue_bit_score_generic(evalue_ptr,bit_score_ptr,
+ karlin_altschul_stat,
+ query_seqlen,
+ matches,
+ mismatches,
+ indels);
+#ifdef SKDEBUG
+ fprintf(querymatch->fp, "# evalue_ptr = %.2e <=? %.2e = evalue_threshold ",
+ *evalue_ptr,evalue_threshold);
+#endif
+ if (*evalue_ptr > evalue_threshold)
+ {
+#ifdef SKDEBUG
+ fprintf(fp, "false => reject\n");
+#endif
+ return false;
+ }
+#ifdef SKDEBUG
+ else
+ {
+ fprintf(fp, "true => accept\n");
+ }
+#endif
}
+ return true;
}
-bool gt_querymatch_check_final(const GtQuerymatch *querymatch,
+bool gt_querymatch_check_final(double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat *karlin_altschul_stat,
+ const GtQuerymatch *querymatch,
+ GtUword userdefinedleastlength,
GtUword errorpercentage,
- GtUword userdefinedleastlength)
+ double evalue_threshold)
{
- GtUword total_alignedlen;
+ GtUword aligned_len;
- gt_assert(querymatch != NULL);
- total_alignedlen = querymatch->dblen + querymatch->querylen;
+ if (!gt_querymatch_ordered(querymatch))
+ {
#ifdef SKDEBUG
- fprintf(querymatch->fp, "errorrate = %.2f <=? " GT_WU " = errorpercentage\n",
- gt_querymatch_error_rate(querymatch->distance,total_alignedlen),
- errorpercentage);
- fprintf(querymatch->fp, "total_alignedlen = " GT_WU " >=? " GT_WU
- " = 2 * userdefinedleastlen\n",
- total_alignedlen, 2 * userdefinedleastlength);
+ fprintf(querymatch->fp, "# !gt_querymatch_ordered => reject\n");
#endif
- return (gt_querymatch_error_rate(querymatch->distance,total_alignedlen)
- <= (double) errorpercentage &&
- total_alignedlen >= 2 * userdefinedleastlength) ? true : false;
+ return false;
+ }
+ aligned_len = gt_querymatch_aligned_len(querymatch);
+ return gt_querymatch_check_final_generic(
+ evalue_ptr,
+ bit_score_ptr,
+ karlin_altschul_stat,
+ querymatch->query_seqlen,
+ aligned_len,
+ querymatch->distance,
+ querymatch->mismatches,
+ userdefinedleastlength,
+ errorpercentage,
+ evalue_threshold,
+ querymatch->fp);
}
static void gt_querymatch_applycorrection(GtQuerymatch *querymatch)
@@ -281,80 +825,79 @@ static void gt_querymatch_applycorrection(GtQuerymatch *querymatch)
ref_querymatchoutoptions);
gt_querymatch_init(querymatch,
coords->ulen,
- querymatch->dbstart + coords->uoffset,
querymatch->dbseqnum,
querymatch->dbstart_relative + coords->uoffset,
- querymatch->dbseqlen,
+ querymatch->db_seqstart,
+ querymatch->db_seqlen,
gt_querymatch_distance2score(coords->sumdist,
coords->ulen + coords->vlen),
coords->sumdist,
+ coords->sum_max_mismatches,
querymatch->selfmatch,
querymatch->queryseqnum,
coords->vlen,
querymatch->querystart + coords->voffset,
- querymatch->query_totallength);
+ querymatch->query_seqstart,
+ querymatch->query_seqlen,
+ querymatch->db_desc,
+ querymatch->query_desc);
}
-bool gt_querymatch_process(GtQuerymatch *querymatchptr,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- bool greedyextension)
+static void gt_querymatch_alignment_prepare(GtQuerymatch *querymatch,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ bool greedyextension)
{
- if (!querymatchptr->selfmatch ||
- (uint64_t) querymatchptr->dbseqnum != querymatchptr->queryseqnum ||
- querymatchptr->dbstart_relative <= querymatchptr->querystart_fwdstrand)
- {
- if (querymatchptr->ref_querymatchoutoptions != NULL)
- {
- bool seededalignment;
- GtUword query_seqstartpos;
- GtUword abs_querystart_fwdstrand, abs_querystart;
+ bool seeded_alignment;
+ GtUword abs_querystart_fwdstrand;
- if (query == NULL || query->seq == NULL)
- {
- query_seqstartpos = gt_encseq_seqstartpos(query == NULL
- ? encseq
- : query->encseq,
- querymatchptr->queryseqnum);
- abs_querystart_fwdstrand
- = query_seqstartpos + querymatchptr->querystart_fwdstrand;
- abs_querystart
- = query_seqstartpos + querymatchptr->querystart;
- } else
- {
- gt_assert(query != NULL && query->seq != NULL);
- query_seqstartpos = 0;
- abs_querystart_fwdstrand = querymatchptr->querystart_fwdstrand;
- abs_querystart = querymatchptr->querystart;
- }
- seededalignment
- = gt_querymatchoutoptions_alignment_prepare(querymatchptr->
- ref_querymatchoutoptions,
- encseq,
- query,
- querymatchptr->
- query_readmode,
- query_seqstartpos,
- querymatchptr->
- query_totallength,
- querymatchptr->dbstart,
- querymatchptr->dblen,
- abs_querystart,
- abs_querystart_fwdstrand,
- querymatchptr->querylen,
- querymatchptr->distance,
- querymatchptr->seedpos1,
- querymatchptr->seedpos2,
- querymatchptr->seedlen,
- greedyextension);
- if (seededalignment && !greedyextension)
- {
- gt_querymatch_applycorrection(querymatchptr);
- }
- }
- return true;
+ gt_assert(querymatch != NULL);
+ if (querymatch->ref_querymatchoutoptions == NULL)
+ {
+ return;
+ }
+ gt_assert(queryes != NULL);
+ if (querymatch->distance > 0)
+ {
+ gt_querymatchoutoptions_seededmatch2eoplist(
+ querymatch->ref_querymatchoutoptions,
+ dbes,
+ gt_querymatch_dbstart_relative(querymatch),
+ querymatch->db_seqstart,
+ gt_querymatch_dblen(querymatch),
+ querymatch->query_readmode,
+ queryes,
+ querymatch->query_seqstart,
+ querymatch->query_seqlen,
+ querymatch->querystart,
+ querymatch->querylen,
+ querymatch->db_seedpos_rel,
+ querymatch->query_seedpos_rel,
+ querymatch->seedlen,
+ querymatch->verify_alignment,
+ greedyextension);
+ seeded_alignment = true;
+ } else
+ {
+ seeded_alignment = false;
+ }
+ abs_querystart_fwdstrand = querymatch->query_seqstart +
+ querymatch->querystart_fwdstrand;
+ gt_querymatchoutoptions_extract_seq(querymatch->ref_querymatchoutoptions,
+ dbes,
+ querymatch->dbstart_relative,
+ gt_querymatch_dbstart(querymatch),
+ gt_querymatch_dblen(querymatch),
+ querymatch->query_readmode,
+ queryes,
+ querymatch->querystart,
+ abs_querystart_fwdstrand,
+ querymatch->querylen,
+ seeded_alignment);
+ if (seeded_alignment && !greedyextension)
+ {
+ gt_querymatch_applycorrection(querymatch);
}
- return false;
}
static GtReadmode gt_readmode_character_code_parse(char direction)
@@ -371,226 +914,265 @@ static GtReadmode gt_readmode_character_code_parse(char direction)
return GT_READMODE_REVERSE;
}
-bool gt_querymatch_read_line(GtQuerymatch *querymatchptr,
- bool withseqlength,
+void gt_querymatch_read_line(GtQuerymatch *querymatch,
+ double *evalue_ptr,
+ double *bit_score_ptr,
const char *line_ptr,
+ const GtSeedExtendDisplayFlag *in_display_flag,
bool selfmatch,
- GtUword seedpos1,
- GtUword seedpos2,
- GtUword seedlen,
const GtEncseq *dbencseq,
const GtEncseq *queryencseq)
{
- char direction;
- double identity;
- int parsed_items;
-
- if (withseqlength)
- {
- parsed_items
- = sscanf(line_ptr,
- GT_WU " " GT_WU " " GT_WU " %c " GT_WU " %"PRIu64 " "
- GT_WU " " GT_WD " " GT_WU " %lf " GT_WU " " GT_WU,
- &querymatchptr->dblen,
- &querymatchptr->dbseqnum,
- &querymatchptr->dbstart_relative,
- &direction,
- &querymatchptr->querylen,
- &querymatchptr->queryseqnum,
- &querymatchptr->querystart_fwdstrand,
- &querymatchptr->score,
- &querymatchptr->distance,
- &identity,
- &querymatchptr->dbseqlen,
- &querymatchptr->query_totallength);
- } else
+ char separator;
+ const char *ptr = line_ptr;
+ GtUword column, numcolumns, dbend_relative = GT_UWORD_MAX,
+ queryend_relative = GT_UWORD_MAX;
+ const unsigned int *column_order
+ = gt_querymatch_display_order(&numcolumns,in_display_flag);
+
+ querymatch->db_seedpos_rel = GT_UWORD_MAX;
+ querymatch->query_seedpos_rel = GT_UWORD_MAX;
+ separator = gt_querymatch_blast_display(in_display_flag) ||
+ gt_querymatch_tabsep_display(in_display_flag) ? '\t' : ' ';
+ for (column = 0; column < numcolumns; column++)
{
- parsed_items
- = sscanf(line_ptr,
- GT_WU " " GT_WU " " GT_WU " %c " GT_WU " %"PRIu64 " "
- GT_WU " " GT_WD " " GT_WU " %lf",
- &querymatchptr->dblen,
- &querymatchptr->dbseqnum,
- &querymatchptr->dbstart_relative,
- &direction,
- &querymatchptr->querylen,
- &querymatchptr->queryseqnum,
- &querymatchptr->querystart_fwdstrand,
- &querymatchptr->score,
- &querymatchptr->distance,
- &identity);
- }
- if ((withseqlength && parsed_items == 12) ||
- (!withseqlength && parsed_items == 10))
- {
- querymatchptr->query_readmode = gt_readmode_character_code_parse(direction);
- querymatchptr->dbstart
- = gt_encseq_seqstartpos(dbencseq,querymatchptr->dbseqnum) +
- querymatchptr->dbstart_relative;
- querymatchptr->selfmatch = selfmatch;
- querymatchptr->seedpos1 = seedpos1;
- querymatchptr->seedpos2 = seedpos2;
- querymatchptr->seedlen = seedlen;
- if (!withseqlength)
+ int ret = 1;
+
+ gt_assert(*ptr != '\0');
+ while (isspace(*ptr))
{
- querymatchptr->query_totallength
- = gt_encseq_seqlength(queryencseq,querymatchptr->queryseqnum);
- querymatchptr->dbseqlen
- = gt_encseq_seqlength(dbencseq,querymatchptr->dbseqnum);
+ ptr++;
+ }
+ switch (column_order[column])
+ {
+ case Gt_Cigar_display:
+ case Gt_Cigarx_display:
+ if (querymatch->ref_eoplist != NULL)
+ {
+ gt_eoplist_reset(querymatch->ref_eoplist);
+ gt_eoplist_from_cigar(querymatch->ref_eoplist,ptr,separator);
+ } else
+ {
+ if (column < numcolumns - 1)
+ {
+ ptr = strchr(ptr,separator);
+ gt_assert(ptr != NULL);
+ }
+ }
+ break;
+ case Gt_Trace_display:
+ case Gt_Dtrace_display:
+ if (querymatch->ref_eoplist != NULL)
+ {
+ gt_eoplist_reset(querymatch->ref_eoplist);
+ gt_eoplist_read_trace(querymatch->ref_eoplist,ptr,separator);
+ } else
+ {
+ if (column < numcolumns - 1)
+ {
+ ptr = strchr(ptr,separator);
+ gt_assert(ptr != NULL);
+ }
+ }
+ break;
+ case Gt_S_len_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->dblen);
+ break;
+ case Gt_S_seqnum_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->dbseqnum);
+ break;
+ case Gt_Subjectid_display:
+ querymatch->db_desc = ptr;
+ break;
+ case Gt_S_start_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->dbstart_relative);
+ break;
+ case Gt_Strand_display:
+ querymatch->query_readmode = gt_readmode_character_code_parse(*ptr);
+ break;
+ case Gt_Q_len_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->querylen);
+ break;
+ case Gt_Q_end_display:
+ ret = sscanf(ptr,GT_WU,&queryend_relative);
+ break;
+ case Gt_Q_seqnum_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->queryseqnum);
+ break;
+ case Gt_Queryid_display:
+ querymatch->query_desc = ptr;
+ break;
+ case Gt_Q_start_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->querystart_fwdstrand);
+ break;
+ case Gt_Score_display:
+ ret = sscanf(ptr,GT_WD,&querymatch->score);
+ break;
+ case Gt_Editdist_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->distance);
+ break;
+ case Gt_Seed_len_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->seedlen);
+ break;
+ case Gt_Seed_s_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->db_seedpos_rel);
+ break;
+ case Gt_Seed_q_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->query_seedpos_rel);
+ break;
+ case Gt_S_seqlen_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->db_seqlen);
+ break;
+ case Gt_Q_seqlen_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->query_seqlen);
+ break;
+ case Gt_Evalue_display:
+ ret = sscanf(ptr,"%le",evalue_ptr);
+ break;
+ case Gt_Bitscore_display:
+ ret = sscanf(ptr,"%le",bit_score_ptr);
+ break;
+ case Gt_Mismatches_display:
+ ret = sscanf(ptr,GT_WU,&querymatch->mismatches);
+ break;
+ case Gt_S_end_display:
+ ret = sscanf(ptr,GT_WU,&dbend_relative);
+ break;
+ case Gt_Alignmentlength_display:
+ case Gt_Identity_display:
+ case Gt_Indels_display:
+ case Gt_Gapopens_display:
+ break;
+ default: gt_assert(false);
+ }
+ if (ret != 1)
+ {
+ fprintf(stderr,"column[" GT_WU "]: ret = %d, expect %s for \"%s\","
+ "ptr=%s\n",column,ret,
+ gt_querymatch_flag2name(column_order[column]),
+ line_ptr,ptr);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ ptr = strchr(ptr,separator);
+ }
+ gt_assert(gt_querymatch_s_seqnum_display(in_display_flag) &&
+ gt_querymatch_q_seqnum_display(in_display_flag));
+ if (!gt_querymatch_s_seqlen_display(in_display_flag))
+ {
+ querymatch->db_seqlen = gt_encseq_seqlength(dbencseq,querymatch->dbseqnum);
+ }
+ if (!gt_querymatch_q_seqlen_display(in_display_flag))
+ {
+ querymatch->query_seqlen
+ = gt_encseq_seqlength(queryencseq,querymatch->queryseqnum);
+ }
+ querymatch->db_seqstart
+ = gt_encseq_seqstartpos(dbencseq,querymatch->dbseqnum);
+ querymatch->selfmatch = selfmatch;
+ querymatch->querystart
+ = gt_querymatch_position_convert(querymatch->query_readmode,
+ gt_querymatch_querylen(querymatch),
+ querymatch->query_seqlen,
+ querymatch->querystart_fwdstrand);
+ querymatch->query_seqstart = gt_encseq_seqstartpos(queryencseq,
+ querymatch->queryseqnum);
+ if (!gt_querymatch_s_len_display(in_display_flag))
+ {
+ gt_assert(gt_querymatch_s_start_display(in_display_flag) &&
+ gt_querymatch_s_end_display(in_display_flag) &&
+ dbend_relative > querymatch->dbstart_relative);
+ querymatch->dblen = dbend_relative - querymatch->dbstart_relative + 1;
+ }
+ if (!gt_querymatch_q_len_display(in_display_flag))
+ {
+ gt_assert(gt_querymatch_q_start_display(in_display_flag) &&
+ gt_querymatch_q_end_display(in_display_flag));
+ if (querymatch->querystart < queryend_relative)
+ {
+ querymatch->querylen = queryend_relative - querymatch->querystart + 1;
+ } else
+ {
+ querymatch->querylen = querymatch->querystart - queryend_relative + 1;
}
- querymatchptr->querystart
- = gt_querymatch_querystart_derive(querymatchptr->query_readmode,
- querymatchptr->querylen,
- querymatchptr->query_totallength,
- querymatchptr->querystart_fwdstrand);
- return true;
}
- return false;
}
-bool gt_querymatch_complete(GtQuerymatch *querymatchptr,
+bool gt_querymatch_complete(GtQuerymatch *querymatch,
+ const GtSeedExtendDisplayFlag *out_display_flag,
GtUword dblen,
- GtUword dbstart,
GtUword dbseqnum,
GtUword dbstart_relative,
- GtUword dbseqlen,
+ GtUword db_seqstart,
+ GtUword db_seqlen,
GtWord score,
GtUword distance,
+ GtUword mismatches,
bool selfmatch,
- uint64_t queryseqnum,
+ GtUword queryseqnum,
GtUword querylen,
GtUword querystart,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtUword query_totallength,
- GtUword seedpos1,
- GtUword seedpos2,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword db_seedpos_rel,
+ GtUword query_seedpos_rel,
GtUword seedlen,
bool greedyextension)
{
- gt_assert(querymatchptr != NULL);
- gt_querymatch_init(querymatchptr,
+ const char *query_desc = NULL, *db_desc = NULL;
+ GtUword desclen;
+
+ gt_assert(querymatch != NULL);
+ if (gt_querymatch_subjectid_display(out_display_flag))
+ {
+ gt_assert(dbes != NULL);
+ if (dbes->encseq != NULL)
+ {
+ db_desc = gt_encseq_description(dbes->encseq,&desclen,dbseqnum);
+ } else
+ {
+ db_desc = dbes->desc;
+ }
+ }
+ if (gt_querymatch_queryid_display(out_display_flag))
+ {
+ gt_assert (queryes != NULL);
+ if (queryes->encseq != NULL)
+ {
+ query_desc = gt_encseq_description(queryes->encseq,&desclen,
+ (GtUword) queryseqnum);
+ } else
+ {
+ query_desc = queryes->desc;
+ }
+ }
+ gt_querymatch_init(querymatch,
dblen,
- dbstart,
dbseqnum,
dbstart_relative,
- dbseqlen,
+ db_seqstart,
+ db_seqlen,
score,
distance,
+ mismatches,
selfmatch,
queryseqnum,
querylen,
querystart,
- query_totallength);
- querymatchptr->seedpos1 = seedpos1;
- querymatchptr->seedpos2 = seedpos2;
- querymatchptr->seedlen = seedlen;
- return gt_querymatch_process(querymatchptr,
- encseq,
- query,
- greedyextension);
-}
-
-GtUword gt_querymatch_querylen(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->querylen;
-}
-
-GtUword gt_querymatch_dbstart(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->dbstart;
-}
-
-GtUword gt_querymatch_dblen(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->dblen;
-}
-
-GtUword gt_querymatch_querystart(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->querystart;
-}
-
-GtUword gt_querymatch_querystart_fwdstrand(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->querystart_fwdstrand;
-}
-
-uint64_t gt_querymatch_queryseqnum(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->queryseqnum;
-}
-
-GtUword gt_querymatch_query_totallength(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->query_totallength;
-}
-
-void gt_querymatch_query_readmode_set(GtQuerymatch *querymatch,
- GtReadmode query_readmode)
-{
- gt_assert(querymatch != NULL);
- querymatch->query_readmode = query_readmode;
-}
-
-void gt_querymatch_verify_alignment_set(GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- querymatch->verify_alignment = true;
-}
-
-GtReadmode gt_querymatch_query_readmode(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->query_readmode;
-}
-
-bool gt_querymatch_selfmatch(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->selfmatch;
-}
-
-GtUword gt_querymatch_distance(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->distance;
-}
-
-GtWord gt_querymatch_distance2score(GtUword distance,GtUword alignedlen)
-{
- return ((GtWord) alignedlen) - (GtWord) (3 * distance);
-}
-
-double gt_querymatch_error_rate(GtUword distance,GtUword alignedlen)
-{
- return 200.0 * (double) distance/alignedlen;
-}
-
-bool gt_querymatch_overlap(const GtQuerymatch *querymatch,
- GtUword nextseed_db_end_relative,
- GtUword nextseed_query_end_relative,
- bool use_db_pos)
-{
- bool queryoverlap, dboverlap, dboverlap_at_end, dboverlap_at_start;
- gt_assert(querymatch != NULL);
-
- queryoverlap = (querymatch->querystart + querymatch->querylen >
- nextseed_query_end_relative ? true : false);
- dboverlap_at_end = (querymatch->dbstart_relative + querymatch->dblen >
- nextseed_db_end_relative ? true : false);
- dboverlap_at_start = (querymatch->dbstart_relative + querymatch->seedlen <=
- nextseed_db_end_relative ? true : false);
- dboverlap = !use_db_pos || (dboverlap_at_end && dboverlap_at_start);
-
- return queryoverlap && dboverlap ? true : false;
+ query_seqstart,
+ query_seqlen,
+ db_desc,
+ query_desc);
+ querymatch->db_seedpos_rel = db_seedpos_rel;
+ querymatch->query_seedpos_rel = query_seedpos_rel;
+ querymatch->seedlen = seedlen;
+ if (gt_querymatch_ordered(querymatch))
+ {
+ gt_querymatch_alignment_prepare(querymatch,dbes,queryes,greedyextension);
+ return true;
+ }
+ return false;
}
static int gt_querymatch_compare_ascending(const void *va,const void *vb)
@@ -601,8 +1183,8 @@ static int gt_querymatch_compare_ascending(const void *va,const void *vb)
gt_assert(a != NULL && b != NULL);
if (a->queryseqnum < b->queryseqnum ||
(a->queryseqnum == b->queryseqnum &&
- a->querystart_fwdstrand + a->querylen <=
- b->querystart_fwdstrand + b->querylen))
+ a->querystart_fwdstrand + gt_querymatch_querylen(a) <=
+ b->querystart_fwdstrand + gt_querymatch_querylen(b)))
{
return -1;
}
@@ -617,8 +1199,8 @@ static int gt_querymatch_compare_descending(const void *va,const void *vb)
gt_assert(a != NULL && b != NULL);
if (a->queryseqnum < b->queryseqnum ||
(a->queryseqnum == b->queryseqnum &&
- a->querystart_fwdstrand + a->querylen <=
- b->querystart_fwdstrand + b->querylen))
+ a->querystart_fwdstrand + gt_querymatch_querylen(a) <=
+ b->querystart_fwdstrand + gt_querymatch_querylen(b)))
{
return 1;
}
@@ -638,12 +1220,6 @@ void gt_querymatch_table_sort(GtArrayGtQuerymatch *querymatch_table,
}
}
-bool gt_querymatch_has_seed(const GtQuerymatch *querymatch)
-{
- gt_assert(querymatch != NULL);
- return querymatch->seedpos1 != GT_UWORD_MAX ? true : false;
-}
-
GtQuerymatch *gt_querymatch_table_get(const GtArrayGtQuerymatch
*querymatch_table,GtUword idx)
{
@@ -651,9 +1227,146 @@ GtQuerymatch *gt_querymatch_table_get(const GtArrayGtQuerymatch
return querymatch_table->spaceGtQuerymatch + idx;
}
-const GtAlignment *gt_querymatch_alignment_get(const GtQuerymatch *querymatch)
+void gt_querymatch_extract_sequence_pair(GtSequencepairbuffer *seqpairbuf,
+ const GtEncseq *db_encseq,
+ const GtEncseq *query_encseq,
+ const GtQuerymatch *querymatch)
{
- gt_assert(querymatch != NULL);
- return gt_querymatchoutoptions_alignment_get(
- querymatch->ref_querymatchoutoptions);
+ GtReadmode query_readmode = gt_querymatch_query_readmode(querymatch);
+ const GtUword dblen = gt_querymatch_dblen(querymatch),
+ querylen = gt_querymatch_querylen(querymatch),
+ apos_ab = gt_querymatch_dbstart(querymatch),
+ bpos_ab = querymatch->query_seqstart +
+ querymatch->querystart_fwdstrand;
+
+ if (dblen >= seqpairbuf->a_allocated)
+ {
+ seqpairbuf->a_sequence = gt_realloc(seqpairbuf->a_sequence,
+ sizeof *seqpairbuf->a_sequence * dblen);
+ seqpairbuf->a_allocated = dblen;
+ }
+ if (querylen >= seqpairbuf->b_allocated)
+ {
+ seqpairbuf->b_sequence = gt_realloc(seqpairbuf->b_sequence,
+ sizeof *seqpairbuf->b_sequence *
+ querylen);
+ seqpairbuf->b_allocated = querylen;
+ }
+ gt_encseq_extract_encoded(db_encseq, seqpairbuf->a_sequence, apos_ab,
+ apos_ab + dblen - 1);
+ gt_encseq_extract_encoded(query_encseq, seqpairbuf->b_sequence, bpos_ab,
+ bpos_ab + querylen - 1);
+ if (query_readmode == GT_READMODE_REVCOMPL)
+ {
+ gt_inplace_reverse_complement(seqpairbuf->b_sequence,querylen);
+ }
+ seqpairbuf->a_len = dblen;
+ seqpairbuf->b_len = querylen;
+}
+
+static void gt_querymatch_seed_alignment(GtQuerymatch *querymatch,
+ GtSeqorEncseq *db_seqorencseq,
+ GtSeqorEncseq *query_seqorencseq)
+{
+ gt_querymatch_alignment_prepare(querymatch,db_seqorencseq,
+ query_seqorencseq,true);
+ GT_SEQORENCSEQ_ADD_SEQ_COORDS(db_seqorencseq,querymatch->db_seqstart,
+ querymatch->db_seqlen);
+ GT_SEQORENCSEQ_ADD_SEQ_COORDS(query_seqorencseq,querymatch->query_seqstart,
+ querymatch->query_seqlen);
+}
+
+static void gt_querymatch_full_alignment(const GtQuerymatch *querymatch,
+ GtSeqorEncseq *db_seqorencseq,
+ GtSeqorEncseq *query_seqorencseq)
+{
+ if (querymatch->ref_querymatchoutoptions != NULL)
+ {
+ const GtReadmode query_readmode = gt_querymatch_query_readmode(querymatch);
+
+ gt_frontprune2eoplist(querymatch->ref_querymatchoutoptions,
+ db_seqorencseq,
+ gt_querymatch_dbstart(querymatch),
+ gt_querymatch_dblen(querymatch),
+ query_seqorencseq,
+ query_readmode,
+ querymatch->query_seqstart,
+ querymatch->query_seqlen,
+ querymatch->querystart,
+ gt_querymatch_querylen(querymatch),
+ querymatch->verify_alignment);
+ gt_querymatchoutoptions_extract_seq(querymatch->ref_querymatchoutoptions,
+ db_seqorencseq,
+ querymatch->dbstart_relative,
+ gt_querymatch_dbstart(querymatch),
+ gt_querymatch_dblen(querymatch),
+ query_readmode,
+ query_seqorencseq,
+ querymatch->querystart,
+ querymatch->query_seqstart +
+ querymatch->querystart_fwdstrand,
+ gt_querymatch_querylen(querymatch),
+ true);
+ }
+}
+
+void gt_querymatch_recompute_alignment(GtQuerymatch *querymatch,
+ const GtSeedExtendDisplayFlag
+ *out_display_flag,
+ bool match_has_cigar,
+ bool dtrace,
+ GtUword trace_delta,
+ bool match_has_seed,
+ const GtEncseq *db_encseq,
+ const GtEncseq *query_encseq,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ double evalue,
+ double bitscore)
+{
+ GtSeqorEncseq db_seqorencseq, query_seqorencseq;
+
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&db_seqorencseq,db_encseq);
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&query_seqorencseq,query_encseq);
+ if (match_has_cigar || trace_delta > 0)
+ {
+ if (querymatch->ref_querymatchoutoptions != NULL &&
+ gt_querymatch_alignment_display(out_display_flag))
+ {
+ gt_querymatchoutoptions_extract_seq(querymatch->ref_querymatchoutoptions,
+ &db_seqorencseq,
+ querymatch->dbstart_relative,
+ gt_querymatch_dbstart(querymatch),
+ gt_querymatch_dblen(querymatch),
+ querymatch->query_readmode,
+ &query_seqorencseq,
+ querymatch->querystart,
+ querymatch->query_seqstart +
+ querymatch->querystart_fwdstrand,
+ gt_querymatch_querylen(querymatch),
+ false);
+ }
+ if (querymatch->ref_eoplist != NULL && trace_delta > 0)
+ {
+ gt_eoplist_trace2cigar(querymatch->ref_eoplist,dtrace,trace_delta);
+ }
+ } else
+ {
+ if (match_has_seed)
+ {
+ gt_querymatch_seed_alignment(querymatch,&db_seqorencseq,
+ &query_seqorencseq);
+ } else
+ {
+ gt_querymatch_full_alignment(querymatch,&db_seqorencseq,
+ &query_seqorencseq);
+ }
+ }
+ if ((evalue == DBL_MAX || bitscore == DBL_MAX) &&
+ karlin_altschul_stat != NULL)
+ {
+ gt_querymatch_evalue_bit_score(&evalue, &bitscore, karlin_altschul_stat,
+ querymatch);
+ }
+ gt_querymatch_prettyprint(evalue,bitscore,out_display_flag,querymatch);
}
diff --git a/src/match/querymatch.h b/src/match/querymatch.h
index 7f6a3d4..a92f099 100644
--- a/src/match/querymatch.h
+++ b/src/match/querymatch.h
@@ -23,110 +23,130 @@
#include "core/error_api.h"
#include "core/readmode.h"
#include "core/encseq.h"
-#include "core/unused_api.h"
#include "core/arraydef.h"
#include "querymatch-align.h"
+#include "karlin_altschul_stat.h"
+#include "querymatch-display.h"
#include "seq_or_encseq.h"
typedef struct GtQuerymatch GtQuerymatch;
-GT_DECLAREARRAYSTRUCT(GtQuerymatch);
-
GtQuerymatch *gt_querymatch_new(void);
void gt_querymatch_file_set(GtQuerymatch *querymatch, FILE *fp);
-void gt_querymatch_display_set(GtQuerymatch *querymatch,
- unsigned int display_flag);
-
-unsigned int gt_querymatch_bool2display_flag(bool seed_display,
- bool seqlength_display);
-
-bool gt_querymatch_seed_display(unsigned int display_flag);
-
-void gt_querymatch_outoptions_set(GtQuerymatch *querymatch,
- GtQuerymatchoutoptions *querymatchoutoptions);
+void gt_querymatch_db_keyvalues_set(GtQuerymatch *querymatch,
+ GtUword db_totallength,
+ GtUword db_numofsequences);
void gt_querymatch_init(GtQuerymatch *querymatch,
GtUword dblen,
- GtUword dbstart,
GtUword dbseqnum,
GtUword dbstart_relative,
+ GtUword db_seqstart,
GtUword dbseqlen,
GtWord score,
GtUword distance,
+ GtUword mismatches,
bool selfmatch,
- uint64_t queryseqnum,
+ GtUword queryseqnum,
GtUword querylen,
GtUword querystart,
- GtUword query_totallength);
-
-bool gt_querymatch_read_line(GtQuerymatch *querymatchptr,
- bool withseqlength,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ const char *db_desc,
+ const char *query_desc);
+
+void gt_querymatch_read_line(GtQuerymatch *querymatch,
+ double *evalue_ptr,
+ double *bitscore_ptr,
const char *line_ptr,
+ const GtSeedExtendDisplayFlag *in_display_flag,
bool selfmatch,
- GtUword seedpos1,
- GtUword seedpos2,
- GtUword seedlen,
const GtEncseq *dbencseq,
const GtEncseq *queryencseq);
-bool gt_querymatch_process(GtQuerymatch *querymatchptr,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- bool greedyextension);
-
void gt_querymatch_delete(GtQuerymatch *querymatch);
-bool gt_querymatch_complete(GtQuerymatch *querymatchptr,
+bool gt_querymatch_complete(GtQuerymatch *querymatch,
+ const GtSeedExtendDisplayFlag *out_display_flag,
GtUword dblen,
- GtUword dbstart,
GtUword dbseqnum,
GtUword dbstart_relative,
+ GtUword db_seqstart,
GtUword dbseqlen,
GtWord score,
GtUword distance,
+ GtUword mismatches,
bool selfmatch,
- uint64_t queryseqnum,
+ GtUword queryseqnum,
GtUword querylen,
GtUword querystart,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtUword query_totallength,
- GtUword seedpos1,
- GtUword seedpos2,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtUword db_seedpos_rel,
+ GtUword query_seedpos,
GtUword seedlen,
bool greedyextension);
-GtUword gt_querymatch_querylen(const GtQuerymatch *querymatch);
-
-GtUword gt_querymatch_dbstart(const GtQuerymatch *querymatch);
+void gt_querymatch_outoptions_set(GtQuerymatch *querymatch,
+ GtQuerymatchoutoptions *querymatchoutoptions);
-GtUword gt_querymatch_querystart(const GtQuerymatch *querymatch);
+GtUword gt_querymatch_dblen(const GtQuerymatch *querymatch);
-uint64_t gt_querymatch_queryseqnum(const GtQuerymatch *querymatch);
+GtUword gt_querymatch_querylen(const GtQuerymatch *querymatch);
-const GtUchar *gt_querymatch_querysequence(const GtQuerymatch *querymatch);
+GtUword gt_querymatch_dbstart(const GtQuerymatch *querymatch);
-GtUword gt_querymatch_query_totallength(const GtQuerymatch *querymatch);
+GtUword gt_querymatch_dbstart_relative(const GtQuerymatch *querymatch);
-GtUword gt_querymatch_dbseqnum(const GtQuerymatch *querymatch);
+GtUword gt_querymatch_querystart(const GtQuerymatch *querymatch);
-GtUword gt_querymatch_dblen(const GtQuerymatch *querymatch);
+void gt_querymatch_db_coordinates(GtUword *db_seqnum,GtUword *db_seqstart,
+ GtUword *db_seqlen,
+ const GtQuerymatch *querymatch);
-bool gt_querymatch_queryreverse(const GtQuerymatch *querymatch);
+void gt_querymatch_query_coordinates(GtUword *query_seqnum,
+ GtUword *query_seqstart,
+ GtUword *query_seqlen,
+ const GtQuerymatch *querymatch);
double gt_querymatch_error_rate(GtUword distance,GtUword alignedlen);
GtUword gt_querymatch_distance(const GtQuerymatch *querymatch);
-void gt_querymatch_prettyprint(const GtQuerymatch *querymatch);
+void gt_querymatch_gfa2_edge(const GtQuerymatch *querymatch,GtUword edgenum);
+
+void gt_querymatch_prettyprint(double evalue,double bit_score,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ const GtQuerymatch *querymatch);
-void gt_querymatch_coordinates_out(const GtQuerymatch *querymatch);
+void gt_querymatch_show_failed_seed(const GtSeedExtendDisplayFlag
+ *out_display_flag,
+ const GtQuerymatch *querymatch);
-bool gt_querymatch_check_final(const GtQuerymatch *querymatch,
+bool gt_querymatch_check_final(double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat *karlin_altschul_stat,
+ const GtQuerymatch *querymatch,
+ GtUword userdefinedleastlength,
GtUword errorpercentage,
- GtUword userdefinedleastlength);
+ double evalue_threshold);
+
+bool gt_querymatch_check_final_generic(
+ double *evalue_ptr,
+ double *bit_score_ptr,
+ const GtKarlinAltschulStat *karlin_altschul_stat,
+ GtUword query_seqlen,
+ GtUword aligned_len,
+ GtUword distance,
+ GtUword mismatches,
+ GtUword userdefinedleastlength,
+ GtUword errorpercentage,
+ double evalue_threshold,
+ GT_UNUSED FILE *fp);
void gt_querymatch_query_readmode_set(GtQuerymatch *querymatch,
GtReadmode query_readmode);
@@ -135,19 +155,9 @@ void gt_querymatch_verify_alignment_set(GtQuerymatch *querymatch);
GtReadmode gt_querymatch_query_readmode(const GtQuerymatch *querymatch);
-bool gt_querymatch_selfmatch(const GtQuerymatch *querymatch);
-
GtWord gt_querymatch_distance2score(GtUword distance,GtUword alignedlen);
-/* Returns true, iff the given seed start position is below the querymatch. */
-bool gt_querymatch_overlap(const GtQuerymatch *querymatch,
- GtUword nextseed_db_end_relative,
- GtUword nextseed_query_end_relative,
- bool use_db_pos);
-
-bool gt_querymatch_has_seed(const GtQuerymatch *querymatch);
-
-GtUword gt_querymatch_querystart_fwdstrand(const GtQuerymatch *querymatch);
+GT_DECLAREARRAYSTRUCT(GtQuerymatch);
void gt_querymatch_table_add(GtArrayGtQuerymatch *querymatch_table,
const GtQuerymatch *querymatch);
@@ -158,5 +168,29 @@ void gt_querymatch_table_sort(GtArrayGtQuerymatch *querymatch_table,
GtQuerymatch *gt_querymatch_table_get(const GtArrayGtQuerymatch
*querymatch_table,GtUword idx);
-const GtAlignment *gt_querymatch_alignment_get(const GtQuerymatch *querymatch);
+typedef struct
+{
+ GtUchar *a_sequence, *b_sequence;
+ GtUword a_allocated, b_allocated, a_len, b_len;
+} GtSequencepairbuffer;
+
+void gt_querymatch_extract_sequence_pair(GtSequencepairbuffer *seqpairbuf,
+ const GtEncseq *db_encseq,
+ const GtEncseq *query_encseq,
+ const GtQuerymatch *querymatch);
+
+void gt_querymatch_recompute_alignment(GtQuerymatch *querymatch,
+ const GtSeedExtendDisplayFlag
+ *out_display_flag,
+ bool match_has_cigar,
+ bool dtrace,
+ GtUword trace_delta,
+ bool match_has_seed,
+ const GtEncseq *db_encseq,
+ const GtEncseq *query_encseq,
+ const GtKarlinAltschulStat
+ *karlin_altschul_stat,
+ double evalue,
+ double bitscore);
+
#endif
diff --git a/src/match/rdj-filesuf-def.h b/src/match/rdj-filesuf-def.h
index 54d26f9..acfced6 100644
--- a/src/match/rdj-filesuf-def.h
+++ b/src/match/rdj-filesuf-def.h
@@ -43,6 +43,8 @@
#define GT_READJOINER_SUFFIX_SG_ELEN_DISTRI ".el.dsr"
#define GT_READJOINER_SUFFIX_SG_ASQG ".asqg"
#define GT_READJOINER_SUFFIX_SG_ASQG_GZ ".asqg.gz"
+#define GT_READJOINER_SUFFIX_SG_GFA ".gfa"
+#define GT_READJOINER_SUFFIX_SG_GFA_GZ ".gfa.gz"
/* contig graph */
#define GT_READJOINER_SUFFIX_JUNCTIONS ".jnc"
diff --git a/src/match/rdj-spmfind.c b/src/match/rdj-spmfind.c
index 91b01bf..c0c310c 100644
--- a/src/match/rdj-spmfind.c
+++ b/src/match/rdj-spmfind.c
@@ -18,6 +18,7 @@
#include "core/arraydef.h"
#include "core/disc_distri_api.h"
#include "core/fa.h"
+#include "core/ma.h"
#include "core/intbits.h"
#include "core/log_api.h"
#include "core/spacecalc.h"
diff --git a/src/match/rdj-strgraph.c b/src/match/rdj-strgraph.c
index b8df9c9..9c00ba0 100644
--- a/src/match/rdj-strgraph.c
+++ b/src/match/rdj-strgraph.c
@@ -33,6 +33,7 @@
#include "core/spacecalc.h"
#include "extended/assembly_stats_calculator.h"
#include "match/asqg_writer.h"
+#include "match/gfa_writer.h"
#include "match/reads_libraries_table.h"
#include "match/rdj-contigpaths.h"
#include "match/rdj-contig-info.h"
@@ -2018,7 +2019,7 @@ static void gt_strgraph_asqg_show(const GtStrgraph *strgraph,
{
/* other E->B / B->E cases, as well as all B-B
are not considered to avoid double output */
- gt_spmproc_show_asgq(sn1, sn2, spm_len, is_e1, is_e2, aw);
+ gt_spmproc_show_asqg(sn1, sn2, spm_len, is_e1, is_e2, aw);
}
}
}
@@ -2033,6 +2034,62 @@ static void gt_strgraph_asqg_show(const GtStrgraph *strgraph,
gt_error_delete(err);
}
+static void gt_strgraph_gfa_show(const GtStrgraph *strgraph,
+ const char *indexname, GtGfaVersion version, GtFile *outfp)
+{
+ GtUword sn1, sn2;
+ GtStrgraphVnum i, v2;
+ GtUword sl2, spm_len;
+ GtStrgraphVEdgenum j;
+ bool is_e1, is_e2;
+ GtError *err;
+ int had_err = 0;
+ GtGfaWriter *gw = NULL;
+
+ err = gt_error_new();
+ gt_assert(strgraph->encseq != NULL);
+ gw = gt_gfa_writer_new(outfp, strgraph->encseq, version);
+ had_err = gt_gfa_writer_show_header(gw, (GtUword)
+ strgraph->minmatchlen, indexname, false, false, err);
+ if (!had_err)
+ had_err = gt_gfa_writer_show_segments(gw, err);
+ for (i = 0; i < GT_STRGRAPH_NOFVERTICES(strgraph) && !had_err; i++)
+ {
+ if (GT_STRGRAPH_V_OUTDEG(strgraph, i) > 0)
+ {
+ sn1 = GT_STRGRAPH_V_READNUM(i);
+ is_e1 = GT_STRGRAPH_V_IS_E(i);
+ for (j = 0; j < GT_STRGRAPH_V_NOFEDGES(strgraph, i) && !had_err; j++)
+ {
+ if (!GT_STRGRAPH_EDGE_IS_REDUCED(strgraph, i, j))
+ {
+ v2 = GT_STRGRAPH_EDGE_DEST(strgraph, i, j);
+ sn2 = GT_STRGRAPH_V_READNUM(v2);
+ sl2 = (GtUword)GT_STRGRAPH_SEQLEN(strgraph, sn2);
+ spm_len = sl2 - (GtUword)GT_STRGRAPH_EDGE_LEN(strgraph, i, j);
+ is_e2 = GT_STRGRAPH_V_IS_E(v2);
+ if ((is_e1 && is_e2 && (sn1 >= sn2)) ||
+ (!is_e1 && !is_e2 && (sn1 > sn2)) ||
+ (is_e1 && !is_e2 && (sn1 >= sn2)) ||
+ (!is_e1 && is_e2 && (sn1 > sn2)))
+ {
+ /* other E->B / B->E cases, as well as all B-B
+ are not considered to avoid double output */
+ gt_spmproc_show_gfa(sn1, sn2, spm_len, is_e1, is_e2, gw);
+ }
+ }
+ }
+ }
+ }
+ if (had_err)
+ {
+ fprintf(stderr, "%s", gt_error_get(err));
+ exit(EXIT_FAILURE);
+ }
+ gt_gfa_writer_delete(gw);
+ gt_error_delete(err);
+}
+
void gt_strgraph_show(const GtStrgraph *strgraph, GtStrgraphFormat format,
const char *indexname, const char *suffix, bool show_progressbar)
{
@@ -2059,6 +2116,14 @@ void gt_strgraph_show(const GtStrgraph *strgraph, GtStrgraphFormat format,
case GT_STRGRAPH_ASQG:
gt_strgraph_asqg_show(strgraph, indexname, outfp);
break;
+ case GT_STRGRAPH_GFA1_GZ: /*@ fallthrough @*/
+ case GT_STRGRAPH_GFA1:
+ gt_strgraph_gfa_show(strgraph, indexname, GT_GFA_VERSION_1_0, outfp);
+ break;
+ case GT_STRGRAPH_GFA2_GZ: /*@ fallthrough @*/
+ case GT_STRGRAPH_GFA2:
+ gt_strgraph_gfa_show(strgraph, indexname, GT_GFA_VERSION_2_0, outfp);
+ break;
case GT_STRGRAPH_BIN:
gt_strgraph_save(strgraph, outfp);
break;
diff --git a/src/match/rdj-strgraph.h b/src/match/rdj-strgraph.h
index 7cdc1e8..4f9b0bc 100644
--- a/src/match/rdj-strgraph.h
+++ b/src/match/rdj-strgraph.h
@@ -94,6 +94,10 @@ typedef enum {
GT_STRGRAPH_BIN, /* binary format, for gt_strgraph_new_from_file */
GT_STRGRAPH_ASQG, /* sga format, plain text */
GT_STRGRAPH_ASQG_GZ, /* sga format, gzipped */
+ GT_STRGRAPH_GFA1, /* gfa1 format, plain text */
+ GT_STRGRAPH_GFA1_GZ ,/* gfa1 format, gzipped */
+ GT_STRGRAPH_GFA2, /* gfa2 format, plain text */
+ GT_STRGRAPH_GFA2_GZ ,/* gfa2 format, gzipped */
} GtStrgraphFormat;
void gt_strgraph_show(const GtStrgraph *strgraph, GtStrgraphFormat format,
diff --git a/src/match/rectangle-store.c b/src/match/rectangle-store.c
new file mode 100644
index 0000000..f6cdb66
--- /dev/null
+++ b/src/match/rectangle-store.c
@@ -0,0 +1,158 @@
+#include <stdint.h>
+#include "core/arraydef.h"
+#include "match/rectangle-store.h"
+
+struct GtArrayGtDiagbandseedRectangle
+{
+ GtDiagbandseedRectangle *spaceGtDiagbandseedRectangle;
+ GtUword allocatedGtDiagbandseedRectangle,
+ nextfreeGtDiagbandseedRectangle;
+};
+
+static int gt_rectangle_cmp(const GtDiagbandseedRectangle *l,
+ const GtDiagbandseedRectangle *r)
+{
+ if (l->a_end < r->a_end)
+ {
+ return -1;
+ }
+ if (l->a_end > r->a_end)
+ {
+ return 1;
+ }
+ if (l->b_end < r->b_end)
+ {
+ return -1;
+ }
+ if (l->b_end > r->b_end)
+ {
+ return 1;
+ }
+ /*
+ fprintf(stderr,"%s: cmp(%u,%u)(%u,%u) vs (%u,%u)(%u,%u)\n",__func__,
+ l->a_start,l->a_end,l->b_start,l->b_end,
+ r->a_start,r->a_end,r->b_start,r->b_end);
+ */
+ return 0;
+}
+
+GtArrayGtDiagbandseedRectangle *gt_rectangle_store_new(void)
+{
+ GtArrayGtDiagbandseedRectangle *rectangle_store
+ = gt_malloc(sizeof *rectangle_store);
+ GT_INITARRAY(rectangle_store,GtDiagbandseedRectangle);
+ return rectangle_store;
+}
+
+void gt_rectangle_store_delete(GtArrayGtDiagbandseedRectangle *rectangle_store)
+{
+ if (rectangle_store != NULL)
+ {
+ GT_FREEARRAY(rectangle_store,GtDiagbandseedRectangle);
+ gt_free(rectangle_store);
+ }
+}
+
+void gt_rectangle_store_add(GtArrayGtDiagbandseedRectangle *rectangle_store,
+ const GtDiagbandseedRectangle *key)
+{
+ GtDiagbandseedRectangle *ptr;
+
+ GT_CHECKARRAYSPACE(rectangle_store,GtDiagbandseedRectangle,
+ 256UL +
+ rectangle_store->allocatedGtDiagbandseedRectangle * 0.2);
+ for (ptr = rectangle_store->spaceGtDiagbandseedRectangle +
+ rectangle_store->nextfreeGtDiagbandseedRectangle;
+ ptr > rectangle_store->spaceGtDiagbandseedRectangle &&
+ gt_rectangle_cmp(ptr-1,key) > 0; ptr--)
+ {
+ *ptr = *(ptr-1);
+ }
+ *ptr = *key;
+ rectangle_store->nextfreeGtDiagbandseedRectangle++;
+}
+
+const GtDiagbandseedRectangle *gt_rectangle_previous_equal(
+ const GtArrayGtDiagbandseedRectangle *rectangle_store,
+ const GtDiagbandseedRectangle *key)
+{
+ const GtDiagbandseedRectangle
+ *midptr,
+ *found = NULL,
+ *leftptr = rectangle_store->spaceGtDiagbandseedRectangle,
+ *rightptr = leftptr + rectangle_store->nextfreeGtDiagbandseedRectangle - 1;
+
+ while (leftptr <= rightptr)
+ {
+ midptr = leftptr + (GtUword) (rightptr-leftptr)/2;
+ if (gt_rectangle_cmp(key,midptr) < 0)
+ {
+ rightptr = midptr - 1;
+ } else
+ {
+ /* Now key *midptr <= key. Hence *midptr satisfies the
+ requirement, but it may not be the largest element <= key. */
+ found = midptr;
+ /* if *midptr < key, then there may be a larger element and
+ therefore we search for it in the range
+ midptr+1 .. rightptr. if *midptr == key, then we have found
+ the largest element and we can stop the search. */
+ if (gt_rectangle_cmp(key,midptr) > 0)
+ {
+ leftptr = midptr + 1;
+ } else
+ {
+ break;
+ }
+ }
+ }
+ /* if found == NULL, then we have never seen an element <= key and
+ so we return NULL. Otherwise found has been set in the else case
+ of the loop */
+ return found;
+}
+
+bool gt_rectangle_overlap(
+ const GtArrayGtDiagbandseedRectangle *rectangle_store,
+ const GtDiagbandseedRectangle *key)
+{
+ const GtDiagbandseedRectangle *ptr;
+/*
+ = gt_rectangle_previous_equal(rectangle_store,key)
+*/
+ ;
+
+/*
+ if (ptr == NULL)
+ {
+ ptr = rectangle_store->spaceGtDiagbandseedRectangle;
+ }
+*/
+ ptr = rectangle_store->spaceGtDiagbandseedRectangle;
+ while (ptr < rectangle_store->spaceGtDiagbandseedRectangle +
+ rectangle_store->nextfreeGtDiagbandseedRectangle)
+ {
+ if (ptr->a_start <= key->a_end && ptr->a_end >= key->a_start &&
+ ptr->b_start <= key->b_end && ptr->b_end >= key->b_start)
+ {
+ return true;
+ }
+ ptr++;
+ }
+ return false;
+}
+
+void gt_rectangle_store_show(const GtArrayGtDiagbandseedRectangle
+ *rectangle_store)
+{
+ const GtDiagbandseedRectangle *key;
+
+ printf("# %s\n",__func__);
+ for (key = rectangle_store->spaceGtDiagbandseedRectangle;
+ key < rectangle_store->spaceGtDiagbandseedRectangle +
+ rectangle_store->nextfreeGtDiagbandseedRectangle; key++)
+ {
+ printf("# %u %u %u %u\n",key->a_start,key->a_end,
+ key->b_start,key->b_end);
+ }
+}
diff --git a/src/match/rectangle-store.h b/src/match/rectangle-store.h
new file mode 100644
index 0000000..42aafe9
--- /dev/null
+++ b/src/match/rectangle-store.h
@@ -0,0 +1,25 @@
+#ifndef RECTANGLE_STORE_H
+#define RECTANGLE_STORE_H
+#include <stdint.h>
+
+typedef struct GtArrayGtDiagbandseedRectangle GtArrayGtDiagbandseedRectangle;
+
+typedef struct
+{
+ uint32_t a_start, a_end, b_start, b_end;
+} GtDiagbandseedRectangle;
+
+GtArrayGtDiagbandseedRectangle *gt_rectangle_store_new(void);
+
+void gt_rectangle_store_delete(GtArrayGtDiagbandseedRectangle *rectangle_store);
+
+void gt_rectangle_store_add(GtArrayGtDiagbandseedRectangle *rectangle_store,
+ const GtDiagbandseedRectangle *key);
+
+bool gt_rectangle_overlap(
+ const GtArrayGtDiagbandseedRectangle *rectangle_store,
+ const GtDiagbandseedRectangle *key);
+
+void gt_rectangle_store_show(const GtArrayGtDiagbandseedRectangle
+ *rectangle_store);
+#endif
diff --git a/src/match/se-display-fwd.inc b/src/match/se-display-fwd.inc
new file mode 100644
index 0000000..3ec2ae9
--- /dev/null
+++ b/src/match/se-display-fwd.inc
@@ -0,0 +1,85 @@
+/* This file was generated by ./scripts/gen-display-struct.rb, do NOT edit. */
+#define GT_DISPLAY_LARGEST_FLAG 38
+#define GT_MAX_DISPLAY_FLAG_LENGTH 16
+#define GT_SEED_EXTEND_DEFAULT_ALIGNMENT_WIDTH 60
+#define GT_SEED_EXTEND_DEFAULT_TRACE_DELTA 50
+typedef enum
+{
+ Gt_Alignment_display /* 0 */,
+ Gt_Seed_in_algn_display /* 1 */,
+ Gt_Polinfo_display /* 2 */,
+ Gt_Seed_display /* 3 */,
+ Gt_Failed_seed_display /* 4 */,
+ Gt_Fstperquery_display /* 5 */,
+ Gt_Tabsep_display /* 6 */,
+ Gt_Blast_display /* 7 */,
+ Gt_Gfa2_display /* 8 */,
+ Gt_Custom_display /* 9 */,
+ Gt_Cigar_display /* 10 */,
+ Gt_Cigarx_display /* 11 */,
+ Gt_Trace_display /* 12 */,
+ Gt_Dtrace_display /* 13 */,
+ Gt_S_len_display /* 14 */,
+ Gt_S_seqnum_display /* 15 */,
+ Gt_Subjectid_display /* 16 */,
+ Gt_S_start_display /* 17 */,
+ Gt_S_end_display /* 18 */,
+ Gt_Strand_display /* 19 */,
+ Gt_Q_len_display /* 20 */,
+ Gt_Q_seqnum_display /* 21 */,
+ Gt_Queryid_display /* 22 */,
+ Gt_Q_start_display /* 23 */,
+ Gt_Q_end_display /* 24 */,
+ Gt_Alignmentlength_display /* 25 */,
+ Gt_Mismatches_display /* 26 */,
+ Gt_Indels_display /* 27 */,
+ Gt_Gapopens_display /* 28 */,
+ Gt_Score_display /* 29 */,
+ Gt_Editdist_display /* 30 */,
+ Gt_Identity_display /* 31 */,
+ Gt_Seed_len_display /* 32 */,
+ Gt_Seed_s_display /* 33 */,
+ Gt_Seed_q_display /* 34 */,
+ Gt_S_seqlen_display /* 35 */,
+ Gt_Q_seqlen_display /* 36 */,
+ Gt_Evalue_display /* 37 */,
+ Gt_Bitscore_display /* 38 */
+} GtSeedExtendDisplay_enum;
+bool gt_querymatch_seed_in_algn_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_polinfo_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_seed_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_failed_seed_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_fstperquery_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_tabsep_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_blast_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_gfa2_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_custom_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_cigar_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_cigarX_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_trace_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_dtrace_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_s_len_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_s_seqnum_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_subjectid_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_s_start_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_s_end_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_strand_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_q_len_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_q_seqnum_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_queryid_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_q_start_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_q_end_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_alignmentlength_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_mismatches_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_indels_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_gapopens_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_score_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_editdist_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_identity_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_seed_len_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_seed_s_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_seed_q_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_s_seqlen_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_q_seqlen_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_evalue_display(const GtSeedExtendDisplayFlag *);
+bool gt_querymatch_bitscore_display(const GtSeedExtendDisplayFlag *);
diff --git a/src/match/se-display.inc b/src/match/se-display.inc
new file mode 100644
index 0000000..a264e83
--- /dev/null
+++ b/src/match/se-display.inc
@@ -0,0 +1,426 @@
+/* This file was generated by ./scripts/gen-display-struct.rb, do NOT edit. */
+static GtSEdisplayStruct gt_display_arguments_table[] =
+{
+/* incolumn is true iff the helptext of the argument begins
+ with the keyword "display" */
+ {"alignment", Gt_Alignment_display, false},
+ {"alignment length", Gt_Alignmentlength_display, true},
+ {"bit score", Gt_Bitscore_display, true},
+ {"blast", Gt_Blast_display, false},
+ {"cigar", Gt_Cigar_display, true},
+ {"cigarX", Gt_Cigarx_display, true},
+ {"custom", Gt_Custom_display, false},
+ {"dtrace", Gt_Dtrace_display, true},
+ {"editdist", Gt_Editdist_display, true},
+ {"evalue", Gt_Evalue_display, true},
+ {"failed_seed", Gt_Failed_seed_display, false},
+ {"fstperquery", Gt_Fstperquery_display, false},
+ {"gap opens", Gt_Gapopens_display, true},
+ {"gfa2", Gt_Gfa2_display, false},
+ {"identity", Gt_Identity_display, true},
+ {"indels", Gt_Indels_display, true},
+ {"mismatches", Gt_Mismatches_display, true},
+ {"polinfo", Gt_Polinfo_display, false},
+ {"q.end", Gt_Q_end_display, true},
+ {"q.len", Gt_Q_len_display, true},
+ {"q.seqlen", Gt_Q_seqlen_display, true},
+ {"q.seqnum", Gt_Q_seqnum_display, true},
+ {"q.start", Gt_Q_start_display, true},
+ {"query id", Gt_Queryid_display, true},
+ {"s.end", Gt_S_end_display, true},
+ {"s.len", Gt_S_len_display, true},
+ {"s.seqlen", Gt_S_seqlen_display, true},
+ {"s.seqnum", Gt_S_seqnum_display, true},
+ {"s.start", Gt_S_start_display, true},
+ {"score", Gt_Score_display, true},
+ {"seed", Gt_Seed_display, false},
+ {"seed.len", Gt_Seed_len_display, true},
+ {"seed.q", Gt_Seed_q_display, true},
+ {"seed.s", Gt_Seed_s_display, true},
+ {"seed_in_algn", Gt_Seed_in_algn_display, false},
+ {"strand", Gt_Strand_display, true},
+ {"subject id", Gt_Subjectid_display, true},
+ {"tabsep", Gt_Tabsep_display, false},
+ {"trace", Gt_Trace_display, true}
+};
+
+static unsigned int gt_display_flag2index[] = {
+ 0,
+ 34,
+ 17,
+ 30,
+ 10,
+ 11,
+ 37,
+ 3,
+ 13,
+ 6,
+ 4,
+ 5,
+ 38,
+ 7,
+ 25,
+ 27,
+ 36,
+ 28,
+ 24,
+ 35,
+ 19,
+ 21,
+ 23,
+ 22,
+ 18,
+ 1,
+ 16,
+ 15,
+ 12,
+ 29,
+ 8,
+ 14,
+ 31,
+ 33,
+ 32,
+ 26,
+ 20,
+ 9,
+ 2
+};
+
+const char *gt_querymatch_display_help(void)
+{
+ return "specify what information about the matches to display\n"
+ "alignment: show alignment (possibly followed by\n"
+ " =<number> to specify width of alignment\n"
+ " columns, default is )\n"
+ "seed_in_algn: mark the seed in alignment\n"
+ "polinfo: add polishing information for shown\n"
+ " alignment\n"
+ "seed: abbreviation for seed.len seed.s seed.q\n"
+ "failed_seed: show the coordinates of a seed extension,\n"
+ " which does not satisfy the filter conditions\n"
+ "fstperquery: output only the first found match per query\n"
+ "tabsep: separate columns by tabulator, instead of\n"
+ " space as default\n"
+ "blast: output matches in blast format 7 (tabular with\n"
+ " comment lines; instead of gap opens, indels are\n"
+ " displayed)\n"
+ "gfa2: output matches in gfa2 format\n"
+ "custom: output matches in custom format, i.e. no\n"
+ " columns are pre-defined; all columns have to be\n"
+ " specified by the user\n"
+ "cigar: display cigar string representing alignment\n"
+ " (no distinction between match and mismatch)\n"
+ "cigarX: display cigar string representing alignment\n"
+ " (distinction between match (=) and mismatch\n"
+ " (X))\n"
+ "trace: display trace, i.e. a compact representation\n"
+ " of an alignment (possibly followed by =<delta>)\n"
+ " to specify the delta-value; default value of\n"
+ " delta is 50\n"
+ "dtrace: display trace as differences; like trace, but\n"
+ " instead of an absolute value x, report the\n"
+ " difference delta-x. This leads to smaller\n"
+ " numbers and thus a more compact representation\n"
+ "s.len: display length of match on subject sequence\n"
+ "s.seqnum: display sequence number of subject sequence\n"
+ "subject id: display sequence description of subject\n"
+ " sequence\n"
+ "s.start: display start position of match on subject\n"
+ " sequence\n"
+ "s.end: display end position of match on subject\n"
+ " sequence\n"
+ "strand: display strand of match using symbols F\n"
+ " (forward) and P (reverse complement)\n"
+ "q.len: display length of match on query sequence\n"
+ "q.seqnum: display sequence number of query sequence\n"
+ "query id: display sequence description of query\n"
+ " sequence\n"
+ "q.start: display start position of match on query\n"
+ " sequence\n"
+ "q.end: display end position of match on query\n"
+ " sequence\n"
+ "alignment length: display length of alignment\n"
+ "mismatches: display number of mismatches in alignment\n"
+ "indels: display number of indels in alignment\n"
+ "gap opens: display number of indels in alignment\n"
+ "score: display score of match\n"
+ "editdist: display unit edit distance\n"
+ "identity: display percent identity of match\n"
+ "seed.len: display length seed of the match\n"
+ "seed.s: display start position of seed in subject\n"
+ "seed.q: display start position of seed in query\n"
+ "s.seqlen: display length of subject sequence in which\n"
+ " match occurs\n"
+ "q.seqlen: display length of query sequence in which\n"
+ " match occurs\n"
+ "evalue: display evalue\n"
+ "bit score: display bit score\n"
+;
+}
+#define GT_SE_POSSIBLE_DISPLAY_ARGS "alignment"\
+ ", seed_in_algn"\
+ ", polinfo"\
+ ", seed"\
+ ", failed_seed"\
+ ", fstperquery"\
+ ", tabsep"\
+ ", blast"\
+ ", gfa2"\
+ ", custom"\
+ ", cigar"\
+ ", cigarX"\
+ ", trace"\
+ ", dtrace"\
+ ", s.len"\
+ ", s.seqnum"\
+ ", subject id"\
+ ", s.start"\
+ ", s.end"\
+ ", strand"\
+ ", q.len"\
+ ", q.seqnum"\
+ ", query id"\
+ ", q.start"\
+ ", q.end"\
+ ", alignment length"\
+ ", mismatches"\
+ ", indels"\
+ ", gap opens"\
+ ", score"\
+ ", editdist"\
+ ", identity"\
+ ", seed.len"\
+ ", seed.s"\
+ ", seed.q"\
+ ", s.seqlen"\
+ ", q.seqlen"\
+ ", evalue"\
+ ", bit score"
+
+bool gt_querymatch_seed_in_algn_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Seed_in_algn_display);
+}
+
+bool gt_querymatch_polinfo_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Polinfo_display);
+}
+
+bool gt_querymatch_seed_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Seed_display);
+}
+
+bool gt_querymatch_failed_seed_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Failed_seed_display);
+}
+
+bool gt_querymatch_fstperquery_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Fstperquery_display);
+}
+
+bool gt_querymatch_tabsep_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Tabsep_display);
+}
+
+bool gt_querymatch_blast_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Blast_display);
+}
+
+bool gt_querymatch_gfa2_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Gfa2_display);
+}
+
+bool gt_querymatch_custom_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Custom_display);
+}
+
+bool gt_querymatch_cigar_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Cigar_display);
+}
+
+bool gt_querymatch_cigarX_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Cigarx_display);
+}
+
+bool gt_querymatch_trace_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Trace_display);
+}
+
+bool gt_querymatch_dtrace_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Dtrace_display);
+}
+
+bool gt_querymatch_s_len_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_S_len_display);
+}
+
+bool gt_querymatch_s_seqnum_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_S_seqnum_display);
+}
+
+bool gt_querymatch_subjectid_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Subjectid_display);
+}
+
+bool gt_querymatch_s_start_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_S_start_display);
+}
+
+bool gt_querymatch_s_end_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_S_end_display);
+}
+
+bool gt_querymatch_strand_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Strand_display);
+}
+
+bool gt_querymatch_q_len_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Q_len_display);
+}
+
+bool gt_querymatch_q_seqnum_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Q_seqnum_display);
+}
+
+bool gt_querymatch_queryid_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Queryid_display);
+}
+
+bool gt_querymatch_q_start_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Q_start_display);
+}
+
+bool gt_querymatch_q_end_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Q_end_display);
+}
+
+bool gt_querymatch_alignmentlength_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Alignmentlength_display);
+}
+
+bool gt_querymatch_mismatches_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Mismatches_display);
+}
+
+bool gt_querymatch_indels_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Indels_display);
+}
+
+bool gt_querymatch_gapopens_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Gapopens_display);
+}
+
+bool gt_querymatch_score_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Score_display);
+}
+
+bool gt_querymatch_editdist_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Editdist_display);
+}
+
+bool gt_querymatch_identity_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Identity_display);
+}
+
+bool gt_querymatch_seed_len_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Seed_len_display);
+}
+
+bool gt_querymatch_seed_s_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Seed_s_display);
+}
+
+bool gt_querymatch_seed_q_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Seed_q_display);
+}
+
+bool gt_querymatch_s_seqlen_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_S_seqlen_display);
+}
+
+bool gt_querymatch_q_seqlen_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Q_seqlen_display);
+}
+
+bool gt_querymatch_evalue_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Evalue_display);
+}
+
+bool gt_querymatch_bitscore_display(const GtSeedExtendDisplayFlag
+ *display_flag)
+{
+ return gt_querymatch_display_on(display_flag,Gt_Bitscore_display);
+}
diff --git a/src/match/seed-extend-iter.c b/src/match/seed-extend-iter.c
index 0dfcba1..4d03614 100644
--- a/src/match/seed-extend-iter.c
+++ b/src/match/seed-extend-iter.c
@@ -15,6 +15,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <float.h>
#include "core/ma_api.h"
#include "core/str_api.h"
#include "core/encseq.h"
@@ -25,21 +26,22 @@
struct GtSeedextendMatchIterator
{
GtStr *ii, *qii;
- bool mirror, bias_parameters, seqlength_display;
+ bool mirror, bias_parameters;
GtEncseq *aencseq, *bencseq;
GtUword errorpercentage, history_size;
const char *matchfilename;
GtStr *line_buffer;
uint64_t linenum;
- bool has_seedline;
- GtUword seedpos1,
- seedpos2,
- seedlen;
FILE *inputfileptr;
+ double evalue, bitscore;
GtUword currentmatchindex;
GtQuerymatch *currentmatch, *querymatchptr;
GtQuerymatchoutoptions *querymatchoutoptions;
GtArrayGtQuerymatch querymatch_table;
+ GtSeedExtendDisplayFlag *in_display_flag;
+ GtStr *saved_options_line;
+ GtUword trace_delta;
+ bool missing_fields_line;
};
void gt_seedextend_match_iterator_delete(GtSeedextendMatchIterator *semi)
@@ -60,6 +62,8 @@ void gt_seedextend_match_iterator_delete(GtSeedextendMatchIterator *semi)
{
fclose(semi->inputfileptr);
}
+ gt_querymatch_display_flag_delete(semi->in_display_flag);
+ gt_str_delete(semi->saved_options_line);
gt_free(semi);
}
@@ -86,7 +90,7 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
const GtStr *matchfilename,
GtError *err)
{
- FILE *options_line_inputfileptr;
+ FILE *defline_infp;
int had_err = 0;
GtSeedextendMatchIterator *semi = gt_malloc(sizeof *semi);
GtEncseqLoader *encseq_loader = NULL;
@@ -95,22 +99,24 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
semi->qii = gt_str_new();
semi->mirror = false;
semi->bias_parameters = false;
- semi->seqlength_display = false;
semi->aencseq = semi->bencseq = NULL;
semi->errorpercentage = 0;
semi->history_size = 0;
semi->matchfilename = gt_str_get(matchfilename);
- semi->has_seedline = false;
semi->line_buffer = NULL;
semi->inputfileptr = NULL;
semi->querymatchptr = gt_querymatch_new();
semi->currentmatchindex = GT_UWORD_MAX;
+ semi->evalue = DBL_MAX;
+ semi->bitscore = DBL_MAX;
semi->currentmatch = NULL;
semi->querymatchoutoptions = NULL;
- semi->seedpos1 = semi->seedpos2 = semi->seedlen = GT_UWORD_MAX;
+ semi->in_display_flag = NULL;
+ semi->trace_delta = GT_SEED_EXTEND_DEFAULT_TRACE_DELTA;
+ semi->saved_options_line = NULL;
GT_INITARRAY(&semi->querymatch_table,GtQuerymatch);
- options_line_inputfileptr = fopen(semi->matchfilename, "r");
- if (options_line_inputfileptr == NULL)
+ defline_infp = fopen(semi->matchfilename, "r");
+ if (defline_infp == NULL)
{
gt_error_set(err, "file %s does not exist", semi->matchfilename);
had_err = -1;
@@ -119,14 +125,14 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
{
GtStr *options_line_buffer = gt_str_new();
/* read first line and evaluate tokens */
- if (gt_str_read_next_line(options_line_buffer,
- options_line_inputfileptr) != EOF)
+ if (gt_str_read_next_line(options_line_buffer,defline_infp) != EOF)
{
- char *tok, *lineptr = gt_str_get(options_line_buffer);
+ char *tok, *line_ptr = gt_str_get(options_line_buffer);
bool parse_ii = false, parse_qii = false, parse_minid = false,
- parse_history = false;;
+ parse_history = false, parse_outfmt = false;
- while (!had_err && (tok = strsep(&lineptr," ")) != NULL)
+ semi->saved_options_line = gt_str_clone(options_line_buffer);
+ while (!had_err && (tok = strsep(&line_ptr," ")) != NULL)
{
if (parse_minid || parse_history)
{
@@ -154,6 +160,21 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
}
continue;
}
+ if (parse_outfmt)
+ {
+ GtWord this_trace_delta;
+
+ if (sscanf(tok,"trace=" GT_WD,&this_trace_delta) == 1 ||
+ sscanf(tok,"dtrace=" GT_WD,&this_trace_delta) == 1)
+ {
+ if (this_trace_delta < 0)
+ {
+ gt_error_set(err,"value of trace= cannot be negative");
+ had_err = -1;
+ }
+ semi->trace_delta = (GtUword) this_trace_delta;
+ }
+ }
if (parse_ii)
{
gt_str_set(semi->ii, tok);
@@ -169,42 +190,47 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
if (strcmp(tok, "-ii") == 0)
{
parse_ii = true;
+ parse_outfmt = false;
continue;
}
if (strcmp(tok, "-qii") == 0)
{
parse_qii = true;
+ parse_outfmt = false;
continue;
}
if (strcmp(tok, "-minidentity") == 0)
{
parse_minid = true;
+ parse_outfmt = false;
continue;
}
if (strcmp(tok, "-history") == 0)
{
parse_history = true;
+ parse_outfmt = false;
continue;
}
if (strcmp(tok, "-mirror") == 0)
{
+ parse_outfmt = false;
semi->mirror = true; /* found -mirror option */
}
if (strcmp(tok, "-bias-parameters") == 0)
{
+ parse_outfmt = false;
semi->bias_parameters = true;
}
- if (strcmp(tok, "-seqlength-display") == 0)
+ if (strcmp(tok, "-outfmt") == 0)
{
- semi->seqlength_display = true;
+ parse_outfmt = true;
}
}
if (!had_err)
{
if (gt_str_length(semi->ii) == 0UL)
{
- gt_error_set(err, "need output of option string "
- "(run gt seed_extend with -v or -verify)");
+ gt_error_set(err, "missing option string");
had_err = -1;
}
if (semi->errorpercentage == 0)
@@ -218,12 +244,39 @@ GtSeedextendMatchIterator *gt_seedextend_match_iterator_new(
{
gt_error_set(err, "file %s is empty", semi->matchfilename);
had_err = -1;
- }
+ };
gt_str_delete(options_line_buffer);
}
- if (options_line_inputfileptr != NULL)
+ if (!had_err)
+ {
+ GtStr *fieldsline_buffer = gt_str_new();
+ GtStrArray *fields = NULL;
+
+ while (gt_str_read_next_line(fieldsline_buffer,defline_infp) != EOF &&
+ fields == NULL)
+ {
+ char *line_ptr = gt_str_get(fieldsline_buffer);
+ fields = gt_querymatch_read_Fields_line(line_ptr);
+
+ gt_str_reset(fieldsline_buffer);
+ }
+ gt_str_delete(fieldsline_buffer);
+ if (fields != NULL)
+ {
+ const GtSeedExtendDisplaySetMode setmode = GT_SEED_EXTEND_DISPLAY_SET_NO;
+
+ semi->in_display_flag = gt_querymatch_display_flag_new(fields,setmode,
+ err);
+ if (semi->in_display_flag == NULL)
+ {
+ had_err = -1;
+ }
+ gt_str_array_delete(fields);
+ }
+ }
+ if (defline_infp != NULL)
{
- fclose(options_line_inputfileptr);
+ fclose(defline_infp);
}
/* Load encseqs */
if (!had_err)
@@ -277,6 +330,7 @@ GtQuerymatch *gt_seedextend_match_iterator_next(GtSeedextendMatchIterator *semi)
{
bool selfmatch;
+ gt_assert(semi != NULL);
if (semi->currentmatchindex < GT_UWORD_MAX)
{
if (semi->currentmatchindex == semi->querymatch_table.nextfreeGtQuerymatch)
@@ -300,44 +354,23 @@ GtQuerymatch *gt_seedextend_match_iterator_next(GtSeedextendMatchIterator *semi)
break;
}
line_ptr = gt_str_get(semi->line_buffer);
- /* ignore comment lines; but print seeds if -seed-display is set */
gt_assert(line_ptr != NULL);
- if (line_ptr[0] != '\n')
+ if (line_ptr[0] != '\n' && line_ptr[0] != '#')
{
- if (line_ptr[0] == '#')
- {
- const char *seedwordptr = strstr(line_ptr, "seed:");
-
- if (seedwordptr != NULL)
- {
- int num = sscanf(seedwordptr + sizeof ("seed:"),
- GT_WU " " GT_WU " " GT_WU,
- &semi->seedpos1,&semi->seedpos2,
- &semi->seedlen);
- semi->has_seedline = num == 3 ? true : false;
- } else
- {
- semi->has_seedline = false;
- semi->seedpos1 = semi->seedpos2 = semi->seedlen = GT_UWORD_MAX;
- }
- } else
+ if (semi->in_display_flag == NULL)
{
- if (gt_querymatch_read_line(semi->querymatchptr,
- semi->seqlength_display,
- line_ptr,
- selfmatch,
- semi->seedpos1,
- semi->seedpos2,
- semi->seedlen,
- semi->aencseq,
- semi->bencseq))
- {
- gt_str_reset(semi->line_buffer);
- semi->seedpos1 = semi->seedpos2 = semi->seedlen = GT_UWORD_MAX;
- return semi->querymatchptr;
- }
+ return NULL;
}
+ gt_querymatch_read_line(semi->querymatchptr,
+ &semi->evalue,
+ &semi->bitscore,
+ line_ptr,
+ semi->in_display_flag,
+ selfmatch,
+ semi->aencseq,
+ semi->bencseq);
gt_str_reset(semi->line_buffer);
+ return semi->querymatchptr;
}
gt_str_reset(semi->line_buffer);
}
@@ -379,57 +412,53 @@ bool gt_seedextend_match_iterator_bias_parameters(
return semi->bias_parameters;
}
-bool gt_seedextend_match_iterator_seqlength_display(
+bool gt_seedextend_match_iterator_has_seed(
const GtSeedextendMatchIterator *semi)
{
gt_assert(semi != NULL);
- return semi->seqlength_display;
+ return gt_querymatch_has_seed(semi->in_display_flag);
}
-bool gt_seedextend_match_iterator_has_seedline(
+bool gt_seedextend_match_iterator_has_cigar(
const GtSeedextendMatchIterator *semi)
{
gt_assert(semi != NULL);
- if (semi->currentmatch != NULL)
- {
- return gt_querymatch_has_seed(semi->currentmatch);
- }
- return semi->has_seedline;
+ return gt_querymatch_cigar_display(semi->in_display_flag) ||
+ gt_querymatch_cigarX_display(semi->in_display_flag);
}
-GtQuerymatch *gt_seedextend_match_iterator_querymatch_ptr(
- GtSeedextendMatchIterator *semi)
+GtUword gt_seedextend_match_iterator_trace_delta(
+ const GtSeedextendMatchIterator *semi)
{
gt_assert(semi != NULL);
- return semi->querymatchptr;
+ return (gt_querymatch_trace_display(semi->in_display_flag) ||
+ gt_querymatch_dtrace_display(semi->in_display_flag))
+ ? semi->trace_delta : 0;
}
-GtUword gt_seedextend_match_iterator_seedlen(
- const GtSeedextendMatchIterator *semi)
+bool gt_seedextend_match_iterator_dtrace(const GtSeedextendMatchIterator *semi)
{
- gt_assert(semi != NULL && semi->has_seedline);
- return semi->seedlen;
+ return gt_querymatch_dtrace_display(semi->in_display_flag) ? true : false;
}
-GtUword gt_seedextend_match_iterator_seedpos1(
- const GtSeedextendMatchIterator *semi)
+double gt_seedextend_match_iterator_evalue(const GtSeedextendMatchIterator
+ *semi)
{
- gt_assert(semi != NULL && semi->has_seedline);
- return semi->seedpos1;
+ gt_assert(semi != NULL);
+ return semi->evalue;
}
-GtUword gt_seedextend_match_iterator_seedpos2(
- const GtSeedextendMatchIterator *semi)
+double gt_seedextend_match_iterator_bitscore(
+ const GtSeedextendMatchIterator *semi)
{
- gt_assert(semi != NULL && semi->has_seedline);
- return semi->seedpos2;
+ gt_assert(semi != NULL);
+ return semi->bitscore;
}
-void gt_seedextend_match_iterator_display_set(GtSeedextendMatchIterator *semi,
- unsigned int display_flag)
+void gt_seedextend_match_iterator_verify_alignment_set(
+ GtSeedextendMatchIterator *semi)
{
- gt_assert(semi != NULL);
- gt_querymatch_display_set(semi->querymatchptr,display_flag);
+ gt_querymatch_verify_alignment_set(semi->querymatchptr);
}
GtUword gt_seedextend_match_iterator_all_sorted(GtSeedextendMatchIterator *semi,
@@ -458,18 +487,30 @@ GtQuerymatch *gt_seedextend_match_iterator_get(
return gt_querymatch_table_get(&semi->querymatch_table,idx);
}
-void gt_seedextend_match_iterator_querymatchoutoptions_set(
+int gt_seedextend_match_iterator_querymatchoutoptions_set(
GtSeedextendMatchIterator *semi,
- bool generatealignment,
- bool showeoplist,
- GtUword alignmentwidth,
bool always_polished_ends,
- unsigned int display_flag)
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ GtError *err)
{
double matchscore_bias = GT_DEFAULT_MATCHSCORE_BIAS;
semi->querymatchoutoptions
- = gt_querymatchoutoptions_new(generatealignment,showeoplist,alignmentwidth);
+ = gt_querymatchoutoptions_new(out_display_flag,gt_str_get(semi->ii),err);
+ if (semi->querymatchoutoptions == NULL)
+ {
+ return -1;
+ }
+ gt_assert(semi->in_display_flag != NULL && out_display_flag != NULL);
+ if (gt_querymatch_cigar_display(semi->in_display_flag) &&
+ gt_querymatch_cigarX_display(out_display_flag))
+ {
+ gt_error_set(err,"match file with alignments in cigar format cannot be "
+ "converted to cigarX format");
+ return -1;
+ }
if (gt_seedextend_match_iterator_bias_parameters(semi))
{
matchscore_bias = gt_greedy_dna_sequence_bias_get(semi->aencseq);
@@ -479,6 +520,16 @@ void gt_seedextend_match_iterator_querymatchoutoptions_set(
matchscore_bias,
gt_seedextend_match_iterator_history_size(semi),
always_polished_ends,
- display_flag);
+ a_extend_char_access,
+ b_extend_char_access,
+ out_display_flag);
gt_querymatch_outoptions_set(semi->querymatchptr,semi->querymatchoutoptions);
+ return 0;
+}
+
+const char *gt_seedextend_match_iterator_Options_line(
+ const GtSeedextendMatchIterator *semi)
+{
+ gt_assert(semi != NULL && semi->saved_options_line != NULL);
+ return gt_str_get(semi->saved_options_line);
}
diff --git a/src/match/seed-extend-iter.h b/src/match/seed-extend-iter.h
index 97125f5..0f330fc 100644
--- a/src/match/seed-extend-iter.h
+++ b/src/match/seed-extend-iter.h
@@ -45,12 +45,6 @@ void gt_seedextend_match_iterator_delete(GtSeedextendMatchIterator *semi);
GtQuerymatch *gt_seedextend_match_iterator_next(
GtSeedextendMatchIterator *semi);
-/* The following functions set the display flag of the iterators
- querymatch-object. */
-
-void gt_seedextend_match_iterator_display_set(GtSeedextendMatchIterator *semi,
- unsigned int display_flag);
-
/* The following function reads all matches into an arrays and sorts the,. If
<ascending is true, then all matches are sorted in ascending order of
the query position they occur at. Otherwise, all matches are sorted in
@@ -73,13 +67,13 @@ GtQuerymatch *gt_seedextend_match_iterator_get(
list is required, then set <generatealignment> to <true>,
<alignmentwidth> to 0 and the other three boolean parameters to <false>. */
-void gt_seedextend_match_iterator_querymatchoutoptions_set(
+int gt_seedextend_match_iterator_querymatchoutoptions_set(
GtSeedextendMatchIterator *semi,
- bool generatealignment,
- bool showeoplist,
- GtUword alignmentwidth,
bool always_polished_ends,
- unsigned int display_flag);
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ const GtSeedExtendDisplayFlag *out_display_flag,
+ GtError *err);
/* The following function return different components of the iterator
object. */
@@ -99,80 +93,27 @@ GtUword gt_seedextend_match_iterator_errorpercentage(
bool gt_seedextend_match_iterator_bias_parameters(
const GtSeedextendMatchIterator *semi);
-bool gt_seedextend_match_iterator_seqlength_display(
+bool gt_seedextend_match_iterator_has_seed(
+ const GtSeedextendMatchIterator *semi);
+
+bool gt_seedextend_match_iterator_has_cigar(
const GtSeedextendMatchIterator *semi);
-bool gt_seedextend_match_iterator_has_seedline(
+GtUword gt_seedextend_match_iterator_trace_delta(
const GtSeedextendMatchIterator *semi);
-GtUword gt_seedextend_match_iterator_seedlen(
- const GtSeedextendMatchIterator *semi);
+bool gt_seedextend_match_iterator_dtrace(const GtSeedextendMatchIterator *semi);
-GtUword gt_seedextend_match_iterator_seedpos1(
- const GtSeedextendMatchIterator *semi);
+double gt_seedextend_match_iterator_evalue(const GtSeedextendMatchIterator
+ *semi);
-GtUword gt_seedextend_match_iterator_seedpos2(
- const GtSeedextendMatchIterator *semi);
+double gt_seedextend_match_iterator_bitscore(
+ const GtSeedextendMatchIterator *semi);
-#endif
+const char *gt_seedextend_match_iterator_Options_line(
+ const GtSeedextendMatchIterator *semi);
+
+void gt_seedextend_match_iterator_verify_alignment_set(
+ GtSeedextendMatchIterator *semi);
-/* Here is a typical use of the iterator: */
-#ifdef SOBANSKI_KEIL
- GtSeedextendMatchIterator *semi
- = gt_seedextend_match_iterator_new(matchfile,err);
-
- if (semi == NULL)
- {
- had_err = -1;
- } else
- {
- const bool ascending = false;
-
- gt_seedextend_match_iterator_querymatchoutoptions_set(
- semi,
- true,
- false,
- 0,
- false,
- false);
- (void) gt_seedextend_match_iterator_all_sorted(semi,ascending);
- while (true)
- {
- uint64_t queryseqnum;
- GtUword querystart, queryend;
- GtQuerymatch *querymatchptr = gt_seedextend_match_iterator_next(semi);
- if (querymatchptr == NULL)
- {
- break;
- }
- queryseqnum = gt_querymatch_queryseqnum(querymatchptr);
- querystart = gt_querymatch_querystart(querymatchptr);
- querend = querystart + gt_querymatch_querylen(querymatchptr) - 1;
- /* now process match in sequence queryseqnum with relativ
- start and endpositions querystart and queryend */
- }
- }
-
- /* When processing the chain first declare the following: */
-
- GtSeqorEncseq bseqorencseq;
-
- bseqorencseq.seq = NULL;
- bseqorencseq.encseq = bencseq;
-
- /* for each match in the chain */
-
- idx = chainelem->indexintableofallmatches;
- querymatchptr = gt_seedextend_match_iterator_get(semi,idx);
-
- if (gt_querymatch_process(querymatchptr,
- aencseq,
- &bseqorencseq,
- false) != 0)
- {
- GtAlignment *alignment = gt_querymatch_alignment_get(querymatchptr);
-
- /* now use feed the eoplist of the alignment with the required
- coordinates into the condenser */
- }
#endif
diff --git a/src/match/seed-extend.c b/src/match/seed-extend.c
index a51a4c3..340724d 100644
--- a/src/match/seed-extend.c
+++ b/src/match/seed-extend.c
@@ -15,16 +15,16 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <float.h>
#include "core/minmax.h"
#include "match/querymatch.h"
#include "match/xdrop.h"
-#include "match/esa-maxpairs.h"
#include "match/ft-front-prune.h"
-#include "match/ft-trimstat.h"
-#include "match/seed-extend.h"
#include "match/seq_or_encseq.h"
+#include "match/seed-extend.h"
-static GtUword score2distance(GtWord score,GtUword alignedlen)
+static GtUword gt_querymatch_score2distance(GtXdropscore score,
+ GtUword alignedlen)
{
if (score >= 0)
{
@@ -44,9 +44,9 @@ struct GtXdropmatchinfo
best_right;
GtXdropscore belowscore;
GtSeqabstract *useq, *vseq;
- GtWord errorpercentage;
- bool silent;
- unsigned int userdefinedleastlength;
+ GtUword userdefinedleastlength,
+ errorpercentage;
+ double evalue_threshold;
};
#include "match/seed-extend-params.h"
@@ -60,6 +60,7 @@ GtWord gt_optimalxdropbelowscore(GtUword errorpercentage,GtUword sensitivity)
GtXdropmatchinfo *gt_xdrop_matchinfo_new(GtUword userdefinedleastlength,
GtUword errorpercentage,
+ double evalue_threshold,
GtXdropscore xdropbelowscore,
GtUword sensitivity)
{
@@ -74,6 +75,7 @@ GtXdropmatchinfo *gt_xdrop_matchinfo_new(GtUword userdefinedleastlength,
xdropmatchinfo->res = gt_xdrop_resources_new(&xdropmatchinfo->arbitscores);
xdropmatchinfo->userdefinedleastlength = userdefinedleastlength;
xdropmatchinfo->errorpercentage = errorpercentage;
+ xdropmatchinfo->evalue_threshold = evalue_threshold;
if (xdropbelowscore == 0)
{
xdropmatchinfo->belowscore = gt_optimalxdropbelowscore(errorpercentage,
@@ -82,7 +84,6 @@ GtXdropmatchinfo *gt_xdrop_matchinfo_new(GtUword userdefinedleastlength,
{
xdropmatchinfo->belowscore = xdropbelowscore;
}
- xdropmatchinfo->silent = false;
return xdropmatchinfo;
}
@@ -105,92 +106,75 @@ void gt_xdrop_matchinfo_delete(GtXdropmatchinfo *xdropmatchinfo)
}
}
-void gt_xdrop_matchinfo_silent_set(GtXdropmatchinfo *xdropmatchinfo)
-{
- xdropmatchinfo->silent = true;
-}
-
typedef struct
{
- GtUword seedpos1, seedpos2, seedlen,
- dbseqnum, dbseqstartpos, dbseqlength,
- queryseqnum, query_totallength, queryseqstartpos;
+ GtUword dbseqnum, dbseqlength, db_seqstart, dbstart_relative,
+ queryseqnum, query_seqlen, query_seqstart, querystart_relative,
+ seedlength;
GtReadmode query_readmode;
- bool selfmatch;
+ bool same_encseq;
} GtSeedextendSeqpair;
+static GtUword gt_sesp_db_seedpos(const GtSeedextendSeqpair *sesp)
+{
+ gt_assert(sesp != NULL);
+ return sesp->dbstart_relative;
+}
+
+static GtUword gt_sesp_query_seedpos(const GtSeedextendSeqpair *sesp)
+{
+ gt_assert(sesp != NULL);
+ return sesp->querystart_relative;
+}
+
static void gt_sesp_from_absolute(GtSeedextendSeqpair *sesp,
const GtEncseq *dbencseq,
GtUword pos1,
const GtEncseq *queryencseq,
+ bool same_encseq,
GtUword pos2,
- GtUword len,
- bool selfmatch)
+ GtUword len)
{
- sesp->selfmatch = selfmatch;
- sesp->seedlen = len;
+ gt_assert(pos1 < pos2);
+ sesp->same_encseq = same_encseq;
+ sesp->seedlength = len;
sesp->dbseqnum = gt_encseq_seqnum(dbencseq,pos1),
- sesp->dbseqstartpos = gt_encseq_seqstartpos(dbencseq,sesp->dbseqnum),
+ sesp->db_seqstart = gt_encseq_seqstartpos(dbencseq,sesp->dbseqnum),
sesp->dbseqlength = gt_encseq_seqlength(dbencseq,sesp->dbseqnum);
- if (dbencseq == queryencseq && pos2 < sesp->dbseqstartpos + sesp->dbseqlength)
+ if (dbencseq == queryencseq && pos2 < sesp->db_seqstart + sesp->dbseqlength)
{ /* second match in same sequence */
sesp->queryseqnum = sesp->dbseqnum;
- sesp->queryseqstartpos = sesp->dbseqstartpos;
- sesp->query_totallength = sesp->dbseqlength;
+ sesp->query_seqstart = sesp->db_seqstart;
+ sesp->query_seqlen = sesp->dbseqlength;
} else
{
sesp->queryseqnum = gt_encseq_seqnum(queryencseq,pos2);
gt_assert(dbencseq != queryencseq || sesp->dbseqnum < sesp->queryseqnum);
- sesp->queryseqstartpos = gt_encseq_seqstartpos(queryencseq,
- sesp->queryseqnum);
- sesp->query_totallength = gt_encseq_seqlength(queryencseq,
- sesp->queryseqnum);
+ sesp->query_seqstart = gt_encseq_seqstartpos(queryencseq,sesp->queryseqnum);
+ sesp->query_seqlen = gt_encseq_seqlength(queryencseq,sesp->queryseqnum);
}
- sesp->seedpos1 = pos1;
- sesp->seedpos2 = pos2;
+ gt_assert(sesp->db_seqstart <= pos1);
+ sesp->dbstart_relative = pos1 - sesp->db_seqstart;
+ gt_assert(sesp->query_seqstart <= pos2);
+ sesp->querystart_relative = pos2 - sesp->query_seqstart;
sesp->query_readmode = GT_READMODE_FORWARD;
}
static void gt_sesp_from_relative(GtSeedextendSeqpair *sesp,
- const GtEncseq *dbencseq,
GtUword dbseqnum,
GtUword dbstart_relative,
- const GtEncseq *queryencseq,
+ bool same_encseq,
GtUword queryseqnum,
GtUword querystart_relative,
- GtUword query_totallength,
- GtUword len,
- bool selfmatch,
+ GtUword seedlength,
GtReadmode query_readmode)
{
- gt_assert(dbencseq != NULL);
- sesp->selfmatch = selfmatch;
- sesp->seedlen = len;
+ sesp->same_encseq = same_encseq;
+ sesp->seedlength = seedlength;
sesp->dbseqnum = dbseqnum;
- sesp->dbseqstartpos = gt_encseq_seqstartpos(dbencseq,sesp->dbseqnum),
- sesp->dbseqlength = gt_encseq_seqlength(dbencseq,sesp->dbseqnum);
sesp->queryseqnum = queryseqnum;
- if (dbencseq == queryencseq && dbseqnum == queryseqnum)
- {
- sesp->queryseqstartpos = sesp->dbseqstartpos;
- sesp->query_totallength = sesp->dbseqlength;
- } else
- {
- if (queryencseq == NULL)
- {
- sesp->queryseqstartpos = 0;
- sesp->query_totallength = query_totallength;
- } else
- {
- gt_assert(dbencseq != queryencseq || dbseqnum != queryseqnum);
- sesp->queryseqstartpos = gt_encseq_seqstartpos(queryencseq,
- sesp->queryseqnum);
- sesp->query_totallength = gt_encseq_seqlength(queryencseq,
- sesp->queryseqnum);
- }
- }
- sesp->seedpos1 = sesp->dbseqstartpos + dbstart_relative;
- sesp->seedpos2 = sesp->queryseqstartpos + querystart_relative;
+ sesp->dbstart_relative = dbstart_relative;
+ sesp->querystart_relative = querystart_relative;
sesp->query_readmode = query_readmode;
}
@@ -210,83 +194,91 @@ static void gt_xdrop_show_context(bool rightextension,
void gt_sesp_show(const GtSeedextendSeqpair *sesp)
{
- printf("seedpos1=" GT_WU ",seedpos2=" GT_WU ",seedlen=" GT_WU "\n",
- sesp->seedpos1,sesp->seedpos2,sesp->seedlen);
- printf("dbseqnum=" GT_WU ",dbseqstartpos=" GT_WU ",dpseqlength="
+ printf("db_seedpos=" GT_WU ",query_seedpos=" GT_WU ",seedlength=" GT_WU "\n",
+ gt_sesp_db_seedpos(sesp),
+ gt_sesp_query_seedpos(sesp),
+ sesp->seedlength);
+ printf("dbseqnum=" GT_WU ",db_seqstart=" GT_WU ",dpseqlength="
GT_WU "\n",
sesp->dbseqnum,
- sesp->dbseqstartpos,
+ sesp->db_seqstart,
sesp->dbseqlength);
- printf("queryseqnum=" GT_WU ",queryseqstartpos=" GT_WU ",query_totallength="
- GT_WU "\n",sesp->queryseqnum,sesp->queryseqstartpos,
- sesp->query_totallength);
+ printf("queryseqnum=" GT_WU ",query_seqstart=" GT_WU ",query_seqlen="
+ GT_WU "\n",sesp->queryseqnum,sesp->query_seqstart,sesp->query_seqlen);
}
-static const GtQuerymatch *gt_combine_extensions(
+static bool gt_combine_extensions(
bool forxdrop,
- GtQuerymatch *querymatchspaceptr,
- const GtEncseq *dbencseq,
- const GtSeqorEncseq *query,
+ GtProcessinfo_and_querymatchspaceptr *info_querymatch,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
const GtSeedextendSeqpair *sesp,
GtUword u_left_ext,
GtUword v_left_ext,
GtUword u_right_ext,
GtUword v_right_ext,
- GtXdropscore score,
+ GtXdropscore total_score,
GtUword total_distance,
- bool silent)
+ GtUword total_mismatches)
{
- GtUword dblen, dbseqlen, querylen, total_alignedlen, dbstart, querystart;
+ GtUword dblen, querylen, total_alignedlen;
- dblen = sesp->seedlen + u_left_ext + u_right_ext;
- querylen = sesp->seedlen + v_left_ext + v_right_ext;
+ dblen = sesp->seedlength + u_left_ext + u_right_ext;
+ querylen = sesp->seedlength + v_left_ext + v_right_ext;
total_alignedlen = dblen + querylen;
if (forxdrop)
{
- total_distance = score2distance(score,total_alignedlen);
+ total_distance = gt_querymatch_score2distance(total_score,total_alignedlen);
} else
{
- score = gt_querymatch_distance2score(total_distance,total_alignedlen);
+ total_score = gt_querymatch_distance2score(total_distance,total_alignedlen);
}
- gt_assert(sesp->seedpos1 >= u_left_ext && sesp->seedpos2 >= v_left_ext);
- dbstart = sesp->seedpos1 - u_left_ext;
- querystart = sesp->seedpos2 - v_left_ext;
- gt_assert(querystart >= sesp->queryseqstartpos);
+ gt_assert(sesp->dbstart_relative >= u_left_ext &&
+ sesp->querystart_relative >= v_left_ext);
#ifdef SKDEBUG
- printf("total_distance=" GT_WU ", score=" GT_WD ",total_alignedlen=" GT_WU
- ", err=%.2f\n",total_distance,score,total_alignedlen,
+ printf("total_distance=" GT_WU ", total_score=" GT_WD ",total_alignedlen="
+ GT_WU ", err=%.2f\n",total_distance,total_score,total_alignedlen,
gt_querymatch_error_rate(total_distance,total_alignedlen));
#endif
- if (silent)
- {
- return NULL;
- }
- dbseqlen = gt_encseq_seqlength(dbencseq,sesp->dbseqnum);
- if (gt_querymatch_complete(querymatchspaceptr,
+ info_querymatch->previous_match_a_start
+ = sesp->dbstart_relative - u_left_ext;
+ info_querymatch->previous_match_a_end
+ = info_querymatch->previous_match_a_start + dblen - 1;
+ info_querymatch->previous_match_b_start
+ = sesp->querystart_relative - v_left_ext;
+ info_querymatch->previous_match_b_end
+ = info_querymatch->previous_match_b_start + querylen - 1;
+ info_querymatch->previous_match_distance = total_distance;
+ info_querymatch->previous_match_mismatches = total_mismatches;
+ if (info_querymatch->querymatchspaceptr == NULL ||
+ gt_querymatch_complete(info_querymatch->querymatchspaceptr,
+ info_querymatch->out_display_flag,
dblen,
- dbstart,
sesp->dbseqnum,
- dbstart - sesp->dbseqstartpos,
- dbseqlen,
- score,
+ info_querymatch->previous_match_a_start,
+ sesp->db_seqstart,
+ sesp->dbseqlength,
+ (GtWord) total_score,
total_distance,
- query == NULL ? true : false,
- (uint64_t) sesp->queryseqnum,
+ total_mismatches,
+ sesp->same_encseq,
+ sesp->queryseqnum,
querylen,
- querystart - sesp->queryseqstartpos,
- dbencseq,
- query,
- sesp->query_totallength,
- sesp->seedpos1,
- sesp->seedpos2,
- sesp->seedlen,
- false))
+ info_querymatch->previous_match_b_start,
+ dbes,
+ queryes,
+ sesp->query_seqstart,
+ sesp->query_seqlen,
+ gt_sesp_db_seedpos(sesp),
+ gt_sesp_query_seedpos(sesp),
+ sesp->seedlength,
+ false)) /* greedyextension */
/*forxdrop ? false : true*/
{
- return querymatchspaceptr;
+ return true;
}
- return NULL;
+ return false;
}
#ifdef SKDEBUG
@@ -299,19 +291,26 @@ static void extensioncoords_show(bool forxdrop,bool rightextension,
rightextension ? "right" : "left",
u_ext + v_ext,
u_ext,
- forxdrop ? score2distance(score_or_distance,u_ext + v_ext)
+ forxdrop ? gt_querymatch_score2distance(score_or_distance,
+ u_ext + v_ext)
: (GtUword) score_or_distance);
}
#endif
+GtUword gt_xdrop_extend_belowscore(const GtXdropmatchinfo *xdropmatchinfo)
+{
+ gt_assert(xdropmatchinfo != NULL);
+ return xdropmatchinfo->belowscore;
+}
+
const char *gt_cam_extendgreedy_comment(void)
{
- return "specify character access mode: possible values: "
- "encseq, encseq_reader";
+ return "specify up to two comma-separated character access modes, the first "
+ "of which refers to sequence A and the second of which refers to "
+ "sequence b: possible values: encseq, encseq_reader, bytes, any";
}
-GtExtendCharAccess gt_greedy_extend_char_access(const char *cam_string,
- GtError *err)
+static int gt_parse_char_access(const char *cam_string,GtError *err)
{
if (strcmp(cam_string,"encseq") == 0)
{
@@ -321,7 +320,11 @@ GtExtendCharAccess gt_greedy_extend_char_access(const char *cam_string,
{
return GT_EXTEND_CHAR_ACCESS_ENCSEQ_READER;
}
- if (strcmp(cam_string,"") == 0)
+ if (strcmp(cam_string,"bytes") == 0)
+ {
+ return GT_EXTEND_CHAR_ACCESS_DIRECT;
+ }
+ if (strcmp(cam_string,"any") == 0)
{
return GT_EXTEND_CHAR_ACCESS_ANY;
}
@@ -330,6 +333,44 @@ GtExtendCharAccess gt_greedy_extend_char_access(const char *cam_string,
return -1;
}
+int gt_greedy_extend_char_access(GtExtendCharAccess *cam_a,
+ GtExtendCharAccess *cam_b,
+ const char *full_cam_string,
+ GtError *err)
+{
+ const char *comma_ptr = strchr(full_cam_string,(int) ',');
+ int had_err = 0;
+
+ if (comma_ptr != NULL)
+ {
+ char *copy = strdup(full_cam_string);
+ size_t comma_pos = (size_t) (comma_ptr - full_cam_string);
+
+ copy[comma_pos] = '\0';
+ *cam_a = gt_parse_char_access(copy,err);
+ if ((int) *cam_a == -1)
+ {
+ had_err = -1;
+ } else
+ {
+ *cam_b = gt_parse_char_access(comma_ptr + 1,err);
+ if ((int) *cam_b == -1)
+ {
+ had_err = -1;
+ }
+ }
+ free(copy);
+ } else
+ {
+ *cam_b = *cam_a = gt_parse_char_access(full_cam_string,err);
+ if ((int) *cam_b == -1)
+ {
+ had_err = -1;
+ }
+ }
+ return had_err;
+}
+
void gt_optimal_maxalilendiff_perc_mat_history(
GtUword *maxalignedlendifference,
GtUword *perc_mat_history,
@@ -371,20 +412,28 @@ void gt_optimal_maxalilendiff_perc_mat_history(
struct GtGreedyextendmatchinfo
{
- GtFronttrace *left_front_trace, *right_front_trace;
- const Polishing_info *pol_info;
+ GtFrontTrace *left_front_trace, *right_front_trace;
+ const GtFtPolishing_info *pol_info;
GtUword history,
maxalignedlendifference,
- errorpercentage,
perc_mat_history,
- db_totallength;
- unsigned int userdefinedleastlength;
- GtExtendCharAccess extend_char_access;
- bool check_extend_symmetry,
- silent;
- Trimstat *trimstat;
+ db_totallength,
+ userdefinedleastlength,
+ errorpercentage;
+ double evalue_threshold;
+ GtFtTrimstat *trimstat;
GtEncseqReader *encseq_r_in_u, *encseq_r_in_v;
GtAllocatedMemory usequence_cache, vsequence_cache, frontspace_reservoir;
+ GtTrimmingStrategy trimstrategy;
+ GtExtendCharAccess db_extend_char_access,
+ query_extend_char_access;
+ bool check_extend_symmetry,
+ showfrontinfo,
+ db_twobit_possible,
+ query_twobit_possible,
+ db_haswildcards,
+ query_haswildcards,
+ cam_generic;
};
static void gt_greedy_at_gc_count(GtUword *atcount,GtUword *gccount,
@@ -395,10 +444,12 @@ static void gt_greedy_at_gc_count(GtUword *atcount,GtUword *gccount,
gt_assert(gt_encseq_total_length(encseq) > 0);
if (gt_alphabet_is_dna(alpha))
{
- *atcount = gt_encseq_charcount(encseq, gt_alphabet_encode(alpha, 'a'));
- *atcount += gt_encseq_charcount(encseq, gt_alphabet_encode(alpha, 't'));
- *gccount = gt_encseq_charcount(encseq, gt_alphabet_encode(alpha, 'c'));
- *gccount += gt_encseq_charcount(encseq, gt_alphabet_encode(alpha, 'g'));
+ /* I now know that the characters ACGT are mapped in this order
+ in either lower case or upper case */
+ *atcount = gt_encseq_charcount(encseq, 0);
+ *atcount += gt_encseq_charcount(encseq, 3);
+ *gccount = gt_encseq_charcount(encseq, 1);
+ *gccount += gt_encseq_charcount(encseq, 2);
} else
{
*atcount = *gccount = 0;
@@ -463,22 +514,28 @@ void gt_greedy_show_matchscore_table(void)
}
GtGreedyextendmatchinfo *gt_greedy_extend_matchinfo_new(
- GtUword errorpercentage,
GtUword maxalignedlendifference,
GtUword history,
GtUword perc_mat_history,
GtUword userdefinedleastlength,
- GtExtendCharAccess extend_char_access,
+ GtUword errorpercentage,
+ double evalue_threshold,
+ GtExtendCharAccess db_extend_char_access,
+ GtExtendCharAccess query_extend_char_access,
+ bool cam_generic,
GtUword sensitivity,
- const Polishing_info *pol_info)
+ const GtFtPolishing_info *pol_info)
{
GtGreedyextendmatchinfo *ggemi = gt_malloc(sizeof *ggemi);
ggemi->left_front_trace = NULL;
ggemi->right_front_trace = NULL;
- ggemi->errorpercentage = errorpercentage;
ggemi->history = history;
+ ggemi->trimstrategy = GT_OUTSENSE_TRIM_ALWAYS;
+ ggemi->showfrontinfo = false;
ggemi->userdefinedleastlength = userdefinedleastlength;
+ ggemi->errorpercentage = errorpercentage;
+ ggemi->evalue_threshold = evalue_threshold;
gt_optimal_maxalilendiff_perc_mat_history(&ggemi->maxalignedlendifference,
&ggemi->perc_mat_history,
maxalignedlendifference,
@@ -496,10 +553,15 @@ GtGreedyextendmatchinfo *gt_greedy_extend_matchinfo_new(
ggemi->frontspace_reservoir.space = NULL;
ggemi->frontspace_reservoir.allocated = 0;
ggemi->frontspace_reservoir.offset = 0;
- ggemi->extend_char_access = extend_char_access;
+ ggemi->db_extend_char_access = db_extend_char_access;
+ ggemi->query_extend_char_access = query_extend_char_access;
ggemi->check_extend_symmetry = false;
- ggemi->silent = false;
ggemi->trimstat = NULL;
+ ggemi->db_twobit_possible = false;
+ ggemi->query_twobit_possible = false;
+ ggemi->db_haswildcards = true;
+ ggemi->query_haswildcards = true;
+ ggemi->cam_generic = cam_generic;
return ggemi;
}
@@ -511,16 +573,9 @@ void gt_greedy_extend_matchinfo_delete(GtGreedyextendmatchinfo *ggemi)
front_trace_delete(ggemi->right_front_trace);
gt_encseq_reader_delete(ggemi->encseq_r_in_u);
gt_encseq_reader_delete(ggemi->encseq_r_in_v);
- /*
- printf("usequence_cache.allocated=" GT_WU "\n",
- ggemi->usequence_cache.allocated);
- printf("vsequence_cache.allocated=" GT_WU "\n",
- ggemi->vsequence_cache.allocated);
- */
gt_free(ggemi->usequence_cache.space);
gt_free(ggemi->vsequence_cache.space);
gt_free(ggemi->frontspace_reservoir.space);
- trimstat_delete(ggemi->trimstat,0.0,true);
gt_free(ggemi);
}
}
@@ -532,45 +587,43 @@ void gt_greedy_extend_matchinfo_check_extend_symmetry_set(
ggemi->check_extend_symmetry = true;
}
-void gt_greedy_extend_matchinfo_silent_set(GtGreedyextendmatchinfo *ggemi)
+void gt_greedy_extend_matchinfo_trimstat_set(GtGreedyextendmatchinfo *ggemi,
+ GtFtTrimstat *trimstat)
{
gt_assert(ggemi != NULL);
- ggemi->silent = true;
-}
-
-void gt_greedy_extend_matchinfo_trimstat_set(GtGreedyextendmatchinfo *ggemi)
-{
- gt_assert(ggemi != NULL && ggemi->perc_mat_history > 0 &&
- ggemi->maxalignedlendifference > 0 && ggemi->trimstat == NULL);
- ggemi->trimstat = trimstat_new(ggemi->errorpercentage,
- ggemi->perc_mat_history,
- ggemi->maxalignedlendifference);
+ ggemi->trimstat = trimstat;
}
-static void gt_FTsequenceResources_init(FTsequenceResources *fsr,
+static void gt_FTsequenceResources_init(GtFTsequenceResources *fsr,
const GtEncseq *encseq,
GtReadmode readmode,
GtEncseqReader *encseq_r,
GtAllocatedMemory *sequence_cache,
const GtUchar *bytesequence,
GtUword totallength,
- GtExtendCharAccess extend_char_access)
+ GtUword full_totallength,
+ GtExtendCharAccess extend_char_access,
+ bool twobit_possible,
+ bool haswildcards)
{
fsr->encseq = encseq;
fsr->readmode = readmode;
fsr->totallength = totallength;
+ fsr->full_totallength = full_totallength;
fsr->encseq_r = encseq_r;
fsr->sequence_cache = sequence_cache;
fsr->bytesequence = bytesequence;
fsr->extend_char_access = extend_char_access;
+ fsr->twobit_possible = twobit_possible;
+ fsr->haswildcards = haswildcards;
}
-static void gt_greedy_extend_init(FTsequenceResources *ufsr,
- FTsequenceResources *vfsr,
- const GtEncseq *dbencseq,
- const GtSeqorEncseq *query,
+static void gt_greedy_extend_init(GtFTsequenceResources *ufsr,
+ GtFTsequenceResources *vfsr,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
GtReadmode query_readmode,
- const GtUword query_totallength,
+ const GtUword query_seqlen,
GtGreedyextendmatchinfo *ggemi)
{
if (ggemi->left_front_trace != NULL)
@@ -581,121 +634,192 @@ static void gt_greedy_extend_init(FTsequenceResources *ufsr,
{
front_trace_reset(ggemi->right_front_trace,0);
}
- if (ggemi->encseq_r_in_u == NULL)
+ if (dbes->encseq != NULL)
{
- ggemi->encseq_r_in_u
- = gt_encseq_create_reader_with_readmode(dbencseq,
- GT_READMODE_FORWARD,
- 0);
+ if (ggemi->encseq_r_in_u == NULL)
+ {
+ ggemi->encseq_r_in_u
+ = gt_encseq_create_reader_with_readmode(dbes->encseq,
+ GT_READMODE_FORWARD,
+ 0);
+ if (gt_encseq_wildcards(dbes->encseq) > 0)
+ {
+ ggemi->db_haswildcards = true;
+ ggemi->db_twobit_possible = false;
+ } else
+ {
+ ggemi->db_haswildcards = false;
+ if (ggemi->db_extend_char_access == GT_EXTEND_CHAR_ACCESS_ANY &&
+ gt_encseq_has_twobitencoding(dbes->encseq))
+ {
+ ggemi->db_twobit_possible = true;
+ } else
+ {
+ ggemi->db_twobit_possible = false;
+ }
+ }
+ }
+ } else
+ {
+ ggemi->db_twobit_possible = false;
+ ggemi->db_haswildcards = dbes->haswildcards;
}
- if ((query == NULL || query->encseq != NULL) && ggemi->encseq_r_in_v == NULL)
+ if (queryes->encseq != NULL)
{
- ggemi->encseq_r_in_v
- = gt_encseq_create_reader_with_readmode(query == NULL ? dbencseq
- : query->encseq,
- query_readmode,
- 0);
+ if (ggemi->encseq_r_in_v == NULL)
+ {
+ ggemi->encseq_r_in_v
+ = gt_encseq_create_reader_with_readmode(queryes->encseq,
+ query_readmode,0);
+ if (gt_encseq_wildcards(queryes->encseq) > 0)
+ {
+ ggemi->query_haswildcards = true;
+ ggemi->query_twobit_possible = false;
+ } else
+ {
+ ggemi->query_haswildcards = false;
+ if (ggemi->query_extend_char_access == GT_EXTEND_CHAR_ACCESS_ANY &&
+ gt_encseq_has_twobitencoding(queryes->encseq))
+ {
+ ggemi->query_twobit_possible = true;
+ } else
+ {
+ ggemi->query_twobit_possible = false;
+ }
+ }
+ }
+ } else
+ {
+ ggemi->query_twobit_possible = false;
+ ggemi->query_haswildcards = queryes->haswildcards;
}
if (ggemi->db_totallength == GT_UWORD_MAX)
{
- ggemi->db_totallength = gt_encseq_total_length(dbencseq);
+ if (dbes->encseq != NULL)
+ {
+ ggemi->db_totallength = gt_encseq_total_length(dbes->encseq);
+ } else
+ {
+ ggemi->db_totallength = 0;
+ }
+ }
+ if (dbes->encseq != NULL)
+ {
+ gt_FTsequenceResources_init(ufsr,
+ dbes->encseq,
+ GT_READMODE_FORWARD,
+ ggemi->encseq_r_in_u,
+ &ggemi->usequence_cache,
+ NULL,
+ ggemi->db_totallength,
+ ggemi->db_totallength,
+ ggemi->db_extend_char_access,
+ ggemi->db_twobit_possible,
+ ggemi->db_haswildcards);
+ } else
+ {
+ gt_FTsequenceResources_init(ufsr,
+ NULL,
+ GT_READMODE_FORWARD,
+ ggemi->encseq_r_in_u,
+ &ggemi->usequence_cache,
+ dbes->seq,
+ dbes->seqlength,
+ 0,
+ GT_EXTEND_CHAR_ACCESS_DIRECT,
+ false,
+ ggemi->db_haswildcards);
}
- gt_FTsequenceResources_init(ufsr,
- dbencseq,
- GT_READMODE_FORWARD,
- ggemi->encseq_r_in_u,
- &ggemi->usequence_cache,
- NULL,
- ggemi->db_totallength,
- ggemi->extend_char_access);
- gt_assert(query == NULL || (query->seq != NULL && query->encseq == NULL) ||
- (query->seq == NULL && query->encseq != NULL));
- if (query == NULL)
+ if (queryes->encseq != NULL)
{
gt_FTsequenceResources_init(vfsr,
- dbencseq,
+ queryes->encseq,
query_readmode,
ggemi->encseq_r_in_v,
&ggemi->vsequence_cache,
NULL,
- ggemi->db_totallength,
- ggemi->extend_char_access);
+ query_seqlen,
+ gt_encseq_total_length(queryes->encseq),
+ ggemi->query_extend_char_access,
+ ggemi->query_twobit_possible,
+ ggemi->query_haswildcards);
} else
{
- if (query->seq != NULL)
- {
- gt_FTsequenceResources_init(vfsr,
- NULL,
- query_readmode,
- ggemi->encseq_r_in_v,
- &ggemi->vsequence_cache,
- query->seq,
- query_totallength,
- GT_EXTEND_CHAR_ACCESS_DIRECT);
- } else
- {
- gt_assert(query->encseq != NULL);
- gt_FTsequenceResources_init(vfsr,
- query->encseq,
- query_readmode,
- ggemi->encseq_r_in_v,
- &ggemi->vsequence_cache,
- NULL,
- query_totallength,
- ggemi->extend_char_access);
- }
+ gt_FTsequenceResources_init(vfsr,
+ NULL,
+ query_readmode,
+ ggemi->encseq_r_in_v,
+ &ggemi->vsequence_cache,
+ queryes->seq,
+ query_seqlen,
+ 0,
+ GT_EXTEND_CHAR_ACCESS_DIRECT,
+ false,
+ ggemi->query_haswildcards);
}
}
-GtUword gt_align_front_prune_edist(bool rightextension,
- Polished_point *best_polished_point,
- GtFronttrace *front_trace,
- const GtEncseq *dbencseq,
- const GtSeqorEncseq *query,
- GtReadmode query_readmode,
- GtUword queryseqstartpos,
- GtUword query_totallength,
- GtGreedyextendmatchinfo *ggemi,
- bool greedyextension,
- GtUword seedlength,
- GtUword ustart,
- GtUword ulen,
- GtUword vstart,
- GtUword vlen)
+void gt_align_front_prune_edist(bool rightextension,
+ GtFtPolished_point *best_polished_point,
+ GtFrontTrace *front_trace,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ GtReadmode query_readmode,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtGreedyextendmatchinfo *ggemi,
+ bool greedyextension,
+ GtUword seedlength,
+ GtUword ustart,
+ GtUword ulen,
+ GtUword vstart,
+ GtUword vlen)
{
GtUword distance = 0, iteration, maxiterations;
- FTsequenceResources ufsr, vfsr;
+ GtFTsequenceResources ufsr, vfsr;
+ const GtUword vseqstartpos = queryes->encseq != NULL ? query_seqstart : 0;
gt_assert(ggemi != NULL);
- gt_greedy_extend_init(&ufsr,&vfsr,dbencseq,query,query_readmode,
- query_totallength,ggemi);
+ gt_greedy_extend_init(&ufsr,&vfsr,
+ dbes,queryes,query_readmode,
+ query_seqlen,ggemi);
maxiterations = greedyextension ? 1 : ggemi->perc_mat_history;
gt_assert(best_polished_point != NULL);
- for (iteration = 0; iteration < maxiterations; iteration++)
+ for (iteration = 0; iteration <= maxiterations; iteration++)
{
+ GtTrimmingStrategy trimstrategy;
#ifdef SKDEBUG
printf("%s: iteration " GT_WU "\n",__func__,iteration);
#endif
+ if (iteration == maxiterations)
+ {
+ trimstrategy = GT_OUTSENSE_TRIM_NEVER;
+ } else
+ {
+ trimstrategy = ggemi->trimstrategy;
+ }
gt_assert(iteration < ggemi->perc_mat_history);
distance = front_prune_edist_inplace(rightextension,
&ggemi->frontspace_reservoir,
- NULL, /* trimstat */
best_polished_point,
front_trace,
ggemi->pol_info,
+ trimstrategy,
ggemi->history,
ggemi->perc_mat_history - iteration,
ggemi->maxalignedlendifference
+ iteration,
+ ggemi->showfrontinfo,
seedlength,
&ufsr,
ustart,
ulen,
- (query == NULL || query->seq != NULL)
- ? 0 : queryseqstartpos,
+ vseqstartpos,
&vfsr,
vstart,
- vlen);
+ vlen,
+ ggemi->cam_generic,
+ NULL); /* trimstat */
if (distance < ulen + vlen + 1)
{
#ifdef SKDEBUG
@@ -706,7 +830,7 @@ GtUword gt_align_front_prune_edist(bool rightextension,
rightextension ? "right" : "left",
u_ext + v_ext,
u_ext,
- (GtWord) best_polished_point->distance);
+ best_polished_point->distance);
#endif
break;
}
@@ -718,9 +842,10 @@ GtUword gt_align_front_prune_edist(bool rightextension,
best_polished_point->row = 0;
best_polished_point->distance = 0;
best_polished_point->trimleft = 0;
+ best_polished_point->max_mismatches = 0;
}
- gt_assert(distance >= best_polished_point->distance);
- return distance;
+ gt_assert(distance >= best_polished_point->distance &&
+ distance < ulen + vlen + 1);
}
GtUword gt_minidentity2errorpercentage(GtUword minidentity)
@@ -743,7 +868,7 @@ GtUword gt_minidentity2errorpercentage(GtUword minidentity)
char *gt_seed_extend_params_keystring(bool use_greedy,
bool forxdrop,
unsigned int seedlength,
- unsigned int userdefinedleastlength,
+ GtUword userdefinedleastlength,
GtUword minidentity,
GtUword maxalignedlendifference,
GtUword perc_mat_history,
@@ -759,7 +884,7 @@ char *gt_seed_extend_params_keystring(bool use_greedy,
GT_SEED_EXTEND_PARAMS_APPEND("%s",use_greedy ? "greedy-" : "xdrop-");
}
GT_SEED_EXTEND_PARAMS_APPEND("%u",seedlength);
- GT_SEED_EXTEND_PARAMS_APPEND("-%u",userdefinedleastlength);
+ GT_SEED_EXTEND_PARAMS_APPEND("-" GT_WU,userdefinedleastlength);
if (use_greedy || forxdrop)
{
GT_SEED_EXTEND_PARAMS_APPEND("-" GT_WU,100 -
@@ -803,160 +928,158 @@ static void gt_seqabstract_reinit_generic(bool rightextension,
const GtSeqorEncseq *seqorencseq,
GtUword len,
GtUword offset,
- GtUword queryseqstartpos,
- GtUword query_totallength)
+ GtUword seqstartpos,
+ GtUword seqlength)
{
- if (seqorencseq->seq != NULL)
- {
- gt_seqabstract_reinit_gtuchar(rightextension,
- query_readmode,
- seqabstract,
- seqorencseq->seq,
- len,
- offset,
- query_totallength);
- } else
+ if (seqorencseq->encseq != NULL)
{
/* it is important to set it before the next call */
- gt_seqabstract_seqstartpos_set(seqabstract,queryseqstartpos);
- gt_seqabstract_totallength_set(seqabstract,query_totallength);
+ if (GT_ISDIRREVERSE(query_readmode))
+ {
+ gt_seqabstract_seqstartpos_set(seqabstract,seqstartpos);
+ gt_seqabstract_totallength_set(seqabstract,seqlength);
+ }
gt_seqabstract_reinit_encseq(rightextension,
query_readmode,
seqabstract,
seqorencseq->encseq,
len,
offset);
+ } else
+ {
+ gt_seqabstract_reinit_gtuchar(rightextension,
+ query_readmode,
+ seqabstract,
+ seqorencseq->seq,
+ len,
+ offset,
+ seqlength);
}
}
-static const GtQuerymatch *gt_extend_sesp(bool forxdrop,
- void *info,
- const GtEncseq *dbencseq,
- const GtSeqorEncseq *query,
- const GtSeedextendSeqpair *sesp)
+static bool gt_extend_sesp(bool forxdrop,
+ void *info,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ const GtSeedextendSeqpair *sesp)
{
- GtProcessinfo_and_querymatchspaceptr *processinfo_and_querymatchspaceptr
+ GtProcessinfo_and_querymatchspaceptr *info_querymatch
= (GtProcessinfo_and_querymatchspaceptr *) info;
GtGreedyextendmatchinfo *greedyextendmatchinfo = NULL;
GtXdropmatchinfo *xdropmatchinfo = NULL;
- GtUword u_left_ext, v_left_ext, u_right_ext, v_right_ext,
- ulen, vlen, urightbound, vrightbound;
- GtXdropscore score = 0;
- FTsequenceResources ufsr, vfsr;
- Polished_point left_best_polished_point = {0,0,0},
- right_best_polished_point = {0,0,0};
+ GtUword u_left_ext, v_left_ext, u_right_ext, v_right_ext, r_urightbound;
+ GtXdropscore total_score = 0;
+ GtFTsequenceResources ufsr, vfsr;
+ GtFtPolished_point left_best_polished_point = {0,0,0,0,0},
+ right_best_polished_point = {0,0,0,0,0};
const bool rightextension = true;
+ const GtUword vseqstartpos = queryes->encseq != NULL
+ ? sesp->query_seqstart : 0;
- if (query == NULL)
+ if (sesp->same_encseq && sesp->dbseqnum == sesp->queryseqnum &&
+ sesp->dbstart_relative + sesp->seedlength - 1 >=
+ sesp->querystart_relative)
{
- gt_assert(sesp->seedpos1 < sesp->seedpos2);
- if (sesp->seedpos1 + sesp->seedlen >= sesp->seedpos2)
- {
- /* overlapping seeds */
- return NULL;
- }
- } else
- {
- if (GT_ISDIRREVERSE(sesp->query_readmode) && sesp->selfmatch &&
- sesp->seedpos1 + sesp->seedlen >= sesp->seedpos2)
- {
- return NULL;
- }
+ return NULL;
}
if (forxdrop)
{
- xdropmatchinfo = processinfo_and_querymatchspaceptr->processinfo;
+ xdropmatchinfo = info_querymatch->processinfo;
+ xdropmatchinfo->best_left.ivalue = 0;
+ xdropmatchinfo->best_left.jvalue = 0;
+ xdropmatchinfo->best_left.score = 0;
+ xdropmatchinfo->best_right.ivalue = 0;
+ xdropmatchinfo->best_right.jvalue = 0;
+ xdropmatchinfo->best_right.score = 0;
} else
{
- greedyextendmatchinfo = processinfo_and_querymatchspaceptr->processinfo;
- gt_greedy_extend_init(&ufsr,&vfsr,dbencseq, query, sesp->query_readmode,
- sesp->query_totallength, greedyextendmatchinfo);
+ greedyextendmatchinfo = info_querymatch->processinfo;
+ gt_greedy_extend_init(&ufsr,
+ &vfsr,
+ dbes,
+ queryes,
+ sesp->query_readmode,
+ sesp->query_seqlen,
+ greedyextendmatchinfo);
}
- if (sesp->seedpos1 > sesp->dbseqstartpos &&
- sesp->seedpos2 > sesp->queryseqstartpos)
+ if (sesp->dbstart_relative > 0 && sesp->querystart_relative > 0)
{ /* there is something to align on the left of the seed */
- GtUword uoffset, voffset;
-
- ulen = sesp->seedpos1 - sesp->dbseqstartpos;
- uoffset = sesp->dbseqstartpos;
- if (forxdrop)
- {
- gt_seqabstract_reinit_encseq(!rightextension,GT_READMODE_FORWARD,
- xdropmatchinfo->useq, dbencseq,ulen,uoffset);
- }
- if (query == NULL)
- {
- voffset = MAX(sesp->seedpos1 + sesp->seedlen, sesp->queryseqstartpos);
+ const GtUword uoffset = sesp->db_seqstart,
+ ulen = sesp->dbstart_relative,
/* stop extension at left instance of seed or querystart,
whichever is larger */
- vlen = sesp->seedpos2 - voffset;
- if (forxdrop)
- {
- gt_seqabstract_reinit_encseq(!rightextension,
- sesp->query_readmode,
- xdropmatchinfo->vseq,
- dbencseq,
- vlen,
- voffset);
- }
- } else
+ r_voffset = (sesp->same_encseq &&
+ sesp->dbseqnum == sesp->queryseqnum)
+ ? sesp->dbstart_relative + sesp->seedlength : 0;
+ GtUword vlen;
+
+ gt_assert(r_voffset <= sesp->querystart_relative);
+ vlen = sesp->querystart_relative - r_voffset;
+ if (ulen > 0 && vlen > 0)
{
- voffset = sesp->queryseqstartpos;
- vlen = sesp->seedpos2 - voffset;
if (forxdrop)
{
gt_seqabstract_reinit_generic(!rightextension,
+ GT_READMODE_FORWARD,
+ xdropmatchinfo->useq,
+ dbes,
+ ulen,
+ uoffset,
+ sesp->db_seqstart,
+ sesp->dbseqlength);
+ gt_seqabstract_reinit_generic(!rightextension,
sesp->query_readmode,
xdropmatchinfo->vseq,
- query,
+ queryes,
vlen,
- voffset,
- sesp->queryseqstartpos,
- sesp->query_totallength);
+ sesp->query_seqstart + r_voffset,
+ sesp->query_seqstart,
+ sesp->query_seqlen);
+ #ifdef SKDEBUG
+ gt_xdrop_show_context(!rightextension,xdropmatchinfo);
+ #endif
+ gt_evalxdroparbitscoresextend(!rightextension,
+ &xdropmatchinfo->best_left,
+ xdropmatchinfo->res,
+ xdropmatchinfo->useq,
+ xdropmatchinfo->vseq,
+ xdropmatchinfo->belowscore);
+ } else
+ {
+ (void) front_prune_edist_inplace(!rightextension,
+ &greedyextendmatchinfo->
+ frontspace_reservoir,
+ &left_best_polished_point,
+ greedyextendmatchinfo->
+ left_front_trace,
+ greedyextendmatchinfo->pol_info,
+ greedyextendmatchinfo->trimstrategy,
+ greedyextendmatchinfo->history,
+ greedyextendmatchinfo->
+ perc_mat_history,
+ greedyextendmatchinfo->
+ maxalignedlendifference,
+ greedyextendmatchinfo->showfrontinfo,
+ sesp->seedlength,
+ &ufsr,
+ uoffset,
+ ulen,
+ /* as the readmode for the
+ sequence u is always forward,
+ we do not need the start position
+ of the sequence for u. As the
+ readmode for v can be reversed,
+ we need the start of the sequence
+ to correctly obtain the offset
+ when using the reverse mode */
+ vseqstartpos,
+ &vfsr,
+ sesp->query_seqstart + r_voffset,
+ vlen,
+ greedyextendmatchinfo->cam_generic,
+ greedyextendmatchinfo->trimstat);
}
}
- if (forxdrop)
- {
-#ifdef SKDEBUG
- gt_xdrop_show_context(!rightextension,xdropmatchinfo);
-#endif
- gt_evalxdroparbitscoresextend(!rightextension,
- &xdropmatchinfo->best_left,
- xdropmatchinfo->res,
- xdropmatchinfo->useq,
- xdropmatchinfo->vseq,
- xdropmatchinfo->belowscore);
- } else
- {
- (void) front_prune_edist_inplace(!rightextension,
- &greedyextendmatchinfo->
- frontspace_reservoir,
- greedyextendmatchinfo->trimstat,
- &left_best_polished_point,
- greedyextendmatchinfo->left_front_trace,
- greedyextendmatchinfo->pol_info,
- greedyextendmatchinfo->history,
- greedyextendmatchinfo->perc_mat_history,
- greedyextendmatchinfo->
- maxalignedlendifference,
- sesp->seedlen,
- &ufsr,
- uoffset,
- ulen,
- (query == NULL || query->seq != NULL)
- ? 0 : sesp->queryseqstartpos,
- &vfsr,
- voffset,
- vlen);
- }
- } else
- {
- if (forxdrop)
- {
- xdropmatchinfo->best_left.ivalue = 0;
- xdropmatchinfo->best_left.jvalue = 0;
- xdropmatchinfo->best_left.score = 0;
- }
}
if (forxdrop)
{
@@ -976,49 +1099,45 @@ static const GtQuerymatch *gt_extend_sesp(bool forxdrop,
(GtWord) left_best_polished_point.distance);
#endif
}
- if (query == NULL)
+ if (sesp->same_encseq && sesp->dbseqnum == sesp->queryseqnum)
{
- gt_assert(sesp->seedpos2 >= v_left_ext);
- urightbound = MIN(sesp->dbseqstartpos + sesp->dbseqlength,
- sesp->seedpos2 - v_left_ext);
+ gt_assert(sesp->querystart_relative >= v_left_ext);
+ r_urightbound = MIN(sesp->dbseqlength,
+ sesp->querystart_relative - v_left_ext);
} else
{
- urightbound = sesp->dbseqstartpos + sesp->dbseqlength;
+ r_urightbound = sesp->dbseqlength;
}
- vrightbound = sesp->queryseqstartpos + sesp->query_totallength;
- if (sesp->seedpos1 + sesp->seedlen < urightbound &&
- sesp->seedpos2 + sesp->seedlen < vrightbound)
+ if (sesp->dbstart_relative + sesp->seedlength < r_urightbound &&
+ sesp->querystart_relative + sesp->seedlength < sesp->query_seqlen)
{ /* there is something to align on the right of the seed */
/* stop extension at right instance of extended seed */
- ulen = urightbound - (sesp->seedpos1 + sesp->seedlen);
- vlen = vrightbound - (sesp->seedpos2 + sesp->seedlen);
+ const GtUword ulen = r_urightbound -
+ (sesp->dbstart_relative + sesp->seedlength);
+ const GtUword vlen = sesp->query_seqlen -
+ (sesp->querystart_relative + sesp->seedlength);
if (forxdrop)
{
- gt_seqabstract_reinit_encseq(rightextension,
- GT_READMODE_FORWARD,
- xdropmatchinfo->useq,
- dbencseq,
- ulen,
- sesp->seedpos1 + sesp->seedlen);
- if (query == NULL)
- {
- gt_seqabstract_reinit_encseq(rightextension,
- sesp->query_readmode,
- xdropmatchinfo->vseq,
- dbencseq,
- vlen,
- sesp->seedpos2 + sesp->seedlen);
- } else
- {
- gt_seqabstract_reinit_generic(rightextension,
- sesp->query_readmode,
- xdropmatchinfo->vseq,
- query,
- vlen,
- sesp->seedpos2 + sesp->seedlen,
- sesp->queryseqstartpos,
- sesp->query_totallength);
- }
+ gt_seqabstract_reinit_generic(rightextension,
+ GT_READMODE_FORWARD,
+ xdropmatchinfo->useq,
+ dbes,
+ ulen,
+ sesp->db_seqstart +
+ gt_sesp_db_seedpos(sesp) +
+ sesp->seedlength,
+ sesp->db_seqstart,
+ sesp->dbseqlength);
+ gt_seqabstract_reinit_generic(rightextension,
+ sesp->query_readmode,
+ xdropmatchinfo->vseq,
+ queryes,
+ vlen,
+ sesp->query_seqstart +
+ gt_sesp_query_seedpos(sesp) +
+ sesp->seedlength,
+ sesp->query_seqstart,
+ sesp->query_seqlen);
#ifdef SKDEBUG
gt_xdrop_show_context(rightextension,xdropmatchinfo);
#endif
@@ -1033,31 +1152,29 @@ static const GtQuerymatch *gt_extend_sesp(bool forxdrop,
(void) front_prune_edist_inplace(rightextension,
&greedyextendmatchinfo->
frontspace_reservoir,
- greedyextendmatchinfo->trimstat,
&right_best_polished_point,
greedyextendmatchinfo->right_front_trace,
greedyextendmatchinfo->pol_info,
+ greedyextendmatchinfo->trimstrategy,
greedyextendmatchinfo->history,
greedyextendmatchinfo->perc_mat_history,
greedyextendmatchinfo->
maxalignedlendifference,
- sesp->seedlen,
+ greedyextendmatchinfo->showfrontinfo,
+ sesp->seedlength,
&ufsr,
- sesp->seedpos1 + sesp->seedlen,
+ sesp->db_seqstart +
+ gt_sesp_db_seedpos(sesp) +
+ sesp->seedlength,
ulen,
- (query == NULL || query->seq != NULL)
- ? 0 : sesp->queryseqstartpos,
+ vseqstartpos,
&vfsr,
- sesp->seedpos2 + sesp->seedlen,
- vlen);
- }
- } else
- {
- if (forxdrop)
- {
- xdropmatchinfo->best_right.ivalue = 0;
- xdropmatchinfo->best_right.jvalue = 0;
- xdropmatchinfo->best_right.score = 0;
+ sesp->query_seqstart +
+ gt_sesp_query_seedpos(sesp) +
+ sesp->seedlength,
+ vlen,
+ greedyextendmatchinfo->cam_generic,
+ greedyextendmatchinfo->trimstat);
}
}
if (forxdrop)
@@ -1068,9 +1185,10 @@ static const GtQuerymatch *gt_extend_sesp(bool forxdrop,
extensioncoords_show(true,rightextension,u_right_ext,v_right_ext,
xdropmatchinfo->best_right.score);
#endif
- score = (GtXdropscore) sesp->seedlen * xdropmatchinfo->arbitscores.mat +
- xdropmatchinfo->best_left.score +
- xdropmatchinfo->best_right.score;
+ total_score
+ = (GtXdropscore) sesp->seedlength * xdropmatchinfo->arbitscores.mat +
+ xdropmatchinfo->best_left.score +
+ xdropmatchinfo->best_right.score;
} else
{
u_right_ext = right_best_polished_point.row;
@@ -1091,322 +1209,283 @@ static const GtQuerymatch *gt_extend_sesp(bool forxdrop,
}
return gt_combine_extensions(
forxdrop,
- processinfo_and_querymatchspaceptr->querymatchspaceptr,
- dbencseq,
- query,
+ info_querymatch,
+ dbes,
+ queryes,
sesp,
u_left_ext,
v_left_ext,
u_right_ext,
v_right_ext,
- forxdrop ? score : 0,
+ forxdrop ? total_score : 0,
forxdrop ? 0 : (left_best_polished_point.distance +
right_best_polished_point.distance),
- forxdrop ? xdropmatchinfo->silent
- : greedyextendmatchinfo->silent);
+ forxdrop ? 0 : (left_best_polished_point.max_mismatches +
+ right_best_polished_point.max_mismatches));
}
-const GtQuerymatch *gt_extend_selfmatch(bool forxdrop,
- void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2)
+static bool gt_extend_seed_relative(bool forxdrop,
+ void *info,
+ const GtSeqorEncseq *dbes,
+ GtUword dbseqnum,
+ GtUword dbstart_relative,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq,
+ GtUword queryseqnum,
+ GtUword querystart_relative,
+ GtUword len,
+ GtReadmode query_readmode)
+{
+ GtSeedextendSeqpair sesp;
+
+ sesp.db_seqstart = (dbes->encseq != NULL) ? dbes->seqstartpos : 0;
+ sesp.dbseqlength = dbes->seqlength;
+ sesp.query_seqstart = (queryes->encseq != NULL) ? queryes->seqstartpos : 0;
+ sesp.query_seqlen = queryes->seqlength;
+ gt_sesp_from_relative(&sesp,
+ dbseqnum,
+ dbstart_relative,
+ same_encseq,
+ queryseqnum,
+ querystart_relative,
+ len,
+ query_readmode);
+ return gt_extend_sesp(forxdrop, info, dbes, queryes, &sesp);
+}
+
+bool gt_xdrop_extend_seed_relative(void *info,
+ const GtSeqorEncseq *dbes,
+ GtUword dbseqnum,
+ GtUword dbstart_relative,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq,
+ GtUword queryseqnum,
+ GtUword querystart_relative,
+ GtUword len,
+ GtReadmode query_readmode)
+{
+ return gt_extend_seed_relative(true,
+ info,
+ dbes,
+ dbseqnum,
+ dbstart_relative,
+ queryes,
+ same_encseq,
+ queryseqnum,
+ querystart_relative,
+ len,
+ query_readmode);
+}
+
+bool gt_greedy_extend_seed_relative(void *info,
+ const GtSeqorEncseq *dbes,
+ GtUword dbseqnum,
+ GtUword dbstart_relative,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq,
+ GtUword queryseqnum,
+ GtUword querystart_relative,
+ GtUword len,
+ GtReadmode query_readmode)
+{
+ return gt_extend_seed_relative(false,
+ info,
+ dbes,
+ dbseqnum,
+ dbstart_relative,
+ queryes,
+ same_encseq,
+ queryseqnum,
+ querystart_relative,
+ len,
+ query_readmode);
+}
+
+static bool gt_rf_extend_selfmatch(bool forxdrop,
+ void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2)
{
GtSeedextendSeqpair sesp;
+ GtSeqorEncseq queryes;
- gt_sesp_from_absolute(&sesp,encseq, pos1, encseq, pos2, len,true);
- return gt_extend_sesp (forxdrop,info, encseq, NULL, &sesp);
+ gt_sesp_from_absolute(&sesp, encseq, pos1, encseq, true, pos2, len);
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&queryes,encseq);
+ return gt_extend_sesp (forxdrop,info, &queryes, &queryes, &sesp);
}
-static void gt_extend_prettyprint(bool forxdrop,const GtQuerymatch *querymatch,
- void *info)
+static void gt_rf_seed_extend_prettyprint(bool forxdrop,void *info)
{
- GtProcessinfo_and_querymatchspaceptr *processinfo_and_querymatchspaceptr
+ GtProcessinfo_and_querymatchspaceptr *info_querymatch
= (GtProcessinfo_and_querymatchspaceptr *) info;
- GtUword errorpercentage, userdefinedleastlength;
+ GtUword userdefinedleastlength, errorpercentage;
+ double evalue, bit_score, evalue_threshold;
+ gt_assert(info_querymatch != NULL);
if (forxdrop)
{
- GtXdropmatchinfo *xdropmatchinfo
- = processinfo_and_querymatchspaceptr->processinfo;
- errorpercentage = xdropmatchinfo->errorpercentage;
+ GtXdropmatchinfo *xdropmatchinfo = info_querymatch->processinfo;
userdefinedleastlength = xdropmatchinfo->userdefinedleastlength;
+ errorpercentage = xdropmatchinfo->errorpercentage;
+ evalue_threshold = xdropmatchinfo->evalue_threshold;
} else
{
- GtGreedyextendmatchinfo *ggemi
- = processinfo_and_querymatchspaceptr->processinfo;
- errorpercentage = ggemi->errorpercentage;
+ GtGreedyextendmatchinfo *ggemi = info_querymatch->processinfo;
userdefinedleastlength = ggemi->userdefinedleastlength;
+ errorpercentage = ggemi->errorpercentage;
+ evalue_threshold = ggemi->evalue_threshold;
}
- if (gt_querymatch_check_final(querymatch,errorpercentage,
- userdefinedleastlength))
- {
- gt_querymatch_prettyprint(querymatch);
- }
-}
-
-static int gt_extend_selfmatch_with_output(bool forxdrop,
- void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2,
- GT_UNUSED GtError *err)
-{
- const GtQuerymatch *querymatch = gt_extend_selfmatch(forxdrop,
- info,
- encseq,
- len,
- pos1,
- pos2);
- if (querymatch != NULL)
+ if (gt_querymatch_check_final(&evalue,
+ &bit_score,
+ info_querymatch->karlin_altschul_stat,
+ info_querymatch->querymatchspaceptr,
+ userdefinedleastlength,
+ errorpercentage,
+ evalue_threshold))
{
- gt_extend_prettyprint(forxdrop,querymatch,info);
+ gt_querymatch_prettyprint(evalue,bit_score,
+ info_querymatch->out_display_flag,
+ info_querymatch->querymatchspaceptr);
}
- return 0;
}
-static const GtQuerymatch *gt_extend_selfmatch_relative(bool forxdrop,
+static int gt_rf_extend_selfmatch_with_output(bool forxdrop,
void *info,
const GtEncseq *encseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- GtUword queryseqnum,
- GtUword querystart_relative,
GtUword len,
- GtReadmode query_readmode)
+ GtUword pos1,
+ GtUword pos2,
+ GT_UNUSED GtError *err)
{
- GtSeedextendSeqpair sesp;
- const GtUword query_totallength = 0;
- GtSeqorEncseq query;
-
- gt_sesp_from_relative(&sesp,encseq,dbseqnum,dbstart_relative,
- encseq,queryseqnum,querystart_relative,
- query_totallength,
- len,
- true,
- query_readmode);
- if (query_readmode != GT_READMODE_FORWARD)
+ if (gt_rf_extend_selfmatch(forxdrop,
+ info,
+ encseq,
+ len,
+ pos1,
+ pos2))
{
- query.seq = NULL;
- query.encseq = encseq;
+ gt_rf_seed_extend_prettyprint(forxdrop,info);
}
- return gt_extend_sesp(forxdrop,info, encseq,
- query_readmode != GT_READMODE_FORWARD ? &query
- : NULL,
- &sesp);
+ return 0;
}
-const GtQuerymatch *gt_xdrop_extend_selfmatch_relative(void *info,
- const GtEncseq *encseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode)
+int gt_rf_xdrop_extend_selfmatch_with_output(void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2,
+ GtError *err)
{
- return gt_extend_selfmatch_relative(true,
- info,
- encseq,
- dbseqnum,
- dbstart_relative,
- queryseqnum,
- querystart_relative,
- len,
- query_readmode);
+ return gt_rf_extend_selfmatch_with_output(true,
+ info,
+ encseq,
+ len,
+ pos1,
+ pos2,
+ err);
}
-const GtQuerymatch *gt_greedy_extend_selfmatch_relative(void *info,
+int gt_rf_greedy_extend_selfmatch_with_output(void *info,
const GtEncseq *encseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- GtUword queryseqnum,
- GtUword querystart_relative,
GtUword len,
- GtReadmode query_readmode)
+ GtUword pos1,
+ GtUword pos2,
+ GtError *err)
{
- return gt_extend_selfmatch_relative(false,
- info,
- encseq,
- dbseqnum,
- dbstart_relative,
- queryseqnum,
- querystart_relative,
- len,
- query_readmode);
+ return gt_rf_extend_selfmatch_with_output(false,
+ info,
+ encseq,
+ len,
+ pos1,
+ pos2,
+ err);
}
-int gt_xdrop_extend_selfmatch_with_output(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2,
- GT_UNUSED GtError *err)
-{
- return gt_extend_selfmatch_with_output(true,
- info,
- encseq,
- len,
- pos1,
- pos2,
- err);
-}
-
-int gt_greedy_extend_selfmatch_with_output(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2,
- GT_UNUSED GtError *err)
-{
- return gt_extend_selfmatch_with_output(false,
- info,
- encseq,
- len,
- pos1,
- pos2,
- err);
-}
-
-static const GtQuerymatch* gt_extend_querymatch(bool forxdrop,
- void *info,
- const GtEncseq *dbencseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query)
+static bool gt_rf_extend_querymatch(bool forxdrop,
+ void *info,
+ const GtEncseq *dbencseq,
+ const GtQuerymatch *exactseed,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq)
{
- GtSeedextendSeqpair sesp;
- GtUword dbseqnum = gt_querymatch_dbseqnum(exactseed),
- dbstart = gt_querymatch_dbstart(exactseed),
- dbseqstartpos = gt_encseq_seqstartpos(dbencseq,dbseqnum);
-
- gt_assert(query != NULL);
+ GtSeedextendSeqpair sesp = {0,0,0,0,0,0,0,0,0,GT_READMODE_FORWARD,false};
+ GtSeqorEncseq dbes;
+
+ gt_assert(queryes != NULL && dbencseq != NULL);
+ gt_querymatch_db_coordinates(&sesp.dbseqnum,&sesp.db_seqstart,
+ &sesp.dbseqlength,exactseed);
+ gt_querymatch_query_coordinates(&sesp.queryseqnum,&sesp.query_seqstart,
+ &sesp.query_seqlen,exactseed);
+ if (queryes->encseq == NULL)
+ {
+ gt_assert(sesp.query_seqstart == 0);
+ gt_assert(sesp.query_seqlen == queryes->seqlength);
+ }
gt_sesp_from_relative(&sesp,
- dbencseq,
- dbseqnum,
- dbstart - dbseqstartpos,
- query->encseq,
- gt_querymatch_queryseqnum(exactseed),
+ sesp.dbseqnum,
+ gt_querymatch_dbstart_relative(exactseed),
+ same_encseq,
+ sesp.queryseqnum,
gt_querymatch_querystart(exactseed),
- gt_querymatch_query_totallength(exactseed),
gt_querymatch_querylen(exactseed),
- gt_querymatch_selfmatch(exactseed),
gt_querymatch_query_readmode(exactseed));
- return gt_extend_sesp(forxdrop, info, dbencseq, query, &sesp);
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&dbes,dbencseq);
+ return gt_extend_sesp(forxdrop, info, &dbes, queryes, &sesp);
}
-static const GtQuerymatch* gt_extend_querymatch_relative(bool forxdrop,
- void *info,
- const GtEncseq *dbencseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- const GtEncseq *queryencseq,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode)
-{
- GtSeedextendSeqpair sesp;
- const GtUword query_totallength = 0;
- GtSeqorEncseq query;
-
- gt_sesp_from_relative(&sesp,
- dbencseq,
- dbseqnum,
- dbstart_relative,
- queryencseq,
- queryseqnum,
- querystart_relative,
- query_totallength,
- len,
- dbencseq == queryencseq ? true : false,
- query_readmode);
- query.encseq = queryencseq;
- query.seq = NULL;
- return gt_extend_sesp(forxdrop, info, dbencseq, &query, &sesp);
-}
-
-const GtQuerymatch* gt_xdrop_extend_querymatch_relative(
- void *info,
- const GtEncseq *dbencseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- const GtEncseq *queryencseq,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode)
+static void gt_rf_extend_querymatch_with_output(bool forxdrop,
+ void *info,
+ const GtEncseq *dbencseq,
+ const GtQuerymatch *exactseed,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq)
{
- return gt_extend_querymatch_relative(true,
- info,
- dbencseq,
- dbseqnum,
- dbstart_relative,
- queryencseq,
- queryseqnum,
- querystart_relative,
- len,
- query_readmode);
+ if (gt_rf_extend_querymatch(forxdrop,info, dbencseq, exactseed, queryes,
+ same_encseq))
+ {
+ gt_rf_seed_extend_prettyprint(forxdrop,info);
+ }
}
-const GtQuerymatch* gt_greedy_extend_querymatch_relative(
- void *info,
- const GtEncseq *dbencseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- const GtEncseq *queryencseq,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode)
+void gt_rf_xdrop_extend_querymatch_with_output(void *info,
+ const GtEncseq *dbencseq,
+ const GtQuerymatch *exactseed,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq)
{
- return gt_extend_querymatch_relative(false,
- info,
- dbencseq,
- dbseqnum,
- dbstart_relative,
- queryencseq,
- queryseqnum,
- querystart_relative,
- len,
- query_readmode);
+ gt_rf_extend_querymatch_with_output(true,
+ info,
+ dbencseq,
+ exactseed,
+ queryes,
+ same_encseq);
}
-static void gt_extend_querymatch_with_output(bool forxdrop,
- void *info,
- const GtEncseq *dbencseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query)
+void gt_rf_greedy_extend_querymatch_with_output(void *info,
+ const GtEncseq *dbencseq,
+ const GtQuerymatch *exactseed,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq)
{
- const GtQuerymatch *querymatch
- = gt_extend_querymatch(forxdrop,info, dbencseq, exactseed, query);
- if (querymatch != NULL)
- {
- gt_extend_prettyprint(forxdrop,querymatch,info);
- }
+ gt_rf_extend_querymatch_with_output(false,
+ info,
+ dbencseq,
+ exactseed,
+ queryes,
+ same_encseq);
}
-void gt_xdrop_extend_querymatch_with_output(void *info,
- const GtEncseq *dbencseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query)
+GtUword gt_greedy_extend_perc_mat_history(const GtGreedyextendmatchinfo *ggemi)
{
- gt_extend_querymatch_with_output(true,
- info,
- dbencseq,
- exactseed,
- query);
+ gt_assert(ggemi != NULL);
+ return ggemi->perc_mat_history;
}
-void gt_greedy_extend_querymatch_with_output(void *info,
- const GtEncseq *dbencseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query)
+GtUword gt_greedy_extend_maxalignedlendifference(
+ const GtGreedyextendmatchinfo *ggemi)
{
- gt_extend_querymatch_with_output(false,
- info,
- dbencseq,
- exactseed,
- query);
+ gt_assert(ggemi != NULL);
+ return ggemi->maxalignedlendifference;
}
diff --git a/src/match/seed-extend.h b/src/match/seed-extend.h
index bdef10c..7164235 100644
--- a/src/match/seed-extend.h
+++ b/src/match/seed-extend.h
@@ -20,7 +20,6 @@
#include "core/unused_api.h"
#include "querymatch.h"
#include "xdrop.h"
-#include "ft-front-prune.h"
/* This header file describes the interface to two different
methods for extending seeds, namely the xdrop-based method based on
@@ -77,10 +76,22 @@ typedef struct
{
void *processinfo;
GtQuerymatch *querymatchspaceptr;
-} GtProcessinfo_and_querymatchspaceptr;;
+ const GtKarlinAltschulStat *karlin_altschul_stat;
+ const GtSeedExtendDisplayFlag *out_display_flag;
+ GtUword previous_match_a_start,
+ previous_match_a_end,
+ previous_match_b_start,
+ previous_match_b_end,
+ previous_match_distance,
+ previous_match_mismatches;
+} GtProcessinfo_and_querymatchspaceptr;
+
+#define Initializer_GtProcessinfo_and_querymatchspaceptr\
+ {NULL,NULL,NULL,NULL,0,0,0,0,0,0}
GtXdropmatchinfo *gt_xdrop_matchinfo_new(GtUword userdefinedleastlength,
GtUword errorpercentage,
+ double evalue_threshold,
GtXdropscore xdropbelowscore,
GtUword sensitivity);
@@ -97,10 +108,6 @@ void gt_xdrop_matchinfo_delete(GtXdropmatchinfo *xdropmatchinfo);
GtWord gt_optimalxdropbelowscore(GtUword errorpercentage,GtUword sensitivity);
-/* Set the silent flag in the matchinfo object. */
-
-void gt_xdrop_matchinfo_silent_set(GtXdropmatchinfo *xdropmatchinfo);
-
/* The following function is used for extending a seed obtained
in a self comparison of the given <encseq>. The extension is performed
using the xdrop strategy. The seed is specified
@@ -112,11 +119,11 @@ void gt_xdrop_matchinfo_silent_set(GtXdropmatchinfo *xdropmatchinfo);
in the <GtXdropmatchinfo>-object, passed as part of the
<GtProcessinfo_and_querymatchspaceptr>-object. */
-const GtQuerymatch *gt_xdrop_extend_selfmatch(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2);
+bool gt_xdrop_extend_selfmatch(void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2);
/*
The following function performs an xdrop extension (using
@@ -126,54 +133,31 @@ const GtQuerymatch *gt_xdrop_extend_selfmatch(void *info,
The function always returns 0, so the <GtError>-object <err> is not used.
*/
-int gt_xdrop_extend_selfmatch_with_output(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2,
- GT_UNUSED GtError *err);
-
-/* The following function is identical to <gt_xdrop_extend_selfmatch>
- except that the positions of the seeds are defined by the number
- of the sequence they occur (dbseqnum for the first instance and querysenum
- for the second instance) and the relative position in that sequence
- (dbstart_relative for the first instance and querystart_relative
- for the second instance). */
-
-const GtQuerymatch *gt_xdrop_extend_selfmatch_relative(void *info,
- const GtEncseq *encseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode);
+int gt_rf_xdrop_extend_selfmatch_with_output(void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2,
+ GT_UNUSED GtError *err);
/* The following function is used for extending a seed obtained
- in a comparison of the given sequence <query>
- against <encseq>. So here a byte sequence is compared against an
+ in a comparison of the given sequence <queryes>
+ against <encseq>. So here the query which is either represented by an
+ encoded sequence (queryes->encseq != NULL) or a byte sequence
+ (queryes->seq != NULL) is compared against an
encoded sequence and the seed is specified by <exactseed>.
A <GtProcessinfo_and_querymatchspaceptr>-object is passed via the
void pointer <info>.
- After the extension is performed and satisfies
- certain criteria, the resulting
- coordinates are returned as a reference to a <GtQuerymatch>-object. */
+ After the extension is performed and the match is not redundant
+ the resulting are output. */
-const GtQuerymatch *gt_xdrop_extend_querymatch(void *info,
+void gt_rf_xdrop_extend_querymatch_with_output(void *info,
const GtEncseq *encseq,
const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query);
-
-/*
- The following function performs an xdrop extension (as the previous function)
- and outputs the formatted match to stdout if
- the previous function returns a pointer different from NULL.
-*/
+ const GtSeqorEncseq *queryes,
+ bool same_encseq);
-void gt_xdrop_extend_querymatch_with_output(void *info,
- const GtEncseq *encseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query);
+GtUword gt_xdrop_extend_belowscore(const GtXdropmatchinfo *xdropmatchinfo);
/* The following functions are used for the greedy extension. */
@@ -207,14 +191,17 @@ typedef struct GtGreedyextendmatchinfo GtGreedyextendmatchinfo;
*/
GtGreedyextendmatchinfo *gt_greedy_extend_matchinfo_new(
- GtUword errorpercentage,
GtUword maxalignedlendifference,
GtUword history,
GtUword perc_mat_history,
GtUword userdefinedleastlength,
- GtExtendCharAccess extend_char_access,
+ GtUword errorpercentage,
+ double evalue_threshold,
+ GtExtendCharAccess a_extend_char_access,
+ GtExtendCharAccess b_extend_char_access,
+ bool cam_generic,
GtUword sensitivity,
- const Polishing_info *pol_info);
+ const GtFtPolishing_info *pol_info);
/* the destructor-method for the gven object. */
@@ -225,13 +212,10 @@ void gt_greedy_extend_matchinfo_delete(GtGreedyextendmatchinfo *ggemi);
void gt_greedy_extend_matchinfo_check_extend_symmetry_set(
GtGreedyextendmatchinfo *ggemi);
-/* Set the silent flag in the matchinfo object. */
-
-void gt_greedy_extend_matchinfo_silent_set(GtGreedyextendmatchinfo *ggemi);
-
/* Set the trimstat in the matchinfo object. */
-void gt_greedy_extend_matchinfo_trimstat_set(GtGreedyextendmatchinfo *ggemi);
+void gt_greedy_extend_matchinfo_trimstat_set(GtGreedyextendmatchinfo *ggemi,
+ GtFtTrimstat *trimstat);
/* If <arg_maxalignedlendifference> and <arg_perc_mat_history> are 0, then
an optimal value for the maximal alignment length difference and
@@ -256,12 +240,15 @@ void gt_optimal_maxalilendiff_perc_mat_history(
GtUword sensitivity);
/* This function converts a string given as argument for option -cam
- and converts it to the given enum type <GtExtendCharAccess>. This
+ and converts it to the given enum types <GtExtendCharAccess>, which
+ are stored at the given addresses. This
option is used in the tool gt_repfind and gt_seedextend.
- In case of error, -1 is returned. */
+ In case of error, are value different from 0 is returned. */
-GtExtendCharAccess gt_greedy_extend_char_access(const char *cam_string,
- GtError *err);
+int gt_greedy_extend_char_access(GtExtendCharAccess *cam_a,
+ GtExtendCharAccess *cam_b,
+ const char *full_cam_string,
+ GtError *err);
/* The following function returns a string specifying the possible arguments
for the mentioned option -cam. */
@@ -280,11 +267,11 @@ const char *gt_cam_extendgreedy_comment(void);
the cooordinates are delivered as a <GtQuerymatch>-object.
*/
-const GtQuerymatch *gt_greedy_extend_selfmatch(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2);
+bool gt_greedy_extend_selfmatch(void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2);
/*
The following function performs a greedy extension (as the previous function)
@@ -292,12 +279,12 @@ const GtQuerymatch *gt_greedy_extend_selfmatch(void *info,
The function always returns 0, so the <GtError>-object <err> is not used.
*/
-int gt_greedy_extend_selfmatch_with_output(void *info,
- const GtEncseq *encseq,
- GtUword len,
- GtUword pos1,
- GtUword pos2,
- GT_UNUSED GtError *err);
+int gt_rf_greedy_extend_selfmatch_with_output(void *info,
+ const GtEncseq *encseq,
+ GtUword len,
+ GtUword pos1,
+ GtUword pos2,
+ GT_UNUSED GtError *err);
/* The following function is identical to <gt_greedy_extend_selfmatch>
except that the positions of the seeds are defined by the number
@@ -306,78 +293,50 @@ int gt_greedy_extend_selfmatch_with_output(void *info,
(dbstart_relative for the first instance and querystart_relative
for the second instance). */
-const GtQuerymatch *gt_greedy_extend_selfmatch_relative(void *info,
- const GtEncseq *encseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode);
-
-typedef const GtQuerymatch *(*GtExtendSelfmatchRelativeFunc)(void *,
- const GtEncseq *,
- GtUword,
- GtUword,
- GtUword,
- GtUword,
- GtUword,
- GtReadmode query_readmode);
-
-const GtQuerymatch* gt_xdrop_extend_querymatch_relative(
- void *info,
- const GtEncseq *dbencseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- const GtEncseq *queryencseq,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode);
-
-const GtQuerymatch* gt_greedy_extend_querymatch_relative(
- void *info,
- const GtEncseq *dbencseq,
- GtUword dbseqnum,
- GtUword dbstart_relative,
- const GtEncseq *queryencseq,
- GtUword queryseqnum,
- GtUword querystart_relative,
- GtUword len,
- GtReadmode query_readmode);
-
-typedef const GtQuerymatch *(*GtExtendQuerymatchRelativeFunc)(void *,
- const GtEncseq *,
- GtUword,
- GtUword,
- const GtEncseq *,
- GtUword,
- GtUword,
- GtUword,
- GtReadmode);
-
-GtUword gt_align_front_prune_edist(bool rightextension,
- Polished_point *best_polished_point,
- GtFronttrace *front_trace,
- const GtEncseq *encseq,
- const GtSeqorEncseq *query,
- GtReadmode query_readmode,
- GtUword query_seqstartpos,
- GtUword query_totallength,
- GtGreedyextendmatchinfo *ggemi,
- bool greedyextension,
- GtUword seedlength,
- GtUword ustart,
- GtUword ulen,
- GtUword vstart,
- GtUword vlen);
+bool gt_xdrop_extend_seed_relative(void *info,
+ const GtSeqorEncseq *dbes,
+ GtUword dbseqnum,
+ GtUword dbstart_relative,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq,
+ GtUword queryseqnum,
+ GtUword querystart_relative,
+ GtUword len,
+ GtReadmode query_readmode);
+
+bool gt_greedy_extend_seed_relative(void *info,
+ const GtSeqorEncseq *dbes,
+ GtUword dbseqnum,
+ GtUword dbstart_relative,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq,
+ GtUword queryseqnum,
+ GtUword querystart_relative,
+ GtUword len,
+ GtReadmode query_readmode);
+
+void gt_align_front_prune_edist(bool rightextension,
+ GtFtPolished_point *best_polished_point,
+ GtFrontTrace *front_trace,
+ const GtSeqorEncseq *dbes,
+ const GtSeqorEncseq *queryes,
+ GtReadmode query_readmode,
+ GtUword query_seqstart,
+ GtUword query_seqlen,
+ GtGreedyextendmatchinfo *ggemi,
+ bool greedyextension,
+ GtUword seedlength,
+ GtUword ustart,
+ GtUword ulen,
+ GtUword vstart,
+ GtUword vlen);
GtUword gt_minidentity2errorpercentage(GtUword minidentity);
char *gt_seed_extend_params_keystring(bool use_greedy,
bool forxdrop,
unsigned int seedlength,
- unsigned int userdefinedleastlength,
+ GtUword userdefinedleastlength,
GtUword minidentity,
GtUword maxalignedlendifference,
GtUword perc_mat_history,
@@ -385,11 +344,20 @@ char *gt_seed_extend_params_keystring(bool use_greedy,
GtUword extendxdrop,
GtUword xdropbelowscore);
-void gt_greedy_extend_querymatch_with_output(void *info,
- const GtEncseq *dbencseq,
- const GtQuerymatch *exactseed,
- const GtSeqorEncseq *query);
+void gt_rf_greedy_extend_querymatch_with_output(void *info,
+ const GtEncseq *dbencseq,
+ const GtQuerymatch *exactseed,
+ const GtSeqorEncseq *queryes,
+ bool same_encseq);
double gt_greedy_dna_sequence_bias_get(const GtEncseq *encseq);
+GtUword gt_greedy_extend_maxalignedlendifference(
+ const GtGreedyextendmatchinfo *ggemi);
+
+GtUword gt_greedy_extend_maxalignedlendifference(
+ const GtGreedyextendmatchinfo *ggemi);
+
+GtUword gt_greedy_extend_perc_mat_history(const GtGreedyextendmatchinfo *ggemi);
+
#endif
diff --git a/src/match/seed_extend_parts.c b/src/match/seed_extend_parts.c
new file mode 100644
index 0000000..d4ed50d
--- /dev/null
+++ b/src/match/seed_extend_parts.c
@@ -0,0 +1,325 @@
+/*
+ Copyright (c) 2016-2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2016-2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#include "core/range_api.h"
+#include "match/seed_extend_parts.h"
+
+typedef struct
+{
+ GtUword start, /* index number of first sequence in part */
+ end, /* index number of last sequence in part */
+ max_length; /* length of longest sequence in range */
+} GtSequenceRangeWithMaxLength;
+
+struct GtSequencePartsInfo
+{
+ GtSequenceRangeWithMaxLength *ranges;
+ GtUword *ssptab,
+ same_length,
+ totallength,
+ numofsequences,
+ parts_number;
+};
+
+GtUword gt_sequence_parts_info_seqstartpos(const GtSequencePartsInfo *spi,
+ GtUword seqnum)
+{
+ if (spi->ssptab != NULL)
+ {
+ return seqnum > 0 ? (spi->ssptab[seqnum - 1] + 1) : 0;
+ } else
+ {
+ return seqnum * (spi->same_length + 1);
+ }
+}
+
+GtUword gt_sequence_parts_info_seqendpos(const GtSequencePartsInfo *spi,
+ GtUword seqnum)
+{
+ if (spi->ssptab != NULL)
+ {
+ return seqnum < spi->numofsequences - 1 ? (spi->ssptab[seqnum] - 1)
+ : (spi->totallength - 1);
+ } else
+ {
+ return (seqnum + 1) * (spi->same_length + 1) - 2;
+ }
+}
+
+GtUword gt_sequence_parts_info_partlength(const GtSequencePartsInfo *spi,
+ GtUword fromseq,
+ GtUword toseq)
+{
+ return gt_sequence_parts_info_seqendpos(spi,toseq) -
+ gt_sequence_parts_info_seqstartpos(spi,fromseq) + 1;
+}
+
+static GtUword gt_encseq_next_larger_width(const GtSequencePartsInfo *spi,
+ GtUword startseqnum,
+ GtUword width,
+ GtUword numofsequences)
+{
+ GtUword left, right, found = GT_UWORD_MAX,
+ start_segment = gt_sequence_parts_info_seqstartpos(spi,startseqnum);
+
+ left = startseqnum;
+ gt_assert(numofsequences > 0);
+ right = numofsequences - 1;
+ while (left <= right)
+ {
+ GtUword mid = left + (right - left + 1)/2, mid_end, this_width;
+
+ gt_assert(mid < numofsequences);
+ mid_end = gt_sequence_parts_info_seqendpos(spi,mid);
+ gt_assert(mid_end > start_segment);
+ this_width = mid_end - start_segment;
+ if (this_width > width)
+ {
+ found = mid;
+ if (right == 0)
+ {
+ break;
+ }
+ right = mid - 1;
+ } else
+ {
+ if (left == numofsequences - 1)
+ {
+ break;
+ }
+ left = mid + 1;
+ }
+ }
+ return found;
+}
+
+GtSequencePartsInfo *gt_sequence_parts_info_new(const GtEncseq *encseq,
+ GtUword numofsequences,
+ GtUword numparts)
+{
+ GtSequencePartsInfo *spi = gt_malloc(sizeof *spi);
+ spi->ranges = gt_malloc(sizeof *spi->ranges * numparts);
+ spi->ssptab = gt_all_sequence_separators_get(encseq);
+ spi->totallength = gt_encseq_total_length(encseq);
+ spi->numofsequences = gt_encseq_num_of_sequences(encseq);
+
+ if (spi->ssptab == NULL)
+ {
+ spi->same_length = gt_encseq_seqlength(encseq,0);
+ } else
+ {
+ spi->same_length = 0;
+ }
+ if (numparts >= numofsequences)
+ { /* assign one seq for each part */
+ GtUword idx;
+
+ for (idx = 0; idx < numofsequences; ++idx) {
+ spi->ranges[idx].start = spi->ranges[idx].end = idx;
+ spi->ranges[idx].max_length
+ = gt_sequence_parts_info_partlength(spi,idx,idx);
+ }
+ spi->parts_number = numofsequences;
+ } else
+ {
+ GtUword seqnum, idx, effective_num_parts;
+ const GtUword partwidth = spi->totallength/numparts;
+
+ for (idx = 0, seqnum = 0; idx < numparts && seqnum < numofsequences; idx++)
+ {
+ const GtUword seqnum_next_width
+ = gt_encseq_next_larger_width(spi,seqnum,partwidth,
+ numofsequences);
+ spi->ranges[idx].start = seqnum;
+ if (seqnum_next_width == GT_UWORD_MAX)
+ {
+ spi->ranges[idx].end = numofsequences - 1;
+ idx++;
+ break;
+ }
+ spi->ranges[idx].end = seqnum_next_width;
+ seqnum = seqnum_next_width + 1;
+ }
+ gt_assert(idx > 0 &&
+ spi->ranges[idx-1].end == numofsequences - 1);
+ effective_num_parts = idx;
+ if (effective_num_parts == 1)
+ {
+ spi->ranges[0].max_length = gt_encseq_max_seq_length(encseq);
+ } else
+ {
+ if (spi->ssptab == NULL)
+ {
+ for (idx = 0; idx < effective_num_parts; idx++)
+ {
+ spi->ranges[idx].max_length = spi->same_length;
+ }
+ } else
+ {
+ GtUword currentstart = 0, idx = 0, currentlength, maxlength = 0;
+
+ gt_assert(numofsequences > 1);
+ for (seqnum = 0; seqnum < numofsequences - 1; seqnum++)
+ {
+ gt_assert(currentstart < spi->ssptab[seqnum]);
+ currentlength = spi->ssptab[seqnum] - currentstart;
+ if (maxlength < currentlength)
+ {
+ maxlength = currentlength;
+ }
+ if (seqnum == spi->ranges[idx].end)
+ {
+ spi->ranges[idx].max_length = maxlength;
+ idx++;
+ maxlength = 0;
+ }
+ currentstart = spi->ssptab[seqnum] + 1;
+ }
+ currentlength = spi->totallength - currentstart;
+ if (maxlength < currentlength)
+ {
+ maxlength = currentlength;
+ }
+ gt_assert(idx + 1 == effective_num_parts &&
+ seqnum == spi->ranges[idx].end);
+ spi->ranges[idx].max_length = maxlength;
+ }
+ }
+ spi->parts_number = effective_num_parts;
+ }
+ return spi;
+}
+
+GtUword gt_sequence_parts_info_number(const GtSequencePartsInfo *spi)
+{
+ gt_assert(spi != NULL);
+ return spi->parts_number;
+}
+
+void gt_sequence_parts_info_delete(GtSequencePartsInfo *spi)
+{
+ if (spi != NULL)
+ {
+ gt_free(spi->ssptab);
+ gt_free(spi->ranges);
+ gt_free(spi);
+ }
+}
+
+GtUword gt_sequence_parts_info_start_get(const GtSequencePartsInfo *spi,
+ GtUword idx)
+{
+ gt_assert(spi != NULL && idx < spi->parts_number);
+ return spi->ranges[idx].start;
+}
+
+GtUword gt_sequence_parts_info_end_get(const GtSequencePartsInfo *spi,
+ GtUword idx)
+{
+ gt_assert(spi != NULL && idx < spi->parts_number);
+ return spi->ranges[idx].end;
+}
+
+GtUword gt_sequence_parts_info_numofsequences_get(
+ const GtSequencePartsInfo *spi,GtUword idx)
+{
+ gt_assert(spi != NULL && idx < spi->parts_number);
+ return gt_sequence_parts_info_end_get(spi,idx) -
+ gt_sequence_parts_info_start_get(spi,idx) + 1;
+}
+
+GtUword gt_sequence_parts_info_max_length_get(const GtSequencePartsInfo *spi,
+ GtUword idx)
+{
+ gt_assert(spi != NULL && idx < spi->parts_number);
+ return spi->ranges[idx].max_length;
+}
+
+bool gt_sequence_parts_info_overlap(const GtSequencePartsInfo *spia,
+ GtUword aidx,
+ const GtSequencePartsInfo *spib,
+ GtUword bidx)
+{
+ GtRange range_a, range_b;
+
+ range_a.start = gt_sequence_parts_info_start_get(spia,aidx);
+ range_a.end = gt_sequence_parts_info_end_get(spia,aidx);
+ range_b.start = gt_sequence_parts_info_start_get(spib,bidx);
+ range_b.end = gt_sequence_parts_info_end_get(spib,bidx);
+ return gt_range_overlap(&range_a,&range_b);
+}
+
+bool gt_sequence_parts_info_equal(const GtSequencePartsInfo *spia,
+ GtUword aidx,
+ const GtSequencePartsInfo *spib,
+ GtUword bidx)
+{
+ return (gt_sequence_parts_info_start_get(spia,aidx) ==
+ gt_sequence_parts_info_start_get(spib,bidx)) &&
+ (gt_sequence_parts_info_end_get(spia,aidx) ==
+ gt_sequence_parts_info_end_get(spib,bidx)) ? true : false;
+
+}
+
+void gt_sequence_parts_info_variance_show(const GtSequencePartsInfo *spi)
+{
+ GtUword variance_sum = 0, idx, avgpartlength;
+
+ avgpartlength = spi->totallength/spi->parts_number;
+ for (idx = 0; idx < spi->parts_number; idx++)
+ {
+ const GtUword partlength
+ = gt_sequence_parts_info_partlength(
+ spi,
+ gt_sequence_parts_info_start_get(spi,idx),
+ gt_sequence_parts_info_end_get(spi,idx));
+ if (partlength > avgpartlength)
+ {
+ GtUword diff = partlength - avgpartlength;
+ variance_sum += diff * diff;
+ } else
+ {
+ GtUword diff = avgpartlength - partlength;
+ variance_sum += diff * diff;
+ }
+ printf("# Part " GT_WU ": sequence " GT_WU "..." GT_WU ", total length="
+ GT_WU ", max_length=" GT_WU "\n",idx+1,
+ gt_sequence_parts_info_start_get(spi,idx),
+ gt_sequence_parts_info_end_get(spi,idx),
+ partlength,
+ gt_sequence_parts_info_max_length_get(spi,idx));
+ }
+ printf("# Variance of parts is %.2e\n",
+ (double) variance_sum/spi->parts_number);
+}
+
+GtUchar *gt_sequence_parts_info_seq_extract(const GtEncseq *encseq,
+ const GtSequencePartsInfo *spi,
+ GtUword idx)
+{
+ GtUchar *byte_sequence;
+ const GtUword
+ firstseqnum = gt_sequence_parts_info_start_get(spi,idx),
+ lastseqnum = gt_sequence_parts_info_end_get(spi,idx),
+ firstpos = gt_sequence_parts_info_seqstartpos(spi,firstseqnum),
+ lastpos = gt_sequence_parts_info_seqendpos(spi,lastseqnum);
+
+ gt_assert(firstpos <= lastpos);
+ byte_sequence = gt_malloc(sizeof *byte_sequence * (lastpos - firstpos + 1));
+ gt_encseq_extract_encoded(encseq,byte_sequence,firstpos,lastpos);
+ return byte_sequence;
+}
diff --git a/src/match/seed_extend_parts.h b/src/match/seed_extend_parts.h
new file mode 100644
index 0000000..3f74453
--- /dev/null
+++ b/src/match/seed_extend_parts.h
@@ -0,0 +1,73 @@
+/*
+ Copyright (c) 2016-2016 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2016-2016 Center for Bioinformatics, University of Hamburg
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose with or without fee is hereby granted, provided that the above
+ copyright notice and this permission notice appear in all copies.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+*/
+
+#ifndef SEED_EXTEND_PARTS_H
+#define SEED_EXTEND_PARTS_H
+
+#include "core/ma_api.h"
+#include "core/encseq.h"
+
+typedef struct GtSequencePartsInfo GtSequencePartsInfo;
+
+GtSequencePartsInfo *gt_sequence_parts_info_new(const GtEncseq *encseq,
+ GtUword numofsequences,
+ GtUword numparts);
+
+void gt_sequence_parts_info_delete(GtSequencePartsInfo *spi);
+
+GtUword gt_sequence_parts_info_number(const GtSequencePartsInfo *spi);
+
+GtUword gt_sequence_parts_info_start_get(const GtSequencePartsInfo *spi,
+ GtUword idx);
+
+GtUword gt_sequence_parts_info_end_get(const GtSequencePartsInfo *spi,
+ GtUword idx);
+
+GtUword gt_sequence_parts_info_numofsequences_get(
+ const GtSequencePartsInfo *spi,
+ GtUword idx);
+
+GtUword gt_sequence_parts_info_max_length_get(const GtSequencePartsInfo *spi,
+ GtUword idx);
+
+bool gt_sequence_parts_info_overlap(const GtSequencePartsInfo *spia,
+ GtUword aidx,
+ const GtSequencePartsInfo *spib,
+ GtUword bidx);
+
+bool gt_sequence_parts_info_equal(const GtSequencePartsInfo *spia,
+ GtUword aidx,
+ const GtSequencePartsInfo *spib,
+ GtUword bidx);
+
+GtUword gt_sequence_parts_info_seqstartpos(const GtSequencePartsInfo *spi,
+ GtUword seqnum);
+
+GtUword gt_sequence_parts_info_seqendpos(const GtSequencePartsInfo *spi,
+ GtUword seqnum);
+
+GtUword gt_sequence_parts_info_partlength(const GtSequencePartsInfo *spi,
+ GtUword fromseq,
+ GtUword toseq);
+
+void gt_sequence_parts_info_variance_show(const GtSequencePartsInfo *spi);
+
+GtUchar *gt_sequence_parts_info_seq_extract(const GtEncseq *encseq,
+ const GtSequencePartsInfo *spi,
+ GtUword idx);
+
+#endif
diff --git a/src/match/seq_or_encseq.h b/src/match/seq_or_encseq.h
index e3d0572..dc753fb 100644
--- a/src/match/seq_or_encseq.h
+++ b/src/match/seq_or_encseq.h
@@ -1,9 +1,43 @@
#ifndef SEQ_OR_ENCSEQ_H
#define SEQ_OR_ENCSEQ_H
+#include "core/assert_api.h"
#include "core/encseq_api.h"
+
+#define GT_SEQORENCSEQ_INIT_ENCSEQ(SORE,ENCSEQ)\
+ (SORE)->encseq = ENCSEQ;\
+ (SORE)->seq = NULL;\
+ (SORE)->desc = NULL;\
+ (SORE)->seqlength = GT_UWORD_MAX;\
+ (SORE)->seqstartpos = GT_UWORD_MAX;\
+ (SORE)->characters = NULL;\
+ (SORE)->wildcardshow = 0;\
+ (SORE)->haswildcards = true
+
+#define GT_SEQORENCSEQ_ADD_SEQ_COORDS(SORE,SEQSTARTPOS,SEQLENGTH)\
+ gt_assert((SORE)->encseq != NULL);\
+ (SORE)->seqstartpos = SEQSTARTPOS;\
+ (SORE)->seqlength = SEQLENGTH
+
+#define GT_SEQORENCSEQ_INIT_SEQ(SORE,SEQ,SEQDESC,SEQLENGTH,CHARACTERS,\
+ WILDCARDSHOW,HASWILDCARDS)\
+ (SORE)->encseq = NULL;\
+ (SORE)->seq = SEQ;\
+ (SORE)->desc = SEQDESC;\
+ (SORE)->seqlength = SEQLENGTH;\
+ (SORE)->seqstartpos = 0;\
+ (SORE)->characters = CHARACTERS;\
+ (SORE)->wildcardshow = WILDCARDSHOW;\
+ (SORE)->haswildcards = HASWILDCARDS
+
typedef struct
{
const GtUchar *seq;
const GtEncseq *encseq;
+ const char *desc; /* only used if seq != NULL and display_seq_desc */
+ GtWord seqstartpos, seqlength;
+ const GtUchar *characters;
+ GtUchar wildcardshow;
+ bool haswildcards;
} GtSeqorEncseq;
+
#endif
diff --git a/src/match/seqabstract.c b/src/match/seqabstract.c
index ddb5943..6615af5 100644
--- a/src/match/seqabstract.c
+++ b/src/match/seqabstract.c
@@ -48,10 +48,8 @@ struct GtSeqabstract
} seq;
};
-GtSeqabstract *gt_seqabstract_new_empty(void)
+void gt_seqabstract_reset(GtSeqabstract *sa)
{
- GtSeqabstract *sa = gt_malloc(sizeof *sa);
-
sa->seqtype = GT_SEQABSTRACT_UNDEF;
sa->len = sa->offset = 0;
sa->read_seq_left2right = true;
@@ -59,18 +57,14 @@ GtSeqabstract *gt_seqabstract_new_empty(void)
sa->totallength = GT_SEQABSTRACT_TOTALLENGTH_UNDEF;
sa->seqstartpos = 0;
sa->seq.string = NULL;
- return sa;
}
-void gt_seqabstract_reset(GtSeqabstract *sa)
+GtSeqabstract *gt_seqabstract_new_empty(void)
{
- sa->seqtype = GT_SEQABSTRACT_UNDEF;
- sa->len = sa->offset = 0;
- sa->read_seq_left2right = true;
- sa->dir_is_complement = false;
- sa->totallength = GT_SEQABSTRACT_TOTALLENGTH_UNDEF;
- sa->seqstartpos = 0;
- sa->seq.string = NULL;
+ GtSeqabstract *sa = gt_malloc(sizeof *sa);
+
+ gt_seqabstract_reset(sa);
+ return sa;
}
static void gt_seqabstract_init(GtSeqabstract *sa,
diff --git a/src/match/seqabstract.h b/src/match/seqabstract.h
index d7bd37f..92a22e7 100644
--- a/src/match/seqabstract.h
+++ b/src/match/seqabstract.h
@@ -71,7 +71,7 @@ void gt_seqabstract_reinit_encseq(bool rightextension,
/* return the length of <sa> */
GtUword gt_seqabstract_length(const GtSeqabstract *sa);
-/* return character at positon <idx> (relative to <startpos>) of <sa> */
+/* return character at position <idx> (relative to <startpos>) of <sa> */
GtUchar gt_seqabstract_encoded_char(const GtSeqabstract *sa,
GtUword idx);
diff --git a/src/match/sfx-diffcov.c b/src/match/sfx-diffcov.c
index e957a62..29a7a74 100644
--- a/src/match/sfx-diffcov.c
+++ b/src/match/sfx-diffcov.c
@@ -491,7 +491,7 @@ static GtUword dc_derivespecialcodesonthefly(GtDifferencecover *dcov,
return countderived;
}
-static int dc_compareCodeatpositon(const void *vala,const void *valb)
+static int dc_compareCodeatposition(const void *vala,const void *valb)
{
const Codeatposition *a = (const Codeatposition *) vala;
const Codeatposition *b = (const Codeatposition *) valb;
@@ -516,7 +516,7 @@ static int dc_compareCodeatpositon(const void *vala,const void *valb)
return 0;
}
-static void dc_validate_samplepositons(const GtDifferencecover *dcov)
+static void dc_validate_samplepositions(const GtDifferencecover *dcov)
{
GtUword pos;
unsigned int modvalue;
@@ -1268,7 +1268,7 @@ static void dc_differencecover_sortsample(GtDifferencecover *dcov,
gt_assert(codelist.spaceCodeatposition != NULL);
qsort(codelist.spaceCodeatposition,
(size_t) codelist.nextfreeCodeatposition,
- sizeof (*codelist.spaceCodeatposition),dc_compareCodeatpositon);
+ sizeof (*codelist.spaceCodeatposition),dc_compareCodeatposition);
}
if (dcov->effectivesamplesize > 0)
{
@@ -1690,7 +1690,7 @@ void gt_differencecover_check(const GtEncseq *encseq,GtReadmode readmode)
printf("v=%u (size=%u)\n",dcov->vparam,dcov->size);
if (withcheck)
{
- dc_validate_samplepositons(dcov);
+ dc_validate_samplepositions(dcov);
}
dc_differencecover_sortsample(dcov,NULL,NULL,NULL,withcheck);
gt_differencecover_delete(dcov);
diff --git a/src/match/sfx-run.c b/src/match/sfx-run.c
index 78bcda1..45a09d0 100644
--- a/src/match/sfx-run.c
+++ b/src/match/sfx-run.c
@@ -252,7 +252,7 @@ static int suffixeratorwithoutput(Outfileinfo *outfileinfo,
GtUword totallength = gt_encseq_total_length(encseq);
unsigned int bitsperentry = gt_determinebitspervalue(totallength);
- bitbuffer = gt_bitbuffer_new(outfileinfo->outfpsuftab,bitsperentry);
+ bitbuffer = gt_bitbuffer_FILE_new(outfileinfo->outfpsuftab,bitsperentry);
}
while (true)
{
diff --git a/src/match/sfx-suffixgetset.c b/src/match/sfx-suffixgetset.c
index e1a00c1..3ca4fe6 100644
--- a/src/match/sfx-suffixgetset.c
+++ b/src/match/sfx-suffixgetset.c
@@ -216,12 +216,7 @@ void gt_suffixsortspace_nooffsets(GT_UNUSED const GtSuffixsortspace *sssp)
GtUword gt_suffixsortspace_getdirect(const GtSuffixsortspace *sssp,GtUword idx)
{
- gt_assert(sssp != NULL);
- if (idx > sssp->maxindex)
- {
- printf("idx = " GT_WU " > " GT_WU " = maxindex\n",idx,sssp->maxindex);
- }
- gt_assert(idx <= sssp->maxindex);
+ gt_assert(sssp != NULL && idx <= sssp->maxindex);
if (sssp->ulongtab != NULL)
{
return sssp->ulongtab[idx];
@@ -488,11 +483,11 @@ void gt_suffixsortspace_compressed_to_file (const GtSuffixsortspace *sssp,
gt_assert(sssp != NULL);
if (sssp->ulongtab != NULL)
{
- gt_bitbuffer_next_ulongtab(bb,sssp->ulongtab,numberofsuffixes);
+ gt_bitbuffer_write_ulongtab_FILE(bb,sssp->ulongtab,numberofsuffixes);
} else
{
gt_assert (sssp->uinttab != NULL);
- gt_bitbuffer_next_uint32tab(bb,sssp->uinttab,numberofsuffixes);
+ gt_bitbuffer_write_uint32tab_FILE(bb,sssp->uinttab,numberofsuffixes);
}
}
diff --git a/src/match/shu-dfs.h b/src/match/shu-dfs.h
index 297a5a7..d2fc9e8 100644
--- a/src/match/shu-dfs.h
+++ b/src/match/shu-dfs.h
@@ -25,12 +25,12 @@
#include "match/shu_unitfile.h"
typedef struct ShuNode {
- bool process;
- unsigned parentOffset;
+ bool process;
+ unsigned parentOffset;
GtUword **countTermSubtree;
- GtUword depth,
- lower,
- upper;
+ GtUword depth,
+ lower,
+ upper;
} ShuNode;
GT_STACK_DECLARESTRUCT(ShuNode, 256UL);
diff --git a/src/match/test-maxpairs.c b/src/match/test-maxpairs.c
index 81e6cc4..ffe8d40 100644
--- a/src/match/test-maxpairs.c
+++ b/src/match/test-maxpairs.c
@@ -103,18 +103,20 @@ typedef struct
GtUword len,
dbstart,
querystart;
- uint64_t queryseqnum;
+ GtUword queryseqnum;
} Substringmatch;
static void gt_storemaxmatchquery(void *info, const GtQuerymatch *querymatch)
{
GtArray *tab = (GtArray *) info;
Substringmatch subm;
+ GtUword query_seqlen, query_seqstart;
subm.len = gt_querymatch_querylen(querymatch);
subm.dbstart = gt_querymatch_dbstart(querymatch);
subm.querystart = gt_querymatch_querystart(querymatch);
- subm.queryseqnum = gt_querymatch_queryseqnum(querymatch);
+ gt_querymatch_query_coordinates(&subm.queryseqnum,&query_seqstart,
+ &query_seqlen, querymatch);
gt_array_add(tab,subm);
}
@@ -175,7 +177,7 @@ static int gt_storemaxmatchself(void *info,
subm.querystart = pos -
(maxmatchselfinfo->querymarkpos[queryseqnum-1] + 1);
}
- subm.queryseqnum = (uint64_t) queryseqnum;
+ subm.queryseqnum = queryseqnum;
}
gt_array_add(maxmatchselfinfo->results,subm);
}
@@ -227,11 +229,11 @@ static int gt_showSubstringmatch(void *a, GT_UNUSED void *info,
{
Substringmatch *m = (Substringmatch *) a;
- printf(""GT_WU" "GT_WU" " Formatuint64_t " "GT_WU"\n",
- m->len,
- m->dbstart,
- PRINTuint64_tcast(m->queryseqnum),
- m->querystart);
+ printf(GT_WU " " GT_WU " " GT_WU " " GT_WU "\n",
+ m->len,
+ m->dbstart,
+ m->queryseqnum,
+ m->querystart);
return 0;
}
diff --git a/src/tools/gt_condenseq_compress.c b/src/tools/gt_condenseq_compress.c
index d33b40c..316ffe4 100644
--- a/src/tools/gt_condenseq_compress.c
+++ b/src/tools/gt_condenseq_compress.c
@@ -190,7 +190,7 @@ gt_condenseq_compress_option_parser_new(void *tool_arguments)
/* -brute_force */
option = gt_option_new_bool("brute_force", "disable filtering of seeds. "
"Incompatible with -diagonals yes "
- "or -full_diags yes",
+ "or -full_diags yes. For benchmarking use.",
&arguments->brute, false);
gt_option_is_development_option(option);
gt_option_parser_add_option(op, option);
@@ -306,6 +306,10 @@ static int gt_condenseq_compress_runner(GT_UNUSED int argc, const char **argv,
gt_encseq_loader_delete(es_l);
}
+/* TODO DW: this should be adjusted to reflect the parameter tests done. it
+ could get fairly complicated heuristic, or we leave it as is.
+ setting hard defaults for dna or protein would work, too.
+ carefull: adjusting these might break test cases. */
if (!had_err) {
if (arguments->minalignlength == GT_UNDEF_UWORD)
arguments->minalignlength = arguments->initsize != GT_UNDEF_UWORD ?
diff --git a/src/tools/gt_kmer_database.c b/src/tools/gt_kmer_database.c
index ca6c0fe..006abc5 100644
--- a/src/tools/gt_kmer_database.c
+++ b/src/tools/gt_kmer_database.c
@@ -126,8 +126,8 @@ static GtOptionParser* gt_kmer_database_option_parser_new(void *tool_arguments)
gt_option_exclude(option_mean_cutoff, option);
/* -disable_prune */
- option = gt_option_new_bool("disable_prune", "disables the removel of kmers, "
- "which occure more often than the cutoff.",
+ option = gt_option_new_bool("disable_prune", "disables the removal of kmers "
+ "which occur more often than the cutoff.",
&arguments->prune, false);
gt_option_parser_add_option(op, option);
gt_option_imply(option, option_use_cutoff);
diff --git a/src/tools/gt_readjoiner.c b/src/tools/gt_readjoiner.c
index a894bc6..529d60d 100644
--- a/src/tools/gt_readjoiner.c
+++ b/src/tools/gt_readjoiner.c
@@ -29,6 +29,7 @@
#include "tools/gt_readjoiner_cgraph.h"
#include "tools/gt_readjoiner_correct.h"
#include "tools/gt_readjoiner_cnttest.h"
+#include "tools/gt_readjoiner_gfa.h"
#include "tools/gt_readjoiner_graph.h"
#include "tools/gt_readjoiner_spmtest.h"
@@ -40,6 +41,7 @@ static void* gt_readjoiner_arguments_new(void)
gt_toolbox_add_tool(readjoiner_toolbox, "overlap", gt_readjoiner_overlap());
gt_toolbox_add_tool(readjoiner_toolbox, "assembly", gt_readjoiner_assembly());
gt_toolbox_add_hidden_tool(readjoiner_toolbox, "asqg", gt_readjoiner_asqg());
+ gt_toolbox_add_hidden_tool(readjoiner_toolbox, "gfa", gt_readjoiner_gfa());
gt_toolbox_add_hidden_tool(readjoiner_toolbox, "graph",
gt_readjoiner_graph());
gt_toolbox_add_hidden_tool(readjoiner_toolbox, "cgraph",
diff --git a/src/tools/gt_readjoiner_asqg.c b/src/tools/gt_readjoiner_asqg.c
index 94def9b..c20ab02 100644
--- a/src/tools/gt_readjoiner_asqg.c
+++ b/src/tools/gt_readjoiner_asqg.c
@@ -284,7 +284,7 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
if (gt_showtime_enabled())
gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_EDGES, stdout);
gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_EDGES);
- had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_show_asgq,
+ had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_show_asqg,
aw, readset, arguments->minmatchlength, arguments->nspmfiles,
contained, err);
gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_EDGES);
diff --git a/src/tools/gt_readjoiner_asqg.c b/src/tools/gt_readjoiner_gfa.c
similarity index 67%
copy from src/tools/gt_readjoiner_asqg.c
copy to src/tools/gt_readjoiner_gfa.c
index 94def9b..819b085 100644
--- a/src/tools/gt_readjoiner_asqg.c
+++ b/src/tools/gt_readjoiner_gfa.c
@@ -23,14 +23,14 @@
#include "core/unused_api.h"
#include "core/showtime.h"
#include "core/spacecalc.h"
-#include "match/asqg_writer.h"
+#include "match/gfa_writer.h"
#include "match/rdj-contigpaths.h"
#include "match/rdj-cntlist.h"
#include "match/rdj-spmlist.h"
#include "match/rdj-strgraph.h"
#include "match/rdj-filesuf-def.h"
#include "match/rdj-version.h"
-#include "tools/gt_readjoiner_asqg.h"
+#include "tools/gt_readjoiner_gfa.h"
typedef struct {
bool verbose, quiet;
@@ -38,36 +38,37 @@ typedef struct {
GtStr *readset;
bool gz, sg;
unsigned int nspmfiles;
-} GtReadjoinerAsqgArguments;
+ bool gfa1;
+} GtReadjoinerGfaArguments;
-static void* gt_readjoiner_asqg_arguments_new(void)
+static void* gt_readjoiner_gfa_arguments_new(void)
{
- GtReadjoinerAsqgArguments *arguments = gt_calloc((size_t)1,
+ GtReadjoinerGfaArguments *arguments = gt_calloc((size_t)1,
sizeof *arguments);
arguments->readset = gt_str_new();
return arguments;
}
-static void gt_readjoiner_asqg_arguments_delete(void *tool_arguments)
+static void gt_readjoiner_gfa_arguments_delete(void *tool_arguments)
{
- GtReadjoinerAsqgArguments *arguments = tool_arguments;
+ GtReadjoinerGfaArguments *arguments = tool_arguments;
if (!arguments)
return;
gt_str_delete(arguments->readset);
gt_free(arguments);
}
-static GtOptionParser* gt_readjoiner_asqg_option_parser_new(
+static GtOptionParser* gt_readjoiner_gfa_option_parser_new(
void *tool_arguments)
{
- GtReadjoinerAsqgArguments *arguments = tool_arguments;
+ GtReadjoinerGfaArguments *arguments = tool_arguments;
GtOptionParser *op;
GtOption *option, *v_option;
gt_assert(arguments != NULL);
/* init */
op = gt_option_parser_new("[option ...]",
- "Output string graph in SGA asqg format.");
+ "Output string graph in SGA gfa format.");
/* -readset */
option = gt_option_new_string("readset", "specify the readset name",
@@ -95,11 +96,17 @@ static GtOptionParser* gt_readjoiner_asqg_option_parser_new(
/* -sg */
option = gt_option_new_bool("sg", "first construct a Readjoiner string "
- "graph, then convert it into SGA format",
+ "graph, then convert it into GFA format",
&arguments->sg, false);
gt_option_is_development_option(option);
gt_option_parser_add_option(op, option);
+ /* -1 */
+ option = gt_option_new_bool("1", "output GFA1 "
+ "(default: output GFA2)", &arguments->gfa1, false);
+ gt_option_hide_default(option);
+ gt_option_parser_add_option(op, option);
+
/* -v */
v_option = gt_option_new_verbose(&arguments->verbose);
gt_option_parser_add_option(op, v_option);
@@ -116,26 +123,26 @@ static GtOptionParser* gt_readjoiner_asqg_option_parser_new(
return op;
}
-#define GT_READJOINER_ASQG_MSG_INIT \
+#define GT_READJOINER_GFA_MSG_INIT \
"initialization"
-#define GT_READJOINER_ASQG_MSG_CNT \
+#define GT_READJOINER_GFA_MSG_CNT \
"parse lists of contained reads"
-/* encseq + spm -> asqg */
-#define GT_READJOINER_ASQG_MSG_VERTICES \
- "output vertices in asqg format"
-#define GT_READJOINER_ASQG_MSG_EDGES \
- "output edges in asqg format"
+/* encseq + spm -> gfa */
+#define GT_READJOINER_GFA_MSG_VERTICES \
+ "output vertices in gfa format"
+#define GT_READJOINER_GFA_MSG_EDGES \
+ "output edges in gfa format"
-/* encseq + sg -> asqg */
-#define GT_READJOINER_ASQG_MSG_COUNT \
+/* encseq + sg -> gfa */
+#define GT_READJOINER_GFA_MSG_COUNT \
"build string graph (counting phase)"
-#define GT_READJOINER_ASQG_MSG_INSERT \
+#define GT_READJOINER_GFA_MSG_INSERT \
"build string graph (insertion phase)"
-#define GT_READJOINER_ASQG_MSG_OUTPUT \
- "output string graph in asqg format"
+#define GT_READJOINER_GFA_MSG_OUTPUT \
+ "output string graph in gfa format"
-static int gt_readjoiner_asqg_use_spmfiles(GtSpmproc proc, void *procdata,
+static int gt_readjoiner_gfa_use_spmfiles(GtSpmproc proc, void *procdata,
const char *readset, unsigned int minmatchlength, unsigned int nspmfiles,
GtBitsequence *contained, GtError *err)
{
@@ -165,7 +172,7 @@ static int gt_readjoiner_asqg_use_spmfiles(GtSpmproc proc, void *procdata,
return had_err;
}
-static inline void gt_readjoiner_asqg_show_current_space(const char *label)
+static inline void gt_readjoiner_gfa_show_current_space(const char *label)
{
GtUword m, f;
if (gt_ma_bookkeeping_enabled())
@@ -178,11 +185,11 @@ static inline void gt_readjoiner_asqg_show_current_space(const char *label)
}
}
-static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
+static int gt_readjoiner_gfa_runner(GT_UNUSED int argc,
GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
void *tool_arguments, GtError *err)
{
- GtReadjoinerAsqgArguments *arguments = tool_arguments;
+ GtReadjoinerGfaArguments *arguments = tool_arguments;
GtLogger *verbose_logger, *default_logger;
GtEncseqLoader *el;
GtEncseq *reads;
@@ -197,7 +204,7 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
if (gt_showtime_enabled())
{
timer = gt_timer_new_with_progress_description(
- GT_READJOINER_ASQG_MSG_INIT);
+ GT_READJOINER_GFA_MSG_INIT);
gt_timer_start(timer);
gt_timer_show_cpu_time_by_progress(timer);
}
@@ -205,7 +212,7 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
gt_error_check(err);
default_logger = gt_logger_new(!arguments->quiet, GT_LOGGER_DEFLT_PREFIX,
stdout);
- gt_logger_log(default_logger, "gt readjoiner asqg");
+ gt_logger_log(default_logger, "gt readjoiner gfa");
verbose_logger = gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX,
stdout);
gt_logger_log(verbose_logger, "verbose output activated");
@@ -213,6 +220,10 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
if (arguments->minmatchlength > 0)
gt_logger_log(verbose_logger, "SPM length cutoff = %u",
arguments->minmatchlength);
+ if (arguments->gfa1)
+ gt_logger_log(verbose_logger, "GFA version = 1.0");
+ else
+ gt_logger_log(verbose_logger, "GFA version = 2.0");
el = gt_encseq_loader_new();
gt_encseq_loader_drop_description_support(el);
@@ -221,15 +232,15 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
nreads = gt_encseq_num_of_sequences(reads);
gt_assert(reads != NULL);
eqlen = gt_encseq_accesstype_get(reads) == GT_ACCESS_TYPE_EQUALLENGTH;
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_INIT);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_INIT);
if (!eqlen)
{
unsigned int i;
GtUword nofreads;
GtStr *filename = gt_str_clone(arguments->readset);
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_CNT, stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_CNT);
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_CNT, stdout);
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_CNT);
gt_str_append_cstr(filename, ".0" GT_READJOINER_SUFFIX_CNTLIST);
had_err = gt_cntlist_parse(gt_str_get(filename), true, &contained,
&nofreads, err);
@@ -246,18 +257,18 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
gt_assert(nofreads == nofreads_i);
}
gt_str_delete(filename);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_CNT);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_CNT);
}
if (!arguments->sg)
{
GtStr *filename = NULL;
GtFile *file = NULL;
- GtAsqgWriter *aw = NULL;
+ GtGfaWriter *gw = NULL;
if (had_err == 0)
{
filename = gt_str_clone(arguments->readset);
gt_str_append_cstr(filename, arguments->gz ?
- GT_READJOINER_SUFFIX_SG_ASQG_GZ : GT_READJOINER_SUFFIX_SG_ASQG);
+ GT_READJOINER_SUFFIX_SG_GFA_GZ : GT_READJOINER_SUFFIX_SG_GFA);
file = gt_file_open(arguments->gz ? GT_FILE_MODE_GZIP :
GT_FILE_MODE_UNCOMPRESSED, gt_str_get(filename), "w", err);
if (file == NULL)
@@ -265,52 +276,53 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
}
if (had_err == 0)
{
- aw = gt_asqg_writer_new(file, reads);
+ gw = gt_gfa_writer_new(file, reads, arguments->gfa1 ?
+ GT_GFA_VERSION_1_0 : GT_GFA_VERSION_2_0);
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_VERTICES,
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_VERTICES,
stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_VERTICES);
- had_err = gt_asqg_writer_show_header(aw, 0.0,
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_VERTICES);
+ had_err = gt_gfa_writer_show_header(gw,
(GtUword)arguments->minmatchlength,
gt_str_get(arguments->readset), false, false, err);
}
if (had_err == 0)
{
- had_err = gt_asqg_writer_show_vertices(aw, err);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_VERTICES);
+ had_err = gt_gfa_writer_show_segments(gw, err);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_VERTICES);
}
if (had_err == 0)
{
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_EDGES, stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_EDGES);
- had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_show_asgq,
- aw, readset, arguments->minmatchlength, arguments->nspmfiles,
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_EDGES, stdout);
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_EDGES);
+ had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_show_gfa,
+ gw, readset, arguments->minmatchlength, arguments->nspmfiles,
contained, err);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_EDGES);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_EDGES);
}
gt_str_delete(filename);
gt_file_delete(file);
- gt_asqg_writer_delete(aw);
+ gt_gfa_writer_delete(gw);
}
else
{
if (had_err == 0)
{
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_COUNT, stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_COUNT);
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_COUNT, stdout);
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_COUNT);
strgraph = gt_strgraph_new(nreads);
- had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_strgraph_count,
+ had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_strgraph_count,
strgraph, readset, arguments->minmatchlength, arguments->nspmfiles,
contained, err);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_COUNT);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_COUNT);
}
if (had_err == 0)
{
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_INSERT, stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_INSERT);
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_INSERT, stdout);
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_INSERT);
gt_strgraph_allocate_graph(strgraph,
eqlen ? gt_encseq_seqlength(reads, 0) : 0,
eqlen ? NULL : reads);
@@ -318,19 +330,22 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
(GtUword)arguments->minmatchlength, false,
contained, readset, arguments->nspmfiles,
GT_READJOINER_SUFFIX_SPMLIST, err);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_INSERT);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_INSERT);
}
if (had_err == 0)
{
if (gt_showtime_enabled())
- gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_OUTPUT, stdout);
- gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_OUTPUT);
+ gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_OUTPUT, stdout);
+ gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_OUTPUT);
gt_strgraph_set_encseq(strgraph, reads);
- gt_strgraph_show(strgraph, arguments->gz ? GT_STRGRAPH_ASQG_GZ :
- GT_STRGRAPH_ASQG, gt_str_get(arguments->readset),
- arguments->gz ? GT_READJOINER_SUFFIX_SG_ASQG_GZ :
- GT_READJOINER_SUFFIX_SG_ASQG, false);
- gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_OUTPUT);
+ gt_strgraph_show(strgraph,
+ arguments->gfa1 ?
+ (arguments->gz ? GT_STRGRAPH_GFA1_GZ : GT_STRGRAPH_GFA1) :
+ (arguments->gz ? GT_STRGRAPH_GFA2_GZ : GT_STRGRAPH_GFA2),
+ gt_str_get(arguments->readset),
+ arguments->gz ? GT_READJOINER_SUFFIX_SG_GFA_GZ :
+ GT_READJOINER_SUFFIX_SG_GFA, false);
+ gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_OUTPUT);
}
}
if (gt_showtime_enabled())
@@ -347,10 +362,10 @@ static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
return had_err;
}
-GtTool* gt_readjoiner_asqg(void)
+GtTool* gt_readjoiner_gfa(void)
{
- return gt_tool_new(gt_readjoiner_asqg_arguments_new,
- gt_readjoiner_asqg_arguments_delete,
- gt_readjoiner_asqg_option_parser_new,
- NULL, gt_readjoiner_asqg_runner);
+ return gt_tool_new(gt_readjoiner_gfa_arguments_new,
+ gt_readjoiner_gfa_arguments_delete,
+ gt_readjoiner_gfa_option_parser_new,
+ NULL, gt_readjoiner_gfa_runner);
}
diff --git a/src/match/lua_tools.h b/src/tools/gt_readjoiner_gfa.h
similarity index 78%
copy from src/match/lua_tools.h
copy to src/tools/gt_readjoiner_gfa.h
index 99158d4..6e33f10 100644
--- a/src/match/lua_tools.h
+++ b/src/tools/gt_readjoiner_gfa.h
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2011 Dirk Willrodt <willrodt at zbh.uni-hamburg.de>
+ Copyright (c) 2011 Giorgio Gonnella <gonnella at zbh.uni-hamburg.de>
Copyright (c) 2011 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
@@ -15,13 +15,12 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#ifndef LUA_TOOLS_H
-#define LUA_TOOLS_H
+#ifndef GT_READJOINER_GFA_H
+#define GT_READJOINER_GFA_H
-#include "lauxlib.h"
-#include "lua.h"
-#include "lualib.h"
+#include "core/tool_api.h"
-void gt_lua_stack_dump(lua_State *L);
+/* the readjoiner_gfa tool */
+GtTool* gt_readjoiner_gfa(void);
#endif
diff --git a/src/tools/gt_repfind.c b/src/tools/gt_repfind.c
index 248af89..6796726 100644
--- a/src/tools/gt_repfind.c
+++ b/src/tools/gt_repfind.c
@@ -15,6 +15,7 @@
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <float.h>
#include "core/error_api.h"
#include "core/format64.h"
#include "core/log_api.h"
@@ -29,6 +30,7 @@
#include "core/encseq.h"
#include "core/showtime.h"
#include "core/timer_api.h"
+#include "core/encseq_metadata.h"
#include "match/esa-maxpairs.h"
#include "match/esa-mmsearch.h"
#include "match/querymatch.h"
@@ -45,7 +47,7 @@ typedef struct
GtUword samples,
extendxdrop,
maxfreq,
- history, /* number of bits used for history of alignments */
+ historysize, /* number of bits used for history of alignments */
perc_mat_history, /* percent of matches in history */
minidentity, /* We prefer to specify the minidentity. The use of the
notion of error percentage may be misleading, as in Myers paper it
@@ -53,22 +55,20 @@ typedef struct
reasons, the option -err is used, then the minidentity contains the
error rate, a value in the range from 1 to 30. */
maxalignedlendifference, /* maxfrontdist */
- extendgreedy, /* determines which of the tables in
+ extendgreedy; /* determines which of the tables in
seed-extend-params.h is used */
- alignmentwidth; /* 0 for no alignment display and otherwidth number
- of columns of alignment per line displayed. */
bool scanfile, beverbose, forward, reverse, reverse_complement, searchspm,
- check_extend_symmetry, silent, trimstat, seed_display, seqlength_display,
- noxpolish, verify_alignment;
- GtStr *indexname, *query_indexname, *cam_string; /* parse this using
- gt_greedy_extend_char_access*/
+ check_extend_symmetry, trimstat_on, noxpolish, verify_alignment;
+ GtStr *indexname, *query_indexname, *cam_string;
GtStrArray *query_files;
GtOption *refforwardoption,
*refseedlengthoption,
*refuserdefinedleastlengthoption,
*refextendxdropoption,
*refextendgreedyoption,
- *refalignmentoutoption;
+ *ref_op_evalue;
+ GtStrArray *display_args;
+ double evalue_threshold;
} GtMaxpairsoptions;
static int gt_exact_selfmatch_with_output(void *info,
@@ -78,55 +78,62 @@ static int gt_exact_selfmatch_with_output(void *info,
GtUword pos2,
GT_UNUSED GtError *err)
{
- GtUword queryseqnum, queryseqstartpos, query_totallength, dbseqnum,
- dbseqstartpos, dbseqlen;
+ GtUword queryseqnum, query_seqstart, query_seqlen, dbseqnum,
+ db_seqstart, dbseqlen;
const GtEncseq *encseq;
- GtProcessinfo_and_querymatchspaceptr *processinfo_and_querymatchspaceptr
+ GtProcessinfo_and_querymatchspaceptr *info_querymatch
= (GtProcessinfo_and_querymatchspaceptr *) info;
+ GtSeqorEncseq dbes, queryes;
gt_assert(pos1 < pos2 && genericencseq != NULL && genericencseq->hasencseq);
encseq = genericencseq->seqptr.encseq;
if (gt_encseq_has_multiseq_support(encseq))
{
dbseqnum = gt_encseq_seqnum(encseq,pos1);
- dbseqstartpos = gt_encseq_seqstartpos(encseq,dbseqnum);
+ db_seqstart = gt_encseq_seqstartpos(encseq,dbseqnum);
dbseqlen = gt_encseq_seqlength(encseq,dbseqnum);
queryseqnum = gt_encseq_seqnum(encseq,pos2);
- queryseqstartpos = gt_encseq_seqstartpos(encseq,queryseqnum);
- query_totallength = gt_encseq_seqlength(encseq,queryseqnum);
+ query_seqstart = gt_encseq_seqstartpos(encseq,queryseqnum);
+ query_seqlen = gt_encseq_seqlength(encseq,queryseqnum);
} else
{
dbseqnum = 0;
- dbseqstartpos = 0;
+ db_seqstart = 0;
dbseqlen = 0;
queryseqnum = 0;
- queryseqstartpos = 0;
- query_totallength = 0;
+ query_seqstart = 0;
+ query_seqlen = 0;
}
- gt_assert(pos2 >= queryseqstartpos);
- if (gt_querymatch_complete(processinfo_and_querymatchspaceptr->
- querymatchspaceptr,
+ gt_assert(pos2 >= query_seqstart);
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&dbes,encseq);
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&queryes,encseq);
+ if (gt_querymatch_complete(info_querymatch->querymatchspaceptr,
+ info_querymatch->out_display_flag,
len,
- pos1,
dbseqnum,
- pos1 - dbseqstartpos,
+ pos1 - db_seqstart,
+ db_seqstart,
dbseqlen,
- 0,
- 0,
+ 0, /* score */
+ 0, /* edist */
+ 0, /* mismatches */
true,
(uint64_t) queryseqnum,
len,
- pos2 - queryseqstartpos,
- encseq,
- NULL,
- query_totallength,
- pos1,
- pos2,
+ pos2 - query_seqstart,
+ &dbes,
+ &queryes,
+ query_seqstart,
+ query_seqlen,
+ pos1 - db_seqstart,
+ pos2 - query_seqstart,
len,
false))
{
- gt_querymatch_prettyprint(processinfo_and_querymatchspaceptr->
- querymatchspaceptr);
+ /* for exact matches we do not output evalues and bitscores */
+ gt_querymatch_prettyprint(DBL_MAX,DBL_MAX,
+ info_querymatch->out_display_flag,
+ info_querymatch->querymatchspaceptr);
}
return 0;
}
@@ -185,6 +192,7 @@ static void *gt_repfind_arguments_new(void)
arguments->query_indexname = gt_str_new();
arguments->cam_string = gt_str_new();
arguments->query_files = gt_str_array_new();
+ arguments->display_args = gt_str_array_new();
return arguments;
}
@@ -200,12 +208,13 @@ static void gt_repfind_arguments_delete(void *tool_arguments)
gt_str_delete(arguments->query_indexname);
gt_str_delete(arguments->cam_string);
gt_str_array_delete(arguments->query_files);
+ gt_str_array_delete(arguments->display_args);
gt_option_delete(arguments->refforwardoption);
gt_option_delete(arguments->refseedlengthoption);
gt_option_delete(arguments->refuserdefinedleastlengthoption);
gt_option_delete(arguments->refextendxdropoption);
gt_option_delete(arguments->refextendgreedyoption);
- gt_option_delete(arguments->refalignmentoutoption);
+ gt_option_delete(arguments->ref_op_evalue);
gt_free(arguments);
}
@@ -220,8 +229,8 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
*maxalilendiffoption, *leastlength_option, *char_access_mode_option,
*check_extend_symmetry_option, *xdropbelowoption, *historyoption,
*percmathistoryoption, *errorpercentageoption, *optiontrimstat,
- *withalignmentoption, *optionseed_display, *optionseqlength_display,
- *optionnoxpolish, *verify_alignment_option, *option_query_indexname;
+ *optionnoxpolish, *verify_alignment_option, *option_query_indexname,
+ *op_evalue;
GtMaxpairsoptions *arguments = tool_arguments;
op = gt_option_parser_new("[options] -ii indexname",
@@ -337,7 +346,7 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
= gt_option_new_uword_min_max("history",
"Specify size of history in range [1..64] "
"(trimming for greedy extension)",
- &arguments->history,
+ &arguments->historysize,
60,
0,
64);
@@ -354,18 +363,6 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
gt_option_parser_add_option(op, percmathistoryoption);
gt_option_is_development_option(percmathistoryoption);
- withalignmentoption
- = gt_option_new_uword_min("a",
- "show alignments/sequences for exact matches "
- "(optional argument is number of columns per "
- "line)",
- &arguments->alignmentwidth,
- 70,
- 20);
- gt_option_argument_is_optional(withalignmentoption);
- gt_option_parser_add_option(op, withalignmentoption);
- arguments->refalignmentoutoption = gt_option_ref(withalignmentoption);
-
option = gt_option_new_string("ii",
"Specify input index",
arguments->indexname, NULL);
@@ -374,14 +371,26 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
char_access_mode_option = gt_option_new_string("cam",
gt_cam_extendgreedy_comment(),
- arguments->cam_string,"");
+ arguments->cam_string,
+ "any,any");
gt_option_parser_add_option(op, char_access_mode_option);
gt_option_is_development_option(char_access_mode_option);
- option = gt_option_new_bool("silent","do not report matches",
- &arguments->silent, false);
+ /* -outfmt */
+ option = gt_option_new_string_array("outfmt",
+ gt_querymatch_display_help(),
+ arguments->display_args);
gt_option_parser_add_option(op, option);
- gt_option_is_development_option(option);
+
+ /* -evalue */
+ op_evalue = gt_option_new_double("evalue","switch on evalue filtering of "
+ "matches (optional argument "
+ "specifies evalue threshold)",
+ &arguments->evalue_threshold,
+ 10.0);
+ gt_option_parser_add_option(op, op_evalue);
+ gt_option_argument_is_optional(op_evalue);
+ arguments->ref_op_evalue = gt_option_ref(op_evalue);
optionnoxpolish
= gt_option_new_bool("noxpolish","do not polish X-drop extensions",
@@ -396,24 +405,10 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
gt_option_is_development_option(verify_alignment_option);
optiontrimstat = gt_option_new_bool("trimstat","show trimming statistics",
- &arguments->trimstat, false);
+ &arguments->trimstat_on, false);
gt_option_parser_add_option(op, optiontrimstat);
gt_option_is_development_option(optiontrimstat);
- optionseed_display = gt_option_new_bool("seed-display","display seeds in "
- "#-line",
- &arguments->seed_display, false);
- gt_option_parser_add_option(op, optionseed_display);
- gt_option_is_development_option(optionseed_display);
-
- optionseqlength_display = gt_option_new_bool("seqlength-display",
- "Display length of sequences in which "
- "the two match-instances occur",
- &arguments->seqlength_display,
- false);
- gt_option_parser_add_option(op, optionseqlength_display);
- gt_option_is_development_option(optionseqlength_display);
-
option_query_indexname = gt_option_new_string("qii",
"Specify name of query index",
arguments->query_indexname,
@@ -469,15 +464,11 @@ static GtOptionParser *gt_repfind_option_parser_new(void *tool_arguments)
gt_option_exclude(reverse_complementoption,spmoption);
gt_option_exclude(extendgreedyoption,extendxdropoption);
gt_option_exclude(errorpercentageoption,minidentityoption);
- gt_option_exclude(withalignmentoption,sampleoption);
- gt_option_exclude(withalignmentoption,spmoption);
- gt_option_exclude(optionnoxpolish,withalignmentoption);
gt_option_imply(xdropbelowoption,extendxdropoption);
gt_option_imply(historyoption,extendgreedyoption);
gt_option_imply(maxalilendiffoption,extendgreedyoption);
gt_option_imply(percmathistoryoption,extendgreedyoption);
gt_option_imply(optiontrimstat,extendgreedyoption);
- gt_option_imply(verify_alignment_option,withalignmentoption);
gt_option_imply(optionnoxpolish,extendxdropoption);
gt_option_imply_either_2(seedlengthoption,extendxdropoption,
extendgreedyoption);
@@ -521,6 +512,10 @@ static int gt_repfind_arguments_check(GT_UNUSED int rest_argc,
}
}
}
+ if (!gt_option_is_set(arguments->ref_op_evalue))
+ {
+ arguments->evalue_threshold = DBL_MAX;
+ }
return 0;
}
@@ -533,12 +528,12 @@ static int gt_generic_extend_selfmatch_xdrop_with_output(
GtError *err)
{
gt_assert(genericencseq != NULL && genericencseq->hasencseq);
- return gt_xdrop_extend_selfmatch_with_output(info,
- genericencseq->seqptr.encseq,
- len,
- pos1,
- pos2,
- err);
+ return gt_rf_xdrop_extend_selfmatch_with_output(info,
+ genericencseq->seqptr.encseq,
+ len,
+ pos1,
+ pos2,
+ err);
}
static int gt_generic_simplegreedyselfmatchoutput(
@@ -550,18 +545,19 @@ static int gt_generic_simplegreedyselfmatchoutput(
GtError *err)
{
gt_assert(genericencseq != NULL && genericencseq->hasencseq);
- return gt_greedy_extend_selfmatch_with_output(processinfo,
- genericencseq->seqptr.encseq,
- len,
- pos1,
- pos2,
- err);
+ return gt_rf_greedy_extend_selfmatch_with_output(processinfo,
+ genericencseq->seqptr.encseq,
+ len,
+ pos1,
+ pos2,
+ err);
}
-typedef void (*GtXdrop_extend_querymatch_func)(void *,
- const GtEncseq *,
- const GtQuerymatch *,
- const GtSeqorEncseq *);
+typedef void (*Gt_extend_querymatch_func)(void *,
+ const GtEncseq *,
+ const GtQuerymatch *,
+ const GtSeqorEncseq *,
+ bool);
static int gt_callenumquerymatches(bool selfmatch,
const char *indexname,
@@ -570,8 +566,10 @@ static int gt_callenumquerymatches(bool selfmatch,
GtReadmode query_readmode,
unsigned int userdefinedleastlength,
GtQuerymatchoutoptions *querymatchoutoptions,
- GtXdrop_extend_querymatch_func eqmf,
+ Gt_extend_querymatch_func eqmf,
void *eqmf_data,
+ const GtSeedExtendDisplayFlag
+ *out_display_flag,
GtLogger *logger,
GtError *err)
{
@@ -579,6 +577,7 @@ static int gt_callenumquerymatches(bool selfmatch,
GtQuerysubstringmatchiterator *qsmi = NULL;
bool haserr = false, query_encseq_own = false;
GtEncseq *query_encseq = NULL;
+ GtUword totallength = 0;
if (gt_mapsuffixarray(&suffixarray,
SARR_ESQTAB | SARR_SUFTAB | SARR_SSPTAB,
@@ -617,7 +616,7 @@ static int gt_callenumquerymatches(bool selfmatch,
}
if (!haserr)
{
- GtUword totallength = gt_encseq_total_length(suffixarray.encseq);
+ totallength = gt_encseq_total_length(suffixarray.encseq);
qsmi = gt_querysubstringmatchiterator_new(suffixarray.encseq,
totallength,
suffixarray.suftab,
@@ -638,7 +637,15 @@ static int gt_callenumquerymatches(bool selfmatch,
int retval;
GtSeqorEncseq query_seqorencseq;
GtQuerymatch *exactseed = gt_querymatch_new();
+ bool same_encseq;
+ if (query_files == NULL || gt_str_array_size(query_files) == 0)
+ {
+ same_encseq = (suffixarray.encseq == query_encseq) ? true : false;
+ } else
+ {
+ same_encseq = false;
+ }
if (querymatchoutoptions != NULL)
{
gt_querymatch_outoptions_set(exactseed,querymatchoutoptions);
@@ -647,72 +654,90 @@ static int gt_callenumquerymatches(bool selfmatch,
while (!haserr &&
(retval = gt_querysubstringmatchiterator_next(qsmi, err)) == 0)
{
- GtUword dbstart, dbseqnum, dbseqstartpos, dbseqlen, matchlength,
- query_totallength, querystart;
+ GtUword dbstart, dbseqnum, db_seqstart, dbseqlen,
+ matchlength, query_seqlen, querystart, query_seqstart;
uint64_t queryunitnum;
dbstart = gt_querysubstringmatchiterator_dbstart(qsmi);
if (gt_encseq_has_multiseq_support(suffixarray.encseq))
{
dbseqnum = gt_encseq_seqnum(suffixarray.encseq,dbstart);
- dbseqstartpos = gt_encseq_seqstartpos(suffixarray.encseq, dbseqnum);
dbseqlen = gt_encseq_seqlength(suffixarray.encseq, dbseqnum);
+ db_seqstart = gt_encseq_seqstartpos(suffixarray.encseq, dbseqnum);
} else
{
- dbseqnum = dbseqstartpos = dbseqlen = 0;
+ dbseqnum = dbseqlen = db_seqstart = 0;
}
matchlength = gt_querysubstringmatchiterator_matchlength(qsmi);
- query_totallength = gt_querysubstringmatchiterator_query_seqlen(qsmi);
+ query_seqlen = gt_querysubstringmatchiterator_query_seqlen(qsmi);
+ queryunitnum = gt_querysubstringmatchiterator_queryunitnum(qsmi);
if (query_files == NULL || gt_str_array_size(query_files) == 0)
{
- query_seqorencseq.seq = NULL;
- query_seqorencseq.encseq = query_encseq;
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&query_seqorencseq,query_encseq);
+ query_seqstart = gt_encseq_seqstartpos(query_encseq,queryunitnum);
} else
{
- query_seqorencseq.seq = gt_querysubstringmatchiterator_query(qsmi);
- query_seqorencseq.encseq = NULL;
+ GT_SEQORENCSEQ_INIT_SEQ(&query_seqorencseq,
+ gt_querysubstringmatchiterator_query(qsmi),
+ gt_querysubstringmatchiterator_desc(qsmi),
+ query_seqlen,
+ NULL,
+ 0,
+ true);
+ query_seqstart = 0;
}
querystart = gt_querysubstringmatchiterator_querystart(qsmi);
- queryunitnum = gt_querysubstringmatchiterator_queryunitnum(qsmi);
if (eqmf != NULL)
{
gt_querymatch_init(exactseed,
matchlength,
- dbstart,
dbseqnum,
- dbstart - dbseqstartpos,
+ dbstart - db_seqstart,
+ db_seqstart,
dbseqlen,
0, /* score */
0, /* edist */
+ 0, /* mismatches */
selfmatch,
queryunitnum,
matchlength,
querystart,
- query_totallength);
- eqmf(eqmf_data,suffixarray.encseq,exactseed,&query_seqorencseq);
+ query_seqstart,
+ query_seqlen,
+ NULL,
+ NULL);
+ eqmf(eqmf_data,suffixarray.encseq,exactseed,&query_seqorencseq,
+ same_encseq);
} else
{
+ GtSeqorEncseq dbes;
+
+ GT_SEQORENCSEQ_INIT_ENCSEQ(&dbes,suffixarray.encseq);
if (gt_querymatch_complete(exactseed,
+ out_display_flag,
matchlength,
- dbstart,
dbseqnum,
- dbstart - dbseqstartpos,
+ dbstart - db_seqstart,
+ db_seqstart,
dbseqlen,
0, /* score */
0, /* edist */
+ 0, /* mismatches */
selfmatch,
queryunitnum,
matchlength,
querystart,
- suffixarray.encseq,
+ &dbes,
&query_seqorencseq,
- query_totallength,
- dbstart,
- querystart,
+ query_seqstart,
+ query_seqlen,
+ dbstart - db_seqstart,
+ querystart - query_seqstart,
matchlength,
false))
{
- gt_querymatch_prettyprint(exactseed);
+ /* for exact matches we do not output evalues and bitscores */
+ gt_querymatch_prettyprint(DBL_MAX,DBL_MAX,out_display_flag,exactseed);
}
}
}
@@ -731,9 +756,7 @@ static int gt_callenumquerymatches(bool selfmatch,
return haserr ? -1 : 0;
}
-static int gt_repfind_runner(int argc,
- GT_UNUSED const char **argv,
- int parsed_args,
+static int gt_repfind_runner(int argc,const char **argv, int parsed_args,
void *tool_arguments, GtError *err)
{
bool haserr = false;
@@ -742,8 +765,22 @@ static int gt_repfind_runner(int argc,
GtXdropmatchinfo *xdropmatchinfo = NULL;
GtGreedyextendmatchinfo *greedyextendmatchinfo = NULL;
GtTimer *repfindtimer = NULL;
- GtExtendCharAccess extend_char_access = GT_EXTEND_CHAR_ACCESS_ANY;
- Polishing_info *pol_info = NULL;
+ GtExtendCharAccess cam_a = GT_EXTEND_CHAR_ACCESS_ANY,
+ cam_b = GT_EXTEND_CHAR_ACCESS_ANY;
+ GtFtPolishing_info *pol_info = NULL;
+ GtQuerymatchoutoptions *querymatchoutoptions;
+ GtKarlinAltschulStat *karlin_altschul_stat = NULL;
+ Gt_extend_querymatch_func eqmf = NULL;
+ void *eqmf_data = NULL;
+ int mode;
+ const int modes[] = {GT_READMODE_FORWARD,
+ GT_READMODE_REVERSE,
+ GT_READMODE_REVCOMPL};
+ const bool flags[] = {arguments->forward,
+ arguments->reverse,
+ arguments->reverse_complement};
+ GtSeedExtendDisplayFlag *out_display_flag = NULL;
+ GtFtTrimstat *trimstat = NULL;
gt_error_check(err);
logger = gt_logger_new(arguments->beverbose, GT_LOGGER_DEFLT_PREFIX, stdout);
@@ -757,9 +794,50 @@ static int gt_repfind_runner(int argc,
gt_error_set(err,"superfluous arguments: \"%s\"",argv[argc-1]);
haserr = true;
}
- if (!haserr && !gt_option_is_set(arguments->refalignmentoutoption))
+ if (!haserr)
{
- arguments->alignmentwidth = 0;
+ GtSeedExtendDisplaySetMode setmode;
+
+ if (gt_option_is_set(arguments->refextendxdropoption) ||
+ gt_option_is_set(arguments->refextendgreedyoption))
+ {
+ setmode = GT_SEED_EXTEND_DISPLAY_SET_STANDARD;
+ } else
+ {
+ setmode = GT_SEED_EXTEND_DISPLAY_SET_EXACT;
+ }
+ out_display_flag = gt_querymatch_display_flag_new(arguments->display_args,
+ setmode,err);
+ if (out_display_flag == NULL)
+ {
+ haserr = true;
+ } else
+ {
+ gt_querymatch_Options_output(stdout,argc,argv,true,arguments->minidentity,
+ arguments->historysize);
+ gt_querymatch_Fields_output(stdout,out_display_flag);
+ }
+ }
+ if (!haserr)
+ {
+ if (gt_querymatch_evalue_display(out_display_flag) ||
+ gt_querymatch_bitscore_display(out_display_flag) ||
+ arguments->evalue_threshold != DBL_MAX)
+ {
+ GtEncseqMetadata *emd
+ = gt_encseq_metadata_new(gt_str_get(arguments->indexname),err);
+ if (emd == NULL)
+ {
+ haserr = true;
+ } else
+ {
+ karlin_altschul_stat = gt_karlin_altschul_stat_new_gapped(
+ gt_encseq_metadata_total_length(emd),
+ gt_encseq_metadata_num_of_sequences(emd),
+ NULL);
+ gt_encseq_metadata_delete(emd);
+ }
+ }
}
if (!haserr && gt_option_is_set(arguments->refextendxdropoption))
{
@@ -767,24 +845,21 @@ static int gt_repfind_runner(int argc,
= gt_xdrop_matchinfo_new(arguments->userdefinedleastlength,
gt_minidentity2errorpercentage(
arguments->minidentity),
+ arguments->evalue_threshold,
arguments->xdropbelowscore,
arguments->extendxdrop);
gt_assert(xdropmatchinfo != NULL);
- if (arguments->silent)
- {
- gt_xdrop_matchinfo_silent_set(xdropmatchinfo);
- }
}
if (!haserr)
{
if (gt_option_is_set(arguments->refextendgreedyoption) ||
- arguments->alignmentwidth > 0 ||
+ gt_querymatch_alignment_display(out_display_flag) ||
gt_option_is_set(arguments->refextendxdropoption))
{
- extend_char_access
- = gt_greedy_extend_char_access(gt_str_get(arguments->cam_string),err);
-
- if ((int) extend_char_access == -1)
+ if (gt_greedy_extend_char_access(&cam_a,
+ &cam_b,
+ gt_str_get(arguments->cam_string),err)
+ != 0)
{
haserr = true;
}
@@ -796,14 +871,17 @@ static int gt_repfind_runner(int argc,
arguments->minidentity);
pol_info = polishing_info_new_with_bias(errorpercentage,
GT_DEFAULT_MATCHSCORE_BIAS,
- arguments->history);
+ arguments->historysize);
greedyextendmatchinfo
- = gt_greedy_extend_matchinfo_new(errorpercentage,
- arguments->maxalignedlendifference,
- arguments->history,
+ = gt_greedy_extend_matchinfo_new(arguments->maxalignedlendifference,
+ arguments->historysize,
arguments->perc_mat_history,
arguments->userdefinedleastlength,
- extend_char_access,
+ errorpercentage,
+ arguments->evalue_threshold,
+ cam_a,
+ cam_b,
+ false,
arguments->extendgreedy,
pol_info);
if (arguments->check_extend_symmetry)
@@ -811,96 +889,106 @@ static int gt_repfind_runner(int argc,
gt_greedy_extend_matchinfo_check_extend_symmetry_set(
greedyextendmatchinfo);
}
- if (arguments->silent)
+ if (arguments->trimstat_on)
{
- gt_greedy_extend_matchinfo_silent_set(greedyextendmatchinfo);
- }
- if (arguments->trimstat)
- {
- gt_greedy_extend_matchinfo_trimstat_set(greedyextendmatchinfo);
+ trimstat = gt_ft_trimstat_new();
+ gt_greedy_extend_matchinfo_trimstat_set(greedyextendmatchinfo,trimstat);
}
}
if (!haserr)
{
- GtQuerymatchoutoptions *querymatchoutoptions;
- GtProcessinfo_and_querymatchspaceptr processinfo_and_querymatchspaceptr;
- GtXdrop_extend_querymatch_func eqmf = NULL;
- void *eqmf_data = NULL;
- int mode;
- const int modes[] = {GT_READMODE_FORWARD,
- GT_READMODE_REVERSE,
- GT_READMODE_REVCOMPL};
- const bool flags[] = {arguments->forward,
- arguments->reverse,
- arguments->reverse_complement};
- const unsigned int display_flag
- = gt_querymatch_bool2display_flag(arguments->seed_display,
- arguments->seqlength_display);
-
- processinfo_and_querymatchspaceptr.processinfo = NULL;
- if (arguments->alignmentwidth > 0 ||
+ GtEncseq *encseq_for_desc = NULL;
+ GtProcessinfo_and_querymatchspaceptr info_querymatch
+ = Initializer_GtProcessinfo_and_querymatchspaceptr;
+ info_querymatch.karlin_altschul_stat = karlin_altschul_stat;
+ info_querymatch.out_display_flag = out_display_flag;
+ if (gt_querymatch_alignment_display(out_display_flag) ||
+ gt_querymatch_trace_display(out_display_flag) ||
+ gt_querymatch_dtrace_display(out_display_flag) ||
+ gt_querymatch_cigar_display(out_display_flag) ||
+ gt_querymatch_cigarX_display(out_display_flag) ||
(gt_option_is_set(arguments->refextendxdropoption) &&
!arguments->noxpolish))
{
querymatchoutoptions
- = gt_querymatchoutoptions_new(true, false,arguments->alignmentwidth);
-
- if (gt_option_is_set(arguments->refextendxdropoption) ||
- gt_option_is_set(arguments->refextendgreedyoption))
+ = gt_querymatchoutoptions_new(out_display_flag,
+ gt_str_get(arguments->indexname),err);
+ if (querymatchoutoptions == NULL)
{
+ haserr = true;
+ }
+ if (!haserr && (gt_option_is_set(arguments->refextendxdropoption) ||
+ gt_option_is_set(arguments->refextendgreedyoption)))
+ {
+ const bool cam_generic = false;
+ const bool weakends = false;
const GtUword sensitivity
= gt_option_is_set(arguments->refextendgreedyoption)
? arguments->extendgreedy
: 100;
-
gt_querymatchoutoptions_extend(querymatchoutoptions,
gt_minidentity2errorpercentage(
arguments->minidentity),
+ arguments->evalue_threshold,
arguments->maxalignedlendifference,
- arguments->history,
+ arguments->historysize,
arguments->perc_mat_history,
- extend_char_access,
- false,
+ cam_a,
+ cam_b,
+ cam_generic,
+ weakends,
sensitivity,
GT_DEFAULT_MATCHSCORE_BIAS,
true,
- display_flag);
+ out_display_flag);
}
} else
{
querymatchoutoptions = NULL;
}
- processinfo_and_querymatchspaceptr.querymatchspaceptr = gt_querymatch_new();
- gt_querymatch_display_set(
- processinfo_and_querymatchspaceptr.querymatchspaceptr,
- display_flag);
- if (querymatchoutoptions != NULL)
- {
- gt_querymatch_outoptions_set(
- processinfo_and_querymatchspaceptr.querymatchspaceptr,
- querymatchoutoptions);
- }
- if (arguments->verify_alignment)
- {
- gt_querymatch_verify_alignment_set(
- processinfo_and_querymatchspaceptr.querymatchspaceptr);
- }
- if (gt_option_is_set(arguments->refextendxdropoption))
- {
- eqmf = gt_xdrop_extend_querymatch_with_output;
- processinfo_and_querymatchspaceptr.processinfo = xdropmatchinfo;
- eqmf_data = (void *) &processinfo_and_querymatchspaceptr;
- } else
+ if (!haserr)
{
- if (gt_option_is_set(arguments->refextendgreedyoption))
+ info_querymatch.querymatchspaceptr = gt_querymatch_new();
+ if (querymatchoutoptions != NULL)
+ {
+ gt_querymatch_outoptions_set(info_querymatch.querymatchspaceptr,
+ querymatchoutoptions);
+ }
+ if (arguments->verify_alignment)
+ {
+ gt_querymatch_verify_alignment_set(info_querymatch.querymatchspaceptr);
+ }
+ if (gt_option_is_set(arguments->refextendxdropoption))
+ {
+ eqmf = gt_rf_xdrop_extend_querymatch_with_output;
+ info_querymatch.processinfo = xdropmatchinfo;
+ eqmf_data = (void *) &info_querymatch;
+ } else
{
- eqmf = gt_greedy_extend_querymatch_with_output;
- processinfo_and_querymatchspaceptr.processinfo
- = greedyextendmatchinfo;
- eqmf_data = (void *) &processinfo_and_querymatchspaceptr;
+ if (gt_option_is_set(arguments->refextendgreedyoption))
+ {
+ eqmf = gt_rf_greedy_extend_querymatch_with_output;
+ info_querymatch.processinfo = greedyextendmatchinfo;
+ eqmf_data = (void *) &info_querymatch;
+ }
+ }
+ if (gt_querymatch_subjectid_display(out_display_flag))
+ {
+ GtEncseqLoader *encseq_loader = gt_encseq_loader_new();
+ gt_encseq_loader_require_des_tab(encseq_loader);
+ gt_encseq_loader_require_sds_tab(encseq_loader);
+ encseq_for_desc
+ = gt_encseq_loader_load(encseq_loader,
+ gt_str_get(arguments->indexname),
+ err);
+ gt_encseq_loader_delete(encseq_loader);
+ if (encseq_for_desc == NULL)
+ {
+ haserr = true;
+ }
}
}
- if (gt_str_array_size(arguments->query_files) == 0 &&
+ if (!haserr && gt_str_array_size(arguments->query_files) == 0 &&
gt_str_length(arguments->query_indexname) == 0)
{
if (arguments->samples > 0)
@@ -917,7 +1005,7 @@ static int gt_repfind_runner(int argc,
}
} else
{
- if (arguments->forward)
+ if (!haserr && arguments->forward)
{
GtProcessmaxpairs processmaxpairs;
void *processmaxpairsdata;
@@ -931,21 +1019,19 @@ static int gt_repfind_runner(int argc,
if (gt_option_is_set(arguments->refextendxdropoption))
{
processmaxpairs = gt_generic_extend_selfmatch_xdrop_with_output;
- processinfo_and_querymatchspaceptr.processinfo
- = (void *) xdropmatchinfo;
+ info_querymatch.processinfo = (void *) xdropmatchinfo;
} else
{
if (gt_option_is_set(arguments->refextendgreedyoption))
{
processmaxpairs = gt_generic_simplegreedyselfmatchoutput;
- processinfo_and_querymatchspaceptr.processinfo
- = (void *) greedyextendmatchinfo;
+ info_querymatch.processinfo = (void *) greedyextendmatchinfo;
} else
{
processmaxpairs = gt_exact_selfmatch_with_output;
}
}
- processmaxpairsdata = (void *) &processinfo_and_querymatchspaceptr;
+ processmaxpairsdata = (void *) &info_querymatch;
}
if (gt_callenummaxpairs(gt_str_get(arguments->indexname),
arguments->seedlength,
@@ -968,7 +1054,7 @@ static int gt_repfind_runner(int argc,
if (flags[mode])
{
gt_querymatch_query_readmode_set(
- processinfo_and_querymatchspaceptr.querymatchspaceptr,
+ info_querymatch.querymatchspaceptr,
modes[mode]);
if (gt_callenumquerymatches(true,
gt_str_get(arguments->indexname),
@@ -979,6 +1065,7 @@ static int gt_repfind_runner(int argc,
querymatchoutoptions,
eqmf,
eqmf_data,
+ out_display_flag,
logger,
err) != 0)
{
@@ -994,9 +1081,8 @@ static int gt_repfind_runner(int argc,
{
if (flags[mode])
{
- gt_querymatch_query_readmode_set(
- processinfo_and_querymatchspaceptr.querymatchspaceptr,
- modes[mode]);
+ gt_querymatch_query_readmode_set(info_querymatch.querymatchspaceptr,
+ modes[mode]);
if (gt_callenumquerymatches(false,
gt_str_get(arguments->indexname),
arguments->query_files,
@@ -1006,6 +1092,7 @@ static int gt_repfind_runner(int argc,
querymatchoutoptions,
eqmf,
eqmf_data,
+ out_display_flag,
logger,
err) != 0)
{
@@ -1014,13 +1101,17 @@ static int gt_repfind_runner(int argc,
}
}
}
+ gt_encseq_delete(encseq_for_desc);
gt_querymatchoutoptions_delete(querymatchoutoptions);
- gt_querymatch_delete(processinfo_and_querymatchspaceptr.querymatchspaceptr);
+ gt_querymatch_delete(info_querymatch.querymatchspaceptr);
}
+ gt_karlin_altschul_stat_delete(karlin_altschul_stat);
gt_xdrop_matchinfo_delete(xdropmatchinfo);
gt_greedy_extend_matchinfo_delete(greedyextendmatchinfo);
+ gt_ft_trimstat_delete(trimstat);
polishing_info_delete(pol_info);
gt_logger_delete(logger);
+ gt_querymatch_display_flag_delete(out_display_flag);
if (repfindtimer != NULL)
{
char *keystring = gt_seed_extend_params_keystring(
diff --git a/src/tools/gt_seed_extend.c b/src/tools/gt_seed_extend.c
index 336edc5..3288683 100644
--- a/src/tools/gt_seed_extend.c
+++ b/src/tools/gt_seed_extend.c
@@ -1,6 +1,7 @@
/*
Copyright (c) 2015-2016 Joerg Winkler <j.winkler at posteo.de>
- Copyright (c) 2015-2016 Center for Bioinformatics, University of Hamburg
+ Copyright (c) 2016-2017 Stefan Kurtz <kurtz at zbh.uni-hamburg.de>
+ Copyright (c) 2015-2017 Center for Bioinformatics, University of Hamburg
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -16,6 +17,7 @@
*/
#include <limits.h>
+#include <float.h>
#include "core/alphabet_api.h"
#include "core/arraydef.h"
#include "core/cstr_api.h"
@@ -35,13 +37,19 @@
#include "match/xdrop.h"
#include "match/ft-polish.h"
#include "match/initbasepower.h"
+#include "match/seed_extend_parts.h"
#include "tools/gt_seed_extend.h"
+#ifdef GT_THREADS_ENABLED
+#include "core/thread_api.h"
+#endif
typedef struct {
/* diagbandseed options */
GtStr *dbs_indexname;
GtStr *dbs_queryname;
+ unsigned int dbs_spacedseedweight;
unsigned int dbs_seedlength;
+ bool spacedseed;
GtUword dbs_logdiagbandwidth;
GtUword dbs_mincoverage;
GtUword dbs_maxfreq;
@@ -49,8 +57,10 @@ typedef struct {
GtUword dbs_memlimit;
GtUword dbs_parts;
GtRange seedpairdistance;
- GtStr *dbs_pick_str;
- GtStr *dbs_memlimit_str;
+ GtStr *dbs_pick_str,
+ *diagband_statistics_arg,
+ *chainarguments,
+ *dbs_memlimit_str;
bool dbs_debug_kmer;
bool dbs_debug_seedpair;
bool dbs_verify;
@@ -58,32 +68,38 @@ typedef struct {
bool onlyseeds;
bool overlappingseeds;
/* xdrop extension options */
- GtOption *se_option_xdrop;
GtUword se_extendxdrop;
GtXdropscore se_xdropbelowscore;
/* greedy extension options */
- GtOption *se_option_greedy;
GtUword se_extendgreedy;
GtUword se_historysize;
GtUword se_maxalilendiff;
GtUword se_perc_match_hist;
- GtStr *char_access_mode;
+ GtStr *char_access_mode, *splt_string;
bool bias_parameters;
bool relax_polish;
+ bool verify_alignment;
+ bool only_selected_seqpairs;
+ bool cam_generic;
/* general options */
- GtOption *se_option_withali;
GtUword se_alignlength;
GtUword se_minidentity;
- GtUword se_alignmentwidth;
+ double se_evalue_threshold;
+ GtStrArray *display_args;
bool norev;
bool nofwd;
bool benchmark;
bool verbose;
- bool seed_display;
- bool seqlength_display;
- bool use_apos;
bool histogram;
bool use_kmerfile;
+ bool trimstat_on;
+ bool use_apos, use_apos_track_all, compute_ani;
+ GtUword maxmat;
+ GtOption *se_ref_op_evalue,
+ *se_ref_op_maxmat,
+ *ref_diagband_statistics,
+ *se_ref_op_gre,
+ *se_ref_op_xdr;
} GtSeedExtendArguments;
static void* gt_seed_extend_arguments_new(void)
@@ -92,8 +108,12 @@ static void* gt_seed_extend_arguments_new(void)
arguments->dbs_indexname = gt_str_new();
arguments->dbs_queryname = gt_str_new();
arguments->dbs_pick_str = gt_str_new();
+ arguments->chainarguments = gt_str_new();
+ arguments->diagband_statistics_arg = gt_str_new();
arguments->dbs_memlimit_str = gt_str_new();
arguments->char_access_mode = gt_str_new();
+ arguments->splt_string = gt_str_new();
+ arguments->display_args = gt_str_array_new();
return arguments;
}
@@ -104,11 +124,17 @@ static void gt_seed_extend_arguments_delete(void *tool_arguments)
gt_str_delete(arguments->dbs_indexname);
gt_str_delete(arguments->dbs_queryname);
gt_str_delete(arguments->dbs_pick_str);
+ gt_str_delete(arguments->chainarguments);
+ gt_str_delete(arguments->diagband_statistics_arg);
gt_str_delete(arguments->dbs_memlimit_str);
gt_str_delete(arguments->char_access_mode);
- gt_option_delete(arguments->se_option_greedy);
- gt_option_delete(arguments->se_option_xdrop);
- gt_option_delete(arguments->se_option_withali);
+ gt_str_delete(arguments->splt_string);
+ gt_option_delete(arguments->se_ref_op_gre);
+ gt_option_delete(arguments->se_ref_op_xdr);
+ gt_option_delete(arguments->se_ref_op_evalue);
+ gt_option_delete(arguments->se_ref_op_maxmat);
+ gt_option_delete(arguments->ref_diagband_statistics);
+ gt_str_array_delete(arguments->display_args);
gt_free(arguments);
}
}
@@ -117,12 +143,21 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
{
GtSeedExtendArguments *arguments = tool_arguments;
GtOptionParser *op;
- GtOption *option, *op_gre, *op_xdr, *op_cam, *op_his, *op_dif, *op_pmh,
- *op_len, *op_err, *op_xbe, *op_sup, *op_frq, *op_mem, *op_ali, *op_bia,
- *op_onl, *op_weakends, *op_seed_display, *op_relax_polish, *op_spdist,
- *op_norev, *op_nofwd, *op_part, *op_pick, *op_seqlength_display, *op_overl;
+ GtOption *option, *op_gre, *op_xdr, *op_cam, *op_splt,
+ *op_his, *op_dif, *op_pmh,
+ *op_seedlength, *op_spacedseed, *op_minlen, *op_minid, *op_evalue, *op_xbe,
+ *op_sup, *op_frq,
+ *op_mem, *op_bia, *op_onlyseeds, *op_weakends, *op_relax_polish,
+ *op_verify_alignment, *op_only_selected_seqpairs, *op_spdist, *op_outfmt,
+ *op_norev, *op_nofwd, *op_part, *op_pick, *op_overl, *op_trimstat,
+ *op_cam_generic, *op_diagbandwidth, *op_mincoverage, *op_maxmat,
+ *op_use_apos, *op_use_apos_track_all, *op_chain, *op_diagband_statistics,
+ *op_ani, *op_benchmark;
static GtRange seedpairdistance_defaults = {1UL, GT_UWORD_MAX};
+ /* When extending the following array, do not forget to update
+ the help message accordingly. */
+ static const char *diagband_statistics_choices[] = {"sum", NULL};
gt_assert(arguments != NULL);
/* init */
@@ -150,31 +185,54 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
gt_option_parser_add_option(op, option);
/* -seedlength */
- op_len = gt_option_new_uint_min_max("seedlength",
+ op_seedlength = gt_option_new_uint_min_max("seedlength",
"Minimum length of a seed\n"
"default: logarithm of input length "
- "to the basis alphabet size",
+ "with alphabet size as log-base",
&arguments->dbs_seedlength,
UINT_MAX, 1UL, 32UL);
- gt_option_hide_default(op_len);
- gt_option_parser_add_option(op, op_len);
+ gt_option_hide_default(op_seedlength);
+ gt_option_parser_add_option(op, op_seedlength);
+
+ /* -spacedseed */
+ op_spacedseed = gt_option_new_bool("spacedseed",
+ "use spaced seed of length specified by "
+ "option -seedlength",
+ &arguments->spacedseed,
+ false);
+ gt_option_parser_add_option(op, op_spacedseed);
/* -diagbandwidth */
- option = gt_option_new_uword("diagbandwidth",
- "Logarithm of diagonal band width (for filter)",
+ op_diagbandwidth = gt_option_new_uword_min_max("diagbandwidth",
+ "Logarithm of diagonal band width in the "
+ "range\nfrom 0 to 10 (for filter)",
&arguments->dbs_logdiagbandwidth,
- 6UL);
- gt_option_parser_add_option(op, option);
+ 6UL,
+ 0,
+ 10);
+ gt_option_parser_add_option(op, op_diagbandwidth);
/* -mincoverage */
- option = gt_option_new_uword_min("mincoverage",
+ op_mincoverage = gt_option_new_uword_min("mincoverage",
"Minimum coverage in two neighbouring "
"diagonal bands (for filter)\n"
"default: 2.5 x seedlength",
&arguments->dbs_mincoverage,
GT_UWORD_MAX, 1UL);
- gt_option_hide_default(option);
- gt_option_parser_add_option(op, option);
+ gt_option_hide_default(op_mincoverage);
+ gt_option_parser_add_option(op, op_mincoverage);
+
+ /* -diagband-stat */
+ op_diagband_statistics = gt_option_new_choice("diagband-stat",
+ "Compute statistics from diagonal "
+ "band scores; parameter specifies "
+ "kind of statistics, possible choices are\n"
+ "sum",
+ arguments->diagband_statistics_arg,
+ diagband_statistics_choices[0],
+ diagband_statistics_choices);
+ gt_option_parser_add_option(op, op_diagband_statistics);
+ arguments->ref_diagband_statistics = gt_option_ref(op_diagband_statistics);
/* -maxfreq */
op_frq = gt_option_new_uword_min("maxfreq",
@@ -227,18 +285,16 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
gt_option_is_development_option(option);
gt_option_parser_add_option(op, option);
- /* SEED EXTENSION OPTIONS */
-
/* -extendxdrop */
op_xdr = gt_option_new_uword_min_max("extendxdrop",
"Extend seed to both sides using xdrop "
- "algorithm, /noptional parameter "
+ "algorithm,\noptional parameter "
"specifies sensitivity",
&arguments->se_extendxdrop,
97UL, 90UL, 100UL);
gt_option_argument_is_optional(op_xdr);
gt_option_parser_add_option(op, op_xdr);
- arguments->se_option_xdrop = gt_option_ref(op_xdr);
+ arguments->se_ref_op_xdr = gt_option_ref(op_xdr);
/* -xdropbelow */
op_xbe = gt_option_new_word("xdropbelow",
@@ -252,24 +308,24 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
/* -extendgreedy */
op_gre = gt_option_new_uword_min_max("extendgreedy",
"Extend seed to both sides using greedy "
- "algorithm, \noptional parameter "
+ "algorithm,\noptional parameter "
"specifies sensitivity",
&arguments->se_extendgreedy,
97UL, 90UL, 100UL);
gt_option_argument_is_optional(op_gre);
gt_option_exclude(op_gre, op_xdr);
gt_option_parser_add_option(op, op_gre);
- arguments->se_option_greedy = gt_option_ref(op_gre);
+ arguments->se_ref_op_gre = gt_option_ref(op_gre);
/* -only-seeds */
- op_onl = gt_option_new_bool("only-seeds",
+ op_onlyseeds = gt_option_new_bool("only-seeds",
"Calculate seeds and do not extend",
&arguments->onlyseeds,
false);
- gt_option_exclude(op_onl, op_xdr);
- gt_option_exclude(op_onl, op_gre);
- gt_option_is_development_option(op_onl);
- gt_option_parser_add_option(op, op_onl);
+ gt_option_exclude(op_onlyseeds, op_xdr);
+ gt_option_exclude(op_onlyseeds, op_gre);
+ gt_option_is_development_option(op_onlyseeds);
+ gt_option_parser_add_option(op, op_onlyseeds);
/* -history */
op_his = gt_option_new_uword_min_max("history",
@@ -277,7 +333,7 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
"..64]\n(trimming for greedy extension)",
&arguments->se_historysize,
60UL, 1UL, 64UL);
- gt_option_exclude(op_his, op_onl);
+ gt_option_exclude(op_his, op_onlyseeds);
gt_option_exclude(op_his, op_xdr);
gt_option_is_development_option(op_his);
gt_option_parser_add_option(op, op_his);
@@ -287,7 +343,7 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
"Maximum difference of alignment length\n"
"(trimming for greedy extension)",
&arguments->se_maxalilendiff, 0UL);
- gt_option_exclude(op_dif, op_onl);
+ gt_option_exclude(op_dif, op_onlyseeds);
gt_option_exclude(op_dif, op_xdr);
gt_option_hide_default(op_dif);
gt_option_is_development_option(op_dif);
@@ -299,7 +355,7 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
"history \n(for greedy extension)",
&arguments->se_perc_match_hist,
0UL, 1UL, 100UL);
- gt_option_exclude(op_pmh, op_onl);
+ gt_option_exclude(op_pmh, op_onlyseeds);
gt_option_exclude(op_pmh, op_xdr);
gt_option_hide_default(op_pmh);
gt_option_is_development_option(op_pmh);
@@ -311,7 +367,7 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
"depend on minidentiy and DNA base distribution",
&arguments->bias_parameters,
false);
- gt_option_exclude(op_bia, op_onl);
+ gt_option_exclude(op_bia, op_onlyseeds);
gt_option_exclude(op_bia, op_xdr);
gt_option_exclude(op_bia, op_pmh);
gt_option_exclude(op_bia, op_dif);
@@ -322,71 +378,143 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
op_cam = gt_option_new_string("cam",
gt_cam_extendgreedy_comment(),
arguments->char_access_mode,
- "");
+ "bytes,bytes");
gt_option_hide_default(op_cam);
gt_option_is_development_option(op_cam);
gt_option_parser_add_option(op, op_cam);
+ op_cam_generic = gt_option_new_bool("cam_generic",
+ "use generic function to access sequence",
+ &arguments->cam_generic, false);
+ gt_option_is_development_option(op_cam_generic);
+ gt_option_parser_add_option(op, op_cam_generic);
+
+ /* -splt */
+ op_splt = gt_option_new_string("splt",
+ gt_diagbandseed_splt_comment(),
+ arguments->splt_string,
+ "");
+ gt_option_hide_default(op_splt);
+ gt_option_is_development_option(op_splt);
+ gt_option_parser_add_option(op, op_splt);
+
+ /* -trimstat */
+ op_trimstat = gt_option_new_bool("trimstat","show trimming statistics",
+ &arguments->trimstat_on, false);
+ gt_option_is_development_option(op_trimstat);
+ gt_option_parser_add_option(op, op_trimstat);
+ gt_option_exclude(op_trimstat, op_xdr);
+ gt_option_exclude(op_trimstat, op_onlyseeds);
+
+ /* -maxmat */
+ op_maxmat = gt_option_new_ulong("maxmat",
+ "compute maximal matches of minimum length "
+ "specified by option -l",
+ &arguments->maxmat,
+ 1);
+ arguments->se_ref_op_maxmat = gt_option_ref(op_maxmat);
+ /* will later be included again: gt_option_exclude(op_maxmat, op_bia); */
+ /*gt_option_exclude(op_maxmat, op_diagbandwidth);
+ gt_option_exclude(op_maxmat, op_mincoverage);
+ gt_option_exclude(op_maxmat, op_xdr);
+ gt_option_exclude(op_maxmat, op_xbe);
+ gt_option_exclude(op_maxmat, op_gre);
+ gt_option_exclude(op_maxmat, op_his);
+ gt_option_exclude(op_maxmat, op_dif);
+ gt_option_exclude(op_maxmat, op_pmh);
+ gt_option_exclude(op_maxmat, op_cam);
+ gt_option_exclude(op_maxmat, op_trimstat);*/
+ gt_option_argument_is_optional(op_maxmat);
+ gt_option_parser_add_option(op, op_maxmat);
+
+ op_chain = gt_option_new_string("chain",
+ "apply local chaining to maximal matches "
+ "derived from k-mer seeds",
+ arguments->chainarguments,"");
+ gt_option_argument_is_optional(op_chain);
+ gt_option_is_development_option(op_chain);
+ gt_option_parser_add_option(op, op_chain);
+
+ /* SEED EXTENSION OPTIONS */
+
/* -l */
- op_len = gt_option_new_uword_min("l",
- "Minimum alignment length "
- "(for seed extension)",
+ op_minlen = gt_option_new_uword_min("l",
+ "Minimum length of aligned sequences ",
&arguments->se_alignlength,
GT_UWORD_MAX, 1UL);
- gt_option_exclude(op_len, op_onl);
- gt_option_parser_add_option(op, op_len);
+ gt_option_exclude(op_minlen, op_onlyseeds);
+ gt_option_parser_add_option(op, op_minlen);
+ gt_option_imply(op_maxmat, op_minlen);
/* -minidentity */
- op_err = gt_option_new_uword_min_max("minidentity",
+ op_minid = gt_option_new_uword_min_max("minidentity",
"Minimum identity of matches "
"(for seed extension)",
&arguments->se_minidentity,
80UL, GT_EXTEND_MIN_IDENTITY_PERCENTAGE,
99UL);
- gt_option_exclude(op_err, op_onl);
- gt_option_parser_add_option(op, op_err);
+ gt_option_exclude(op_minid, op_onlyseeds);
+ /* will later be included again: gt_option_exclude(op_maxmat, op_minid); */
+ gt_option_parser_add_option(op, op_minid);
+
+ /* -evalue */
+ op_evalue = gt_option_new_double("evalue","switch on evalue filtering of "
+ "matches (optional argument "
+ "specifies evalue threshold)",
+ &arguments->se_evalue_threshold,
+ 10.0);
+ gt_option_exclude(op_evalue, op_onlyseeds);
+ gt_option_parser_add_option(op, op_evalue);
+ gt_option_argument_is_optional(op_evalue);
+ gt_option_exclude(op_maxmat, op_evalue);
+ arguments->se_ref_op_evalue = gt_option_ref(op_evalue);
/* OUTPUT OPTIONS */
- /* -a */
- op_ali = gt_option_new_uword_min("a",
- "show alignments/sequences (optional "
- "argument is number of columns per line)",
- &arguments->se_alignmentwidth,
- 70, 20);
- gt_option_exclude(op_ali, op_onl);
- gt_option_argument_is_optional(op_ali);
- gt_option_parser_add_option(op, op_ali);
- arguments->se_option_withali = gt_option_ref(op_ali);
-
/* -relax-polish */
op_relax_polish = gt_option_new_bool("relax-polish",
"do not force alignments to have "
"polished ends",
&arguments->relax_polish,false);
gt_option_parser_add_option(op, op_relax_polish);
+ /*gt_option_exclude(op_maxmat, op_relax_polish);*/
gt_option_is_development_option(op_relax_polish);
- gt_option_imply(op_relax_polish, op_ali);
-
- /* -seed-display */
- op_seed_display = gt_option_new_bool("seed-display",
- "Display seeds in #-line and by "
- "character + (instead of |) in middle "
- "row of alignment column",
- &arguments->seed_display,
- false);
- gt_option_exclude(op_seed_display, op_onl);
- gt_option_is_development_option(op_seed_display);
- gt_option_parser_add_option(op, op_seed_display);
-
- /* -seqlength-display */
- op_seqlength_display = gt_option_new_bool("seqlength-display",
- "Display length of sequences in which "
- "which the two match-instances occur",
- &arguments->seqlength_display,
- false);
- gt_option_is_development_option(op_seqlength_display);
- gt_option_parser_add_option(op, op_seqlength_display);
+
+ /* -verify-alignment */
+ op_verify_alignment
+ = gt_option_new_bool("verify-alignment",
+ "verify alignment directly after its construction "
+ "(without knowning the sequences) and later (after the"
+ "sequence is known), in case the alignment is output",
+ &arguments->verify_alignment,false);
+ gt_option_parser_add_option(op, op_verify_alignment);
+ gt_option_exclude(op_maxmat, op_verify_alignment);
+ gt_option_is_development_option(op_verify_alignment);
+
+ /* -only-selected-seqpairs */
+ op_only_selected_seqpairs
+ = gt_option_new_bool("only-selected-seqpairs",
+ "output only sequence pair numbers with "
+ "selected seeds",
+ &arguments->only_selected_seqpairs,false);
+ gt_option_parser_add_option(op, op_only_selected_seqpairs);
+ gt_option_is_development_option(op_only_selected_seqpairs);
+
+ /* -outfmt */
+ op_outfmt = gt_option_new_string_array("outfmt",
+ gt_querymatch_display_help(),
+ arguments->display_args);
+ gt_option_parser_add_option(op, op_outfmt);
+ gt_option_exclude(op_outfmt,op_onlyseeds);
+
+ /* -ani */
+ op_ani = gt_option_new_bool("ani",
+ "output average nucleotide identity determined "
+ "from the computed matches "
+ "(which are not output)",
+ &arguments->compute_ani,
+ false);
+ gt_option_parser_add_option(op, op_ani);
/* -no-reverse */
op_norev = gt_option_new_bool("no-reverse",
@@ -424,12 +552,12 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
gt_option_parser_add_option(op, op_spdist);
/* -benchmark */
- option = gt_option_new_bool("benchmark",
- "Measure total running time and be silent",
- &arguments->benchmark,
- false);
- gt_option_is_development_option(option);
- gt_option_parser_add_option(op, option);
+ op_benchmark = gt_option_new_bool("benchmark",
+ "Measure total running time and be silent",
+ &arguments->benchmark,
+ false);
+ gt_option_is_development_option(op_benchmark);
+ gt_option_parser_add_option(op, op_benchmark);
/* -weakends */
op_weakends = gt_option_new_bool("weakends",
@@ -437,18 +565,26 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
"alignments",
&arguments->weakends,
false);
- gt_option_exclude(op_weakends, op_onl);
+ gt_option_exclude(op_weakends, op_onlyseeds);
gt_option_is_development_option(op_weakends);
+ /*gt_option_exclude(op_maxmat, op_weakends);*/
gt_option_parser_add_option(op, op_weakends);
/* -use-apos */
- option = gt_option_new_bool("use-apos",
- "Discard a seed only if both apos and bpos "
- "overlap with previous alignment",
- &arguments->use_apos,
- false);
- gt_option_is_development_option(option);
- gt_option_parser_add_option(op, option);
+ op_use_apos = gt_option_new_bool("use-apos",
+ "Discard a seed only if both apos and bpos overlap with a "
+ "previous successful alignment",
+ &arguments->use_apos,false);
+ gt_option_parser_add_option(op, op_use_apos);
+
+ /* -use-apos-track-all */
+ op_use_apos_track_all = gt_option_new_bool("use-apos-track-all",
+ "Discard a seed only if both apos and bpos overlap with a "
+ "previous alignment",
+ &arguments->use_apos_track_all,false);
+ gt_option_parser_add_option(op, op_use_apos_track_all);
+ gt_option_is_development_option(op_use_apos_track_all);
+ gt_option_exclude(op_use_apos, op_use_apos_track_all);
/* -parts */
op_part = gt_option_new_uword_min("parts",
@@ -487,6 +623,31 @@ static GtOptionParser* gt_seed_extend_option_parser_new(void *tool_arguments)
option = gt_option_new_verbose(&arguments->verbose);
gt_option_parser_add_option(op, option);
+ gt_option_exclude(op_diagband_statistics, op_mincoverage);
+ gt_option_exclude(op_diagband_statistics, op_xdr);
+ gt_option_exclude(op_diagband_statistics, op_xbe);
+ gt_option_exclude(op_diagband_statistics, op_gre);
+ gt_option_exclude(op_diagband_statistics, op_his);
+ gt_option_exclude(op_diagband_statistics, op_dif);
+ gt_option_exclude(op_diagband_statistics, op_pmh);
+ gt_option_exclude(op_diagband_statistics, op_cam);
+ gt_option_exclude(op_diagband_statistics, op_trimstat);
+ gt_option_exclude(op_diagband_statistics, op_maxmat);
+ gt_option_exclude(op_diagband_statistics, op_use_apos);
+ gt_option_exclude(op_diagband_statistics, op_use_apos_track_all);
+ gt_option_exclude(op_diagband_statistics, op_minlen);
+ gt_option_exclude(op_diagband_statistics, op_ani);
+ gt_option_exclude(op_ani, op_outfmt);
+ gt_option_exclude(op_ani, op_onlyseeds);
+ gt_option_exclude(op_ani, op_verify_alignment);
+ gt_option_exclude(op_ani, op_only_selected_seqpairs);
+ gt_option_exclude(op_ani, op_benchmark);
+ gt_option_exclude(op_cam, op_xbe);
+ gt_option_exclude(op_cam, op_xdr);
+ gt_option_exclude(op_cam_generic, op_xbe);
+ gt_option_exclude(op_cam_generic, op_xdr);
+ gt_option_exclude(op_maxmat, op_spacedseed);
+
return op;
}
@@ -503,11 +664,6 @@ static int gt_seed_extend_arguments_check(int rest_argc, void *tool_arguments,
arguments->dbs_maxfreq = arguments->dbs_suppress - 1;
}
- /* no alignment output */
- if (!gt_option_is_set(arguments->se_option_withali)) {
- arguments->se_alignmentwidth = 0;
- }
-
/* parse memlimit argument */
arguments->dbs_memlimit = GT_UWORD_MAX;
if (arguments->histogram == true) {
@@ -524,6 +680,13 @@ static int gt_seed_extend_arguments_check(int rest_argc, void *tool_arguments,
had_err = -1;
}
}
+#ifdef GT_THREADS_ENABLED
+ if (!had_err && arguments->compute_ani && gt_jobs > 1)
+ {
+ gt_error_set(err,"option -ani does not work with multiple threads");
+ had_err = -1;
+ }
+#endif
/* minimum maxfreq value for 1 input file */
if (!had_err && arguments->dbs_maxfreq == 1 &&
@@ -538,6 +701,18 @@ static int gt_seed_extend_arguments_check(int rest_argc, void *tool_arguments,
had_err = -1;
}
+ if (!gt_option_is_set(arguments->se_ref_op_evalue))
+ {
+ arguments->se_evalue_threshold = DBL_MAX;
+ }
+ if (!gt_option_is_set(arguments->se_ref_op_maxmat))
+ {
+ arguments->maxmat = 0;
+ }
+ if (!gt_option_is_set(arguments->ref_diagband_statistics))
+ {
+ gt_str_set(arguments->diagband_statistics_arg,"");
+ }
/* no extra arguments */
if (!had_err && rest_argc > 0) {
gt_error_set(err, "too many arguments (-help shows correct usage)");
@@ -546,44 +721,13 @@ static int gt_seed_extend_arguments_check(int rest_argc, void *tool_arguments,
return had_err;
}
-/* Compute sequence ranges for specified number of parts and pick value. */
-static int gt_seed_extend_compute_parts(GtRange *seqranges,
- GtUword *numseqranges,
- const GtEncseq *encseq,
- GtUword pick_value,
- GtError *err)
+static double gt_seed_extend_ani_evaluate(GtUword sum_of_aligned_len,
+ GtUword sum_of_distance)
{
- GtUword seqnum;
- const GtUword numparts = *numseqranges;
- const GtUword maxseqnum = gt_encseq_num_of_sequences(encseq) - 1;
- const GtUword partsize = maxseqnum / numparts + 1;
- int had_err = 0;
- gt_assert(seqranges && numseqranges);
- *numseqranges = 0;
-
- if (pick_value == GT_UWORD_MAX) { /* not specified: take all sequences */
- GtRange *new_range;
- for (seqnum = 0; seqnum <= maxseqnum; seqnum += partsize) {
- gt_assert(*numseqranges < numparts);
- new_range = seqranges + *numseqranges;
- new_range->start = seqnum;
- new_range->end = MIN(seqnum + partsize - 1, maxseqnum);
- (*numseqranges)++;
- }
- gt_assert(*numseqranges > 0);
- } else if (pick_value > numparts) {
- gt_error_set(err, "arguments to option -pick must not exceed " GT_WU
- " (number of parts)", numparts);
- had_err = -1;
- } else if (pick_value < 1) {
- gt_error_set(err, "arguments to option -pick must be at least 1");
- had_err = -1;
- } else {
- seqranges->start = (pick_value - 1) * partsize;
- seqranges->end = MIN(pick_value * partsize - 1, maxseqnum);
- *numseqranges = 1;
- }
- return had_err;
+ return sum_of_aligned_len > 0
+ ? (100.0 * (1.0 - (double)
+ (2 * sum_of_distance)/sum_of_aligned_len))
+ : 0.0;
}
static int gt_seed_extend_runner(int argc,
@@ -595,56 +739,42 @@ static int gt_seed_extend_runner(int argc,
GtSeedExtendArguments *arguments = tool_arguments;
GtEncseq *aencseq = NULL, *bencseq = NULL;
GtTimer *seedextendtimer = NULL;
- GtExtendCharAccess cam = GT_EXTEND_CHAR_ACCESS_ANY;
+ GtExtendCharAccess cam_a = GT_EXTEND_CHAR_ACCESS_ANY,
+ cam_b = GT_EXTEND_CHAR_ACCESS_ANY;
+ GtDiagbandseedPairlisttype splt = GT_DIAGBANDSEED_SPLT_UNDEFINED;
GtUword errorpercentage = 0UL;
double matchscore_bias = GT_DEFAULT_MATCHSCORE_BIAS;
bool extendxdrop, extendgreedy = true;
- unsigned int display_flag = 0;
unsigned int maxseedlength = 0, nchars = 0;
- GtUword apick = GT_UWORD_MAX, bpick = GT_UWORD_MAX;
- GtUword maxseqlength = 0;
+ GtUwordPair pick = {GT_UWORD_MAX, GT_UWORD_MAX};
+ GtUword maxseqlength = 0, a_numofsequences, b_numofsequences;
+ GtSeedExtendDisplayFlag *out_display_flag = NULL;
int had_err = 0;
+ const GtSeedExtendDisplaySetMode setmode
+ = GT_SEED_EXTEND_DISPLAY_SET_STANDARD;
+ const unsigned int spacedseedweight = 21, spacedseedlength = 30;
+ GtAniAccumulate ani_accumulate[2];
gt_error_check(err);
gt_assert(arguments != NULL);
- gt_assert(arguments->se_minidentity >= GT_EXTEND_MIN_IDENTITY_PERCENTAGE &&
- arguments->se_minidentity <= 100UL);
-
+ ani_accumulate[0].sum_of_aligned_len = 0;
+ ani_accumulate[0].sum_of_distance = 0;
+ ani_accumulate[1].sum_of_aligned_len = 0;
+ ani_accumulate[1].sum_of_distance = 0;
/* Define, whether greedy extension will be performed */
- extendxdrop = gt_option_is_set(arguments->se_option_xdrop);
+ extendxdrop = gt_option_is_set(arguments->se_ref_op_xdr);
if (arguments->onlyseeds || extendxdrop) {
extendgreedy = false;
}
- /* Print verbose option string */
- if (arguments->verbose) {
- int idx;
- bool minid_out = false, history_out = false;
-
- printf("# Options:");
- for (idx = 1; idx < argc; idx++) {
- if (strcmp(argv[idx],"-minidentity") == 0) {
- minid_out = true;
- }
- if (strcmp(argv[idx],"-history") == 0) {
- history_out = true;
- }
- printf(" %s", argv[idx]);
- }
- if (!minid_out) {
- printf(" -minidentity " GT_WU,arguments->se_minidentity);
- }
- if (!history_out) {
- printf(" -history " GT_WU,arguments->se_historysize);
- }
- printf("\n");
- }
-
/* Calculate error percentage from minidentity */
+ gt_assert(arguments->se_minidentity >= GT_EXTEND_MIN_IDENTITY_PERCENTAGE &&
+ arguments->se_minidentity <= 100UL);
errorpercentage = 100UL - arguments->se_minidentity;
/* Measure whole running time */
- if (arguments->benchmark || arguments->verbose) {
+ if (arguments->benchmark || arguments->verbose)
+ {
gt_showtime_enable();
}
if (gt_showtime_enabled())
@@ -652,23 +782,71 @@ static int gt_seed_extend_runner(int argc,
seedextendtimer = gt_timer_new();
gt_timer_start(seedextendtimer);
}
+ if (!arguments->compute_ani)
+ {
+ out_display_flag = gt_querymatch_display_flag_new(arguments->display_args,
+ setmode,err);
+ if (out_display_flag == NULL)
+ {
+ had_err = -1;
+ }
+ }
- /* Set display flag */
- display_flag = gt_querymatch_bool2display_flag(arguments->seed_display,
- arguments->seqlength_display);
-
+ if (!had_err)
+ {
+ if (!gt_querymatch_gfa2_display(out_display_flag))
+ {
+ const bool idhistout
+ = (arguments->maxmat != 1 &&
+ gt_str_length(arguments->diagband_statistics_arg) == 0)
+ ? true : false;
+ gt_querymatch_Options_output(stdout,argc,argv,idhistout,
+ arguments->se_minidentity,
+ arguments->se_historysize);
+ if (!arguments->compute_ani && !arguments->onlyseeds)
+ {
+ gt_querymatch_Fields_output(stdout,out_display_flag);
+ }
+ } else
+ {
+ printf("H\tVN:Z:2.0");
+ if (gt_querymatch_trace_display(out_display_flag))
+ {
+ printf("\tTS:i:" GT_WU "\n",
+ gt_querymatch_trace_delta_display(out_display_flag));
+ } else
+ {
+ fputc('\n',stdout);
+ }
+ }
+ }
/* Set character access method */
- if (!arguments->onlyseeds || arguments->se_alignmentwidth > 0) {
- cam = gt_greedy_extend_char_access(gt_str_get(arguments->char_access_mode),
- err);
- if ((int) cam == -1) {
+ if (!had_err && !arguments->onlyseeds)
+ {
+ if (gt_greedy_extend_char_access(&cam_a,&cam_b,
+ gt_str_get(arguments->char_access_mode),
+ err) != 0)
+ {
+ had_err = -1;
+ }
+ }
+ if (!had_err)
+ {
+ splt = gt_diagbandseed_splt_get(gt_str_get(arguments->splt_string),err);
+ if ((int) splt == -1) {
had_err = -1;
}
}
-
if (!had_err) {
GtEncseqLoader *encseq_loader = gt_encseq_loader_new();
gt_encseq_loader_require_multiseq_support(encseq_loader);
+ gt_encseq_loader_require_ssp_tab(encseq_loader);
+ if (out_display_flag != NULL &&
+ gt_querymatch_subjectid_display(out_display_flag))
+ {
+ gt_encseq_loader_require_des_tab(encseq_loader);
+ gt_encseq_loader_require_sds_tab(encseq_loader);
+ }
/* Load encseq A */
aencseq = gt_encseq_loader_load(encseq_loader,
@@ -676,21 +854,38 @@ static int gt_seed_extend_runner(int argc,
err);
if (aencseq == NULL) {
had_err = -1;
- } else {
- /* If there is a 2nd read set: Load encseq B */
- if (strcmp(gt_str_get(arguments->dbs_queryname), "") != 0) {
- bencseq = gt_encseq_loader_load(encseq_loader,
- gt_str_get(arguments->dbs_queryname),
- err);
- } else {
- bencseq = gt_encseq_ref(aencseq);
+ }
+ gt_encseq_loader_delete(encseq_loader);
+ }
+ if (!had_err)
+ {
+ /* If there is a 2nd read set: Load encseq B */
+ if (gt_str_length(arguments->dbs_queryname) == 0) {
+ bencseq = gt_encseq_ref(aencseq);
+ } else
+ {
+ GtEncseqLoader *encseq_loader = gt_encseq_loader_new();
+ gt_encseq_loader_require_multiseq_support(encseq_loader);
+ gt_encseq_loader_require_ssp_tab(encseq_loader);
+ if (out_display_flag != NULL &&
+ gt_querymatch_queryid_display(out_display_flag))
+ {
+ gt_encseq_loader_require_des_tab(encseq_loader);
+ gt_encseq_loader_require_sds_tab(encseq_loader);
}
- if (bencseq == NULL) {
+ bencseq = gt_encseq_loader_load(encseq_loader,
+ gt_str_get(arguments->dbs_queryname),
+ err);
+ if (bencseq == NULL)
+ {
had_err = -1;
- gt_encseq_delete(aencseq);
}
+ gt_encseq_loader_delete(encseq_loader);
+ }
+ if (bencseq == NULL) {
+ had_err = -1;
+ gt_encseq_delete(aencseq);
}
- gt_encseq_loader_delete(encseq_loader);
}
/* Check alphabet sizes */
@@ -711,11 +906,14 @@ static int gt_seed_extend_runner(int argc,
if (gt_showtime_enabled()) {
gt_timer_delete(seedextendtimer);
}
+ gt_querymatch_display_flag_delete(out_display_flag);
return had_err;
}
/* Set seedlength */
gt_assert(aencseq != NULL && bencseq != NULL);
+ a_numofsequences = gt_encseq_num_of_sequences(aencseq);
+ b_numofsequences = gt_encseq_num_of_sequences(bencseq);
if (gt_encseq_has_twobitencoding(aencseq) &&
gt_encseq_wildcards(aencseq) == 0 &&
gt_encseq_has_twobitencoding(bencseq) &&
@@ -727,17 +925,36 @@ static int gt_seed_extend_runner(int argc,
maxseqlength = MIN(gt_encseq_max_seq_length(aencseq),
gt_encseq_max_seq_length(bencseq));
- if (arguments->dbs_seedlength == UINT_MAX) {
- unsigned int seedlength;
- double totallength = 0.5 * (gt_encseq_total_length(aencseq) +
- gt_encseq_total_length(bencseq));
- gt_assert(nchars > 0);
- seedlength = (unsigned int)gt_round_to_long(gt_log_base(totallength,
- (double)nchars));
- seedlength = (unsigned int)MIN3(seedlength, maxseqlength, maxseedlength);
- arguments->dbs_seedlength = MAX(seedlength, 2);
- }
- if (arguments->dbs_seedlength > MIN(maxseedlength, maxseqlength)) {
+ arguments->dbs_spacedseedweight = 0;
+ if (arguments->dbs_seedlength == UINT_MAX)
+ {
+ if (arguments->maxmat == 1)
+ {
+ arguments->dbs_seedlength = MIN(maxseedlength, arguments->se_alignlength);
+ } else
+ {
+ if (arguments->spacedseed)
+ {
+ arguments->dbs_seedlength = spacedseedlength;
+ arguments->dbs_spacedseedweight = spacedseedweight;
+ } else
+ {
+ unsigned int local_seedlength, log_avg_totallength;
+ double avg_totallength = 0.5 * (gt_encseq_total_length(aencseq) +
+ gt_encseq_total_length(bencseq));
+ gt_assert(nchars > 0);
+ log_avg_totallength
+ = (unsigned int) gt_round_to_long(gt_log_base(avg_totallength,
+ (double) nchars));
+ local_seedlength = (unsigned int) MIN3(log_avg_totallength,
+ maxseqlength,maxseedlength);
+ arguments->dbs_seedlength = MAX(local_seedlength, 2);
+ }
+ }
+ }
+ if (!had_err && !arguments->spacedseed &&
+ arguments->dbs_seedlength > MIN(maxseedlength, maxseqlength))
+ {
if (maxseedlength <= maxseqlength) {
gt_error_set(err, "maximum seedlength for alphabet of size %u is %u",
nchars, maxseedlength);
@@ -747,10 +964,44 @@ static int gt_seed_extend_runner(int argc,
}
had_err = -1;
}
+ if (!had_err)
+ {
+ if (arguments->spacedseed)
+ {
+ arguments->dbs_spacedseedweight = spacedseedweight;
+ if (arguments->dbs_seedlength != spacedseedlength)
+ {
+ gt_error_set(err,"only spaced seeds of length %u supported",
+ spacedseedlength);
+ had_err = -1;
+ } else
+ {
+ if (nchars != 4)
+ {
+ gt_error_set(err,"spaced seeds only work for sequences over an "
+ "alphabet of size 4");
+ had_err = -1;
+ }
+ }
+ }
+ }
/* Set mincoverage */
- if (!had_err && arguments->dbs_mincoverage == GT_UWORD_MAX) {
- arguments->dbs_mincoverage = (GtUword) (2.5 * arguments->dbs_seedlength);
+ if (!had_err)
+ {
+ if (arguments->dbs_mincoverage == GT_UWORD_MAX)
+ {
+ arguments->dbs_mincoverage = (GtUword) (2.5 * arguments->dbs_seedlength);
+ } else
+ {
+ if (arguments->dbs_mincoverage < arguments->dbs_seedlength)
+ {
+ gt_error_set(err, "argument to option \"-mincoverage\" must be an "
+ "integer >= %u (seedlength).",
+ arguments->dbs_seedlength);
+ had_err = -1;
+ }
+ }
}
/* Set minimum alignment length */
@@ -771,16 +1022,36 @@ static int gt_seed_extend_runner(int argc,
/* Parse pick option */
if (!had_err && strcmp(gt_str_get(arguments->dbs_pick_str),
"use all combinations successively") != 0) {
+ GtUword apick, bpick;
char **items = gt_cstr_split(gt_str_get(arguments->dbs_pick_str), ',');
if (gt_cstr_array_size((const char **)items) != 2 ||
gt_parse_uword(&apick, items[0]) != 0 ||
gt_parse_uword(&bpick, items[1]) != 0) {
gt_error_set(err, "argument to option -pick must satisfy format i,j");
had_err = -1;
+ } else if (apick > arguments->dbs_parts || bpick > arguments->dbs_parts) {
+ gt_error_set(err, "arguments to option -pick must not exceed " GT_WU
+ " (number of parts)", arguments->dbs_parts);
+ had_err = -1;
+ } else if (apick < 1 || bpick < 1) {
+ gt_error_set(err, "arguments to option -pick must be at least 1");
+ had_err = -1;
+ } else if (apick > a_numofsequences) {
+ gt_error_set(err, "first argument to option -pick must not be larger than"
+ " " GT_WU ", which is the number of sequences in the first "
+ "set", a_numofsequences);
+ had_err = -1;
+ } else if (bpick > b_numofsequences) {
+ gt_error_set(err, "second argument to option -pick must not be larger "
+ "than " GT_WU ", which is the number of sequences in the "
+ "second set", b_numofsequences);
+ had_err = -1;
} else if (aencseq == bencseq && apick > bpick) {
- GtUword tmp = apick;
- apick = bpick;
- bpick = tmp;
+ pick.a = bpick - 1;
+ pick.b = apick - 1;
+ } else {
+ pick.a = apick - 1;
+ pick.b = bpick - 1;
}
gt_cstr_array_delete(items);
}
@@ -798,7 +1069,7 @@ static int gt_seed_extend_runner(int argc,
arguments->seedpairdistance.end -= gt_encseq_max_seq_length(aencseq);
if (!arguments->overlappingseeds &&
arguments->seedpairdistance.start == 1UL) {
- arguments->seedpairdistance.start = (GtUword)arguments->dbs_seedlength;
+ arguments->seedpairdistance.start = (GtUword) arguments->dbs_seedlength;
}
}
@@ -807,10 +1078,8 @@ static int gt_seed_extend_runner(int argc,
GtDiagbandseedExtendParams *extp = NULL;
GtDiagbandseedInfo *info = NULL;
GtUword sensitivity = 0;
- GtUword anum = arguments->dbs_parts;
- GtUword bnum = arguments->dbs_parts;
- GtRange *aseqranges = (GtRange *)gt_malloc(anum * sizeof *aseqranges);
- GtRange *bseqranges = (GtRange *)gt_malloc(bnum * sizeof *bseqranges);
+ GtSequencePartsInfo *aseqranges, *bseqranges;
+ GtUword use_apos_local = 0;
if (extendgreedy) {
sensitivity = arguments->se_extendgreedy;
@@ -818,71 +1087,102 @@ static int gt_seed_extend_runner(int argc,
sensitivity = arguments->se_extendxdrop;
}
- gt_assert(gt_encseq_num_of_sequences(aencseq) > 0);
- gt_assert(gt_encseq_num_of_sequences(bencseq) > 0);
-
/* Get sequence ranges */
- had_err = gt_seed_extend_compute_parts(aseqranges,
- &anum,
- aencseq,
- apick,
- err);
- if (!had_err) {
- had_err = gt_seed_extend_compute_parts(bseqranges,
- &bnum,
- bencseq,
- bpick,
- err);
+ aseqranges = gt_sequence_parts_info_new(aencseq,a_numofsequences,
+ arguments->dbs_parts);
+ if (arguments->verbose && gt_sequence_parts_info_number(aseqranges) > 1)
+ {
+ gt_sequence_parts_info_variance_show(aseqranges);
}
-
- extp = gt_diagbandseed_extend_params_new(errorpercentage,
- arguments->se_alignlength,
+ if (aencseq == bencseq)
+ {
+ bseqranges = aseqranges;
+ } else
+ {
+ bseqranges = gt_sequence_parts_info_new(bencseq,b_numofsequences,
+ arguments->dbs_parts);
+ if (arguments->verbose && gt_sequence_parts_info_number(bseqranges) > 1)
+ {
+ gt_sequence_parts_info_variance_show(bseqranges);
+ }
+ }
+ gt_assert(pick.a < gt_sequence_parts_info_number(aseqranges) ||
+ pick.a == GT_UWORD_MAX);
+ gt_assert(pick.b < gt_sequence_parts_info_number(bseqranges) ||
+ pick.b == GT_UWORD_MAX);
+
+ if (arguments->use_apos)
+ {
+ gt_assert(!arguments->use_apos_track_all);
+ use_apos_local = 1;
+ } else
+ {
+ if (arguments->use_apos_track_all)
+ {
+ use_apos_local = 2;
+ }
+ }
+ extp = gt_diagbandseed_extend_params_new(arguments->se_alignlength,
+ errorpercentage,
+ arguments->se_evalue_threshold,
arguments->dbs_logdiagbandwidth,
arguments->dbs_mincoverage,
- display_flag,
- arguments->use_apos,
+ out_display_flag,
+ use_apos_local,
arguments->se_xdropbelowscore,
extendgreedy,
extendxdrop,
arguments->se_maxalilendiff,
arguments->se_historysize,
arguments->se_perc_match_hist,
- cam,
+ cam_a,
+ cam_b,
+ arguments->cam_generic,
sensitivity,
matchscore_bias,
arguments->weakends,
arguments->benchmark,
- arguments->se_alignmentwidth,
- !arguments->relax_polish);
+ !arguments->relax_polish,
+ arguments->verify_alignment,
+ arguments->only_selected_seqpairs,
+ arguments->compute_ani
+ ? &ani_accumulate[0]
+ : NULL);
info = gt_diagbandseed_info_new(aencseq,
bencseq,
arguments->dbs_maxfreq,
arguments->dbs_memlimit,
+ arguments->dbs_spacedseedweight,
arguments->dbs_seedlength,
arguments->norev,
arguments->nofwd,
&arguments->seedpairdistance,
+ splt,
arguments->dbs_verify,
arguments->verbose,
arguments->dbs_debug_kmer,
arguments->dbs_debug_seedpair,
arguments->use_kmerfile,
- extp,
- anum,
- bnum);
+ arguments->trimstat_on,
+ arguments->maxmat,
+ arguments->chainarguments,
+ arguments->diagband_statistics_arg,
+ extp);
/* Start algorithm */
- if (!had_err) {
- had_err = gt_diagbandseed_run(info,
- aseqranges,
- bseqranges,
- err);
- }
+ had_err = gt_diagbandseed_run(info,
+ aseqranges,
+ bseqranges,
+ &pick,
+ err);
/* clean up */
- gt_free(aseqranges);
- gt_free(bseqranges);
+ if (bseqranges != aseqranges)
+ {
+ gt_sequence_parts_info_delete(bseqranges);
+ }
+ gt_sequence_parts_info_delete(aseqranges);
gt_diagbandseed_extend_params_delete(extp);
gt_diagbandseed_info_delete(info);
}
@@ -909,6 +1209,23 @@ static int gt_seed_extend_runner(int argc,
if (gt_showtime_enabled()) {
gt_timer_delete(seedextendtimer);
}
+ gt_querymatch_display_flag_delete(out_display_flag);
+ if (arguments->compute_ani)
+ {
+ int idx;
+
+ printf("ANI %s %s",gt_str_get(arguments->dbs_indexname),
+ gt_str_length(arguments->dbs_queryname) > 0
+ ? gt_str_get(arguments->dbs_queryname)
+ : gt_str_get(arguments->dbs_indexname));
+ for (idx = 0; idx < 2; idx++)
+ {
+ printf(" %.4f",gt_seed_extend_ani_evaluate(
+ ani_accumulate[idx].sum_of_aligned_len,
+ ani_accumulate[idx].sum_of_distance));
+ }
+ printf("\n");
+ }
return had_err;
}
diff --git a/src/tools/gt_seqorder.c b/src/tools/gt_seqorder.c
index 4f1939d..b2a01ca 100644
--- a/src/tools/gt_seqorder.c
+++ b/src/tools/gt_seqorder.c
@@ -31,7 +31,8 @@
#include "tools/gt_seqorder.h"
typedef struct {
- bool invert, sort, revsort, shuffle, sorthdr, sorthdrnum;
+ bool invert, sort, revsort, shuffle, sorthdr, sorthdrnum,
+ sort_length;
} GtSeqorderArguments;
static void* gt_seqorder_arguments_new(void)
@@ -52,7 +53,7 @@ static GtOptionParser* gt_seqorder_option_parser_new(void *tool_arguments)
GtSeqorderArguments *arguments = tool_arguments;
GtOptionParser *op;
GtOption *invert_option, *sort_option, *sorthdr_option, *sorthdrnum_option,
- *revsort_option, *shuffle_option;
+ *revsort_option, *shuffle_option, *sort_length_option;
gt_assert(arguments);
/* init */
@@ -87,8 +88,8 @@ static GtOptionParser* gt_seqorder_option_parser_new(void *tool_arguments)
"sort sequences lexicographically "
"by sequence header",
&arguments->sorthdr, false);
- gt_option_exclude(sorthdr_option, sort_option);
gt_option_exclude(sorthdr_option, invert_option);
+ gt_option_exclude(sorthdr_option, sort_option);
gt_option_exclude(sorthdr_option, revsort_option);
gt_option_parser_add_option(op, sorthdr_option);
@@ -97,8 +98,8 @@ static GtOptionParser* gt_seqorder_option_parser_new(void *tool_arguments)
"sort sequences numerically "
"by sequence header",
&arguments->sorthdrnum, false);
- gt_option_exclude(sorthdrnum_option, sort_option);
gt_option_exclude(sorthdrnum_option, invert_option);
+ gt_option_exclude(sorthdrnum_option, sort_option);
gt_option_exclude(sorthdrnum_option, revsort_option);
gt_option_exclude(sorthdrnum_option, sorthdr_option);
gt_option_parser_add_option(op, sorthdrnum_option);
@@ -110,8 +111,21 @@ static GtOptionParser* gt_seqorder_option_parser_new(void *tool_arguments)
gt_option_exclude(shuffle_option, invert_option);
gt_option_exclude(shuffle_option, sort_option);
gt_option_exclude(shuffle_option, revsort_option);
+ gt_option_exclude(shuffle_option, sorthdr_option);
+ gt_option_exclude(shuffle_option, sorthdrnum_option);
gt_option_parser_add_option(op, shuffle_option);
+ /* -sortlength */
+ sort_length_option = gt_option_new_bool("sortlength",
+ "sort by decreasing length",
+ &arguments->sort_length, false);
+ gt_option_exclude(sort_length_option, invert_option);
+ gt_option_exclude(sort_length_option, sort_option);
+ gt_option_exclude(sort_length_option, revsort_option);
+ gt_option_exclude(sort_length_option, sorthdr_option);
+ gt_option_exclude(sort_length_option, sorthdrnum_option);
+ gt_option_exclude(sort_length_option, shuffle_option);
+ gt_option_parser_add_option(op, sort_length_option);
gt_option_parser_set_min_max_args(op, 1U, 1U);
return op;
@@ -127,13 +141,13 @@ static int gt_seqorder_arguments_check(GT_UNUSED int rest_argc,
gt_assert(arguments != NULL);
if (!(arguments->invert || arguments->sort || arguments->revsort ||
- arguments->shuffle || arguments->sorthdr || arguments->sorthdrnum))
+ arguments->sorthdr || arguments->sorthdrnum || arguments->shuffle ||
+ arguments->sort_length))
{
had_err = 1;
- gt_error_set(err, "order option needed: -invert|-sort|-revsort|-shuffle|"
- "-sorthdr|-sorthdrnum");
+ gt_error_set(err, "order option needed: -invert|-sort|-revsort|"
+ "-sorthdr|-sorthdrnum|shuffle|sort_length");
}
-
return had_err;
}
@@ -167,23 +181,34 @@ static void gt_seqorder_get_shuffled_seqnums(GtUword nofseqs,
static int seqorder_str_compare_lex(const void *v1, const void *v2, void *data)
{
- GtUword n1 = *(GtUword*) v1,
- n2 = *(GtUword*) v2,
+ GtUword n1 = *(const GtUword*) v1,
+ n2 = *(const GtUword*) v2,
desclen1, desclen2;
const char *desc1, *desc2;
- int rval = 0;
+ int rval;
+
desc1 = gt_encseq_description((GtEncseq*) data, &desclen1, n1);
desc2 = gt_encseq_description((GtEncseq*) data, &desclen2, n2);
- rval = strncmp(desc1, desc2, MIN(desclen1, desclen2) * sizeof (char));
+ rval = strncmp(desc1, desc2, MIN(desclen1, desclen2) * sizeof *desc1);
if (rval == 0)
- rval = desclen1-desclen2;
+ {
+ if (desclen1 > desclen2)
+ {
+ return 1;
+ }
+ if (desclen1 < desclen2)
+ {
+ return -1;
+ }
+ return 0;
+ }
return rval;
}
static int seqorder_str_compare_num(const void *v1, const void *v2, void *data)
{
- GtUword n1 = *(GtUword*) v1,
- n2 = *(GtUword*) v2,
+ GtUword n1 = *(const GtUword*) v1,
+ n2 = *(const GtUword*) v2,
desclen1, desclen2,
anum, bnum;
int arval, brval, rval = 0;
@@ -208,20 +233,24 @@ static int seqorder_str_compare_num(const void *v1, const void *v2, void *data)
return rval;
}
-static void gt_seqorder_get_hdrsorted_seqnums(const GtEncseq *encseq,
- GtUword *seqnums,
- GtCompareWithData cmpfunc)
+static int seqorder_length_compare(const void *v1, const void *v2, void *data)
{
- GtUword i;
- gt_assert(encseq != NULL);
+ GtUword n1 = *(const GtUword*) v1,
+ n2 = *(const GtUword*) v2;
+ const GtUword *lengthtab = (const GtUword *) data;
- for (i = 0UL; i < gt_encseq_num_of_sequences(encseq); i++)
- seqnums[i] = i;
- (void) gt_qsort_r(seqnums, gt_encseq_num_of_sequences(encseq),
- sizeof (GtUword), (void*) encseq, cmpfunc);
+ if (lengthtab[n1] < lengthtab[n2])
+ {
+ return 1;
+ }
+ if (lengthtab[n1] > lengthtab[n2])
+ {
+ return -1;
+ }
+ return 0;
}
-static void gt_seqorder_output(GtUword seqnum, GtEncseq *encseq)
+static void gt_seqorder_output(GtUword seqnum,const GtEncseq *encseq)
{
GtEncseqReader *esr;
GtUword startpos, len, desclen = 0;
@@ -247,6 +276,103 @@ static void gt_seqorder_output(GtUword seqnum, GtEncseq *encseq)
gt_xfputc('\n', stdout);
}
+static void gt_seqorder_handle_cases(const GtEncseq *encseq,
+ const GtSeqorderArguments *arguments)
+{
+ GtUword i, nofseqs = gt_encseq_num_of_sequences(encseq);
+ GtSuffixsortspace *suffixsortspace = NULL;
+
+ if (arguments->invert)
+ {
+ for (i = nofseqs; i > 0; i--)
+ {
+ gt_seqorder_output(i - 1, encseq);
+ }
+ return;
+ }
+ if (arguments->shuffle || arguments->sorthdr || arguments->sorthdrnum ||
+ arguments->sort_length)
+ {
+ const GtUword numofsequences = gt_encseq_num_of_sequences(encseq);
+ GtUword *seqnums = gt_malloc(sizeof (GtUword) * nofseqs);
+ if (arguments->shuffle)
+ {
+ gt_seqorder_get_shuffled_seqnums(nofseqs, seqnums);
+ } else
+ {
+ GtCompareWithData seqordercmpfunc;
+ void *data;
+
+ for (i = 0UL; i < numofsequences; i++)
+ {
+ seqnums[i] = i;
+ }
+ if (arguments->sort_length)
+ {
+ seqordercmpfunc = seqorder_length_compare;
+ data = (void *) gt_all_sequence_lengths_get(encseq);
+ } else
+ {
+ data = (void *) encseq;
+ if (arguments->sorthdr)
+ {
+ seqordercmpfunc = seqorder_str_compare_lex;
+ } else
+ {
+ if (arguments->sorthdrnum)
+ {
+ seqordercmpfunc = seqorder_str_compare_num;
+ } else
+ {
+ gt_assert(false);
+ seqordercmpfunc = NULL;
+ }
+ }
+ }
+ if (data != NULL)
+ {
+ gt_assert(seqordercmpfunc != NULL);
+ (void) gt_qsort_r(seqnums, numofsequences,sizeof *seqnums,
+ data,seqordercmpfunc);
+ }
+ if (arguments->sort_length && data != NULL)
+ {
+ gt_free(data);
+ }
+ }
+ for (i = 0; i < nofseqs; i++)
+ {
+ gt_seqorder_output(seqnums[i], encseq);
+ }
+ gt_free(seqnums);
+ return;
+ }
+ gt_assert(arguments->sort || arguments->revsort);
+ suffixsortspace
+ = gt_suffixsortspace_new(nofseqs,
+ /* Use iterator over sequence separators:
+ saves a lot of binary searches */
+ gt_encseq_seqstartpos(encseq, nofseqs-1),
+ false,NULL);
+ gt_seqorder_sort(suffixsortspace, encseq);
+ if (arguments->sort)
+ {
+ for (i = 0; i < nofseqs; i++)
+ {
+ GtUword pos = gt_suffixsortspace_getdirect(suffixsortspace,i);
+ gt_seqorder_output(gt_encseq_seqnum(encseq,pos),encseq);
+ }
+ } else
+ {
+ for (i = nofseqs; i > 0; i--)
+ {
+ GtUword pos = gt_suffixsortspace_getdirect(suffixsortspace,i - 1);
+ gt_seqorder_output(gt_encseq_seqnum(encseq,pos),encseq);
+ }
+ }
+ gt_suffixsortspace_delete(suffixsortspace, false);
+}
+
static int gt_seqorder_runner(GT_UNUSED int argc,
const char **argv,
int parsed_args,
@@ -257,7 +383,6 @@ static int gt_seqorder_runner(GT_UNUSED int argc,
int had_err = 0;
GtEncseq *encseq;
GtEncseqLoader *loader;
- GtUword i, nofseqs;
gt_error_check(err);
gt_assert(arguments != NULL);
@@ -265,77 +390,19 @@ static int gt_seqorder_runner(GT_UNUSED int argc,
/* load encseq */
loader = gt_encseq_loader_new();
encseq = gt_encseq_loader_load(loader, argv[parsed_args], err);
+ gt_encseq_loader_delete(loader);
if (encseq == NULL)
+ {
had_err = -1;
+ }
if (had_err == 0 && !gt_encseq_has_description_support(encseq))
+ {
gt_warning("%s has no description support", argv[parsed_args]);
+ }
if (!had_err)
{
- nofseqs = gt_encseq_num_of_sequences(encseq);
- if (arguments->invert)
- {
- for (i = nofseqs; i > 0; i--)
- gt_seqorder_output(i - 1, encseq);
- }
- else if (arguments->shuffle)
- {
- GtUword *seqnums;
- seqnums = gt_malloc(sizeof (GtUword) * nofseqs);
- gt_seqorder_get_shuffled_seqnums(nofseqs, seqnums);
- for (i = 0; i < nofseqs; i++)
- gt_seqorder_output(seqnums[i], encseq);
- gt_free(seqnums);
- }
- else if (arguments->sorthdr)
- {
- GtUword *seqnums;
- seqnums = gt_malloc(sizeof (GtUword) * nofseqs);
- gt_seqorder_get_hdrsorted_seqnums(encseq, seqnums,
- seqorder_str_compare_lex);
- for (i = 0; i < nofseqs; i++)
- gt_seqorder_output(seqnums[i], encseq);
- gt_free(seqnums);
- }
- else if (arguments->sorthdrnum)
- {
- GtUword *seqnums;
- seqnums = gt_malloc(sizeof (GtUword) * nofseqs);
- gt_seqorder_get_hdrsorted_seqnums(encseq, seqnums,
- seqorder_str_compare_num);
- for (i = 0; i < nofseqs; i++)
- gt_seqorder_output(seqnums[i], encseq);
- gt_free(seqnums);
- }
- else
- {
- GtSuffixsortspace *suffixsortspace;
- gt_assert(arguments->sort || arguments->revsort);
- suffixsortspace
- = gt_suffixsortspace_new(nofseqs,
- /* Use iterator over sequence separators:
- saves a lot of binary searches */
- gt_encseq_seqstartpos(encseq, nofseqs-1),
- false,NULL);
- gt_seqorder_sort(suffixsortspace, encseq);
- if (arguments->sort)
- for (i = 0; i < nofseqs; i++)
- gt_seqorder_output(gt_encseq_seqnum(
- encseq,
- gt_suffixsortspace_getdirect(suffixsortspace,
- i)),
- encseq);
- else
- for (i = nofseqs; i > 0; i--)
- gt_seqorder_output(gt_encseq_seqnum(
- encseq,
- gt_suffixsortspace_getdirect(suffixsortspace,
- i - 1)),
- encseq);
- gt_suffixsortspace_delete(suffixsortspace, false);
- }
+ gt_seqorder_handle_cases(encseq,arguments);
}
-
- gt_encseq_loader_delete(loader);
gt_encseq_delete(encseq);
return had_err;
}
diff --git a/src/tools/gt_seqstat.c b/src/tools/gt_seqstat.c
index 5445272..d6fb016 100644
--- a/src/tools/gt_seqstat.c
+++ b/src/tools/gt_seqstat.c
@@ -29,10 +29,13 @@
#include "core/versionfunc.h"
#include "core/seq_iterator_sequence_buffer_api.h"
#include "core/seq_iterator_fastq_api.h"
+#include "core/str_array_api.h"
#include "core/unused_api.h"
+#include "core/undef_api.h"
#include "core/versionfunc.h"
#include "core/xansi_api.h"
#include "core/progressbar.h"
+#include "core/parseutils.h"
#include "core/format64.h"
#include "core/unused_api.h"
#include "core/types_api.h"
@@ -55,17 +58,22 @@ typedef struct
showestimsize;
unsigned int bucketsize;
GtUword genome_length;
+ GtStrArray *nstats;
} SeqstatArguments;
static void* gt_seqstat_arguments_new(void)
{
- return gt_calloc((size_t) 1, sizeof (SeqstatArguments));
+ SeqstatArguments *arguments = gt_calloc((size_t) 1,
+ sizeof (SeqstatArguments));
+ arguments->nstats = gt_str_array_new();
+ return arguments;
}
static void gt_seqstat_arguments_delete(void *tool_arguments)
{
SeqstatArguments *arguments = tool_arguments;
if (!arguments) return;
+ gt_str_array_delete(arguments->nstats);
gt_free(arguments);
}
@@ -75,7 +83,7 @@ static GtOptionParser* gt_seqstat_option_parser_new(void *tool_arguments)
GtOptionParser *op;
GtOption *optionverbose, *optiondistlen, *optionbucketsize,
*optioncontigs, *optionastretch, *optionestimsize,
- *optionbinarydistlen, *optiongenome;
+ *optionbinarydistlen, *optiongenome, *optionnstats;
gt_assert(arguments);
@@ -112,6 +120,13 @@ static GtOptionParser* gt_seqstat_option_parser_new(void *tool_arguments)
&arguments->docstats,true);
gt_option_parser_add_option(op, optioncontigs);
+ optionnstats = gt_option_new_string_array("nstats",
+ "list of N-values to calculate statistics "
+ "for, terminated by '--'; if none given, "
+ "N50 and N80 will be calculated",
+ arguments->nstats);
+ gt_option_parser_add_option(op, optionnstats);
+
optionastretch = gt_option_new_bool("astretch",
"show distribution of A-substrings",
&arguments->doastretch,false);
@@ -395,8 +410,28 @@ static int gt_seqstat_runner(int argc, const char **argv, int parsed_args,
}
if (!had_err && arguments->docstats)
{
+ GtUword i;
asc_logger = gt_logger_new(true, GT_LOGGER_DEFLT_PREFIX, stdout);
- gt_assembly_stats_calculator_show(asc, asc_logger);
+ if (gt_str_array_size(arguments->nstats) == 0) {
+ had_err = gt_assembly_stats_calculator_register_nstat(asc, 50, err);
+ gt_assert(!had_err); /* 50 and 80 are sane */
+ had_err = gt_assembly_stats_calculator_register_nstat(asc, 80, err);
+ gt_assert(!had_err); /* 50 and 80 are sane */
+ }
+ for (i = 0; !had_err && i < gt_str_array_size(arguments->nstats); i++) {
+ GtUword val = GT_UNDEF_UWORD;
+ if (gt_parse_uword(&val, gt_str_array_get(arguments->nstats, i)) != 0) {
+ gt_error_set(err, "could not parse nstat value '%s'",
+ gt_str_array_get(arguments->nstats, i));
+ had_err = -1;
+ break;
+ }
+ gt_assert(val != GT_UNDEF_UWORD);
+ had_err = gt_assembly_stats_calculator_register_nstat(asc, val, err);
+ if (had_err) break;
+ }
+ if (!had_err)
+ gt_assembly_stats_calculator_show(asc, asc_logger);
gt_logger_delete(asc_logger);
}
if (asc != NULL)
diff --git a/src/tools/gt_sfxmap.c b/src/tools/gt_sfxmap.c
index bb243f7..6850ad6 100644
--- a/src/tools/gt_sfxmap.c
+++ b/src/tools/gt_sfxmap.c
@@ -1005,19 +1005,19 @@ static int gt_sfxmap_compresslcp(const char *indexname,
haserr = true;
} else
{
- bitbuffer = gt_bitbuffer_new(fpcompressedlcp,bitsperentry);
+ bitbuffer = gt_bitbuffer_FILE_new(fpcompressedlcp,bitsperentry);
}
if (bitsperentry > 0)
{
if (!haserr)
{
- gt_bitbuffer_next_fixed_bits_value (bitbuffer,0UL);
+ gt_bitbuffer_write_fixed_bits_FILE(bitbuffer,0UL);
while (true)
{
GtUword currentlcp;
SSAR_NEXTSEQUENTIALLCPTABVALUE(currentlcp,ssar);
- gt_bitbuffer_next_fixed_bits_value (bitbuffer,currentlcp);
+ gt_bitbuffer_write_fixed_bits_FILE (bitbuffer,currentlcp);
elems++;
}
}
diff --git a/src/tools/gt_show_seedext.c b/src/tools/gt_show_seedext.c
index 7576015..6c6780e 100644
--- a/src/tools/gt_show_seedext.c
+++ b/src/tools/gt_show_seedext.c
@@ -19,13 +19,15 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <float.h>
#include "core/ma_api.h"
#include "core/minmax.h"
#include "core/str_api.h"
#include "core/types_api.h"
#include "core/unused_api.h"
#include "core/encseq.h"
-#include "match/revcompl.h"
+#include "core/showtime.h"
+#include "core/timer_api.h"
#include "match/ft-polish.h"
#include "match/seed-extend.h"
#include "match/seq_or_encseq.h"
@@ -35,20 +37,19 @@
typedef struct
{
- bool show_alignment,
- seed_display,
- seqlength_display,
- relax_polish,
+ bool relax_polish,
sortmatches,
- showeoplist,
- seed_extend;
+ verify_alignment,
+ optimal_alignment;
GtStr *matchfilename;
+ GtStrArray *display_args;
} GtShowSeedextArguments;
static void* gt_show_seedext_arguments_new(void)
{
GtShowSeedextArguments *arguments = gt_calloc((size_t) 1, sizeof *arguments);
arguments->matchfilename = gt_str_new();
+ arguments->display_args = gt_str_array_new();
return arguments;
}
@@ -56,6 +57,7 @@ static void gt_show_seedext_arguments_delete(void *tool_arguments)
{
GtShowSeedextArguments *arguments = tool_arguments;
if (arguments != NULL) {
+ gt_str_array_delete(arguments->display_args);
gt_str_delete(arguments->matchfilename);
gt_free(arguments);
}
@@ -65,8 +67,8 @@ static GtOptionParser* gt_show_seedext_option_parser_new(void *tool_arguments)
{
GtShowSeedextArguments *arguments = tool_arguments;
GtOptionParser *op;
- GtOption *option, *op_ali, *option_filename, *op_relax_polish,
- *op_seed_extend, *op_sortmatches, *op_showeoplist;
+ GtOption *option_filename, *op_relax_polish, *op_sortmatches, *op_display,
+ *op_verify_alignment, *op_optimal_alignment;
gt_assert(arguments);
/* init */
@@ -74,39 +76,11 @@ static GtOptionParser* gt_show_seedext_option_parser_new(void *tool_arguments)
"Parse output of a seed extension and show/verify "
"the alignment.");
- /* -a */
- op_ali = gt_option_new_bool("a",
- "show alignment",
- &arguments->show_alignment,
- false);
- gt_option_parser_add_option(op, op_ali);
-
- /* -seed-display */
- option = gt_option_new_bool("seed-display",
- "Display seeds in #-line and by "
- "character + (instead of |) in middle "
- "row of alignment column",
- &arguments->seed_display,
- false);
- gt_option_parser_add_option(op, option);
-
- /* -seqlength-display */
- option = gt_option_new_bool("seqlength-display",
- "Display length of sequences in which "
- "the two match-instances occur",
- &arguments->seqlength_display,
- false);
- gt_option_is_development_option(option);
- gt_option_parser_add_option(op, option);
-
- /* -seed-extend */
- op_seed_extend = gt_option_new_bool("seed-extend",
- "read the seeds from the # seed: -lines and "
- "extend them; match lines are ignored; "
- "match coordindates are displayed",
- &arguments->seed_extend,
- false);
- gt_option_parser_add_option(op, op_seed_extend);
+ /* -outfmt */
+ op_display = gt_option_new_string_array("outfmt",
+ gt_querymatch_display_help(),
+ arguments->display_args);
+ gt_option_parser_add_option(op, op_display);
/* -relax-polish */
op_relax_polish = gt_option_new_bool("relax-polish",
@@ -115,19 +89,28 @@ static GtOptionParser* gt_show_seedext_option_parser_new(void *tool_arguments)
&arguments->relax_polish,false);
gt_option_parser_add_option(op, op_relax_polish);
gt_option_is_development_option(op_relax_polish);
- gt_option_imply(op_relax_polish, op_ali);
/* -sort */
op_sortmatches = gt_option_new_bool("sort","sort matches in ascending order "
- "of their end positon on the "
+ "of their end position on the "
"query",
&arguments->sortmatches,false);
gt_option_parser_add_option(op, op_sortmatches);
- /* -e */
- op_showeoplist = gt_option_new_bool("e","show list of edit operations",
- &arguments->showeoplist,false);
- gt_option_parser_add_option(op, op_showeoplist);
+ /* -verify-alignment */
+ op_verify_alignment = gt_option_new_bool("verify-alignment",
+ "verify correctned of alignment",
+ &arguments->verify_alignment,false);
+ gt_option_parser_add_option(op, op_verify_alignment);
+ gt_option_is_development_option(op_verify_alignment);
+
+ /* -optimal-alignment */
+ op_optimal_alignment = gt_option_new_bool("optimal",
+ "compute optimal alignment for "
+ "substrings in given coordinates",
+ &arguments->optimal_alignment,false);
+ gt_option_parser_add_option(op, op_optimal_alignment);
+ gt_option_is_development_option(op_optimal_alignment);
/* -f */
option_filename = gt_option_new_filename("f",
@@ -136,8 +119,6 @@ static GtOptionParser* gt_show_seedext_option_parser_new(void *tool_arguments)
gt_option_is_mandatory(option_filename);
gt_option_parser_add_option(op, option_filename);
- gt_option_exclude(op_seed_extend, op_sortmatches);
- gt_option_exclude(op_relax_polish, op_seed_extend);
return op;
}
@@ -159,113 +140,53 @@ static int gt_show_seedext_arguments_check(GT_UNUSED int rest_argc,
return had_err;
}
-typedef struct
-{
- GtUchar *a_sequence, *b_sequence;
- GtUword a_allocated, b_allocated;
-} GtSequencepairbuffer;
-
-static void gt_show_seed_extend_plain(GtSequencepairbuffer *seqpairbuf,
- GtLinspaceManagement
- *linspace_spacemanager,
- GtScoreHandler *linspace_scorehandler,
- GtAlignment *alignment,
- GtUchar *alignment_show_buffer,
- GtUword alignmentwidth,
- bool showeoplist,
- const GtUchar *characters,
- GtUchar wildcardshow,
- const GtEncseq *aencseq,
- const GtEncseq *bencseq,
- const GtQuerymatch *querymatchptr)
+void gt_querymatch_optimal_alignment(const GtQuerymatch *querymatchptr,
+ const GtSequencepairbuffer *seqpairbuf,
+ GtLinspaceManagement
+ *linspace_spacemanager,
+ GtScoreHandler *linspace_scorehandler,
+ GtAlignment *alignment,
+ GtUchar *alignment_show_buffer,
+ const GtSeedExtendDisplayFlag
+ *out_display_flag,
+ const GtUchar *characters,
+ GtUchar wildcardshow)
{
GtUword edist;
- GtReadmode query_readmode = gt_querymatch_query_readmode(querymatchptr);
const GtUword distance = gt_querymatch_distance(querymatchptr),
- dblen = gt_querymatch_dblen(querymatchptr),
- queryseqnum = gt_querymatch_queryseqnum(querymatchptr),
- querystart_fwdstrand
- = gt_querymatch_querystart_fwdstrand(querymatchptr),
- querylen = gt_querymatch_querylen(querymatchptr);
-
- const GtUword apos_ab = gt_querymatch_dbstart(querymatchptr);
- const GtUword bpos_ab = gt_encseq_seqstartpos(bencseq, queryseqnum) +
- querystart_fwdstrand;
+ alignmentwidth = gt_querymatch_display_alignmentwidth(
+ out_display_flag);
- gt_querymatch_coordinates_out(querymatchptr);
- if (dblen >= seqpairbuf->a_allocated)
- {
- seqpairbuf->a_sequence = gt_realloc(seqpairbuf->a_sequence,
- sizeof *seqpairbuf->a_sequence * dblen);
- seqpairbuf->a_allocated = dblen;
- }
- if (querylen >= seqpairbuf->b_allocated)
- {
- seqpairbuf->b_sequence = gt_realloc(seqpairbuf->b_sequence,
- sizeof *seqpairbuf->b_sequence *
- querylen);
- seqpairbuf->b_allocated = querylen;
- }
- gt_encseq_extract_encoded(aencseq, seqpairbuf->a_sequence, apos_ab,
- apos_ab + dblen - 1);
- gt_encseq_extract_encoded(bencseq, seqpairbuf->b_sequence, bpos_ab,
- bpos_ab + querylen - 1);
- if (query_readmode != GT_READMODE_FORWARD)
- {
- gt_assert(query_readmode == GT_READMODE_REVCOMPL);
- gt_inplace_reverse_complement(seqpairbuf->b_sequence,querylen);
- }
edist = gt_linearalign_compute_generic(linspace_spacemanager,
linspace_scorehandler,
alignment,
seqpairbuf->a_sequence,
0,
- dblen,
+ seqpairbuf->a_len,
seqpairbuf->b_sequence,
0,
- querylen);
+ seqpairbuf->b_len);
if (edist < distance)
{
- printf("# edist=" GT_WU " (smaller by " GT_WU ")\n",edist,distance - edist);
+ printf("# edist=" GT_WU " (smaller by " GT_WU ")\n",
+ edist,distance - edist);
}
gt_assert(edist <= distance);
if (alignmentwidth > 0)
{
+ const bool downcase = false;
+
gt_alignment_show_generic(alignment_show_buffer,
- false,
+ downcase,
alignment,
stdout,
alignmentwidth,
characters,
wildcardshow);
- }
- if (showeoplist && distance > 0)
- {
- gt_alignment_show_multieop_list(alignment, stdout);
- }
- if (alignmentwidth > 0 || showeoplist)
- {
gt_alignment_reset(alignment);
}
}
-static void gt_show_seed_extend_encseq(GtQuerymatch *querymatchptr,
- const GtEncseq *aencseq,
- const GtEncseq *bencseq)
-{
- GtSeqorEncseq bseqorencseq;
-
- bseqorencseq.seq = NULL;
- bseqorencseq.encseq = bencseq;
- if (gt_querymatch_process(querymatchptr,
- aencseq,
- &bseqorencseq,
- false) != 0)
- {
- gt_querymatch_prettyprint(querymatchptr);
- }
-}
-
static int gt_show_seedext_runner(GT_UNUSED int argc,
GT_UNUSED const char **argv,
GT_UNUSED int parsed_args,
@@ -273,42 +194,72 @@ static int gt_show_seedext_runner(GT_UNUSED int argc,
GtError *err)
{
int had_err = 0;
- GtUword alignmentwidth;
GtShowSeedextArguments *arguments = tool_arguments;
- GtSeedextendMatchIterator *semi;
-
+ GtSeedextendMatchIterator *semi = NULL;
+ const GtEncseq *aencseq = NULL, *bencseq = NULL;
+ GtSeedExtendDisplayFlag *out_display_flag = NULL;
+ GtFtPolishing_info *pol_info = NULL;
+ GtGreedyextendmatchinfo *greedyextendmatchinfo = NULL;
+ const GtExtendCharAccess a_extend_char_access = GT_EXTEND_CHAR_ACCESS_ANY;
+ const GtExtendCharAccess b_extend_char_access = GT_EXTEND_CHAR_ACCESS_ANY;
+ GtUchar *alignment_show_buffer = NULL;
+ GtAlignment *alignment = NULL;
+ GtSequencepairbuffer seqpairbuf = {NULL,NULL,0,0};
+ GtLinspaceManagement *linspace_spacemanager = NULL;
+ GtScoreHandler *linspace_scorehandler = NULL;
+ const GtUchar *characters = NULL;
+ GtUchar wildcardshow = (GtUchar) 'N';
+ GtTimer *timer = NULL;
+ const GtSeedExtendDisplaySetMode setmode
+ = GT_SEED_EXTEND_DISPLAY_SET_STANDARD;
+
+ if (gt_showtime_enabled())
+ {
+ timer = gt_timer_new();
+ gt_timer_start(timer);
+ }
gt_error_check(err);
gt_assert(arguments != NULL);
/* Parse option string in first line of file specified by filename. */
- alignmentwidth = arguments->show_alignment ? 70 : 0;
- semi = gt_seedextend_match_iterator_new(arguments->matchfilename,err);
- if (semi == NULL)
+ out_display_flag
+ = gt_querymatch_display_flag_new(arguments->display_args,setmode,err);
+ if (out_display_flag == NULL)
{
- had_err = -1;
+ had_err = true;
+ }
+ if (!had_err)
+ {
+ if (arguments->optimal_alignment)
+ {
+ if (gt_querymatch_alignment_display(out_display_flag))
+ {
+ GtUword alignmentwidth
+ = gt_querymatch_display_alignmentwidth(out_display_flag);
+ alignment_show_buffer = gt_alignment_buffer_new(alignmentwidth);
+ }
+ alignment = gt_alignment_new();
+ linspace_spacemanager = gt_linspace_management_new();
+ linspace_scorehandler = gt_scorehandler_new(0,1,0,1);
+ }
+ semi = gt_seedextend_match_iterator_new(arguments->matchfilename,err);
+ if (semi == NULL)
+ {
+ had_err = -1;
+ }
}
/* Parse seed extensions. */
if (!had_err)
{
- const GtEncseq *aencseq = gt_seedextend_match_iterator_aencseq(semi),
- *bencseq = gt_seedextend_match_iterator_bencseq(semi);
- GtAlignment *alignment = gt_alignment_new();
- Polishing_info *pol_info = NULL;
- GtSequencepairbuffer seqpairbuf = {NULL,NULL,0,0};
-
+ printf("%s\n",gt_seedextend_match_iterator_Options_line(semi));
+ aencseq = gt_seedextend_match_iterator_aencseq(semi);
+ bencseq = gt_seedextend_match_iterator_bencseq(semi);
/* the following are used if seed_extend is set */
- GtGreedyextendmatchinfo *greedyextendmatchinfo = NULL;
- GtProcessinfo_and_querymatchspaceptr processinfo_and_querymatchspaceptr;
- const GtUchar *characters = gt_encseq_alphabetcharacters(aencseq);
- const GtUchar wildcardshow = gt_encseq_alphabetwildcardshow(aencseq);
- GtUchar *alignment_show_buffer
- = arguments->show_alignment ? gt_alignment_buffer_new(alignmentwidth)
- : NULL;
- GtLinspaceManagement *linspace_spacemanager = gt_linspace_management_new();
- GtScoreHandler *linspace_scorehandler = gt_scorehandler_new(0,1,0,1);;
- const unsigned int display_flag
- = gt_querymatch_bool2display_flag(arguments->seed_display,
- arguments->seqlength_display);
-
+ if (arguments->optimal_alignment)
+ {
+ characters = gt_encseq_alphabetcharacters(aencseq);
+ wildcardshow = gt_encseq_alphabetwildcardshow(aencseq);
+ }
+ gt_querymatch_Fields_output(stdout,out_display_flag);
if (!arguments->relax_polish)
{
double matchscore_bias = GT_DEFAULT_MATCHSCORE_BIAS;
@@ -321,33 +272,45 @@ static int gt_show_seedext_runner(GT_UNUSED int argc,
matchscore_bias,
gt_seedextend_match_iterator_history_size(semi));
}
- gt_seedextend_match_iterator_display_set(semi,display_flag);
- if (arguments->show_alignment || arguments->showeoplist)
+ if (arguments->verify_alignment)
{
- gt_seedextend_match_iterator_querymatchoutoptions_set(semi,
- true,
- arguments->showeoplist,
- alignmentwidth,
- !arguments->relax_polish,
- display_flag);
+ gt_seedextend_match_iterator_verify_alignment_set(semi);
}
- if (arguments->seed_extend)
+ if (gt_querymatch_alignment_display(out_display_flag) ||
+ gt_querymatch_trace_display(out_display_flag) ||
+ gt_querymatch_dtrace_display(out_display_flag) ||
+ gt_querymatch_cigar_display(out_display_flag) ||
+ gt_querymatch_cigarX_display(out_display_flag) ||
+ arguments->verify_alignment)
{
- greedyextendmatchinfo
- = gt_greedy_extend_matchinfo_new(70,
- GT_MAX_ALI_LEN_DIFF,
- gt_seedextend_match_iterator_history_size(semi),
- GT_MIN_PERC_MAT_HISTORY,
- 0, /* userdefinedleastlength */
- GT_EXTEND_CHAR_ACCESS_ANY,
- 100,
- pol_info);
+ if (gt_seedextend_match_iterator_querymatchoutoptions_set(
+ semi,
+ !arguments->relax_polish,
+ a_extend_char_access,
+ b_extend_char_access,
+ out_display_flag,
+ err) != 0)
+ {
+ had_err = -1;
+ }
}
- if (pol_info != NULL)
+ }
+ if (!had_err)
+ {
+ GtKarlinAltschulStat *karlin_altschul_stat = NULL;
+ const bool match_has_cigar = gt_seedextend_match_iterator_has_cigar(semi),
+ match_has_seed = gt_seedextend_match_iterator_has_seed(semi),
+ dtrace = gt_seedextend_match_iterator_dtrace(semi);
+ const GtUword trace_delta = gt_seedextend_match_iterator_trace_delta(semi);
+
+ if (gt_querymatch_evalue_display(out_display_flag) ||
+ gt_querymatch_bitscore_display(out_display_flag))
{
- gt_alignment_polished_ends(alignment,pol_info,false);
+ karlin_altschul_stat = gt_karlin_altschul_stat_new_gapped(
+ gt_encseq_total_length(aencseq),
+ gt_encseq_num_of_sequences(aencseq),
+ bencseq);
}
- processinfo_and_querymatchspaceptr.processinfo = greedyextendmatchinfo;
if (arguments->sortmatches)
{
(void) gt_seedextend_match_iterator_all_sorted(semi,true);
@@ -355,69 +318,64 @@ static int gt_show_seedext_runner(GT_UNUSED int argc,
while (true)
{
GtQuerymatch *querymatchptr = gt_seedextend_match_iterator_next(semi);
+ const double evalue = gt_seedextend_match_iterator_evalue(semi),
+ bitscore = gt_seedextend_match_iterator_bitscore(semi);
if (querymatchptr == NULL)
{
break;
}
- if (gt_seedextend_match_iterator_has_seedline(semi))
+ gt_querymatch_recompute_alignment(querymatchptr,
+ out_display_flag,
+ match_has_cigar,
+ dtrace,
+ trace_delta,
+ match_has_seed,
+ aencseq,
+ bencseq,
+ karlin_altschul_stat,
+ evalue,
+ bitscore);
+ if (arguments->optimal_alignment)
{
- if (arguments->seed_extend)
- {
- if (aencseq == bencseq)
- {
- const GtUword
- seedlen = gt_seedextend_match_iterator_seedlen(semi),
- seedpos1 = gt_seedextend_match_iterator_seedpos1(semi),
- seedpos2 = gt_seedextend_match_iterator_seedpos2(semi);
-
- processinfo_and_querymatchspaceptr.querymatchspaceptr
- = querymatchptr;
- had_err = gt_greedy_extend_selfmatch_with_output(
- &processinfo_and_querymatchspaceptr,
- aencseq,
- seedlen,
- seedpos1,
- seedpos2,
- err);
- if (had_err)
- {
- break;
- }
- } else
- {
- gt_assert(false);
- }
- } else
- {
- gt_show_seed_extend_encseq(querymatchptr, aencseq, bencseq);
- }
- } else
- {
- gt_show_seed_extend_plain(&seqpairbuf,
- linspace_spacemanager,
- linspace_scorehandler,
- alignment,
- alignment_show_buffer,
- alignmentwidth,
- arguments->showeoplist,
- characters,
- wildcardshow,
- aencseq,
- bencseq,
- querymatchptr);
+ gt_querymatch_extract_sequence_pair(&seqpairbuf,
+ aencseq,
+ bencseq,
+ querymatchptr);
+ gt_querymatch_optimal_alignment(querymatchptr,
+ &seqpairbuf,
+ linspace_spacemanager,
+ linspace_scorehandler,
+ alignment,
+ alignment_show_buffer,
+ out_display_flag,
+ characters,
+ wildcardshow);
}
}
- polishing_info_delete(pol_info);
gt_greedy_extend_matchinfo_delete(greedyextendmatchinfo);
- gt_free(alignment_show_buffer);
- gt_scorehandler_delete(linspace_scorehandler);
- gt_linspace_management_delete(linspace_spacemanager);
gt_free(seqpairbuf.a_sequence);
gt_free(seqpairbuf.b_sequence);
- gt_alignment_delete(alignment);
+ gt_karlin_altschul_stat_delete(karlin_altschul_stat);
}
+ gt_free(alignment_show_buffer);
+ polishing_info_delete(pol_info);
+ gt_alignment_delete(alignment);
+ gt_scorehandler_delete(linspace_scorehandler);
+ gt_linspace_management_delete(linspace_spacemanager);
gt_seedextend_match_iterator_delete(semi);
+ if (!had_err && gt_showtime_enabled())
+ {
+ printf("# TIME show_seedext %s alignment ",
+ gt_querymatch_alignment_display(out_display_flag)
+ ? "with" : "without");
+ gt_timer_show_formatted(timer,GT_WD ".%06ld\n",stdout);
+ }
+ gt_querymatch_display_flag_delete(out_display_flag);
+ if (gt_showtime_enabled())
+ {
+ gt_timer_delete(timer);
+ }
return had_err;
}
diff --git a/src/tools/gt_sortbench.c b/src/tools/gt_sortbench.c
index 326a19b..41fe0f8 100644
--- a/src/tools/gt_sortbench.c
+++ b/src/tools/gt_sortbench.c
@@ -28,6 +28,7 @@
#include "core/timer_api.h"
#include "core/radix_sort.h"
#include "core/unused_api.h"
+#include "core/yarandom.h"
#include "core/qsort-ulong.h"
#include "tools/gt_sortbench.h"
#ifdef GT_THREADS_ENABLED
@@ -62,7 +63,7 @@ static void gt_sortbench_arguments_delete(void *tool_arguments)
static const char *gt_sort_implementation_names[]
= {"thomas","system","inlinedptr","inlinedarr","direct","dual-pivot",
- "radixinplace","radixlsb","radixkeypair",NULL};
+ "radixinplace","radixlsb","radixkeypair","radixflba",NULL};
static GtOptionParser* gt_sortbench_option_parser_new(void *tool_arguments)
{
@@ -79,7 +80,7 @@ static GtOptionParser* gt_sortbench_option_parser_new(void *tool_arguments)
option = gt_option_new_choice(
"impl", "implementation\nchoose from "
"thomas|system|inlinedptr|inlinedarr|direct|\n"
- "dual-pivot|radixinplace|radixlsb|radixkeypair",
+ "dual-pivot|radixinplace|radixlsb|radixkeypair|radixflba",
arguments->impl,
gt_sort_implementation_names[0],
gt_sort_implementation_names);
@@ -128,11 +129,25 @@ static int gt_sortbench_arguments_check(GT_UNUSED int rest_argc,
int had_err = 0;
gt_assert(arguments != NULL);
- if ((arguments->use_aqsort || arguments->use_permute) &&
- strcmp(gt_str_get(arguments->impl),"radixkeypair") == 0)
+ if (arguments->use_aqsort || arguments->use_permute)
{
- gt_error_set(err,"options -aqsort and -permute is not compatible with "
- "option -impl radixkeypair");
+ if (strcmp(gt_str_get(arguments->impl),"radixkeypair") == 0)
+ {
+ gt_error_set(err,"options -aqsort and -permute are bot not compatible "
+ "with option -impl radixkeypair");
+ had_err = -1;
+ }
+ if (strcmp(gt_str_get(arguments->impl),"radixflba") == 0)
+ {
+ gt_error_set(err,"options -aqsort and -permute are both not compatible "
+ "with option -impl radixflba");
+ had_err = -1;
+ }
+ }
+ if (arguments->use_aqsort && arguments->use_permute)
+ {
+ gt_error_set(err,"options -aqsort and -permute are not compatible with "
+ "each other");
had_err = -1;
}
return had_err;
@@ -490,6 +505,65 @@ static int voidkeypairqsortcmp(const void *va,const void *vb)
return 0;
}
+static void gt_uword2flba(uint8_t *buffer,GtUword value,size_t unitsize)
+{
+ GtUword nullmask;
+ size_t idx, rshift;
+
+ gt_assert(unitsize > 0 && unitsize <= sizeof (GtUword));
+ if (unitsize == sizeof (GtUword))
+ {
+ nullmask = 0;
+ } else
+ {
+ nullmask = ~((((GtUword) 1) << (unitsize * CHAR_BIT)) - (GtUword) 1);
+ }
+ if ((value & nullmask) > 0)
+ {
+ fprintf(stderr,"value" GT_WU "has 1-bits in the most significant %u bits\n",
+ value,(
+ (unsigned int) (sizeof (GtUword) - unitsize) * CHAR_BIT));
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ for (idx = 0, rshift = CHAR_BIT * (unitsize - 1); idx < unitsize;
+ rshift -= CHAR_BIT, idx++)
+ {
+ buffer[idx] = (uint8_t) ((value >> rshift) & (GtUword) (UINT8_MAX));
+ }
+}
+
+static GtUword gt_flba2uword(const uint8_t *buffer,size_t unitsize)
+{
+ GtUword idx, value = 0;
+
+ gt_assert(unitsize > 0 && unitsize <= sizeof (GtUword));
+ for (idx = 0; idx < unitsize; idx++)
+ {
+ value = (value << CHAR_BIT) | (GtUword) buffer[idx];
+ }
+ return value;
+}
+
+static void gt_sortbench_verify_flba(const uint8_t *flba,
+ const GtUword *array,
+ GtUword len,
+ size_t unitsize)
+{
+ GtUword idx;
+
+ for (idx = 0UL; idx < len; idx++)
+ {
+ GtUword value = gt_flba2uword(flba + idx * unitsize,unitsize);
+ if (value != array[idx])
+ {
+ fprintf(stderr,"value=" GT_WU " != " GT_WU "= array[" GT_WU "\n",
+ value,array[idx],idx);
+ exit(GT_EXIT_PROGRAMMING_ERROR);
+ }
+ }
+ printf("verified\n");
+}
+
#define GT_NUM_OF_SORT_IMPLEMENTATIONS\
(sizeof (gt_sort_implementation_funcs)/\
sizeof (gt_sort_implementation_funcs[0]))
@@ -504,6 +578,8 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
GtTimer *timer;
GtUword *array = NULL, *array_copy = NULL, idx, r;
Gtuint64keyPair *arraykeypair = NULL, *arraykeypair_copy = NULL;
+ uint8_t *flba = NULL;
+ size_t flba_unitsize = 0;
gt_error_check(err);
gt_assert(arguments);
@@ -519,7 +595,21 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
arraykeypair = gt_malloc(sizeof (*arraykeypair) * arguments->num_values);
} else
{
- array = gt_malloc(sizeof (*array) * arguments->num_values);
+ bool alloc_array;
+ if (strcmp(gt_str_get(arguments->impl),"radixflba") == 0)
+ {
+ size_t bits = gt_radixsort_bits(arguments->maxvalue);
+ flba_unitsize = gt_radixsort_bits2bytes(bits);
+ flba = gt_malloc(sizeof (*flba) * arguments->num_values * flba_unitsize);
+ alloc_array = arguments->verify;
+ } else
+ {
+ alloc_array = true;
+ }
+ if (alloc_array)
+ {
+ array = gt_malloc(sizeof (*array) * arguments->num_values);
+ }
}
if (arguments->use_aqsort)
{
@@ -527,6 +617,7 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
{
printf("# using aqsort\n");
}
+ gt_assert(array != NULL);
gt_sortbench_aqsort(arguments->num_values, array);
} else
{
@@ -548,29 +639,39 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
{
printf("# using simple array of random numbers\n");
}
- /* use seed initialization to make array deterministic */
-#ifndef _WIN32
- srand48(366292341);
if (arraykeypair != NULL)
{
for (idx = 0; idx < arguments->num_values; idx++)
{
- arraykeypair[idx].uint64_a = drand48() * arguments->maxvalue;
- arraykeypair[idx].uint64_b = drand48() * arguments->maxvalue;
+ arraykeypair[idx].uint64_a = random() % (arguments->maxvalue+1);
+ arraykeypair[idx].uint64_b = random() % (arguments->maxvalue+1);
}
} else
{
- gt_assert(array != NULL);
- for (idx = 0; idx < arguments->num_values; idx++)
+ if (flba != NULL)
{
- array[idx] = drand48() * arguments->maxvalue;
+ uint8_t *flba_buffer = gt_malloc(sizeof *flba_buffer * flba_unitsize);
+ gt_assert(!arguments->verify || array != NULL);
+ for (idx = 0; idx < arguments->num_values; idx++)
+ {
+ GtUword value = (GtUword) (random() % (arguments->maxvalue+1));
+ gt_uword2flba(flba_buffer,value,flba_unitsize);
+ memcpy(flba + idx * flba_unitsize,flba_buffer,flba_unitsize);
+ if (arguments->verify)
+ {
+ array[idx] = value;
+ }
+ }
+ gt_free(flba_buffer);
+ } else
+ {
+ gt_assert(array != NULL);
+ for (idx = 0; idx < arguments->num_values; idx++)
+ {
+ array[idx] = random() % (arguments->maxvalue+1);
+ }
}
}
-#else
- /* XXX: use random instead of drand48() above */
- fprintf(stderr, "drand48() not implemented\n");
- exit(EXIT_FAILURE);
-#endif
}
}
if (arguments->verify)
@@ -588,14 +689,21 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
voidkeypairqsortcmp);
} else
{
- array_copy = gt_malloc(sizeof (*array_copy) * arguments->num_values);
- gt_assert(array != NULL);
- for (idx = 0; idx < arguments->num_values; idx++)
+ if (flba != NULL)
+ {
+ gt_assert(array != NULL);
+ qsort(array,(size_t) arguments->num_values,sizeof *array,voidqsortcmp);
+ } else
{
- array_copy[idx] = array[idx];
+ array_copy = gt_malloc(sizeof (*array_copy) * arguments->num_values);
+ gt_assert(array != NULL);
+ for (idx = 0; idx < arguments->num_values; idx++)
+ {
+ array_copy[idx] = array[idx];
+ }
+ qsort(array_copy,(size_t) arguments->num_values,sizeof *array_copy,
+ voidqsortcmp);
}
- qsort(array_copy,(size_t) arguments->num_values,sizeof *array_copy,
- voidqsortcmp);
}
}
timer = gt_timer_new();
@@ -609,18 +717,25 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
}
} else
{
- for (method = 0; method < GT_NUM_OF_SORT_IMPLEMENTATIONS; method++)
+ if (flba != NULL)
{
- if (strcmp(gt_str_get(arguments->impl),
- gt_sort_implementation_names[method]) == 0)
+ gt_assert(flba_unitsize > 0);
+ gt_radixsort_inplace_flba(flba,arguments->num_values,flba_unitsize);
+ } else
+ {
+ for (method = 0; method < GT_NUM_OF_SORT_IMPLEMENTATIONS; method++)
{
- for (r = 0; r < arguments->runs; r++)
+ if (strcmp(gt_str_get(arguments->impl),
+ gt_sort_implementation_names[method]) == 0)
{
- gt_assert(array != NULL && arraykeypair == NULL);
- gt_assert(method < GT_NUM_OF_SORT_IMPLEMENTATIONS);
- gt_sort_implementation_funcs[method](array, arguments->num_values);
+ for (r = 0; r < arguments->runs; r++)
+ {
+ gt_assert(array != NULL && arraykeypair == NULL);
+ gt_assert(method < GT_NUM_OF_SORT_IMPLEMENTATIONS);
+ gt_sort_implementation_funcs[method](array, arguments->num_values);
+ }
+ break;
}
- break;
}
}
}
@@ -642,9 +757,18 @@ static int gt_sortbench_runner(GT_UNUSED int argc, GT_UNUSED const char **argv,
arguments->num_values);
} else
{
- gt_sortbench_verify(array,array_copy,arguments->num_values);
+ if (flba != NULL)
+ {
+ gt_assert(array != NULL);
+ gt_sortbench_verify_flba(flba,array,arguments->num_values,
+ flba_unitsize);
+ } else
+ {
+ gt_sortbench_verify(array,array_copy,arguments->num_values);
+ }
}
}
+ gt_free(flba);
gt_free(array);
gt_free(array_copy);
gt_free(arraykeypair);
diff --git a/testdata/at-C99887-fwd.fna b/testdata/at-C99887-fwd.fna
new file mode 100644
index 0000000..8836f95
--- /dev/null
+++ b/testdata/at-C99887-fwd.fna
@@ -0,0 +1,14 @@
+>gi|4714011|dbj|C99887.1|C99887 C99887 Arabidopsis thaliana library (Motohashi R) Arabidopsis thaliana cDNA clone 44, mRNA sequence
+GTGAATGTTGATCTCAAACTCTTTGTCCATAATGGGAAGCTACACAAATATTTGACTGTTACAGATGGAA
+CAGTGAAGCGATACAACGATGCCAAAAAAGAGTGGGGATTCACACAATTGATTTCTCTTCCAACATTCTA
+CAACGCGAACGAAGGGTACCTTGTGCAGGACACAGCTTCTTTTGGTGCTGAGATCTTCATCGTTAACCCG
+ACAGAAAAACAAGAGAAAGTCACATTCATATCAAACCCTCCAAACAATGTTTTCACTTGGAAGATACTTC
+GTTTCTCTACCTTGGAAGATAAATTCTATTACTCTGATGATTTTCTCGTTGGAGACCGATACTGGAGACT
+AGGATTTAACCCGAAAGGATCTGGTGGAGGAAGACCACATGCACTTCCAATCTTCCTATATGCTCAAGGC
+CATAAGGCAAACGCAGTTGTTACAAACACTTGGGGAGCGGTTAATCTGCGGTTAAAGAATCAACGAAGCT
+CCAACCACAAACAATTATATTCTGCAGCTTGGTACCCGATTCGAAGCGATTATGGTGTGGGAGTGAACAA
+TATAATATTGATGTCAGAGCTAAAAGATGCATCAAAAGGGTATATGGTGAATGATGCCATTATCTTTGAA
+GCTGAAATGGTTAAGGTCTCTGTGACAAACATAGTCTCCGTTTAAATATCACTACTTCTTTTTCAACAAC
+AACCTTACGAATAAAGTGGACTTTGATGAGTTTAATTTGTTATACGACAACGTTGTTGATGCTTGTGATG
+TTATCGTTGTTTCTGCTCTCCGAGTTTTCGTTTTACTTTTTTTTTCATGTTTTGCTATCCAATGAAAATA
+AAAGGTTTAAAACTCTCCTTTGGTTTTTAAAAGT
diff --git a/testdata/at-C99887-rev.fna b/testdata/at-C99887-rev.fna
new file mode 100644
index 0000000..9a83141
--- /dev/null
+++ b/testdata/at-C99887-rev.fna
@@ -0,0 +1,14 @@
+>gi|4714011|dbj|C99887.1|C99887 C99887 Arabidopsis thaliana library (Motohashi R) Arabidopsis thaliana cDNA clone 44, mRNA sequence
+ACTTTTAAAAACCAAAGGAGAGTTTTAAACCTTTTATTTTCATTGGATAGCAAAACATGAAAAAAAAAGT
+AAAACGAAAACTCGGAGAGCAGAAACAACGATAACATCACAAGCATCAACAACGTTGTCGTATAACAAAT
+TAAACTCATCAAAGTCCACTTTATTCGTAAGGTTGTTGTTGAAAAAGAAGTAGTGATATTTAAACGGAGA
+CTATGTTTGTCACAGAGACCTTAACCATTTCAGCTTCAAAGATAATGGCATCATTCACCATATACCCTTT
+TGATGCATCTTTTAGCTCTGACATCAATATTATATTGTTCACTCCCACACCATAATCGCTTCGAATCGGG
+TACCAAGCTGCAGAATATAATTGTTTGTGGTTGGAGCTTCGTTGATTCTTTAACCGCAGATTAACCGCTC
+CCCAAGTGTTTGTAACAACTGCGTTTGCCTTATGGCCTTGAGCATATAGGAAGATTGGAAGTGCATGTGG
+TCTTCCTCCACCAGATCCTTTCGGGTTAAATCCTAGTCTCCAGTATCGGTCTCCAACGAGAAAATCATCA
+GAGTAATAGAATTTATCTTCCAAGGTAGAGAAACGAAGTATCTTCCAAGTGAAAACATTGTTTGGAGGGT
+TTGATATGAATGTGACTTTCTCTTGTTTTTCTGTCGGGTTAACGATGAAGATCTCAGCACCAAAAGAAGC
+TGTGTCCTGCACAAGGTACCCTTCGTTCGCGTTGTAGAATGTTGGAAGAGAAATCAATTGTGTGAATCCC
+CACTCTTTTTTGGCATCGTTGTATCGCTTCACTGTTCCATCTGTAACAGTCAAATATTTGTGTAGCTTCC
+CATTATGGACAAAGAGTTTGAGATCAACATTCAC
diff --git a/testdata/at-C99930.fna b/testdata/at-C99930.fna
new file mode 100644
index 0000000..55d22b3
--- /dev/null
+++ b/testdata/at-C99930.fna
@@ -0,0 +1,12 @@
+>gi|4714047|dbj|C99930.1|C99930 C99930 Arabidopsis thaliana library (Motohashi R) Arabidopsis thaliana cDNA clone 86, mRNA sequence
+GTGAAGCGATACAACGATGCAAAAAAAGAGTGGGGATTCACACAATTGATTTCTCTTCCAACATTCTACA
+ACGCGAACGAAGGGTACATTGTGCAGGACACAGCTTCTTTTGGTGCTGAGATCTTCATCGTTAACCCGAC
+AGAAAAACAAGAGAAAGTCACATTCATATCAAACCCTCCGAACAATGTTTTCACTTGGAAGATACTTCGT
+TTCTCTACCTTGGAAGATAAATTCTATTACTCTGATGATTTTCTCGTTGAAGACCGATACTGGAGATTAG
+GATTTAACCCGAAAGGATCTGGTGGAGGGAGACCACATGCACTTCCAATCTTCCTATATGCTCAAGGCCA
+TAAGGCAAACGCAGTTGTTACAAACACTTGGGGAGCGGTTAATCTGCGGTTAAAGAATCAACGAAGCTCC
+AACCACAAACAATTATATTCTGCAGCTTGGTACCCCGATTCGAAGCGATTATGGTGTGGGAGTGAACAAT
+ATCATATTGATGTCAGAAGCTAAAAGATGCATCCAAAGGGTATATGGTGAATGATGCCATTATCTTTTGA
+AACTGAAATGGTTAAGGTCTCTGTGAACAACATAGTCTCCCCTTAAATATATGTCACTACTTCTTTATCC
+CCCGAAATAACCTTACAAAGAAAAATTGATGATTTAATTTGTTATACGACACTTTATTTATGCCTGTGAA
+GTAACCTTGTTTCCGCTCCCCAAATTTCCTTTTTTTTCCTGTTTTT
diff --git a/testdata/gt_seqorder_test_sortlength.fas b/testdata/gt_seqorder_test_sortlength.fas
new file mode 100644
index 0000000..970f2fc
--- /dev/null
+++ b/testdata/gt_seqorder_test_sortlength.fas
@@ -0,0 +1,34 @@
+>13
+aaaa
+>0
+aan
+>12
+aaa
+>15
+aan
+>16
+ana
+>5
+ca
+>6
+at
+>7
+tt
+>8
+ac
+>9
+cg
+>10
+ga
+>4
+gg
+>14
+aa
+>1
+at
+>2
+ta
+>3
+ag
+>11
+a
diff --git a/testdata/gt_sketch_textwidth.gff3 b/testdata/gt_sketch_textwidth.gff3
index 99bfd40..26af54a 100644
--- a/testdata/gt_sketch_textwidth.gff3
+++ b/testdata/gt_sketch_textwidth.gff3
@@ -1,6 +1,6 @@
##gff-version 3
##sequence-region ctg123 1 1497228
ctg123 . gene 1000 2000 . + 0 ID=g00001;Name=thisisalongname123
-ctg123 . gene 2001 3000 . + 0 ID=g00002;Name=anotherlongname123
+ctg123 . gene 2001 3000 . + 0 ID=g00002;Name=anotherlongname
ctg123 . gene 3001 4000 . + 0 ID=g00003;Name=stillanotherlonglonglonglonglonglonglongname
ctg123 . gene 4001 5000 . + 0 ID=g00004;Name=shortname
diff --git a/testdata/matchtool_see-ext.match b/testdata/matchtool_see-ext.match
new file mode 100644
index 0000000..d1e5d1f
--- /dev/null
+++ b/testdata/matchtool_see-ext.match
@@ -0,0 +1,72 @@
+query dbname2 q.startpos d.startpos q.endpos d.endpos bit score evalue ali length
+gi|4714045|dbj|C99928.1|C99928 gi|4714048|dbj|C99931.1|C99931 1 35 656 660 753.500 8e-219 625
+gi|4714034|dbj|C99916.1|C99916 gi|4714048|dbj|C99931.1|C99931 85 1 833 706 969.800 7e-284 705
+gi|4714011|dbj|C99887.1|C99887 gi|4714048|dbj|C99931.1|C99931 1 1 687 660 698.600 3e-202 659
+gi|4714045|dbj|C99928.1|C99928 gi|4714047|dbj|C99930.1|C99930 39 1 698 668 829.100 2e-241 657
+gi|4714044|dbj|C99927.1|C99927 gi|4714047|dbj|C99930.1|C99930 15 15 645 653 748.400 3e-217 628
+gi|4714034|dbj|C99916.1|C99916 gi|4714047|dbj|C99930.1|C99930 157 1 806 655 686.600 1e-198 648
+gi|4714011|dbj|C99887.1|C99887 gi|4714047|dbj|C99930.1|C99930 73 1 715 653 964.700 2e-282 642
+gi|4714003|dbj|C99879.1|C99879 gi|4714046|dbj|C99929.1|C99929 1 17 571 629 775.800 1e-225 571
+gi|4714034|dbj|C99916.1|C99916 gi|4714045|dbj|C99928.1|C99928 119 1 864 742 1002.500 1e-293 740
+gi|4714011|dbj|C99887.1|C99887 gi|4714045|dbj|C99928.1|C99928 35 1 784 756 911.500 3e-266 745
+gi|4714011|dbj|C99887.1|C99887 gi|4714044|dbj|C99927.1|C99927 87 15 874 797 1064.300 3e-312 781
+gi|4714011|dbj|C99887.1|C99887 gi|4714034|dbj|C99916.1|C99916 1 85 766 851 837.600 4e-244 761
+gi|4713986|dbj|C99861.1|C99861 gi|4713989|dbj|C99864.1|C99864 138 135 517 515 578.400 3e-166 377
+gi|4713985|dbj|C99860.1|C99860 gi|4713989|dbj|C99864.1|C99864 138 135 575 564 621.300 4e-179 426
+gi|4713985|dbj|C99860.1|C99860 gi|4713986|dbj|C99861.1|C99861 1 1 517 517 889.100 9e-260 517
+gi|3449451|gb|AI099712.1|AI099712 gi|4239693|emb|AJ132746.1|AJ132746 9 224 548 765 791.300 2e-230 535
+gi|3449444|gb|AI099705.1|AI099705 gi|4239690|emb|AJ132744.1|AJ132744 1 57 568 624 793.000 7e-231 561
+gi|3719131|dbj|C99774.1|C99774 gi|3719176|dbj|C99819.1|C99819 1 1 397 397 672.800 8e-195 397
+gi|3719126|dbj|C99769.1|C99769 gi|3719174|dbj|C99817.1|C99817 3 1 416 417 666.000 1e-192 414
+gi|3719127|dbj|C99770.1|C99770 gi|3719168|dbj|C99811.1|C99811 1 1 419 418 705.400 1e-204 418
+gi|3719094|dbj|C99746.1|C99746 gi|3719155|dbj|C99798.1|C99798 1 1 379 378 616.200 9e-178 378
+gi|3450488|gb|AI100527.1|AI100527 gi|3450559|gb|AI100598.1|AI100598 27 2 434 401 629.900 7e-182 400
+gi|3450203|gb|AI100242.1|AI100242 gi|3450559|gb|AI100598.1|AI100598 107 1 510 401 659.100 1e-190 401
+gi|3450093|gb|AI100132.1|AI100132 gi|3450559|gb|AI100598.1|AI100598 216 4 618 403 641.900 2e-185 400
+gi|3450037|gb|AI100754.1|AI100754 gi|3450559|gb|AI100598.1|AI100598 17 1 423 403 653.900 4e-189 403
+gi|3449788|gb|AI100049.1|AI100049 gi|3450559|gb|AI100598.1|AI100598 50 1 456 403 659.100 1e-190 403
+gi|3449709|gb|AI099970.1|AI099970 gi|3450559|gb|AI100598.1|AI100598 105 1 513 403 636.800 7e-184 403
+gi|3450120|gb|AI100159.1|AI100159 gi|3450535|gb|AI100574.1|AI100574 36 166 501 640 595.600 2e-171 463
+gi|3450071|gb|AI100110.1|AI100110 gi|3450490|gb|AI100529.1|AI100529 144 1 564 423 660.800 5e-191 418
+gi|3450203|gb|AI100242.1|AI100242 gi|3450488|gb|AI100527.1|AI100527 84 1 510 434 684.800 2e-198 427
+gi|3450093|gb|AI100132.1|AI100132 gi|3450488|gb|AI100527.1|AI100527 190 1 616 434 669.400 1e-193 427
+gi|3449788|gb|AI100049.1|AI100049 gi|3450488|gb|AI100527.1|AI100527 27 1 454 434 681.400 2e-197 427
+gi|3449709|gb|AI099970.1|AI099970 gi|3450488|gb|AI100527.1|AI100527 81 1 511 434 648.800 2e-187 428
+gi|2764113|gb|R30496.1|R30496 gi|3450485|gb|AI100524.1|AI100524 1 71 432 494 638.500 2e-184 422
+gi|3450396|gb|AI100435.1|AI100435 gi|3450465|gb|AI100504.1|AI100504 1 49 480 540 727.800 3e-211 480
+gi|3450281|gb|AI100320.1|AI100320 gi|3450465|gb|AI100504.1|AI100504 81 1 602 540 779.300 1e-226 522
+gi|3450141|gb|AI100180.1|AI100180 gi|3450465|gb|AI100504.1|AI100504 1 106 433 540 653.900 4e-189 431
+gi|3450113|gb|AI100152.1|AI100152 gi|3450465|gb|AI100504.1|AI100504 3 36 481 515 751.800 2e-218 477
+gi|3450027|gb|AI100744.1|AI100744 gi|3450465|gb|AI100504.1|AI100504 1 48 483 535 774.100 3e-225 482
+gi|3449600|gb|AI099861.1|AI099861 gi|3450450|gb|AI100489.1|AI100489 13 1 441 425 659.100 1e-190 423
+gi|3450281|gb|AI100320.1|AI100320 gi|3450396|gb|AI100435.1|AI100435 127 4 602 480 720.900 4e-209 471
+gi|3450113|gb|AI100152.1|AI100152 gi|3450396|gb|AI100435.1|AI100435 16 1 481 455 683.100 7e-198 455
+gi|3450027|gb|AI100744.1|AI100744 gi|3450396|gb|AI100435.1|AI100435 2 1 483 475 729.500 8e-212 473
+gi|3450141|gb|AI100180.1|AI100180 gi|3450281|gb|AI100320.1|AI100320 1 175 433 602 633.300 7e-183 427
+gi|3450113|gb|AI100152.1|AI100152 gi|3450281|gb|AI100320.1|AI100320 1 111 481 577 690.000 6e-200 466
+gi|3450027|gb|AI100744.1|AI100744 gi|3450281|gb|AI100320.1|AI100320 5 127 483 597 732.900 8e-213 470
+gi|3450093|gb|AI100132.1|AI100132 gi|3450203|gb|AI100242.1|AI100242 92 1 616 510 703.700 6e-204 506
+gi|3450037|gb|AI100754.1|AI100754 gi|3450203|gb|AI100242.1|AI100242 6 97 421 510 667.700 3e-193 412
+gi|3449788|gb|AI100049.1|AI100049 gi|3450203|gb|AI100242.1|AI100242 1 59 454 510 732.900 7e-213 450
+gi|3449709|gb|AI099970.1|AI099970 gi|3450203|gb|AI100242.1|AI100242 12 26 511 510 710.600 4e-206 485
+gi|3450027|gb|AI100744.1|AI100744 gi|3450141|gb|AI100180.1|AI100180 56 1 483 428 636.800 7e-184 426
+gi|3449964|gb|AI099652.1|AI099652 gi|3450120|gb|AI100159.1|AI100159 6 15 472 465 619.600 1e-178 450
+gi|3449439|gb|AI099700.1|AI099700 gi|3450120|gb|AI100159.1|AI100159 9 36 502 519 684.800 2e-198 484
+gi|3450027|gb|AI100744.1|AI100744 gi|3450113|gb|AI100152.1|AI100152 1 15 463 481 710.600 4e-206 460
+gi|3450037|gb|AI100754.1|AI100754 gi|3450093|gb|AI100132.1|AI100132 2 200 423 618 647.100 5e-187 417
+gi|3449788|gb|AI100049.1|AI100049 gi|3450093|gb|AI100132.1|AI100132 1 165 456 618 700.300 5e-203 452
+gi|3449709|gb|AI099970.1|AI099970 gi|3450093|gb|AI100132.1|AI100132 3 116 513 618 653.900 5e-189 499
+gi|3449691|gb|AI099952.1|AI099952 gi|3450058|gb|AI100097.1|AI100097 101 1 464 367 592.100 2e-170 363
+gi|3449788|gb|AI100049.1|AI100049 gi|3450037|gb|AI100754.1|AI100754 35 1 456 423 683.100 7e-198 421
+gi|3449709|gb|AI099970.1|AI099970 gi|3450037|gb|AI100754.1|AI100754 92 4 513 423 635.100 2e-183 416
+gi|3449709|gb|AI099970.1|AI099970 gi|3449788|gb|AI100049.1|AI100049 51 1 513 456 671.100 3e-194 454
+gi|2764183|gb|R64880.1|R64880 gi|2764205|gb|R64942.1|R64942 1 1 455 458 650.500 5e-188 451
+gi|2764068|gb|R30324.1|R30324 gi|2764205|gb|R64942.1|R64942 1 10 443 459 633.300 7e-183 441
+gi|2764183|gb|R64880.1|R64880 gi|2764186|gb|R64887.1|R64887 1 2 432 428 635.100 2e-183 427
+gi|2764068|gb|R30324.1|R30324 gi|2764186|gb|R64887.1|R64887 1 11 415 426 633.300 7e-183 415
+gi|2764068|gb|R30324.1|R30324 gi|2764183|gb|R64880.1|R64880 1 10 440 455 666.000 1e-192 439
+gi|2764100|gb|R30437.1|R30437 gi|2764162|gb|R64814.1|R64814 10 1 508 494 672.800 1e-194 491
+gi|2764073|gb|R30334.1|R30334 gi|2764148|gb|R64752.1|R64752 1 4 471 461 636.800 7e-184 457
+# space peak in megabytes: 0.05 (in 1001 events)
+# mmap space peak in megabytes: 0.00
+# combined space peak in megabytes: 0.05
diff --git a/testdata/query-fwd.match b/testdata/query-fwd.match
new file mode 100644
index 0000000..f5cc2ee
--- /dev/null
+++ b/testdata/query-fwd.match
@@ -0,0 +1,55 @@
+# Options: -ii subject -qii query-fwd -evalue 0.01 -outfmt alignment blast -seedlength 12 -minidentity 75 -history 60
+# Fields: query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score
+gi|4714011|dbj|C99887.1|C99887 gi|4714047|dbj|C99930.1|C99930 90.91 733 38 30 73 822 1 746 3e-284 961.3
+Query 73 gtgaagcgatacaacgatgccaaaaaagagtggggattcacacaattgatttctcttcca 132
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Sbjct 1 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttcca 60
+
+Query 133 acattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgag 192
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Sbjct 61 acattctacaacgcgaacgaagggtacattgtgcaggacacagcttcttttggtgctgag 120
+
+Query 193 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcca 252
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 121 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccg 180
+
+Query 253 aacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattac 312
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 181 aacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattac 240
+
+Query 313 tctgatgattttctcgttggagaccgatactggagactaggatttaacccgaaaggatct 372
+ ||||||||||||||||||| |||||||||||||||| |||||||||||||||||||||||
+Sbjct 241 tctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatct 300
+
+Query 373 ggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaac 432
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 301 ggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaac 360
+
+Query 433 gcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 492
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 361 gcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+
+Query 493 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtggg 551
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Sbjct 421 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtggg 480
+
+Query 552 agtgaacaatataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtga 610
+ |||||||||||| |||||||||||||| ||||||||||||||| ||||||||||||||||
+Sbjct 481 agtgaacaatatcatattgatgtcagaagctaaaagatgcatccaaagggtatatggtga 540
+
+Query 611 atgatgccattatcttt-gaagctgaaatggttaaggtctctgtga-caaacatagtctc 668
+ ||||||||||||||||| ||| |||||||||||||||||||||||| ||| |||||||||
+Sbjct 541 atgatgccattatcttttgaaactgaaatggttaaggtctctgtgaacaa-catagtctc 599
+
+Query 669 cgtttaaatat----cactacttctttttcaac--aac-aaccttacgaataaag-tgga 720
+ | |||||||| |||||||||||| || | || |||||||| || ||| | ||
+Sbjct 600 cccttaaatatatgtcactacttctttatcccccgaaataaccttacaaagaaaaattga 659
+
+Query 721 ctttgatg-agtttaatttgttatacgacaacgttgttgatgcttgtgatgttatcgttg 779
+ | ||| | ||| || | | ||||| | || || |||| ||||| || | | |||
+Sbjct 660 -t--gatttaatttg-tta-t-a--cgaca-ctttatttatgcctgtgaagtaacc-ttg 709
+
+Query 780 tttctgctctccgagttttcgttttactttttttttcatgttt 822
+ |||| |||| || | ||| | |||| |||| | | | |||
+Sbjct 710 tttccgctccccaaattt-cctttt--ttttcctgt--t-ttt 746
+
diff --git a/testdata/query-rev.match b/testdata/query-rev.match
new file mode 100644
index 0000000..6fdec13
--- /dev/null
+++ b/testdata/query-rev.match
@@ -0,0 +1,55 @@
+# Options: -ii subject -qii query -evalue 0.01 -outfmt alignment blast -seedlength 12 -minidentity 75 -history 60
+# Fields: query id, subject id, % identity, alignment length, mismatches, gap opens, q. start, q. end, s. start, s. end, evalue, bit score
+gi|4714011|dbj|C99887.1|C99887 gi|4714047|dbj|C99930.1|C99930 90.91 733 38 30 53 802 746 1 3e-284 961.3
+Query 53 aaacatgaaaaaaaaagtaaaacgaaaactcggagagcagaaacaacgataacatcacaa 112
+ ||| | | | |||| |||| | ||| | || |||| ||||||| | | || |||||
+Sbjct 746 aaa-a--acaggaaaa--aaaagg-aaatttggggagcggaaacaa-ggttacttcacag 694
+
+Query 113 gcatcaacaacgttgtcgtataacaaattaaact-catcaaagtcca-ctttattcgtaa 170
+ |||| || || | ||||| | | || ||| | ||| | || | ||| || ||||
+Sbjct 693 gcataaataaag-tgtcg--t-a-taa-caaattaaatc--a-tcaatttttctttgtaa 643
+
+Query 171 ggtt-gtt--gttgaaaaagaagtagtg----atatttaaacggagactatgtttg-tca 222
+ |||| || | || |||||||||||| |||||||| |||||||||| ||| |||
+Sbjct 642 ggttatttcgggggataaagaagtagtgacatatatttaaggggagactatg-ttgttca 584
+
+Query 223 cagagaccttaaccatttcagcttc-aaagataatggcatcattcaccatataccctttt 281
+ ||||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||
+Sbjct 583 cagagaccttaaccatttcagtttcaaaagataatggcatcattcaccatataccctttg 524
+
+Query 282 gatgcatcttttagc-tctgacatcaatattatattgttcactcccacaccataatcgct 340
+ ||||||||||||||| |||||||||||||| |||||||||||||||||||||||||||||
+Sbjct 523 gatgcatcttttagcttctgacatcaatatgatattgttcactcccacaccataatcgct 464
+
+Query 341 tcgaatc-gggtaccaagctgcagaatataattgtttgtggttggagcttcgttgattct 399
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 463 tcgaatcggggtaccaagctgcagaatataattgtttgtggttggagcttcgttgattct 404
+
+Query 400 ttaaccgcagattaaccgctccccaagtgtttgtaacaactgcgtttgccttatggcctt 459
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 403 ttaaccgcagattaaccgctccccaagtgtttgtaacaactgcgtttgccttatggcctt 344
+
+Query 460 gagcatataggaagattggaagtgcatgtggtcttcctccaccagatcctttcgggttaa 519
+ |||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||
+Sbjct 343 gagcatataggaagattggaagtgcatgtggtctccctccaccagatcctttcgggttaa 284
+
+Query 520 atcctagtctccagtatcggtctccaacgagaaaatcatcagagtaatagaatttatctt 579
+ |||||| |||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Sbjct 283 atcctaatctccagtatcggtcttcaacgagaaaatcatcagagtaatagaatttatctt 224
+
+Query 580 ccaaggtagagaaacgaagtatcttccaagtgaaaacattgtttggagggtttgatatga 639
+ ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Sbjct 223 ccaaggtagagaaacgaagtatcttccaagtgaaaacattgttcggagggtttgatatga 164
+
+Query 640 atgtgactttctcttgtttttctgtcgggttaacgatgaagatctcagcaccaaaagaag 699
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 163 atgtgactttctcttgtttttctgtcgggttaacgatgaagatctcagcaccaaaagaag 104
+
+Query 700 ctgtgtcctgcacaaggtacccttcgttcgcgttgtagaatgttggaagagaaatcaatt 759
+ ||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||
+Sbjct 103 ctgtgtcctgcacaatgtacccttcgttcgcgttgtagaatgttggaagagaaatcaatt 44
+
+Query 760 gtgtgaatccccactcttttttggcatcgttgtatcgcttcac 802
+ |||||||||||||||||||||| ||||||||||||||||||||
+Sbjct 43 gtgtgaatccccactctttttttgcatcgttgtatcgcttcac 1
+
diff --git a/testdata/readjoiner/30x_800nt.gfa1 b/testdata/readjoiner/30x_800nt.gfa1
new file mode 100644
index 0000000..783cd9e
--- /dev/null
+++ b/testdata/readjoiner/30x_800nt.gfa1
@@ -0,0 +1,64 @@
+H VN:Z:1.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 GAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGT [...]
+S 1 TCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGT [...]
+S 2 TAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGT [...]
+S 3 TTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACAAAGGGG [...]
+S 4 TCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACA [...]
+S 5 TGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGA [...]
+S 6 GAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTAC [...]
+S 7 TGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCA [...]
+S 8 GGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTA [...]
+S 9 GAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTC [...]
+S 10 GAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGA [...]
+S 11 AGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCG [...]
+S 12 GGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGC [...]
+S 13 GGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCT [...]
+S 14 GGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTAAATC [...]
+S 15 CGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCC [...]
+S 16 ATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCC [...]
+S 17 ATTAATTGCGTTGCGCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACTCAAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCAT [...]
+S 18 TTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGC [...]
+S 19 TGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATG [...]
+S 20 ACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGT [...]
+S 21 ACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGTCAGATCTGACTAAGGGTCGGAATTCGATATCAAGCTTATCGATACCGTCGA [...]
+S 22 TTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCC [...]
+S 23 ACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAG [...]
+S 24 TTTAAAAGGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGA [...]
+S 25 TGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATAT [...]
+S 26 CATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATA [...]
+S 27 GCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACTCAAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAG [...]
+S 28 AGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCG [...]
+L 14 + 20 + 290M
+L 6 + 23 + 670M
+L 1 + 11 + 784M
+L 26 + 16 + 655M
+L 28 - 17 + 593M
+L 19 + 26 + 734M
+L 20 - 15 + 742M
+L 24 - 6 + 757M
+L 13 + 0 + 760M
+L 21 - 9 + 794M
+L 0 + 10 + 792M
+L 2 + 9 - 754M
+L 17 + 27 + 786M
+L 24 + 8 + 793M
+L 5 + 14 + 764M
+L 28 + 13 + 661M
+L 20 + 12 + 793M
+L 11 + 27 - 718M
+L 10 + 21 - 523M
+L 7 - 2 + 756M
+L 8 + 1 + 726M
+L 25 + 4 + 782M
+L 4 + 5 + 761M
+L 22 + 19 + 790M
+L 23 + 25 + 623M
+L 3 + 6 - 226M
+L 18 + 22 + 784M
+L 16 + 3 + 775M
+L 15 + 18 + 784M
diff --git a/testdata/readjoiner/30x_800nt.gfa2 b/testdata/readjoiner/30x_800nt.gfa2
new file mode 100644
index 0000000..682d97c
--- /dev/null
+++ b/testdata/readjoiner/30x_800nt.gfa2
@@ -0,0 +1,64 @@
+H VN:Z:2.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 800 GAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAA [...]
+S 1 800 TCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCA [...]
+S 2 800 TAGTGGGCCATCGCCCTGATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGT [...]
+S 3 800 TTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACAAA [...]
+S 4 800 TCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCT [...]
+S 5 800 TGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCA [...]
+S 6 800 GAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGG [...]
+S 7 800 TGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCC [...]
+S 8 800 GGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATA [...]
+S 9 800 GAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAA [...]
+S 10 800 GAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAG [...]
+S 11 800 AGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAG [...]
+S 12 800 GGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATG [...]
+S 13 800 GGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCA [...]
+S 14 800 GGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTA [...]
+S 15 800 CGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGA [...]
+S 16 800 ATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCC [...]
+S 17 800 ATTAATTGCGTTGCGCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACTCAAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTC [...]
+S 18 800 TTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGAC [...]
+S 19 800 TGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGC [...]
+S 20 800 ACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATA [...]
+S 21 800 ACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGTCAGATCTGACTAAGGGTCGGAATTCGATATCAAGCTTATCGATACCG [...]
+S 22 800 TTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGA [...]
+S 23 800 ACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCA [...]
+S 24 800 TTTAAAAGGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAA [...]
+S 25 800 TGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTAT [...]
+S 26 800 CATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATT [...]
+S 27 800 GCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACTCAAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCT [...]
+S 28 800 AGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAG [...]
+E * 14+ 20+ 510 800$ 0 290 290M
+E * 6+ 23+ 130 800$ 0 670 670M
+E * 1+ 11+ 16 800$ 0 784 784M
+E * 26+ 16+ 145 800$ 0 655 655M
+E * 28- 17+ 0 593 0 593 593M
+E * 19+ 26+ 66 800$ 0 734 734M
+E * 20- 15+ 0 742 0 742 742M
+E * 24- 6+ 0 757 0 757 757M
+E * 13+ 0+ 40 800$ 0 760 760M
+E * 21- 9+ 0 794 0 794 794M
+E * 0+ 10+ 8 800$ 0 792 792M
+E * 2+ 9- 46 800$ 46 800$ 754M
+E * 17+ 27+ 14 800$ 0 786 786M
+E * 24+ 8+ 7 800$ 0 793 793M
+E * 5+ 14+ 36 800$ 0 764 764M
+E * 28+ 13+ 139 800$ 0 661 661M
+E * 20+ 12+ 7 800$ 0 793 793M
+E * 11+ 27- 82 800$ 82 800$ 718M
+E * 10+ 21- 277 800$ 277 800$ 523M
+E * 7- 2+ 0 756 0 756 756M
+E * 8+ 1+ 74 800$ 0 726 726M
+E * 25+ 4+ 18 800$ 0 782 782M
+E * 4+ 5+ 39 800$ 0 761 761M
+E * 22+ 19+ 10 800$ 0 790 790M
+E * 23+ 25+ 177 800$ 0 623 623M
+E * 3+ 6- 574 800$ 574 800$ 226M
+E * 18+ 22+ 16 800$ 0 784 784M
+E * 16+ 3+ 25 800$ 0 775 775M
+E * 15+ 18+ 16 800$ 0 784 784M
diff --git a/testdata/readjoiner/30x_long_varlen.gfa1 b/testdata/readjoiner/30x_long_varlen.gfa1
new file mode 100644
index 0000000..3b70ef2
--- /dev/null
+++ b/testdata/readjoiner/30x_long_varlen.gfa1
@@ -0,0 +1,73 @@
+H VN:Z:1.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 AGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTG [...]
+S 1 TCAGACCCCGTAGAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTC [...]
+S 2 TAGTGGGCCATCGCATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGTCAGA [...]
+S 3 TTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACAAAGGGG [...]
+S 4 TCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACA [...]
+S 5 TGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGA [...]
+S 6 GAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTAC [...]
+S 7 TGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCCCGCA [...]
+S 8 GGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTA [...]
+S 9 GAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTC [...]
+S 10 GAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGA [...]
+S 11 AGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCG [...]
+S 12 GGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATGCGGC [...]
+S 13 GGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTT [...]
+S 14 CAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTAAATCCC [...]
+S 15 CGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCC [...]
+S 16 ATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAGGACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTC [...]
+S 17 ATTAATTGCGTTGCGCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGC [...]
+S 18 TTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATACAGTAAGAGAATTGATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAG [...]
+S 19 TGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATG [...]
+S 20 ACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGT [...]
+S 21 ACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGTCAGATCTGACTAAGGGTCGGAATTCGATATCAAGCTTATCGATACCGTCGACCT [...]
+S 22 TTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCC [...]
+S 23 ACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAG [...]
+S 24 TTTAAAAGGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCAAAATCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAA [...]
+S 25 TGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAACTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAA [...]
+S 26 CATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACACAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGT [...]
+S 27 GCTCACTGCCCGCTTTCCAGTCG
+S 28 AGTTACCGGATAAGGCGCAGCGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACG [...]
+S 29 TCAGCCCGACCGCTGCGCCTTATATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAA [...]
+L 22 - 20 + 710M
+L 14 + 20 + 290M
+L 25 + 20 + 197M
+L 6 + 23 + 670M
+L 1 + 11 + 784M
+L 6 + 26 - 56M
+L 28 + 0 + 620M
+L 1 + 0 + 301M
+L 24 + 0 + 220M
+L 6 - 0 + 177M
+L 21 + 28 - 336M
+L 21 + 17 + 129M
+L 2 + 17 + 77M
+L 23 + 14 + 528M
+L 2 + 13 - 423M
+L 20 - 15 + 742M
+L 8 - 6 + 750M
+L 11 - 6 + 660M
+L 17 + 6 + 564M
+L 10 + 9 + 517M
+L 13 + 9 + 469M
+L 17 - 9 + 123M
+L 0 + 10 + 792M
+L 23 - 13 + 88M
+L 20 + 12 + 793M
+L 13 + 21 - 475M
+L 23 + 4 + 605M
+L 23 + 5 + 566M
+L 22 + 19 + 790M
+L 10 + 7 + 427M
+L 13 + 7 + 379M
+L 17 - 7 + 33M
+L 17 + 25 + 257M
+L 19 + 3 + 564M
+L 2 + 10 - 471M
+L 16 + 24 + 158M
+L 6 + 16 - 201M
diff --git a/testdata/readjoiner/30x_long_varlen.gfa2 b/testdata/readjoiner/30x_long_varlen.gfa2
new file mode 100644
index 0000000..0fd7261
--- /dev/null
+++ b/testdata/readjoiner/30x_long_varlen.gfa2
@@ -0,0 +1,73 @@
+H VN:Z:2.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 799 AGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAAT [...]
+S 1 799 TCAGACCCCGTAGAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAG [...]
+S 2 796 TAGTGGGCCATCGCATAGACGGTTTTTCGCCCTTTGACGTTGGAGTCCACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACGGCCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGT [...]
+S 3 803 TTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGCCCTCCCGTATCGTAGTTATCTACACAAA [...]
+S 4 798 TCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCT [...]
+S 5 799 TGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCA [...]
+S 6 800 GAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGG [...]
+S 7 799 TGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAACGTCGTGACTGGGAAAACCCTGGCGTTACCCAACTTAATCGCCTTGCAGCACATCCCCCTTTCGCCAGCTGGCGTAATAGCGAAGAGGCC [...]
+S 8 800 GGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATA [...]
+S 9 796 GAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACCATGATTACGCCAAGCGCGCAATTAACCCTCACTAAAGGGAACAAAAGCTGGGTACCGGGCCCCCCCTCGAGGTCGACGGTATCGATAAGCTTGATATCGAATTCCGACCCTTAGTCAGATCTGACACACAGTCCGAATTCCTGCAGCCCGGGGGATCCACTAGTTCTAGAGCGGCCGCCACCGCGGTGGAGCTCCAATTCGCCCTATAGTGAGTCGTATTACGCGCGCTCACTGGCCGTCGTTTTACAA [...]
+S 10 800 GAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAGGCTTTACACTTTATGCTTCCGGCTCGTATGTTGTGTGGAATTGTGAG [...]
+S 11 798 AGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCTCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAG [...]
+S 12 801 GGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATAGTGTATG [...]
+S 13 799 GGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAATACGCAAACCGCCTCTCCCCGCGCGTTGGCCGATTCATTAATGCAGCTGGCACGACAGGTTTCCCGACTGGAAAGCGGGCAGTGAGCGCAACGCAATTAATGTGAGTTAGCTCACTCATTAGGCACCCCAG [...]
+S 14 798 CAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTACCAATGCTTAATCAGTGAGGCACCTATCTCAGCGATCTGTCTATTTCGTTCATCCATAGTTGCCTAAA [...]
+S 15 802 CGCCCTTATTCCCTTTTTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGA [...]
+S 16 802 ATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAGGACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGCAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGCCGGTGAGCGTGGGTCTCGCGGTATCATTGCAGCACTGGGGCCAGATGGTAAGC [...]
+S 17 797 ATTAATTGCGTTGCGCTCACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCTCTTCCGCTTCCTCGCTCACTGACTCGCTGCGCTCGGTCGTTCGGCTGCGGCGAGCGGTATCAGCTCACAAGGCGGTAATACGGTTATCCACAGAATCAGGGGATAACGCAGGAAAGAACATGTGAGCAAAAGGCCAGCAAAAGGCCAGGAACCGTAAAAAGGCCGCGTTGCTGGCGTTTTTCCATAGGCTCCGCCCCCCTGACGAGCATCACAAAAATCGACGCTCAAGTCAGAGGTGGCGAAACCCGACAGGACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCA [...]
+S 18 801 TTTGCGGCATTTTGCCTTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATACAGTAAGAGAATTGATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGA [...]
+S 19 800 TGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGATGCCTGTAGC [...]
+S 20 800 ACGGGAGGGCTTACCATCTGGCCCCAGTGCTGCAATGATACCGCGAGACCCACGCTCACCGGCTCCAGATTTATCAGCAATAAACCAGCCAGCCGGAAGGGCCGAGCGCAGAAGTGGTCCTGCAACTTTATCCGCCTCCATCCAGTCTATTAATTGTTGCCGGGAAGCTAGAGTAAGTAGTTCGCCAGTTAATAGTTTGCGCAACGTTGTTGCCATTGCTACAGGCATCGTGGTGTCACGCTCGTCGTTTGGTATGGCTTCATTCAGCTCCGGTTCCCAACGATCAAGGCGAGTTACATGATCCCCCATGTTGTGCAAAAAAGCGGTTAGCTCCTTCGGTCCTCCGATCGTTGTCAGAAGTAAGTTGGCCGCAGTGTTATCACTCATGGTTATGGCAGCACTGCATAATTCTCTTACTGTCATGCCATCCGTAAGATGCTTTTCTGTGACTGGTGAGTACTCAACCAAGTCATTCTGAGAATA [...]
+S 21 797 ACGTTCTTTAATAGTGGACTCTTGTTCCAAACTGGAACAACACTCAACCCTATCTCGGTCTATTCTTTTGATTTATAAGGGATTTTGCCGATTTCGGCCTATTGGTTAAAAAATGAGCTGATTTAACAAAAATTTAACGCGAATTTTAACAAAATATTAACGCTTACAATTTCCATTCGCCATTCAGGCTGCGCAACTGTTGGGAAGGGCGATCGGTGCGGGCCTCTTCGCTATTACGCCAGCTGGCGAAAGGGGGATGTGCTGCAAGGCGATTAAGTTGGGTAACGCCAGGGTTTTCCCAGTCACGACGTTGTAAAACGACCAGTGAGCGCGCGTAATACGACTCACTATAGGGCGAATTGGAGCTCCACCGCGGTGGCGGCCGCTCTAGAACTAGTGGATCCCCCGGGCTGCAGGAATTCGGACTGTGTGTCAGATCTGACTAAGGGTCGGAATTCGATATCAAGCTTATCGATACCGTCG [...]
+S 22 800 TTCCTGTTTTTGCTCACCCAGAAACGCTGGTGAAAGTAAAAGATGCTGAAGATCAGTTGGGTGCACGAGTGGGTTACATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACATGGGGGATCATGTAACTCGCCTTGATCGTTGGGAACCGGAGCTGAATGAAGCCATACCAAACGACGAGCGTGACACCACGA [...]
+S 23 800 ACTATAAAGATACCAGGCGTTTCCCCCTGGAAGCTCCCTCGTGCGCTCTCCTGTTCCGACCCTGCCGCTTACCGGATACCTGTCCGCCTTTCTCCCTTCGGGAAGCGTGGCGCTTTCTCATAGCTCACGCTGTAGGTATCTCAGTTCGGTGTAGGTCGTTCGCTCCAAGCTGGGCTGTGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCA [...]
+S 24 804 TTTAAAAGGATCTAGGTGAAGATCCTTTTTGATAATCTCATGACCAAAATCCCTTAACGTGAGTTTTCGTTCCACTGAGCGTCAGACCCCGTAGAAAAGATCAAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCTTGCAAACAAAAAAACCACCGCTACCAGCGGTGGTTTGTTTGCCGGATCAAGAGCTACCAACTCTTTTTCCGAAGGTAACTGGCTTCAGCAGAGCGCAGATACCAAATACTGTCCTTCTAGTGTAGCCGTAGTTAGGCCACCACTTCAAGAACTCTGTAGCACCGCCTACATACCAAAATCGCTCTGCTAATCCTGTTACCAGTGGCTGCTGCCAGTGGCGATAAGTCGTGTCTTACCGGGTTGGACTCAAGACGATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACAC [...]
+S 25 794 TGTGCACGAACCCCCCGTTCAGCCCGACCGCTGCGCCTTATCCGGTAACTATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAACTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGA [...]
+S 26 710 CATCGAACTGGATCTCAACAGCGGTAAGATCCTTGAGAGTTTTCGCCCCGAAGAACGTTTTCCAATGATGAGCACTTTTAAAGTTCTGCTATGTGGCGCGGTATTATCCCGTATTGACGCCGGGCAAGAGCAACTCGGTCGCCGCATACACTATTCTCAGAATGACTTGGTTGAGTACTCACCAGTCACAGAAAAGCATCTTACGGATGGCATGACAGTAAGAGAATTATGCAGTGCTGCCATAACCATGAGTGATAACACTGCGGCCAACTTACTTCTGACAACGATCGGAGGACCGAAGGAGCTAACCGCTTTTTTGCACAACACAATGGCAACAACGTTGCGCAAACTATTAACTGGCGAACTACTTACTCTAGCTTCCCGGCAACAATTAATAGACTGGATGGAGGCGGATAAAGTTGCAGGACCACTTCTGCGCTCGGCCCTTCCGGCTGGCTGGTTTATTGCTGATAAATCTGGAGC [...]
+S 27 23 GCTCACTGCCCGCTTTCCAGTCG
+S 28 791 AGTTACCGGATAAGGCGCAGCGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGAACGACCTACACCGAACTGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAAAGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAACGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTGTGATGCTCGTCAGGGGGGCGGAGCCTATGGAAAAACGCCAGCAACGCGGCCTTTTTACGGTTCCTGGCCTTTTGCTGGCCTTTTGCTCACATGTTCTTTCCTGCGTTATCCCCTGATTCTGTGGATAACCGTATTACCGCCTTTGAGTGAGCTGATACCGCTCGCCGCAGCCGAACGACCGAGCGCAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCCAA [...]
+S 29 814 TCAGCCCGACCGCTGCGCCTTATATCGTCTTGAGTCCAACCCGGTAAGACACGACTTATCGCCACTGGCAGCAGCCACTGGTAACAGGATTAGCAGAGCGAGGTATGTAGGCGGTGCTACAGAGTTCTTGAAGTGGTGGCCTAACTACGGCTACACTAGAAGGACAGTATTTGGTATCTGCGCTCTGCTGAAGCCAGTTACCTTCGGAAAAAGAGTTGGTAGCTCTTGATCCGGCAAACAAACCACCGCTGGTAGCGGTGGTTTTTTTGTTTGCAAGCAGCAGATTACGCGCAGAAAAAAAGGATCTCAAGAAGATCCTTTGATCTTTTCTACGGGGTCTGACGCTCAGTGGAACGAAAACTCACGTTAAGGGATTTTGGTCATGAGATTATCAAAAAGGATCTTCACCTAGATCCTTTTAAATTAAAAATGAAGTTTTAAATCAATCTAAAGTATATATGAGTAAACTTGGTCTGACAGTTA [...]
+E * 22- 20+ 0 710 0 710 710M
+E * 14+ 20+ 508 798$ 0 290 290M
+E * 25+ 20+ 597 794$ 0 197 197M
+E * 6+ 23+ 130 800$ 0 670 670M
+E * 1+ 11+ 15 799$ 0 784 784M
+E * 6+ 26- 744 800$ 654 710$ 56M
+E * 28+ 0+ 171 791$ 0 620 620M
+E * 1+ 0+ 498 799$ 0 301 301M
+E * 24+ 0+ 584 804$ 0 220 220M
+E * 6- 0+ 0 177 0 177 177M
+E * 21+ 28- 461 797$ 455 791$ 336M
+E * 21+ 17+ 668 797$ 0 129 129M
+E * 2+ 17+ 719 796$ 0 77 77M
+E * 23+ 14+ 272 800$ 0 528 528M
+E * 2+ 13- 373 796$ 376 799$ 423M
+E * 20- 15+ 0 742 0 742 742M
+E * 8- 6+ 0 750 0 750 750M
+E * 11- 6+ 0 660 0 660 660M
+E * 17+ 6+ 233 797$ 0 564 564M
+E * 10+ 9+ 283 800$ 0 517 517M
+E * 13+ 9+ 330 799$ 0 469 469M
+E * 17- 9+ 0 123 0 123 123M
+E * 0+ 10+ 7 799$ 0 792 792M
+E * 23- 13+ 0 88 0 88 88M
+E * 20+ 12+ 7 800$ 0 793 793M
+E * 13+ 21- 324 799$ 322 797$ 475M
+E * 23+ 4+ 195 800$ 0 605 605M
+E * 23+ 5+ 234 800$ 0 566 566M
+E * 22+ 19+ 10 800$ 0 790 790M
+E * 10+ 7+ 373 800$ 0 427 427M
+E * 13+ 7+ 420 799$ 0 379 379M
+E * 17- 7+ 0 33 0 33 33M
+E * 17+ 25+ 540 797$ 0 257 257M
+E * 19+ 3+ 236 800$ 0 564 564M
+E * 2+ 10- 325 796$ 329 800$ 471M
+E * 16+ 24+ 644 802$ 0 158 158M
+E * 6+ 16- 599 800$ 601 802$ 201M
diff --git a/testdata/readjoiner/70x_100nt.gfa1 b/testdata/readjoiner/70x_100nt.gfa1
new file mode 100644
index 0000000..740653e
--- /dev/null
+++ b/testdata/readjoiner/70x_100nt.gfa1
@@ -0,0 +1,82 @@
+H VN:Z:1.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 CTTGTTCCTGACCTGGGATCCCGCAGGATGGAATTTAGGCCCCACCCTGTGGCCCTGGAGGAGGTAGTGCCATGCCCTCCTTGGGCATGAAGCTGACTTT
+S 1 GGGATGGCAGAGGCCATGTTTGCCACTGTCCTAAAGCCTAAAGCAGCCTGTGGAATGTGGGTGGGGTGAACTGGCTGAGTGGCTGTATCATAGGGCCTGT
+S 2 GGTCAGGAGACTGAGACCATCCTAGCTAAGACAGTGAAAACCCGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCAGGTGCCTGTAGTCCC
+S 3 TTTTGCTGCTCACAGGCTGGTGGGAAGAGACCATTACTGTTCCCCGCAGGAGCCCAGTAGCAAAGTGCCAGGACCCTGGACCTGTGTGGGGCCCTGGGAC
+S 4 GTGATCAGTGGCCCATCGCCTGCCCTCGTGGTGGGTGCAGTTCACAGGTGCTGCCCCAGGCCTGGCACAGTGGCCTTTTCAGCCTGTCCCAGGATAGGGG
+S 5 TGGTGCCACCTGGGACCTGCTGGGCTGTAGCCACAATAGGCTGAGCAAAAGGTGAGTGCCTCCCACAAGGACGACCAAGGGGATGTGGACACCACAGAGT
+S 6 GAGGGCAGGCCTGCCTTTGAGGCTGTGAGGCAGGGCTGCGGCAGGCAGTGGCCAGTGGAGGGAACGGGGTGGGTGCCGAGGGGCTACATGGCCATCTCCC
+S 7 CTTTCTTTCTTTCTTTCTTTCTTTTTGTTTTCTTTCATCTTTCCTTCTTCTTTTTTGATGGAGTCTCACTCTGTTGCCTGGGCTGGAGTGCAGTAAGTGG
+S 8 AATTTGGCTAAGCAATTGTACTTCTAGATTATTTATTTATTTATTTATTTATTTATTTATTTATTATTGGGACAGAGTCTCACTCTGTCCCCCAGACTGG
+S 9 CCAAATGGTGCTGGGATTACAGGTTTGAGCCACCGCACCTGGCCAGTTTATAATGTTCATAATGGCTTTTGGAGCAGGAACCAGTGGGTGCTGCTTCTTG
+S 10 ATGAAGGTGGCATTGAGGGCTGAAGTCTCCCTCACCATGAAGGGATGATGTATAGTGGGTGGGGCCTCAGGAGGAAGAGGGCCACCAACCCTACCTGGCC
+S 11 CAGATACCAAACACCCAGAAATTCCATCTTGTCATTTATTTCCACAAGAAAAAACAAGAGACCTGTATTAAAATATCCACTTCTATTGAAAATAATCACA
+S 12 GAAAGGTCAGCTCCATGGGTCTCAGCTGGCTGGGCCCATTTGGGAGTTCTATCTTTGGGGAAGGATGCTTTCCTAGGCTCTGTTGCACGCTGGCCCTAGG
+S 13 AAGCTTCTCCAAGCAGGCTTGGAAAGAAATTTCCGCATATCACTTACGTCACTCTTGCCACTAGAAGGACAATTTTTACGGTGGAGTGGAAGAAAATGAA
+S 14 AAGGATGCCATTTTTAATCTGGGCTCGTACAAAGTCAATCATTCTTTGGTGCCTGGCAATGGTGGCCACTGCAGACACTTTAATCTTGGGCTAGGAATTG
+S 15 GAGACTCCATCTCAGAATAAATAAGTAAATAAATTAATTAATTTTTAAAATCCCACTACACAGGAAACCATTCTTTCATCCTGGACCTCTAGGTCTCTGC
+S 16 TTGAGAAGGGATGATTGTATTTTGCAATGTGAGAAGGACATGAGATTTGAAGGGCCAGGGATGGAATGAAATAGTTTGGATGTTGTACCCTTTAAGTCGC
+S 17 AAAGGGCTCCAGATGAGCTCAGGCCATGGCCTCAGAGGGTGCAAACTATAAGCCTTGGTGGCTTCCATGTGGTGTTAAGCCTGCAGGTGAGCAAAGTGCA
+S 18 CAAGCTCTCCAGGCTGAGGGAACAGGAGCAGGGGTTATGTTGGGTGAAAGTGGAAGTGAGGGACCTCCCAGGAGGTGTAGAATATTCCACTAGGGACACC
+S 19 CAAGTAGAATATATTATGCTTGAATGAAATTATGAGTTGAGAGTAGGAAATCTATGGTTAACCAAACAAATTAAATAATGTTTATGAGGAAATTATACTG
+S 20 GCTGGGATGAGCTGCTGCAAAGATTTCTGAAATGCCTTCAAGACCTTTTTTTAATTGTCTTGGCTATCAGCACCTAGCTTTTTTTCAGTTATGCAAATGT
+S 21 AAAACCTGAAATCACTAGAAAGGAATGTCTAGTGACTTGTGGGGGCCAAGGCCCTTGTTATGGGGATGAAGGCTCTTAGGTGGTAGCCCTCCAAGAGAAT
+S 22 CTATACTCAGATCCAGGAGCAAAGAAATGACTTAAAGCTGGAATTTATGTTTAAACAGGAAGCAGACCAGAAAAATTTGGAAAATTTGCAGTCTGGCCAT
+S 23 AAGGGTCCTCAGGGAGGTTTTACACATGGCAGAAGGTGAAGCAAAAGAAGGTATGTCACATGGCCAGAGCAGGAGCAAGCAGGGAGAGGTGCCACACACT
+S 24 GTGAATTTTTCTTAATATGCTCTGGCAGGATCAGAAAACTAATTATTTACACTAGAGTCACTTAACCTTTCCTCTTGGTCATTTGCATGTAAATTATTTT
+S 25 TCAGGAGGTCCTGACAGCATGTGCCCAAGGTGGTCAGGATACAGCTTGCTTCTATATATTTTAGGGAGAAAATACATCAGCCTGTAAACAAAAAATTAAA
+S 26 GCCCCTGGTGTTTCTCCCTCACCAGGGAGCAGCACCTTTTGCCAGTGACTCATCTGGCAGGTATCTCAAGTCAGCCCTTGCCTGGCCTGGCACCTTGCTG
+S 27 AGAGACAGGATTCATGCCAAGCCTGCCTACCCAGCACATCTCTCCTCATGGACATGAGAGAAAACCCTCCAGCTTGGCCCTCACATCTGTGAAACCCACA
+S 28 TTGTCATATACAGATGCTCACATTGTTTTGTTTATATGAAAATGTTTGTAACTACTACGCGCATTTTTGCTACTTAAGCCTTTTGGTCTTGCTGCCATAG
+S 29 TGAGACGGAGTCTCACTGTTGCCCAGGCTGGAGTGCAGTGGCATGATTTCAGCTCACTGTCGTCTCTGCCTCCCTGACTCAAGTGATTCTCCTGCCTCAG
+S 30 TTATATACATATATATCTGTCTAATATATATACACATATACATATATATGTATATGTGTATATATACATATACATATATAATATATGTATATGTGTATAT
+S 31 GAACATAGGGTTAGCCCAGAAAGTCCATCATTCCCTCACTTCCAGAGCTCCTCTCTACAGCCAGCCTCTGCTGGCTCCCTGGGGAGGGTGGACTCCTGGG
+S 32 GAGAGCACAATGAGAAAGGGAAAGAGGGACATCTGGACATAAGGGCCAACTGGAGGGCAGGGAAGGTAATTTTCCTTACATTTTAAACTCAGACCACATA
+S 33 ACAGTGCCCAGTTCCCCCAGGAGGACCTGGCTCACCCCAAGCCCACAGGAAGCACAGGGAAGTTTCTGCATGCCACAGAAACCAGGCTCTCCCCAAGAGG
+S 34 AGAGACAAACATCTGAAATTAAAATGTTTTATTTGAGATACAAGTATTACAATTTGACACATACATGCAGAATGGGTGTCTTTAGTATGTCCGAAACATA
+S 35 GCCAAGGTATGTTTCTCTCCTGGGATTACTGGTCAGTTTTATTTTTTTCCTCGGATAGATGTTTTAAGCCATAAATCTTGACATAGACCTGATGTAGACC
+S 36 ACCAGACCCCAACTCCAACACTGGGAATTACAATTCAACATGCGACTTAAAGGGTACAACATCCAAACTATTTCATTCCATCCCTGGCCCTTCAAATCTC
+S 37 AAGGTTAAGTGACTCTAGTGTAAATAATTAGTTTTCTGATCCTGCCAGAGCATATTAAGAAAAATTCACTTTGGCAGAATTATATGGATTTGAAGAAGTA
+S 38 GAGGACTTTGGGTTCAACCTAAGCACTTTATATCCTTTATTTTCAATTGGGTAGGAGATAAAATAATTCAGCAGCAATAAAAGTCACACTTCTTAAAGTT
+S 39 CCTGCAGCTTTTCTGAGTGTCTTTCCTCTTTCCCCATCTCTCAGCCACTTTTGTGCCAGCTCTAAGCACATAAGTGCTTTCTTGGGAGAAACAGACTGCT
+S 40 CGAGAATATGTTAAGATACCACAAAAACAAAAAATATACATAGTTAAGAGCTTTCATGAGTAAGCAAATTTTATACATATAAAAATAATTTACATGCAAA
+S 41 TTCGAATTTGCCAAGGTATGTTTCTCTCCTGGGATTACTGGTCAGTTTTATTTTTTTCCTCGGATAGATGTTTTAAGCCATAAATCTTGACATAGACCTG
+S 42 TCATCATAAATTGTAGGATAGATCTGATCCAGTTGGCTTTTCAGATTGAACCCTAGGCCTTACTCCCTCTCACCACTTAAACAATTGGCTATTAAATCAG
+S 43 GGCTGGTACAGAGGGGCTGAGTTGCAGCAGAAGACCCAGCCCCTGAGCTGCAGCACAGAGTGGAGGTAGTGGGGAGCTGTCACCTGGGTATGCCACCCTT
+S 44 GGAATACACAGTGTCAGAAGGAGGACCTGTGTCCAGCCCCTGTGTTCCCCACTCCTGGGCAGATGCGTACCCAGTGCAGCGAGAATGTCTGCGAGGGGGA
+S 45 TTTTACATTTACCCCTTTCCATCAAGATCTTTCTCTTAAAGCATCAACCATGTTTATAGTTGTACAACGACTACAAGTTAGGCTTAATCATCCCTTAGTG
+S 46 GGGAAATATTCACTCCTGTTTTCTTCTCTCCCCAATCTCAGCCTTTCGGTGACTGTTTGGGCAAAGCCTCCCTTGTGGTAAAAGATGCCTCACTTCTGGG
+S 47 GGAGGGAGGCTGAGGTGGGAGGATTGCTTGAGCCTAGGCGTTGGAGACTACAACGATCTAGGATTACACCACTGCACTCCAGTCTCAGCAACAGTAAGAC
+S 48 TACTTTTAAAAATCAAGAAAATAGATTGGTCAAGAGAATTCTGCTTGTTTTGATTTTGTTATCACTCGATTAGATTAACTGTGTTAGTATAAATGTCAGT
+S 49 GAGGTCCTCTTTGAGGGCTCCAGCCGGGCATAGGCTTCTCCCTGGGCATCCAGCCTTTCTCATACATCCTCTGAAATTTAGGCAGAGAATGACAAGCCTC
+S 50 TACCTATGACCTGGAAGCCCCCACTTTGCACCCTGAGATCAAACCAGTGCAAATCTTATATGTATTGATTTGTCAATGAAAACAGTCAAAGCCAGTCAGG
+S 51 TGTCAATAGACTTTTGAAGTTTATGATCAATCTTATTTGAGGATTGTAGGACCAACACCAAATCAGAGTGCAGTAAACTTAATTTCTCTTCTGGCCAACT
+S 52 ACAGGGTGGGGCCTAAATTCCATCCTGCGGGATCCCAGGTCAGGAACAAGGCCCAGGGATGCTGCTTCTGGGTCTGAACCCCAGGTATGGGTCAAGAGGG
+S 53 GAGACTAAAGTTTTATTATGCAGATGAAGCCTCCAGGTAGCAGGGTTCAGAGAGAATAGATCGGAAAGAAACCTAAGATCTGAAAATCTGTGTTGATGTT
+S 54 GGGAGCAGCTGGGAGTGTGGCCAGCTGGGAGGTAGGAGGACTCTTGGGGAAGTGACAGTCACCTGCATGAACTCAGGGCTAGAGAGCTGTGGCTCTGGGA
+S 55 TATTCTAGGGTAATTATTAAAACATTAAGAAATACTCTTTAATCATATATGTTTAAACTTGTAGAAAATCAATAACATACAAGTAAAGAAGATCAAGAAG
+S 56 ACTTTTAAACAAATAGATCTTGCAAGAATTCACTCACCATCACAAGGACAGCACCAGGGAGATGATGCTAGACCATTCCTGAGAAATCCATCCCCATGAT
+S 57 AACAAACAAACAAACTGTCAAAATCTGTACAGTATGTGAAGAGATTTGTTCTGAACCAAATATGAATGACCATGGTCCATGACACAGCCCTCAGAAGACC
+S 58 TGAGTTTAAAAGCTTCCTTTGGAGATGCCCCTGGCCCCCTCCACCTGTCAAGAAGAGGCCATCCTATCTGCCTGTCAAGAAGAGGCCATCCTGGGCAGCA
+S 59 GTCACAATGCAGACATTCCTTTCTATTGACAACTCTTTCAACCAATTGTCAATCAGAAAAATTTTAAATCTACTTATAACCTGGAAACCCCTGCTTTGAG
+S 60 GTAGTAGTTACAAACATTTTCATATAAACAAAACAATGTGAGCATCTGTATATGACAATAACTCATGCAAAAAATATTTTTTAACTGAGACAGAAATCAT
+S 61 TATTAAATAAGAATGACCAGGAGAGCCATGGGTAAGCTCCCTCCTCAGTCATCAGGACCGCAACAGAGAGTTTTCCCCTGTGTGGACAGGGTTCTGAATT
+S 62 GCTCTTAAGACTGTGTAACCCTAGGCCATGGTCACTCATATTGGCTTAGAATAAAGCTATCTAAATACTTTGGCAGAATTTGGTTTTTTCATCACCACAA
+S 63 GGCATGTGCCACCACCCTCGGCTAATTGTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGTCAGGCTGGTCTCGAACTCCTGACCTCAAGTGATCC
+S 64 ATATTATTAAAAGATAACGGAATACCTAACTAAAAAAAATGCGAGGAGGCATTGATGGGCCCATGTTTACTGAGCACATCCTGACTCCAGAATTAGAAAT
+S 65 CTCGGGAGGCTGAGGTAGGGCAATTGCCTGAACCCACGAGGCGGAGGTTGCAGTGAGCTGAGATCATGTCACTGGACTCCAGTCTGGGGGACAGAGTGAG
+S 66 AACCATCTGAATGGGCTTTCTTCTAGGCCAGGGCACTCTAAAATTGAAGAACCTGAACATTCCTTTCTATTGATAATACTTTCAGCCAGTTGAGCCCATT
+S 67 AGACAGGATTTTTGGCAAGAGAATAAAAGGTCAGAGTTGAGGCCTCAGTCCCCACTATTGGCCAAAGATCATTTTATGGAATGTATGTGAAGGCCAACAA
+S 68 AGACACAAGTAATTCCAGGAAAACTGGAATTTAAGTTCAATATGTTACACTAAGTACATTTGAAAGTGCATGCATTTTTATTTTAATTTAAAAAATAAAT
+S 69 ATCCCATGTCCCCCAGCCGGACCCCATGTCCGGGAGATGGCCATGTAGCCCCTCGGCACCCACCCCGTTCCCTCCACTGGCCACTGCCTGCCGCAGCCCT
+L 6 + 69 - 69M
+L 52 - 0 + 50M
+L 16 + 36 - 59M
+L 41 + 35 + 91M
+L 37 - 24 + 69M
+L 60 - 28 + 58M
diff --git a/testdata/readjoiner/70x_100nt.gfa2 b/testdata/readjoiner/70x_100nt.gfa2
new file mode 100644
index 0000000..251cb51
--- /dev/null
+++ b/testdata/readjoiner/70x_100nt.gfa2
@@ -0,0 +1,82 @@
+H VN:Z:2.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 100 CTTGTTCCTGACCTGGGATCCCGCAGGATGGAATTTAGGCCCCACCCTGTGGCCCTGGAGGAGGTAGTGCCATGCCCTCCTTGGGCATGAAGCTGACTTT
+S 1 100 GGGATGGCAGAGGCCATGTTTGCCACTGTCCTAAAGCCTAAAGCAGCCTGTGGAATGTGGGTGGGGTGAACTGGCTGAGTGGCTGTATCATAGGGCCTGT
+S 2 100 GGTCAGGAGACTGAGACCATCCTAGCTAAGACAGTGAAAACCCGTCTCTACTAAAAATACAAAAAATTAGCCAGGCATGGTGGCAGGTGCCTGTAGTCCC
+S 3 100 TTTTGCTGCTCACAGGCTGGTGGGAAGAGACCATTACTGTTCCCCGCAGGAGCCCAGTAGCAAAGTGCCAGGACCCTGGACCTGTGTGGGGCCCTGGGAC
+S 4 100 GTGATCAGTGGCCCATCGCCTGCCCTCGTGGTGGGTGCAGTTCACAGGTGCTGCCCCAGGCCTGGCACAGTGGCCTTTTCAGCCTGTCCCAGGATAGGGG
+S 5 100 TGGTGCCACCTGGGACCTGCTGGGCTGTAGCCACAATAGGCTGAGCAAAAGGTGAGTGCCTCCCACAAGGACGACCAAGGGGATGTGGACACCACAGAGT
+S 6 100 GAGGGCAGGCCTGCCTTTGAGGCTGTGAGGCAGGGCTGCGGCAGGCAGTGGCCAGTGGAGGGAACGGGGTGGGTGCCGAGGGGCTACATGGCCATCTCCC
+S 7 100 CTTTCTTTCTTTCTTTCTTTCTTTTTGTTTTCTTTCATCTTTCCTTCTTCTTTTTTGATGGAGTCTCACTCTGTTGCCTGGGCTGGAGTGCAGTAAGTGG
+S 8 100 AATTTGGCTAAGCAATTGTACTTCTAGATTATTTATTTATTTATTTATTTATTTATTTATTTATTATTGGGACAGAGTCTCACTCTGTCCCCCAGACTGG
+S 9 100 CCAAATGGTGCTGGGATTACAGGTTTGAGCCACCGCACCTGGCCAGTTTATAATGTTCATAATGGCTTTTGGAGCAGGAACCAGTGGGTGCTGCTTCTTG
+S 10 100 ATGAAGGTGGCATTGAGGGCTGAAGTCTCCCTCACCATGAAGGGATGATGTATAGTGGGTGGGGCCTCAGGAGGAAGAGGGCCACCAACCCTACCTGGCC
+S 11 100 CAGATACCAAACACCCAGAAATTCCATCTTGTCATTTATTTCCACAAGAAAAAACAAGAGACCTGTATTAAAATATCCACTTCTATTGAAAATAATCACA
+S 12 100 GAAAGGTCAGCTCCATGGGTCTCAGCTGGCTGGGCCCATTTGGGAGTTCTATCTTTGGGGAAGGATGCTTTCCTAGGCTCTGTTGCACGCTGGCCCTAGG
+S 13 100 AAGCTTCTCCAAGCAGGCTTGGAAAGAAATTTCCGCATATCACTTACGTCACTCTTGCCACTAGAAGGACAATTTTTACGGTGGAGTGGAAGAAAATGAA
+S 14 100 AAGGATGCCATTTTTAATCTGGGCTCGTACAAAGTCAATCATTCTTTGGTGCCTGGCAATGGTGGCCACTGCAGACACTTTAATCTTGGGCTAGGAATTG
+S 15 100 GAGACTCCATCTCAGAATAAATAAGTAAATAAATTAATTAATTTTTAAAATCCCACTACACAGGAAACCATTCTTTCATCCTGGACCTCTAGGTCTCTGC
+S 16 100 TTGAGAAGGGATGATTGTATTTTGCAATGTGAGAAGGACATGAGATTTGAAGGGCCAGGGATGGAATGAAATAGTTTGGATGTTGTACCCTTTAAGTCGC
+S 17 100 AAAGGGCTCCAGATGAGCTCAGGCCATGGCCTCAGAGGGTGCAAACTATAAGCCTTGGTGGCTTCCATGTGGTGTTAAGCCTGCAGGTGAGCAAAGTGCA
+S 18 100 CAAGCTCTCCAGGCTGAGGGAACAGGAGCAGGGGTTATGTTGGGTGAAAGTGGAAGTGAGGGACCTCCCAGGAGGTGTAGAATATTCCACTAGGGACACC
+S 19 100 CAAGTAGAATATATTATGCTTGAATGAAATTATGAGTTGAGAGTAGGAAATCTATGGTTAACCAAACAAATTAAATAATGTTTATGAGGAAATTATACTG
+S 20 100 GCTGGGATGAGCTGCTGCAAAGATTTCTGAAATGCCTTCAAGACCTTTTTTTAATTGTCTTGGCTATCAGCACCTAGCTTTTTTTCAGTTATGCAAATGT
+S 21 100 AAAACCTGAAATCACTAGAAAGGAATGTCTAGTGACTTGTGGGGGCCAAGGCCCTTGTTATGGGGATGAAGGCTCTTAGGTGGTAGCCCTCCAAGAGAAT
+S 22 100 CTATACTCAGATCCAGGAGCAAAGAAATGACTTAAAGCTGGAATTTATGTTTAAACAGGAAGCAGACCAGAAAAATTTGGAAAATTTGCAGTCTGGCCAT
+S 23 100 AAGGGTCCTCAGGGAGGTTTTACACATGGCAGAAGGTGAAGCAAAAGAAGGTATGTCACATGGCCAGAGCAGGAGCAAGCAGGGAGAGGTGCCACACACT
+S 24 100 GTGAATTTTTCTTAATATGCTCTGGCAGGATCAGAAAACTAATTATTTACACTAGAGTCACTTAACCTTTCCTCTTGGTCATTTGCATGTAAATTATTTT
+S 25 100 TCAGGAGGTCCTGACAGCATGTGCCCAAGGTGGTCAGGATACAGCTTGCTTCTATATATTTTAGGGAGAAAATACATCAGCCTGTAAACAAAAAATTAAA
+S 26 100 GCCCCTGGTGTTTCTCCCTCACCAGGGAGCAGCACCTTTTGCCAGTGACTCATCTGGCAGGTATCTCAAGTCAGCCCTTGCCTGGCCTGGCACCTTGCTG
+S 27 100 AGAGACAGGATTCATGCCAAGCCTGCCTACCCAGCACATCTCTCCTCATGGACATGAGAGAAAACCCTCCAGCTTGGCCCTCACATCTGTGAAACCCACA
+S 28 100 TTGTCATATACAGATGCTCACATTGTTTTGTTTATATGAAAATGTTTGTAACTACTACGCGCATTTTTGCTACTTAAGCCTTTTGGTCTTGCTGCCATAG
+S 29 100 TGAGACGGAGTCTCACTGTTGCCCAGGCTGGAGTGCAGTGGCATGATTTCAGCTCACTGTCGTCTCTGCCTCCCTGACTCAAGTGATTCTCCTGCCTCAG
+S 30 100 TTATATACATATATATCTGTCTAATATATATACACATATACATATATATGTATATGTGTATATATACATATACATATATAATATATGTATATGTGTATAT
+S 31 100 GAACATAGGGTTAGCCCAGAAAGTCCATCATTCCCTCACTTCCAGAGCTCCTCTCTACAGCCAGCCTCTGCTGGCTCCCTGGGGAGGGTGGACTCCTGGG
+S 32 100 GAGAGCACAATGAGAAAGGGAAAGAGGGACATCTGGACATAAGGGCCAACTGGAGGGCAGGGAAGGTAATTTTCCTTACATTTTAAACTCAGACCACATA
+S 33 100 ACAGTGCCCAGTTCCCCCAGGAGGACCTGGCTCACCCCAAGCCCACAGGAAGCACAGGGAAGTTTCTGCATGCCACAGAAACCAGGCTCTCCCCAAGAGG
+S 34 100 AGAGACAAACATCTGAAATTAAAATGTTTTATTTGAGATACAAGTATTACAATTTGACACATACATGCAGAATGGGTGTCTTTAGTATGTCCGAAACATA
+S 35 100 GCCAAGGTATGTTTCTCTCCTGGGATTACTGGTCAGTTTTATTTTTTTCCTCGGATAGATGTTTTAAGCCATAAATCTTGACATAGACCTGATGTAGACC
+S 36 100 ACCAGACCCCAACTCCAACACTGGGAATTACAATTCAACATGCGACTTAAAGGGTACAACATCCAAACTATTTCATTCCATCCCTGGCCCTTCAAATCTC
+S 37 100 AAGGTTAAGTGACTCTAGTGTAAATAATTAGTTTTCTGATCCTGCCAGAGCATATTAAGAAAAATTCACTTTGGCAGAATTATATGGATTTGAAGAAGTA
+S 38 100 GAGGACTTTGGGTTCAACCTAAGCACTTTATATCCTTTATTTTCAATTGGGTAGGAGATAAAATAATTCAGCAGCAATAAAAGTCACACTTCTTAAAGTT
+S 39 100 CCTGCAGCTTTTCTGAGTGTCTTTCCTCTTTCCCCATCTCTCAGCCACTTTTGTGCCAGCTCTAAGCACATAAGTGCTTTCTTGGGAGAAACAGACTGCT
+S 40 100 CGAGAATATGTTAAGATACCACAAAAACAAAAAATATACATAGTTAAGAGCTTTCATGAGTAAGCAAATTTTATACATATAAAAATAATTTACATGCAAA
+S 41 100 TTCGAATTTGCCAAGGTATGTTTCTCTCCTGGGATTACTGGTCAGTTTTATTTTTTTCCTCGGATAGATGTTTTAAGCCATAAATCTTGACATAGACCTG
+S 42 100 TCATCATAAATTGTAGGATAGATCTGATCCAGTTGGCTTTTCAGATTGAACCCTAGGCCTTACTCCCTCTCACCACTTAAACAATTGGCTATTAAATCAG
+S 43 100 GGCTGGTACAGAGGGGCTGAGTTGCAGCAGAAGACCCAGCCCCTGAGCTGCAGCACAGAGTGGAGGTAGTGGGGAGCTGTCACCTGGGTATGCCACCCTT
+S 44 100 GGAATACACAGTGTCAGAAGGAGGACCTGTGTCCAGCCCCTGTGTTCCCCACTCCTGGGCAGATGCGTACCCAGTGCAGCGAGAATGTCTGCGAGGGGGA
+S 45 100 TTTTACATTTACCCCTTTCCATCAAGATCTTTCTCTTAAAGCATCAACCATGTTTATAGTTGTACAACGACTACAAGTTAGGCTTAATCATCCCTTAGTG
+S 46 100 GGGAAATATTCACTCCTGTTTTCTTCTCTCCCCAATCTCAGCCTTTCGGTGACTGTTTGGGCAAAGCCTCCCTTGTGGTAAAAGATGCCTCACTTCTGGG
+S 47 100 GGAGGGAGGCTGAGGTGGGAGGATTGCTTGAGCCTAGGCGTTGGAGACTACAACGATCTAGGATTACACCACTGCACTCCAGTCTCAGCAACAGTAAGAC
+S 48 100 TACTTTTAAAAATCAAGAAAATAGATTGGTCAAGAGAATTCTGCTTGTTTTGATTTTGTTATCACTCGATTAGATTAACTGTGTTAGTATAAATGTCAGT
+S 49 100 GAGGTCCTCTTTGAGGGCTCCAGCCGGGCATAGGCTTCTCCCTGGGCATCCAGCCTTTCTCATACATCCTCTGAAATTTAGGCAGAGAATGACAAGCCTC
+S 50 100 TACCTATGACCTGGAAGCCCCCACTTTGCACCCTGAGATCAAACCAGTGCAAATCTTATATGTATTGATTTGTCAATGAAAACAGTCAAAGCCAGTCAGG
+S 51 100 TGTCAATAGACTTTTGAAGTTTATGATCAATCTTATTTGAGGATTGTAGGACCAACACCAAATCAGAGTGCAGTAAACTTAATTTCTCTTCTGGCCAACT
+S 52 100 ACAGGGTGGGGCCTAAATTCCATCCTGCGGGATCCCAGGTCAGGAACAAGGCCCAGGGATGCTGCTTCTGGGTCTGAACCCCAGGTATGGGTCAAGAGGG
+S 53 100 GAGACTAAAGTTTTATTATGCAGATGAAGCCTCCAGGTAGCAGGGTTCAGAGAGAATAGATCGGAAAGAAACCTAAGATCTGAAAATCTGTGTTGATGTT
+S 54 100 GGGAGCAGCTGGGAGTGTGGCCAGCTGGGAGGTAGGAGGACTCTTGGGGAAGTGACAGTCACCTGCATGAACTCAGGGCTAGAGAGCTGTGGCTCTGGGA
+S 55 100 TATTCTAGGGTAATTATTAAAACATTAAGAAATACTCTTTAATCATATATGTTTAAACTTGTAGAAAATCAATAACATACAAGTAAAGAAGATCAAGAAG
+S 56 100 ACTTTTAAACAAATAGATCTTGCAAGAATTCACTCACCATCACAAGGACAGCACCAGGGAGATGATGCTAGACCATTCCTGAGAAATCCATCCCCATGAT
+S 57 100 AACAAACAAACAAACTGTCAAAATCTGTACAGTATGTGAAGAGATTTGTTCTGAACCAAATATGAATGACCATGGTCCATGACACAGCCCTCAGAAGACC
+S 58 100 TGAGTTTAAAAGCTTCCTTTGGAGATGCCCCTGGCCCCCTCCACCTGTCAAGAAGAGGCCATCCTATCTGCCTGTCAAGAAGAGGCCATCCTGGGCAGCA
+S 59 100 GTCACAATGCAGACATTCCTTTCTATTGACAACTCTTTCAACCAATTGTCAATCAGAAAAATTTTAAATCTACTTATAACCTGGAAACCCCTGCTTTGAG
+S 60 100 GTAGTAGTTACAAACATTTTCATATAAACAAAACAATGTGAGCATCTGTATATGACAATAACTCATGCAAAAAATATTTTTTAACTGAGACAGAAATCAT
+S 61 100 TATTAAATAAGAATGACCAGGAGAGCCATGGGTAAGCTCCCTCCTCAGTCATCAGGACCGCAACAGAGAGTTTTCCCCTGTGTGGACAGGGTTCTGAATT
+S 62 100 GCTCTTAAGACTGTGTAACCCTAGGCCATGGTCACTCATATTGGCTTAGAATAAAGCTATCTAAATACTTTGGCAGAATTTGGTTTTTTCATCACCACAA
+S 63 100 GGCATGTGCCACCACCCTCGGCTAATTGTGTATTTTTAGTAGAGACGGGGTTTCACCATGTTGGTCAGGCTGGTCTCGAACTCCTGACCTCAAGTGATCC
+S 64 100 ATATTATTAAAAGATAACGGAATACCTAACTAAAAAAAATGCGAGGAGGCATTGATGGGCCCATGTTTACTGAGCACATCCTGACTCCAGAATTAGAAAT
+S 65 100 CTCGGGAGGCTGAGGTAGGGCAATTGCCTGAACCCACGAGGCGGAGGTTGCAGTGAGCTGAGATCATGTCACTGGACTCCAGTCTGGGGGACAGAGTGAG
+S 66 100 AACCATCTGAATGGGCTTTCTTCTAGGCCAGGGCACTCTAAAATTGAAGAACCTGAACATTCCTTTCTATTGATAATACTTTCAGCCAGTTGAGCCCATT
+S 67 100 AGACAGGATTTTTGGCAAGAGAATAAAAGGTCAGAGTTGAGGCCTCAGTCCCCACTATTGGCCAAAGATCATTTTATGGAATGTATGTGAAGGCCAACAA
+S 68 100 AGACACAAGTAATTCCAGGAAAACTGGAATTTAAGTTCAATATGTTACACTAAGTACATTTGAAAGTGCATGCATTTTTATTTTAATTTAAAAAATAAAT
+S 69 100 ATCCCATGTCCCCCAGCCGGACCCCATGTCCGGGAGATGGCCATGTAGCCCCTCGGCACCCACCCCGTTCCCTCCACTGGCCACTGCCTGCCGCAGCCCT
+E * 6+ 69- 31 100$ 31 100$ 69M
+E * 52- 0+ 0 50 0 50 50M
+E * 16+ 36- 41 100$ 41 100$ 59M
+E * 41+ 35+ 9 100$ 0 91 91M
+E * 37- 24+ 0 69 0 69 69M
+E * 60- 28+ 0 58 0 58 58M
diff --git a/testdata/readjoiner/contained_varlen.gfa1 b/testdata/readjoiner/contained_varlen.gfa1
new file mode 100644
index 0000000..bdb201f
--- /dev/null
+++ b/testdata/readjoiner/contained_varlen.gfa1
@@ -0,0 +1,11 @@
+H VN:Z:1.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 GCTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
+S 1 GCTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGAT
+S 2 CTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
+S 3 CTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGAT
+S 4 GCTAGTCAGTTTTTATTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
diff --git a/testdata/readjoiner/contained_varlen.gfa2 b/testdata/readjoiner/contained_varlen.gfa2
new file mode 100644
index 0000000..3f27a36
--- /dev/null
+++ b/testdata/readjoiner/contained_varlen.gfa2
@@ -0,0 +1,11 @@
+H VN:Z:2.0
+H pn:Z:readjoiner
+H ol:i:0
+H in:Z:reads
+H cn:i:0
+H te:i:0
+S 0 71 GCTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
+S 1 70 GCTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGAT
+S 2 70 CTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
+S 3 69 CTAGTCAGTTTTTTTTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGAT
+S 4 71 GCTAGTCAGTTTTTATTTTCGATCGATGCGGCGAGGAGAGGAGAGTCATTCGATCATGGCATCGAGCGATT
diff --git a/testdata/repfind-result/at1MB-Atinsert-greedy-20-700-75-3-39-a b/testdata/repfind-result/at1MB-Atinsert-greedy-20-700-75-3-39-a
index 244155b..22f4123 100644
--- a/testdata/repfind-result/at1MB-Atinsert-greedy-20-700-75-3-39-a
+++ b/testdata/repfind-result/at1MB-Atinsert-greedy-20-700-75-3-39-a
@@ -1,692 +1,912 @@
+# Options: -minidentity 75 -l 700 -seedlength 20 -extendgreedy -ii at1MB -q /local/kurtz/genometools/testsuite/../testdata/Atinsert.fna -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
852 1 0 F 852 1 0 1095 203 76.17
-atgnanantcaaaaatggagtntaggtttcatatctctcgcttttctcttcatcacttcctcttcagctg
-|| | | |||||||| | | || ||||||||||||| |||||||||||||||||||||||||| ||
-atnnanantcaaaaatnnantntanntttcatatctctcncttttctcttcatcacttcctcttcanctn
-agttcatcattcaacaggtcacaaagggcanaggaatagagtacaacagttcttacagtctcgaggagaa
-| |||||||||||||| ||||||| || | |||| | ||||||| |||||||| |||| | | ||
-anttcatcattcaacanntcacaaannncanannaatanantacaacanttcttacantctcnannanaa
-tcttggagtgacnagagagttgagagaagagcgaccatcgagtaagatagtgacaataacaagcttctca
-|||| | | || | | | || | | || | | |||||| | ||| ||| | |||||||||| |||||||
-tcttnnantnacnanananttnananaanancnaccatcnantaanatantnacaataacaancttctca
-gtgattaaaggcagaggagaaccctatgaatcctctgtttttgaggctgctggttacaaatggagattgg
- | |||||| || | | |||||||| |||||||| ||||| | || || |||||||| | |||
-ntnattaaanncanannanaaccctatnaatcctctntttttnannctnctnnttacaaatnnanattnn
-ttttgtacgtgaatggtaataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaaga
-|||| ||| | ||| |||||||||| || | |||| ||||||||||||||||| ||| ||| || |
-ttttntacntnaatnntaataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaana
-gacaaactctcttccattaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagcta
- |||||||||||||||||| || || | ||| || |||||||||||||| |||||||| || |||
-nacaaactctcttccattannttnnnaantnaatnttnatctcaaactctttntccataatnnnaancta
-cacaaatatttgactgttacagatggcttanttgaagcgatataacaatgcnaaaaaagaatggggtttc
-||||||||||| ||| ||||| || |||| || || | |||||||||| | |||||| ||| ||||
-cacaaatatttnactnttacanatnncttanttnaancnatataacaatncnaaaaaanaatnnnntttc
-ggacaattgattcctcnatcaacattctacaacgcgaacgaaggttacctttgaccaaggacactggttc
- |||||| ||||||| |||||||||||||||| | ||| || |||||||| ||||| ||||| |||
-nnacaattnattcctcnatcaacattctacaacncnaacnaannttacctttnaccaannacactnnttc
-cttttgggtggcnggaaaancctttattgtttaaaccngntccaccaacnaanaaaannantttctntnn
-||||| | | |||| |||||||| |||||||| ||||||||| || |||| | ||||| |
-cttttnnntnncnnnaaaancctttattntttaaaccnnntccaccaacnaanaaaannantttctntnn
-ntnntccaacannntncccnncnaatgttttttcccttnggaaaaanacctncgtttcctcctacctttg
- | ||||||| | ||| | ||| ||||||||||| ||||| |||| | |||||||||||||||
-ntnntccaacannntncccnncnaatnttttttcccttnnnaaaaanacctncntttcctcctacctttn
-ggaaaaanaaanttcntttttactcccgaatgaattttccccctttgnaaaaaccgaatncctggttgga
- ||||| ||| ||| ||||||||||| ||| |||||||||||||| ||||||| ||| ||| || |
-nnaaaaanaaanttcntttttactcccnaatnaattttccccctttnnaaaaaccnaatncctnnttnna
-cttaggaattttaacccccnaaagggggaatggaangaaagaaaaaacccctttgcccnttcccaatcct
-|||| ||||||||||||| ||| ||| || ||| ||||||||||||| ||| |||||||||||
-cttannaattttaacccccnaaannnnnaatnnaannaaanaaaaaacccctttncccnttcccaatcct
-tccctantttgc
-|||||| ||| |
-tccctantttnc
+Sbjct 0 atgnanantcaaaaatggagtntaggtttcatatctctcgcttttctcttcatcacttcctcttcagctg 69
+ || | | |||||||| | | || ||||||||||||| |||||||||||||||||||||||||| ||
+Query 0 atnnanantcaaaaatnnantntanntttcatatctctcncttttctcttcatcacttcctcttcanctn 69
+
+Sbjct 70 agttcatcattcaacaggtcacaaagggcanaggaatagagtacaacagttcttacagtctcgaggagaa 139
+ | |||||||||||||| ||||||| || | |||| | ||||||| |||||||| |||| | | ||
+Query 70 anttcatcattcaacanntcacaaannncanannaatanantacaacanttcttacantctcnannanaa 139
+
+Sbjct 140 tcttggagtgacnagagagttgagagaagagcgaccatcgagtaagatagtgacaataacaagcttctca 209
+ |||| | | || | | | || | | || | | |||||| | ||| ||| | |||||||||| |||||||
+Query 140 tcttnnantnacnanananttnananaanancnaccatcnantaanatantnacaataacaancttctca 209
+
+Sbjct 210 gtgattaaaggcagaggagaaccctatgaatcctctgtttttgaggctgctggttacaaatggagattgg 279
+ | |||||| || | | |||||||| |||||||| ||||| | || || |||||||| | |||
+Query 210 ntnattaaanncanannanaaccctatnaatcctctntttttnannctnctnnttacaaatnnanattnn 279
+
+Sbjct 280 ttttgtacgtgaatggtaataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaaga 349
+ |||| ||| | ||| |||||||||| || | |||| ||||||||||||||||| ||| ||| || |
+Query 280 ttttntacntnaatnntaataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaana 349
+
+Sbjct 350 gacaaactctcttccattaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagcta 419
+ |||||||||||||||||| || || | ||| || |||||||||||||| |||||||| || |||
+Query 350 nacaaactctcttccattannttnnnaantnaatnttnatctcaaactctttntccataatnnnaancta 419
+
+Sbjct 420 cacaaatatttgactgttacagatggcttanttgaagcgatataacaatgcnaaaaaagaatggggtttc 489
+ ||||||||||| ||| ||||| || |||| || || | |||||||||| | |||||| ||| ||||
+Query 420 cacaaatatttnactnttacanatnncttanttnaancnatataacaatncnaaaaaanaatnnnntttc 489
+
+Sbjct 490 ggacaattgattcctcnatcaacattctacaacgcgaacgaaggttacctttgaccaaggacactggttc 559
+ |||||| ||||||| |||||||||||||||| | ||| || |||||||| ||||| ||||| |||
+Query 490 nnacaattnattcctcnatcaacattctacaacncnaacnaannttacctttnaccaannacactnnttc 559
+
+Sbjct 560 cttttgggtggcnggaaaancctttattgtttaaaccngntccaccaacnaanaaaannantttctntnn 629
+ ||||| | | |||| |||||||| |||||||| ||||||||| || |||| | ||||| |
+Query 560 cttttnnntnncnnnaaaancctttattntttaaaccnnntccaccaacnaanaaaannantttctntnn 629
+
+Sbjct 630 ntnntccaacannntncccnncnaatgttttttcccttnggaaaaanacctncgtttcctcctacctttg 699
+ | ||||||| | ||| | ||| ||||||||||| ||||| |||| | |||||||||||||||
+Query 630 ntnntccaacannntncccnncnaatnttttttcccttnnnaaaaanacctncntttcctcctacctttn 699
+
+Sbjct 700 ggaaaaanaaanttcntttttactcccgaatgaattttccccctttgnaaaaaccgaatncctggttgga 769
+ ||||| ||| ||| ||||||||||| ||| |||||||||||||| ||||||| ||| ||| || |
+Query 700 nnaaaaanaaanttcntttttactcccnaatnaattttccccctttnnaaaaaccnaatncctnnttnna 769
+
+Sbjct 770 cttaggaattttaacccccnaaagggggaatggaangaaagaaaaaacccctttgcccnttcccaatcct 839
+ |||| ||||||||||||| ||| ||| || ||| ||||||||||||| ||| |||||||||||
+Query 770 cttannaattttaacccccnaaannnnnaatnnaannaaanaaaaaacccctttncccnttcccaatcct 839
+
+Sbjct 840 tccctantttgc 851
+ |||||| ||| |
+Query 840 tccctantttnc 851
+
# polishing(m=500,d=-500,p=30): 64/64
718 2 1 F 718 2 1 995 147 79.53
-tgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggctt
-| | | || |||||||||||||| |||||||| || |||||||||||||| ||| ||||| || |||
-tnantnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactnttacanatnnctt
-agtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattctac
-| | || | |||||||||| | |||||| ||| |||| |||||| ||||||| |||||||||||||
-antnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcnatcaacattctac
-aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg
-||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||||| |||||||
-aacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatctttattnttaaaccnn
-ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg
-||||||||||| | ||| ||||||||||||||||||||||||||||| ||||||||| || |||||||
-ctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcacttnnaanatacttcn
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-|||||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tttctctaccttnnaanataaattctattactccnatnattttctcnttnaanaccnatactnnanacta
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
- ||||||||| ||| || | | || ||||||| |||||||||||||||||||| ||||| ||
-nnatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttcctatttnctcaanncc
-ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc
-|||| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||
-ataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanttc
-taaccatagacaatatntctgcacttggtacccattggaaacgttatggtntgggantaacatatctact
-|||||||| ||||||| ||| ||||| |||||||| |||| |||| | | | |||||||||||||
-taaccatanacaatatntctncacttnntacccattnnaaacnttatnntntnnnantaacatatctact
-gttgctgattaacgagcatccaaaggattttggtgatgagccntatcttgaactgaatggttaagnccta
- || || |||||| | |||||||| ||||| | || | || |||||| |||| ||| |||| ||||
-nttnctnattaacnancatccaaannattttnntnatnanccntatcttnaactnaatnnttaannccta
-taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattgataattttt
-||||||||||||||| ||||||||||||| || | ||||| | || |||||||||||||| |||||||||
-taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattnataattttt
-tanaaacttatttttnta
-|| |||||||||||| ||
-tanaaacttatttttnta
+Sbjct 1 tgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggctt 70
+ | | | || |||||||||||||| |||||||| || |||||||||||||| ||| ||||| || |||
+Query 1 tnantnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactnttacanatnnctt 70
+
+Sbjct 71 agtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattctac 140
+ | | || | |||||||||| | |||||| ||| |||| |||||| ||||||| |||||||||||||
+Query 71 antnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcnatcaacattctac 140
+
+Sbjct 141 aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg 210
+ ||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||||| |||||||
+Query 141 aacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatctttattnttaaaccnn 210
+
+Sbjct 211 ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg 280
+ ||||||||||| | ||| ||||||||||||||||||||||||||||| ||||||||| || |||||||
+Query 211 ctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcacttnnaanatacttcn 280
+
+Sbjct 281 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 350
+ |||||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 281 tttctctaccttnnaanataaattctattactccnatnattttctcnttnaanaccnatactnnanacta 350
+
+Sbjct 351 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 420
+ ||||||||| ||| || | | || ||||||| |||||||||||||||||||| ||||| ||
+Query 351 nnatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttcctatttnctcaanncc 420
+
+Sbjct 421 ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc 490
+ |||| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||
+Query 421 ataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanttc 490
+
+Sbjct 491 taaccatagacaatatntctgcacttggtacccattggaaacgttatggtntgggantaacatatctact 560
+ |||||||| ||||||| ||| ||||| |||||||| |||| |||| | | | |||||||||||||
+Query 491 taaccatanacaatatntctncacttnntacccattnnaaacnttatnntntnnnantaacatatctact 560
+
+Sbjct 561 gttgctgattaacgagcatccaaaggattttggtgatgagccntatcttgaactgaatggttaagnccta 630
+ || || |||||| | |||||||| ||||| | || | || |||||| |||| ||| |||| ||||
+Query 561 nttnctnattaacnancatccaaannattttnntnatnanccntatcttnaactnaatnnttaannccta 630
+
+Sbjct 631 taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattgataattttt 700
+ ||||||||||||||| ||||||||||||| || | ||||| | || |||||||||||||| |||||||||
+Query 631 taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattnataattttt 700
+
+Sbjct 701 tanaaacttatttttnta 718
+ || |||||||||||| ||
+Query 701 tanaaacttatttttnta 718
+
# polishing(m=500,d=-500,p=30): 64/64
718 2 1 F 718 2 1 995 147 79.53
-tgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggctt
-| | | || |||||||||||||| |||||||| || |||||||||||||| ||| ||||| || |||
-tnantnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactnttacanatnnctt
-agtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattctac
-| | || | |||||||||| | |||||| ||| |||| |||||| ||||||| |||||||||||||
-antnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcnatcaacattctac
-aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg
-||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||||| |||||||
-aacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatctttattnttaaaccnn
-ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg
-||||||||||| | ||| ||||||||||||||||||||||||||||| ||||||||| || |||||||
-ctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcacttnnaanatacttcn
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-|||||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tttctctaccttnnaanataaattctattactccnatnattttctcnttnaanaccnatactnnanacta
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
- ||||||||| ||| || | | || ||||||| |||||||||||||||||||| ||||| ||
-nnatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttcctatttnctcaanncc
-ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc
-|||| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||
-ataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanttc
-taaccatagacaatatntctgcacttggtacccattggaaacgttatggtntgggantaacatatctact
-|||||||| ||||||| ||| ||||| |||||||| |||| |||| | | | |||||||||||||
-taaccatanacaatatntctncacttnntacccattnnaaacnttatnntntnnnantaacatatctact
-gttgctgattaacgagcatccaaaggattttggtgatgagccntatcttgaactgaatggttaagnccta
- || || |||||| | |||||||| ||||| | || | || |||||| |||| ||| |||| ||||
-nttnctnattaacnancatccaaannattttnntnatnanccntatcttnaactnaatnnttaannccta
-taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattgataattttt
-||||||||||||||| ||||||||||||| || | ||||| | || |||||||||||||| |||||||||
-taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattnataattttt
-tanaaacttatttttnta
-|| |||||||||||| ||
-tanaaacttatttttnta
+Sbjct 1 tgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggctt 70
+ | | | || |||||||||||||| |||||||| || |||||||||||||| ||| ||||| || |||
+Query 1 tnantnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactnttacanatnnctt 70
+
+Sbjct 71 agtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattctac 140
+ | | || | |||||||||| | |||||| ||| |||| |||||| ||||||| |||||||||||||
+Query 71 antnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcnatcaacattctac 140
+
+Sbjct 141 aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg 210
+ ||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||||| |||||||
+Query 141 aacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatctttattnttaaaccnn 210
+
+Sbjct 211 ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg 280
+ ||||||||||| | ||| ||||||||||||||||||||||||||||| ||||||||| || |||||||
+Query 211 ctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcacttnnaanatacttcn 280
+
+Sbjct 281 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 350
+ |||||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 281 tttctctaccttnnaanataaattctattactccnatnattttctcnttnaanaccnatactnnanacta 350
+
+Sbjct 351 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 420
+ ||||||||| ||| || | | || ||||||| |||||||||||||||||||| ||||| ||
+Query 351 nnatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttcctatttnctcaanncc 420
+
+Sbjct 421 ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc 490
+ |||| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||
+Query 421 ataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanttc 490
+
+Sbjct 491 taaccatagacaatatntctgcacttggtacccattggaaacgttatggtntgggantaacatatctact 560
+ |||||||| ||||||| ||| ||||| |||||||| |||| |||| | | | |||||||||||||
+Query 491 taaccatanacaatatntctncacttnntacccattnnaaacnttatnntntnnnantaacatatctact 560
+
+Sbjct 561 gttgctgattaacgagcatccaaaggattttggtgatgagccntatcttgaactgaatggttaagnccta 630
+ || || |||||| | |||||||| ||||| | || | || |||||| |||| ||| |||| ||||
+Query 561 nttnctnattaacnancatccaaannattttnntnatnanccntatcttnaactnaatnnttaannccta 630
+
+Sbjct 631 taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattgataattttt 700
+ ||||||||||||||| ||||||||||||| || | ||||| | || |||||||||||||| |||||||||
+Query 631 taccactctctccctnaattctccttcttntcncnacatcncnttnataaaaaatttattnataattttt 700
+
+Sbjct 701 tanaaacttatttttnta 718
+ || |||||||||||| ||
+Query 701 tanaaacttatttttnta 718
+
# polishing(m=500,d=-500,p=30): 64/64
745 3 1 F 745 3 1 1049 147 80.27
-tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa
-| || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
-tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca
-| | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
-cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca
-gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt
- |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
-naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt
-tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg
-|||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann
-atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat
-||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
-atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat
-aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca
-|| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
-aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca
-accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata
-|||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
-accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata
-tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa
-||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
-tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa
-actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc
-||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
-actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc
-ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang
-|| |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
-ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann
-taaccttgtttccgctccccnaatttccttttttttcctgttttt
-||||||| ||||| |||||| |||||||||||||||||| |||||
-taaccttntttccnctccccnaatttccttttttttcctnttttt
+Sbjct 1 tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa 70
+ | || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
+Query 1 tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa 70
+
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 140
+ | | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
+Query 71 cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca 140
+
+Sbjct 141 gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt 210
+ |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
+Query 141 naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt 210
+
+Sbjct 211 tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg 280
+ |||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 211 tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann 280
+
+Sbjct 281 atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat 350
+ ||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
+Query 281 atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat 350
+
+Sbjct 351 aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca 420
+ || ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
+Query 351 aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca 420
+
+Sbjct 421 accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata 490
+ |||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
+Query 421 accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata 490
+
+Sbjct 491 tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa 560
+ ||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
+Query 491 tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa 560
+
+Sbjct 561 actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc 630
+ ||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
+Query 561 actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc 630
+
+Sbjct 631 ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang 700
+ || |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
+Query 631 ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann 700
+
+Sbjct 701 taaccttgtttccgctccccnaatttccttttttttcctgttttt 745
+ ||||||| ||||| |||||| |||||||||||||||||| |||||
+Query 701 taaccttntttccnctccccnaatttccttttttttcctnttttt 745
+
# polishing(m=500,d=-500,p=30): 64/64
745 3 1 F 745 3 1 1049 147 80.27
-tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa
-| || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
-tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca
-| | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
-cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca
-gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt
- |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
-naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt
-tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg
-|||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann
-atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat
-||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
-atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat
-aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca
-|| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
-aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca
-accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata
-|||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
-accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata
-tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa
-||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
-tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa
-actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc
-||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
-actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc
-ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang
-|| |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
-ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann
-taaccttgtttccgctccccnaatttccttttttttcctgttttt
-||||||| ||||| |||||| |||||||||||||||||| |||||
-taaccttntttccnctccccnaatttccttttttttcctnttttt
+Sbjct 1 tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa 70
+ | || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
+Query 1 tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa 70
+
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 140
+ | | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
+Query 71 cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca 140
+
+Sbjct 141 gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt 210
+ |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
+Query 141 naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt 210
+
+Sbjct 211 tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg 280
+ |||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 211 tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann 280
+
+Sbjct 281 atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat 350
+ ||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
+Query 281 atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat 350
+
+Sbjct 351 aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca 420
+ || ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
+Query 351 aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca 420
+
+Sbjct 421 accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata 490
+ |||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
+Query 421 accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata 490
+
+Sbjct 491 tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa 560
+ ||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
+Query 491 tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa 560
+
+Sbjct 561 actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc 630
+ ||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
+Query 561 actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc 630
+
+Sbjct 631 ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang 700
+ || |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
+Query 631 ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann 700
+
+Sbjct 701 taaccttgtttccgctccccnaatttccttttttttcctgttttt 745
+ ||||||| ||||| |||||| |||||||||||||||||| |||||
+Query 701 taaccttntttccnctccccnaatttccttttttttcctnttttt 745
+
# polishing(m=500,d=-500,p=30): 64/64
745 3 1 F 745 3 1 1049 147 80.27
-tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa
-| || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
-tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca
-| | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
-cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca
-gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt
- |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
-naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt
-tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg
-|||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann
-atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat
-||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
-atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat
-aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca
-|| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
-aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca
-accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata
-|||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
-accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata
-tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa
-||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
-tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa
-actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc
-||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
-actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc
-ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang
-|| |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
-ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann
-taaccttgtttccgctccccnaatttccttttttttcctgttttt
-||||||| ||||| |||||| |||||||||||||||||| |||||
-taaccttntttccnctccccnaatttccttttttttcctnttttt
+Sbjct 1 tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa 70
+ | || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
+Query 1 tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa 70
+
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 140
+ | | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
+Query 71 cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca 140
+
+Sbjct 141 gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt 210
+ |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
+Query 141 naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt 210
+
+Sbjct 211 tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg 280
+ |||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 211 tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann 280
+
+Sbjct 281 atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat 350
+ ||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
+Query 281 atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat 350
+
+Sbjct 351 aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca 420
+ || ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
+Query 351 aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca 420
+
+Sbjct 421 accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata 490
+ |||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
+Query 421 accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata 490
+
+Sbjct 491 tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa 560
+ ||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
+Query 491 tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa 560
+
+Sbjct 561 actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc 630
+ ||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
+Query 561 actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc 630
+
+Sbjct 631 ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang 700
+ || |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
+Query 631 ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann 700
+
+Sbjct 701 taaccttgtttccgctccccnaatttccttttttttcctgttttt 745
+ ||||||| ||||| |||||| |||||||||||||||||| |||||
+Query 701 taaccttntttccnctccccnaatttccttttttttcctnttttt 745
+
# polishing(m=500,d=-500,p=30): 64/64
745 3 1 F 745 3 1 1049 147 80.27
-tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa
-| || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
-tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca
-| | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
-cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca
-gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt
- |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
-naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt
-tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg
-|||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann
-atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat
-||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
-atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat
-aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca
-|| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
-aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca
-accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata
-|||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
-accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata
-tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa
-||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
-tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa
-actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc
-||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
-actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc
-ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang
-|| |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
-ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann
-taaccttgtttccgctccccnaatttccttttttttcctgttttt
-||||||| ||||| |||||| |||||||||||||||||| |||||
-taaccttntttccnctccccnaatttccttttttttcctnttttt
+Sbjct 1 tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa 70
+ | || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
+Query 1 tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa 70
+
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 140
+ | | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
+Query 71 cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca 140
+
+Sbjct 141 gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt 210
+ |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
+Query 141 naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt 210
+
+Sbjct 211 tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg 280
+ |||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 211 tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann 280
+
+Sbjct 281 atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat 350
+ ||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
+Query 281 atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat 350
+
+Sbjct 351 aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca 420
+ || ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
+Query 351 aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca 420
+
+Sbjct 421 accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata 490
+ |||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
+Query 421 accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata 490
+
+Sbjct 491 tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa 560
+ ||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
+Query 491 tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa 560
+
+Sbjct 561 actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc 630
+ ||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
+Query 561 actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc 630
+
+Sbjct 631 ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang 700
+ || |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
+Query 631 ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann 700
+
+Sbjct 701 taaccttgtttccgctccccnaatttccttttttttcctgttttt 745
+ ||||||| ||||| |||||| |||||||||||||||||| |||||
+Query 701 taaccttntttccnctccccnaatttccttttttttcctnttttt 745
+
# polishing(m=500,d=-500,p=30): 64/64
745 3 1 F 745 3 1 1049 147 80.27
-tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa
-| || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
-tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca
-| | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
-cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca
-gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt
- |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
-naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt
-tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg
-|||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
-tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann
-atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat
-||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
-atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat
-aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca
-|| ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
-aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca
-accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata
-|||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
-accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata
-tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa
-||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
-tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa
-actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc
-||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
-actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc
-ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang
-|| |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
-ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann
-taaccttgtttccgctccccnaatttccttttttttcctgttttt
-||||||| ||||| |||||| |||||||||||||||||| |||||
-taaccttntttccnctccccnaatttccttttttttcctnttttt
+Sbjct 1 tgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaa 70
+ | || | ||||||| || |||||||| | | |||||||||||| |||||||||||||||||||||||
+Query 1 tnaancnatacaacnatncaaaaaaanantnnnnattcacacaattnatttctcttccaacattctacaa 70
+
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 140
+ | | ||| || ||| || | || ||||| |||||||| | || | ||||||||| ||||||| |||
+Query 71 cncnaacnaannntacnttntncannacacancttcttttnntnctnanatcttcatcnttaacccnaca 140
+
+Sbjct 141 gaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtt 210
+ |||||||| | ||| |||||||||||||||||||||| |||||| ||||||||| || ||||||| ||
+Query 141 naaaaacaananaaantcacattcatatcaaaccctccnaacaatnttttcacttnnaanatacttcntt 210
+
+Sbjct 211 tctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattagg 280
+ |||||||||| || ||||||||||||||||| || |||||||| || || ||| ||||| | ||||
+Query 211 tctctaccttnnaanataaattctattactctnatnattttctcnttnaanaccnatactnnanattann 280
+
+Sbjct 281 atttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccat 350
+ ||||||||| ||| |||| | | | ||||||| |||||||||||||||||||| ||||| ||||
+Query 281 atttaacccnaaannatctnntnnannnanaccacatncacttccaatcttcctatatnctcaannccat 350
+
+Sbjct 351 aaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcca 420
+ || ||||| || || |||||||||||| | | ||||||| | ||||| ||||||| || |||||
+Query 351 aanncaaacncanttnttacaaacacttnnnnancnnttaatctncnnttaaanaatcaacnaanctcca 420
+
+Sbjct 421 accacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaata 490
+ |||||||||||||||||||| || ||| |||||| |||| || | ||||| | | | | |||||||
+Query 421 accacaaacaattatattctncancttnntaccccnattcnaancnattatnntntnnnantnaacaata 490
+
+Sbjct 491 tcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttgaa 560
+ ||||||| || ||| || |||||| || |||| ||| ||||| | ||| || |||||||||||| ||
+Query 491 tcatattnatntcanaanctaaaanatncatcnaaannntatatnntnaatnatnccattatcttttnaa 560
+
+Sbjct 561 actgaaatggttaaggtctctgtgaacaacatantctccncttaaatatatntcactacttctttatccc 630
+ ||| |||| |||| ||||| | ||||||||| ||||| ||||||||||| ||||||||||||||||||
+Query 561 actnaaatnnttaanntctctntnaacaacatantctccncttaaatatatntcactacttctttatccc 630
+
+Sbjct 631 ccgnaataaccttacaaagaaaaattgatgatttaatttgttatacnacactttattnatgcctgtgang 700
+ || |||||||||||||| ||||||| || ||||||||| |||||| |||||||||| || ||| | |
+Query 631 ccnnaataaccttacaaanaaaaattnatnatttaatttnttatacnacactttattnatncctntnann 700
+
+Sbjct 701 taaccttgtttccgctccccnaatttccttttttttcctgttttt 745
+ ||||||| ||||| |||||| |||||||||||||||||| |||||
+Query 701 taaccttntttccnctccccnaatttccttttttttcctnttttt 745
+
# polishing(m=500,d=-500,p=30): 64/64
798 5 2 F 798 5 2 1116 160 79.95
-aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg
-|| ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
-aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn
-gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc
- |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
-nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc
-ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
-ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac
-cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg
-|||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn
-atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
-atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc
-acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc
-cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa
-| ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
-cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa
-aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc
-| |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
-annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc
-tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt
-||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
-tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant
-ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt
-|| |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
-ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt
-tcaatgaaaataaaactcttaccggttt
-||||| ||||||||||||||||| |||
-tcaatnaaaataaaactcttaccnnttt
+Sbjct 2 aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg 71
+ || ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
+Query 2 aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn 71
+
+Sbjct 72 gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc 141
+ |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
+Query 72 nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc 141
+
+Sbjct 142 ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 211
+ ||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
+Query 142 ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac 211
+
+Sbjct 212 cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg 281
+ |||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 212 cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn 281
+
+Sbjct 282 atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc 351
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
+Query 282 atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc 351
+
+Sbjct 352 acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga 421
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 352 acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna 421
+
+Sbjct 422 gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc 491
+ | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
+Query 422 ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc 491
+
+Sbjct 492 cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa 561
+ | ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
+Query 492 cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa 561
+
+Sbjct 562 aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc 631
+ | |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
+Query 562 annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc 631
+
+Sbjct 632 tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt 701
+ ||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
+Query 632 tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant 701
+
+Sbjct 702 ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt 771
+ || |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
+Query 702 ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt 771
+
+Sbjct 772 tcaatgaaaataaaactcttaccggttt 799
+ ||||| ||||||||||||||||| |||
+Query 772 tcaatnaaaataaaactcttaccnnttt 799
+
# polishing(m=500,d=-500,p=30): 64/64
798 5 2 F 798 5 2 1116 160 79.95
-aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg
-|| ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
-aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn
-gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc
- |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
-nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc
-ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
-ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac
-cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg
-|||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn
-atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
-atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc
-acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc
-cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa
-| ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
-cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa
-aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc
-| |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
-annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc
-tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt
-||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
-tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant
-ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt
-|| |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
-ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt
-tcaatgaaaataaaactcttaccggttt
-||||| ||||||||||||||||| |||
-tcaatnaaaataaaactcttaccnnttt
+Sbjct 2 aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg 71
+ || ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
+Query 2 aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn 71
+
+Sbjct 72 gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc 141
+ |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
+Query 72 nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc 141
+
+Sbjct 142 ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 211
+ ||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
+Query 142 ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac 211
+
+Sbjct 212 cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg 281
+ |||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 212 cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn 281
+
+Sbjct 282 atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc 351
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
+Query 282 atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc 351
+
+Sbjct 352 acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga 421
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 352 acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna 421
+
+Sbjct 422 gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc 491
+ | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
+Query 422 ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc 491
+
+Sbjct 492 cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa 561
+ | ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
+Query 492 cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa 561
+
+Sbjct 562 aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc 631
+ | |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
+Query 562 annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc 631
+
+Sbjct 632 tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt 701
+ ||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
+Query 632 tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant 701
+
+Sbjct 702 ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt 771
+ || |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
+Query 702 ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt 771
+
+Sbjct 772 tcaatgaaaataaaactcttaccggttt 799
+ ||||| ||||||||||||||||| |||
+Query 772 tcaatnaaaataaaactcttaccnnttt 799
+
# polishing(m=500,d=-500,p=30): 64/64
798 5 2 F 798 5 2 1116 160 79.95
-aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg
-|| ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
-aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn
-gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc
- |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
-nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc
-ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
-ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac
-cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg
-|||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn
-atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
-atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc
-acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc
-cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa
-| ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
-cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa
-aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc
-| |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
-annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc
-tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt
-||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
-tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant
-ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt
-|| |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
-ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt
-tcaatgaaaataaaactcttaccggttt
-||||| ||||||||||||||||| |||
-tcaatnaaaataaaactcttaccnnttt
+Sbjct 2 aagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggg 71
+ || ||||| |||||||| ||| ||||| || |||| | || | ||||||| || |||||||| | |
+Query 2 aanttaaanaaatatttntctnttacanatnnaacantnaancnatacaacnatncaaaaaaanantnnn 71
+
+Sbjct 72 gattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagc 141
+ |||||||||||| |||||||||||||||||||||||| | ||| || |||||| | || ||||| |
+Query 72 nattcacacaattnatttctcttccaacattctacaacncnaacnaannntaccttntncannacacanc 141
+
+Sbjct 142 ttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 211
+ ||||||| | || | ||||||||| ||||||| ||| |||||||| | ||| |||||||||||||||||
+Query 142 ttcttttnntnctnanatcttcatcnttaacccnacanaaaaacaananaaantcacattcatatcaaac 211
+
+Sbjct 212 cctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccg 281
+ |||||| ||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 212 cctccanacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactccn 281
+
+Sbjct 282 atgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagacc 351
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| || | | || |||
+Query 282 atnattttctcnttnaanaccnatactnnanactannatttaacccnaaannnnatnnannannaanacc 351
+
+Sbjct 352 acatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgggga 421
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 352 acatncacttccaatcttcctatttnctcaannccataanncaaacncanttnctacaaacacttnnnna 421
+
+Sbjct 422 gcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacc 491
+ | ||||||| | ||||| ||||||| || ||||||||||| ||||||||||||| || ||| ||||
+Query 422 ncnnttaatctncnnttaaanaatcaacnaantactaaccatanacaaatatattctncancttnntacc 491
+
+Sbjct 492 cgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaa 561
+ | ||| || | |||| | | | | |||||||||||||| ||| || |||||||| || |||||||
+Query 492 cnattnnaancnnttatnntntnnnantnaacaatatcatactnttanctnatttaaacnatncatcaaa 561
+
+Sbjct 562 aggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtc 631
+ | |||||| | ||| || ||||||||||| || || |||| |||| ||||||||||||||||| ||
+Query 562 annatatttnntnaatnatnccattatctttnaanctnaaatnnttaanntctctataaccaacatcntc 631
+
+Sbjct 632 tccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagt 701
+ ||| ||||||||||| ||||||||| ||||| ||||||||||||||| |||||| | |||||| || | |
+Query 632 tccncttaaatatctncacttctttntctacnatcaatcaaccttatnaataaananatatttnatnant 701
+
+Sbjct 702 ttgtaataagaaaacgttaatgtttgtgaattgtgaagttattacttctgttcttctgagtttttttatt 771
+ || |||||| ||||| ||||| ||| | |||| | || ||||||||||| ||||||| | ||||||||||
+Query 702 ttntaataanaaaacnttaatntttntnaattntnaanttattacttctnttcttctnantttttttatt 771
+
+Sbjct 772 tcaatgaaaataaaactcttaccggttt 799
+ ||||| ||||||||||||||||| |||
+Query 772 tcaatnaaaataaaactcttaccnnttt 799
+
# polishing(m=500,d=-500,p=30): 64/64
764 39 107 F 760 6 35 960 188 75.33
-attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc
-|| ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatc-aa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||| ||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa
-||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
-ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa
+Sbjct 107 attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct 176
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 177 tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 245
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 246 cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 315
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 316 atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc 385
+ || ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 386 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 455
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 456 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 525
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 526 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatc-aa 594
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||| ||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 595 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 664
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 665 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 734
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 735 tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta 804
+ ||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 805 ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa 870
+ ||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
+Query 735 ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa 794
+
# polishing(m=500,d=-500,p=30): 64/64
762 6 35 F 762 6 35 993 177 76.77
-attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt
-||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
-ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant
+Sbjct 35 attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct 104
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 105 tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac 174
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 175 cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 244
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 245 atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc 314
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 315 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 384
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 385 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 454
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 455 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa 524
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 525 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 594
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 595 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 664
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 665 tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta 734
+ ||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 735 ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt 796
+ ||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
+Query 735 ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant 796
+
# polishing(m=500,d=-500,p=30): 64/64
764 39 107 F 760 6 35 960 188 75.33
-attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc
-|| ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatc-aa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||| ||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa
-||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
-ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa
+Sbjct 107 attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct 176
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 177 tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 245
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 246 cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 315
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 316 atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc 385
+ || ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 386 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 455
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 456 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 525
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 526 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatc-aa 594
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||| ||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 595 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 664
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 665 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 734
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 735 tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta 804
+ ||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 805 ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa 870
+ ||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
+Query 735 ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa 794
+
# polishing(m=500,d=-500,p=30): 64/64
762 6 35 F 762 6 35 993 177 76.77
-attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt
-||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
-ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant
+Sbjct 35 attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct 104
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 105 tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac 174
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 175 cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 244
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 245 atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc 314
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 315 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 384
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 385 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 454
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 455 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa 524
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 525 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 594
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 595 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 664
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 665 tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta 734
+ ||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 735 ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt 796
+ ||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
+Query 735 ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant 796
+
# polishing(m=500,d=-500,p=30): 64/64
762 6 35 F 762 6 35 993 177 76.77
-attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc
-|| |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt
-||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
-ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant
+Sbjct 35 attnncannatngatntctcttcnnnnattctnnnncgcgaangaagggtaccttgtgnangacnnnnct 104
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 105 tctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncattcatatcnnac 174
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 175 cctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 244
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 245 atgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagacc 314
+ || |||||||| || || ||| ||||| | |||| ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 315 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 384
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 385 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 454
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 455 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatccaa 524
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || |||||||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 525 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 594
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 595 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 664
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 665 tttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttta 734
+ ||| |||||| ||||| || || || ||| | || ||||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 735 ctttttttttcatgttttgctatcaatgaaataaaggtataaaactctcttggttttaaagt 796
+ ||||||||||||| |||| |||||||| ||||||| |||||||||||||| ||||||| |
+Query 735 ctttttttttcatnttttnctatcaatnaaataaanntataaaactctcttnnttttaaant 796
+
# polishing(m=500,d=-500,p=30): 64/64
764 39 107 F 760 6 35 960 188 75.33
-attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct
-||| || || || ||||||| ||||| | | || || |||||| | | || ||
-attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct
-tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac
-||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
-tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac
-cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg
-||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
-cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn
-atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc
-|| ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
-atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc
-acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga
-|||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
-acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna
-gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc
- | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
-ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc
-cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcat-caa
-| |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || ||| |||
-cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa
-aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt
-|| ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
-aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant
-ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa
-|||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
-ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa
-tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta
-||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
-tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta
-ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa
-||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
-ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa
+Sbjct 107 attcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagct 176
+ ||| || || || ||||||| ||||| | | || || |||||| | | || ||
+Query 35 attnncannatnnatntctcttcnnnnattctnnnncncnaannaannntaccttntnnannacnnnnct 104
+
+Sbjct 177 tcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagagaaagtcacattcatatcaaac 245
+ ||||| | || | |||||||| | || ||| ||| ||| || | | | || |||||||||| ||
+Query 105 tctttnnntnctnanatcttcatncnntancccnacanaaanacnnnananantcncattcatatcnnac 174
+
+Sbjct 246 cctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctg 315
+ ||||| |||||| ||||||||| || ||||||| |||||||||||| || |||||||||||||||||
+Query 175 cctccnaacaatnttttcacttnnaanatacttcntttctctaccttnnaanataaattctattactctn 244
+
+Sbjct 316 atgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagacc 385
+ || ||||||| || | ||| ||||| | | || ||||||||| ||| |||| | | | |||
+Query 245 atnattttctcnttnaanaccnatactnnanattannatttaacccnaaannatctnntnnannnanacc 314
+
+Sbjct 386 acatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttgggga 455
+ |||| |||||||||||||||||||| ||||| |||||| ||||| || || |||||||||||| |
+Query 315 acatncacttccaatcttcctatatnctcaannccataanncaaacncanttnttacaaacacttnnnna 384
+
+Sbjct 456 gcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacc 525
+ | ||||||| | ||||| ||||||| || ||||||||||||||||||||||||| || ||| ||||
+Query 385 ncnnttaatctncnnttaaanaatcaacnaanctccaaccacaaacaattatattctncancttnntacc 454
+
+Sbjct 526 cgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcat-caa 594
+ | |||| || | ||||| | | | | |||||||||||||| || ||| | |||||| || ||| |||
+Query 455 cnattcnaancnattatnntntnnnantnaacaatataatattnatntcananctaaaanatncatccaa 524
+
+Sbjct 595 aagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagt 664
+ || ||||| | ||| || ||||||||||| || || |||| |||| ||||| | ||||||||| |
+Query 525 aannntatatnntnaatnatnccattatctttnaanctnaaatnnttaanntctctntnacaaacatant 594
+
+Sbjct 665 ctccgtttaaatatcactacttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaa 734
+ |||| |||||||||||||||||||||||||||||||||||||| |||||| | ||||| || | |||||
+Query 595 ctccntttaaatatcactacttctttttcaacaacaaccttacnaataaantnnactttnatnantttaa 664
+
+Sbjct 735 tttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttta 804
+ ||| |||||| ||||| || || || ||| | || | ||| || ||||| |||||| | ||||| |||||
+Query 665 tttnttatacnacaacnttnttnatncttntnatntaatcnttntttctnctctccnanttttcntttta 734
+
+Sbjct 805 ctttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggtttttaaa 870
+ ||||||||||||| |||| ||||| ||| ||| |||| | |||||||||| || |||| |||
+Query 735 ctttttttttcatnttttnctatc-aatnaaa-taaa-nntataaaactctc-tt-nntttt-aaa 794
+
# polishing(m=500,d=-500,p=30): 64/64
863 16 2 F 863 16 2 1204 174 79.84
-taataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagacaaactctcttcca
-|||||||||| || | |||| ||||||||||||||||| ||| ||| || | |||||||||||||||
-taataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaananacaaactctcttcca
-ttaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactg
-||| || || | ||| || |||||||||||||| |||||||| || |||||||||||||| |||
-ttannttnnnaantnaatnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactn
-ttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcg
-||||| || |||| | || | |||||||||| | |||||| ||| |||| |||||| |||||||
-ttacanatnncttantnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcn
-atcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatcttt
-|||||||||||||||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||
-atcaacattctacaacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatcttt
-attgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcactt
-||| ||||||| ||||||||||| | ||| ||||||||||||||||||||||||||||| |||||||||
-attnttaaaccnnctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcactt
-ggaagatacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccg
- || ||||||| |||||||||||| || ||||||||||||||||| || || ||||| || || |||
-nnaanatacttcntttctctaccttnnaanataaattctattactccnatnatnttctcnttnaanaccn
-atactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttccta
-||||| | |||| ||||||||| ||| || | | || ||||||| |||||||||||||||||
-atactnnanactannatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttccta
-tttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaaga
-||| ||||| |||||| ||||| || || |||||||||||| | | ||||||| | ||||| |
-tttnctcaannccataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaana
-atcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgt
-|||||| || ||||||||||| ||||||||||||| || ||| ||||| ||| |||| |||| | |
-atcaacnaantactaaccatanacaaatatattctncancttnntacccnattnnaaacnnttatnntnt
-gggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgcc
- | | |||||||||||||| ||| || |||||||| || |||||||| |||||| | ||| || ||
-nnnantnaacaatatcatactnttanctnatttaaacnatncatccaaannatatttnntnaatnatncc
-attatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttc
-||||||||| || || |||| |||| ||||||||||||||||| ||||| ||||||||||| | ||||
-attatctttnaanctnaaatnnttaanntctctataaccaacatcntctccncttaaatatctncncttc
-tttgtctacnancaatccaccttatgaataaaaaaattttaatttgatgaatttgttataanaaaacttt
-||| ||||| | ||||||||||||| ||||||||||||||||||| || ||||| |||||| ||||||||
-tttntctacnancaatccaccttatnaataaaaaaattttaatttnatnaatttnttataanaaaacttt
-aatgtttgttaaatgtgaaattt
-||| ||| |||||| | ||||||
-aatntttnttaaatntnaaattt
+Sbjct 2 taataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagacaaactctcttcca 71
+ |||||||||| || | |||| ||||||||||||||||| ||| ||| || | |||||||||||||||
+Query 2 taataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaananacaaactctcttcca 71
+
+Sbjct 72 ttaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactg 141
+ ||| || || | ||| || |||||||||||||| |||||||| || |||||||||||||| |||
+Query 72 ttannttnnnaantnaatnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactn 141
+
+Sbjct 142 ttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcg 211
+ ||||| || |||| | || | |||||||||| | |||||| ||| |||| |||||| |||||||
+Query 142 ttacanatnncttantnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcn 211
+
+Sbjct 212 atcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatcttt 281
+ |||||||||||||||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||
+Query 212 atcaacattctacaacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatcttt 281
+
+Sbjct 282 attgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcactt 351
+ ||| ||||||| ||||||||||| | ||| ||||||||||||||||||||||||||||| |||||||||
+Query 282 attnttaaaccnnctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcactt 351
+
+Sbjct 352 ggaagatacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccg 421
+ || ||||||| |||||||||||| || ||||||||||||||||| || || ||||| || || |||
+Query 352 nnaanatacttcntttctctaccttnnaanataaattctattactccnatnatnttctcnttnaanaccn 421
+
+Sbjct 422 atactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttccta 491
+ ||||| | |||| ||||||||| ||| || | | || ||||||| |||||||||||||||||
+Query 422 atactnnanactannatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttccta 491
+
+Sbjct 492 tttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaaga 561
+ ||| ||||| |||||| ||||| || || |||||||||||| | | ||||||| | ||||| |
+Query 492 tttnctcaannccataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaana 561
+
+Sbjct 562 atcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgt 631
+ |||||| || ||||||||||| ||||||||||||| || ||| ||||| ||| |||| |||| | |
+Query 562 atcaacnaantactaaccatanacaaatatattctncancttnntacccnattnnaaacnnttatnntnt 631
+
+Sbjct 632 gggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgcc 701
+ | | |||||||||||||| ||| || |||||||| || |||||||| |||||| | ||| || ||
+Query 632 nnnantnaacaatatcatactnttanctnatttaaacnatncatccaaannatatttnntnaatnatncc 701
+
+Sbjct 702 attatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttc 771
+ ||||||||| || || |||| |||| ||||||||||||||||| ||||| ||||||||||| | ||||
+Query 702 attatctttnaanctnaaatnnttaanntctctataaccaacatcntctccncttaaatatctncncttc 771
+
+Sbjct 772 tttgtctacnancaatccaccttatgaataaaaaaattttaatttgatgaatttgttataanaaaacttt 841
+ ||| ||||| | ||||||||||||| ||||||||||||||||||| || ||||| |||||| ||||||||
+Query 772 tttntctacnancaatccaccttatnaataaaaaaattttaatttnatnaatttnttataanaaaacttt 841
+
+Sbjct 842 aatgtttgttaaatgtgaaattt 864
+ ||| ||| |||||| | ||||||
+Query 842 aatntttnttaaatntnaaattt 864
+
# polishing(m=500,d=-500,p=30): 64/64
863 16 2 F 863 16 2 1204 174 79.84
-taataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagacaaactctcttcca
-|||||||||| || | |||| ||||||||||||||||| ||| ||| || | |||||||||||||||
-taataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaananacaaactctcttcca
-ttaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactg
-||| || || | ||| || |||||||||||||| |||||||| || |||||||||||||| |||
-ttannttnnnaantnaatnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactn
-ttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcg
-||||| || |||| | || | |||||||||| | |||||| ||| |||| |||||| |||||||
-ttacanatnncttantnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcn
-atcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatcttt
-|||||||||||||||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||
-atcaacattctacaacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatcttt
-attgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcactt
-||| ||||||| ||||||||||| | ||| ||||||||||||||||||||||||||||| |||||||||
-attnttaaaccnnctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcactt
-ggaagatacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccg
- || ||||||| |||||||||||| || ||||||||||||||||| || || ||||| || || |||
-nnaanatacttcntttctctaccttnnaanataaattctattactccnatnatnttctcnttnaanaccn
-atactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttccta
-||||| | |||| ||||||||| ||| || | | || ||||||| |||||||||||||||||
-atactnnanactannatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttccta
-tttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaaga
-||| ||||| |||||| ||||| || || |||||||||||| | | ||||||| | ||||| |
-tttnctcaannccataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaana
-atcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgt
-|||||| || ||||||||||| ||||||||||||| || ||| ||||| ||| |||| |||| | |
-atcaacnaantactaaccatanacaaatatattctncancttnntacccnattnnaaacnnttatnntnt
-gggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgcc
- | | |||||||||||||| ||| || |||||||| || |||||||| |||||| | ||| || ||
-nnnantnaacaatatcatactnttanctnatttaaacnatncatccaaannatatttnntnaatnatncc
-attatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttc
-||||||||| || || |||| |||| ||||||||||||||||| ||||| ||||||||||| | ||||
-attatctttnaanctnaaatnnttaanntctctataaccaacatcntctccncttaaatatctncncttc
-tttgtctacnancaatccaccttatgaataaaaaaattttaatttgatgaatttgttataanaaaacttt
-||| ||||| | ||||||||||||| ||||||||||||||||||| || ||||| |||||| ||||||||
-tttntctacnancaatccaccttatnaataaaaaaattttaatttnatnaatttnttataanaaaacttt
-aatgtttgttaaatgtgaaattt
-||| ||| |||||| | ||||||
-aatntttnttaaatntnaaattt
+Sbjct 2 taataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagacaaactctcttcca 71
+ |||||||||| || | |||| ||||||||||||||||| ||| ||| || | |||||||||||||||
+Query 2 taataaaaacnacnntnnaaatnatcatatttccctttacncaannatcnaananacaaactctcttcca 71
+
+Sbjct 72 ttaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactg 141
+ ||| || || | ||| || |||||||||||||| |||||||| || |||||||||||||| |||
+Query 72 ttannttnnnaantnaatnttnatctcaaactctttntccataatnnnaanctacacaaatatttnactn 141
+
+Sbjct 142 ttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcg 211
+ ||||| || |||| | || | |||||||||| | |||||| ||| |||| |||||| |||||||
+Query 142 ttacanatnncttantnaancnatataacaatncnaaaaaanaatnnnntttcnnacaattnattcctcn 211
+
+Sbjct 212 atcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatcttt 281
+ |||||||||||||||| | ||| || ||||||| |||| ||||| ||||||| | || | ||||||
+Query 212 atcaacattctacaacncnaacnaannttaccttnaccannacactnnttcttttnntnctnanatcttt 281
+
+Sbjct 282 attgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcactt 351
+ ||| ||||||| ||||||||||| | ||| ||||||||||||||||||||||||||||| |||||||||
+Query 282 attnttaaaccnnctcaacaacaananaaanttacattcatatcaaaccctccaaacaatnttttcactt 351
+
+Sbjct 352 ggaagatacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccg 421
+ || ||||||| |||||||||||| || ||||||||||||||||| || || ||||| || || |||
+Query 352 nnaanatacttcntttctctaccttnnaanataaattctattactccnatnatnttctcnttnaanaccn 421
+
+Sbjct 422 atactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttccta 491
+ ||||| | |||| ||||||||| ||| || | | || ||||||| |||||||||||||||||
+Query 422 atactnnanactannatttaacccnaaannnnatnnannannaanaccacatncacttccaatcttccta 491
+
+Sbjct 492 tttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaaga 561
+ ||| ||||| |||||| ||||| || || |||||||||||| | | ||||||| | ||||| |
+Query 492 tttnctcaannccataanncaaatncanttnctacaaacacttnnnnancnnttaatctncnnttaaana 561
+
+Sbjct 562 atcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgt 631
+ |||||| || ||||||||||| ||||||||||||| || ||| ||||| ||| |||| |||| | |
+Query 562 atcaacnaantactaaccatanacaaatatattctncancttnntacccnattnnaaacnnttatnntnt 631
+
+Sbjct 632 gggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgcc 701
+ | | |||||||||||||| ||| || |||||||| || |||||||| |||||| | ||| || ||
+Query 632 nnnantnaacaatatcatactnttanctnatttaaacnatncatccaaannatatttnntnaatnatncc 701
+
+Sbjct 702 attatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttc 771
+ ||||||||| || || |||| |||| ||||||||||||||||| ||||| ||||||||||| | ||||
+Query 702 attatctttnaanctnaaatnnttaanntctctataaccaacatcntctccncttaaatatctncncttc 771
+
+Sbjct 772 tttgtctacnancaatccaccttatgaataaaaaaattttaatttgatgaatttgttataanaaaacttt 841
+ ||| ||||| | ||||||||||||| ||||||||||||||||||| || ||||| |||||| ||||||||
+Query 772 tttntctacnancaatccaccttatnaataaaaaaattttaatttnatnaatttnttataanaaaacttt 841
+
+Sbjct 842 aatgtttgttaaatgtgaaattt 864
+ ||| ||| |||||| | ||||||
+Query 842 aatntttnttaaatntnaaattt 864
+
# polishing(m=500,d=-500,p=30): 64/64
diff --git a/testdata/repfind-result/at1MB-U8-greedy-r-12-30-80-2-36-a b/testdata/repfind-result/at1MB-U8-greedy-r-12-30-80-2-36-a
index 0107bae..01270fc 100644
--- a/testdata/repfind-result/at1MB-U8-greedy-r-12-30-80-2-36-a
+++ b/testdata/repfind-result/at1MB-U8-greedy-r-12-30-80-2-36-a
@@ -1,773 +1,930 @@
+# Options: -minidentity 80 -l 30 -seedlength 12 -extendgreedy -ii at1MB -q /local/kurtz/genometools/testsuite/../testdata/U89959_genomic.fas -r -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
32 1099 143 R 30 0 106365 44 6 80.65
-cttgtttgggctcttcaggat-ctcttgtcaag
-||| |||||||||||| | || || ||||| ||
-ctt-tttgggctcttccg-atgct-ttgtctag
+Sbjct 143 cttgtttgggctcttcaggat-ctcttgtcaag 174
+ ||| |||||||||||| | || || ||||| ||
+Query 578 ctt-tttgggctcttccg-atgct-ttgtctag 607
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1013 180 R 30 0 100448 44 6 80.65
-gcaagagtaatcctctattattatctccccca
-|||| | ||||||||||||| || | || |||
-gcaacactaatcctctattacta-c-cctcca
+Sbjct 180 gcaagagtaatcctctattattatctccccca 211
+ |||| | ||||||||||||| || | || |||
+Query 6495 gcaacactaatcctctattacta-c-cctcca 6524
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 986 284 R 32 0 97954 45 6 80.95
-tatgt-taatatttgtattatggtttgtatta
-||| | ||||||||||||| | ||| |||||
-tatttataatatttgtattgttttttttatta
+Sbjct 284 tatgt-taatatttgtattatggtttgtatta 314
+ ||| | ||||||||||||| | ||| |||||
+Query 8987 tatttataatatttgtattgttttttttatta 9018
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 139 93 R 30 0 97699 46 5 83.61
-tttcttattcggaaaaaaaaaatgattggaa
-||||||| | || ||||||||||||||||
-tttctta-taaaaataaaaaaatgattggaa
+Sbjct 93 tttcttattcggaaaaaaaaaatgattggaa 123
+ ||||||| | || ||||||||||||||||
+Query 9244 tttctta-taaaaataaaaaaatgattggaa 9273
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
33 571 310 R 29 0 97107 44 6 80.65
-ttcttcttcttctttcttaaacttttgcatcaa
-|||||||||||||| |||| | ||||| |||
-ttcttcttcttctt-ctta---tgttgcaccaa
+Sbjct 310 ttcttcttcttctttcttaaacttttgcatcaa 342
+ |||||||||||||| |||| | ||||| |||
+Query 9837 ttcttcttcttctt-ctta---tgttgcaccaa 9865
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 103 64 R 30 0 97114 42 6 80.00
-tcagccatgg-cttcttcttcttcttctctt
-||| || || ||||||||||||||| | ||
-tcaacc-tgttcttcttcttcttcttatgtt
+Sbjct 64 tcagccatgg-cttcttcttcttcttctctt 93
+ ||| || || ||||||||||||||| | ||
+Query 9829 tcaacc-tgttcttcttcttcttcttatgtt 9858
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
35 1231 19 R 36 0 94850 50 7 80.28
-ac-a-tatcccatttgtgagagaaggacttgtgaagg
-|| | |||||||||||| ||||||| || ||||||
-acgagtatcccatttgt-agagaagtttttttgaagg
+Sbjct 19 ac-a-tatcccatttgtgagagaaggacttgtgaagg 53
+ || | |||||||||||| ||||||| || ||||||
+Query 12087 acgagtatcccatttgt-agagaagtttttttgaagg 12122
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
31 31 0 R 31 0 93825 47 5 83.87
-ctctg-tctctttcttcttcttcttcttcttc
-|||| | |||||||||||| |||||| ||||
-ctctcat-tctttcttcttcctcttctacttc
+Sbjct 0 ctctg-tctctttcttcttcttcttcttcttc 30
+ |||| | |||||||||||| |||||| ||||
+Query 13117 ctctcat-tctttcttcttcctcttctacttc 13147
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 479 183 R 31 0 91402 46 5 83.61
-aagaaaaaagaaaaaaaaagcaag-aaacat
-|| |||||||||||||||| || ||||||
-aataaaaaagaaaaaaaaaattagcaaacat
+Sbjct 183 aagaaaaaagaaaaaaaaagcaag-aaacat 212
+ || |||||||||||||||| || ||||||
+Query 15540 aataaaaaagaaaaaaaaaattagcaaacat 15570
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
32 522 317 R 28 0 88553 42 6 80.00
-atgtttggatgtggataagtatttgacgatta
-|| | ||| | ||| |||| ||||||||||||
-atttctgg-t-tgg-taag-atttgacgatta
+Sbjct 317 atgtttggatgtggataagtatttgacgatta 348
+ || | ||| | ||| |||| ||||||||||||
+Query 18392 atttctgg-t-tgg-taag-atttgacgatta 18419
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
32 1134 277 R 28 0 88553 42 6 80.00
-atgtttggatgtggataagtatttgacgatta
-|| | ||| | ||| |||| ||||||||||||
-atttctgg-t-tgg-taag-atttgacgatta
+Sbjct 277 atgtttggatgtggataagtatttgacgatta 308
+ || | ||| | ||| |||| ||||||||||||
+Query 18392 atttctgg-t-tgg-taag-atttgacgatta 18419
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
32 950 310 R 28 0 85878 42 6 80.00
-ttatgtaatgttttatgtggtttgagttgtaa
-||| || | | | ||| |||||||||||||||
-tta-gt-a-g-tctatctggtttgagttgtaa
+Sbjct 310 ttatgtaatgttttatgtggtttgagttgtaa 341
+ ||| || | | | ||| |||||||||||||||
+Query 21067 tta-gt-a-g-tctatctggtttgagttgtaa 21094
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
32 1041 299 R 28 0 85878 42 6 80.00
-ttatgtaatgttttatgtggtttgagttgtaa
-||| || | | | ||| |||||||||||||||
-tta-gt-a-g-tctatctggtttgagttgtaa
+Sbjct 299 ttatgtaatgttttatgtggtttgagttgtaa 330
+ ||| || | | | ||| |||||||||||||||
+Query 21067 tta-gt-a-g-tctatctggtttgagttgtaa 21094
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
37 1034 237 R 38 0 84004 54 7 81.33
-ttttgttctct-ctttttcaaaaacttatta-agctctt
-||| ||||| | ||||||||||||||| ||| | || ||
-tttcgttctttactttttcaaaaactt-ttacacctatt
+Sbjct 237 ttttgttctct-ctttttcaaaaacttatta-agctctt 273
+ ||| ||||| | ||||||||||||||| ||| | || ||
+Query 22931 tttcgttctttactttttcaaaaactt-ttacacctatt 22968
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
37 965 245 R 38 0 84004 54 7 81.33
-ttttgttctnt-ctttttcaaaaacttatta-agctctt
-||| ||||| | ||||||||||||||| ||| | || ||
-tttcgttctttactttttcaaaaactt-ttacacctatt
+Sbjct 245 ttttgttctnt-ctttttcaaaaacttatta-agctctt 281
+ ||| ||||| | ||||||||||||||| ||| | || ||
+Query 22931 tttcgttctttactttttcaaaaactt-ttacacctatt 22968
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
42 703 366 R 38 0 83361 56 8 80.00
-ctgttttttttttctttttgttgttgatgttgtccttatttg
-||||||||||||| ||||| || ||||| || | | |||||
-ctgttttttttttttttttttttttgat-tt-t-at-atttg
+Sbjct 366 ctgttttttttttctttttgttgttgatgttgtccttatttg 407
+ ||||||||||||| ||||| || ||||| || | | |||||
+Query 23574 ctgttttttttttttttttttttttgat-tt-t-at-atttg 23611
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start
37 777 257 R 38 0 83360 54 7 81.33
-tgttttttttttctttcttgtattgactctat-tttgg
-|||||||||||| ||| || | |||| | ||| |||||
-tgttttttttttttttttttttttgattttatatttgg
+Sbjct 257 tgttttttttttctttcttgtattgactctat-tttgg 293
+ |||||||||||| ||| || | |||| | ||| |||||
+Query 23575 tgttttttttttttttttttttttgattttatatttgg 23612
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tg-t-tttttttttttttttttttttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tg-t-tttttttttttttttttttttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tgtt-ttttttttttttt-tttttttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tgtt-ttttttttttttt-tttttttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tgtttttttttttttttt-tttt-ttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tgtttttttttttttttt-tttt-ttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
30 351 288 R 32 0 83358 44 6 80.65
-tttttttttttttgtt--tt-aataatttggtt
-||||||||||||| || || ||| |||||||
-ttttttttttttttttgattttata-tttggtt
+Sbjct 288 tttttttttttttgtt--tt-aataatttggtt 317
+ ||||||||||||| || || ||| |||||||
+Query 23583 ttttttttttttttttgattttata-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 351 288 R 31 0 83358 46 5 83.61
-ttttttttttttt--g-ttttaataatttggtt
-||||||||||||| | ||||| || |||||||
-tttttttttttttttgatttta-ta-tttggtt
+Sbjct 288 ttttttttttttt--g-ttttaataatttggtt 317
+ ||||||||||||| | ||||| || |||||||
+Query 23584 tttttttttttttttgatttta-ta-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 351 288 R 30 0 83358 48 4 86.67
-ttttttttttttt-g-ttttaataatttggtt
-||||||||||||| | ||||| || |||||||
-ttttttttttttttgatttta-ta-tttggtt
+Sbjct 288 ttttttttttttt-g-ttttaataatttggtt 317
+ ||||||||||||| | ||||| || |||||||
+Query 23585 ttttttttttttttgatttta-ta-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
34 845 164 R 34 0 83345 50 6 82.35
-tttttgttttttgtatttggtttcctttttct-ta
-|||||| |||| |||||||||||| ||||| ||
-tttttga-ttttatatttggtttcccatttctata
+Sbjct 164 tttttgttttttgtatttggtttcctttttct-ta 197
+ |||||| |||| |||||||||||| ||||| ||
+Query 23594 tttttga-ttttatatttggtttcccatttctata 23627
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
33 1487 301 R 30 0 83089 45 6 80.95
-tgtgttaaatggtttgaattagtctaaagtaaa
-|||||||||||| |||||| || |||| |||
-tgtgttaaatgggttgaat--gt-gaaagaaaa
+Sbjct 301 tgtgttaaatggtttgaattagtctaaagtaaa 333
+ |||||||||||| |||||| || |||| |||
+Query 23854 tgtgttaaatgggttgaat--gt-gaaagaaaa 23883
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 811 393 R 30 0 78900 42 6 80.00
-cttttgttcttagtttatagctt-ctactac
-|||||||||||| |||| || || | ||||
-cttttgttctta-tttaaagtttaattctac
+Sbjct 393 cttttgttcttagtttatagctt-ctactac 422
+ |||||||||||| |||| || || | ||||
+Query 28043 cttttgttctta-tttaaagtttaattctac 28072
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
34 859 197 R 31 0 77831 50 5 84.62
-aactaaganncatatatatatatatatatatata
-|| ||| | ||| ||||||||||||||||||||
-aa-taa-ac-catgtatatatatatatatatata
+Sbjct 197 aactaaganncatatatatatatatatatatata 230
+ || ||| | ||| ||||||||||||||||||||
+Query 29111 aa-taa-ac-catgtatatatatatatatatata 29141
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
35 1214 206 R 35 0 77816 70 0 100.00
-tatatatatatatatatatatatatatatatatat
-|||||||||||||||||||||||||||||||||||
-tatatatatatatatatatatatatatatatatat
+Sbjct 206 tatatatatatatatatatatatatatatatatat 240
+ |||||||||||||||||||||||||||||||||||
+Query 29122 tatatatatatatatatatatatatatatatatat 29156
+
37 1214 204 R 37 0 77818 71 1 97.30
-catatatatatatatatatatatatatatatatatat
-||| |||||||||||||||||||||||||||||||||
-catgtatatatatatatatatatatatatatatatat
+Sbjct 204 catatatatatatatatatatatatatatatatatat 240
+ ||| |||||||||||||||||||||||||||||||||
+Query 29118 catgtatatatatatatatatatatatatatatatat 29154
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
34 1214 207 R 34 0 77820 65 1 97.06
-atatatatatatatatatatatatatatatatat
-|| |||||||||||||||||||||||||||||||
-atgtatatatatatatatatatatatatatatat
+Sbjct 207 atatatatatatatatatatatatatatatatat 240
+ || |||||||||||||||||||||||||||||||
+Query 29119 atgtatatatatatatatatatatatatatatat 29152
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
32 1214 209 R 32 0 77822 61 1 96.88
-atatatatatatatatatatatatatatatat
-|| |||||||||||||||||||||||||||||
-atgtatatatatatatatatatatatatatat
+Sbjct 209 atatatatatatatatatatatatatatatat 240
+ || |||||||||||||||||||||||||||||
+Query 29119 atgtatatatatatatatatatatatatatat 29150
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 1214 211 R 30 0 77824 57 1 96.67
-atatatatatatatatatatatatatatat
-|| |||||||||||||||||||||||||||
-atgtatatatatatatatatatatatatat
+Sbjct 211 atatatatatatatatatatatatatatat 240
+ || |||||||||||||||||||||||||||
+Query 29119 atgtatatatatatatatatatatatatat 29148
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1214 201 R 39 0 77826 61 6 84.81
-tcncatatatat-atatatatatatatatatatatatatat
-|| || ||| | || |||||||||||||||||||||||||
-tc-ca-ataaaccatgtatatatatatatatatatatatat
+Sbjct 201 tcncatatatat-atatatatatatatatatatatatatat 240
+ || || ||| | || |||||||||||||||||||||||||
+Query 29108 tc-ca-ataaaccatgtatatatatatatatatatatatat 29146
+
# polishing(m=400,d=-600,p=30): 41/41, seed_on_start, seed_on_end
38 1214 215 R 39 0 77815 59 6 84.42
-atatatatatatatatatatatatatgtctct-tctata
-|| ||||||||||||||||||||||| | | | | ||||
-atgtatatatatatatatatatatatatatatatatata
+Sbjct 215 atatatatatatatatatatatatatgtctct-tctata 252
+ || ||||||||||||||||||||||| | | | | ||||
+Query 29119 atgtatatatatatatatatatatatatatatatatata 29157
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
36 1214 217 R 37 0 77817 55 6 83.56
-atatatatatatatatatatatatgtctct-tctata
-|| ||||||||||||||||||||| | | | | ||||
-atgtatatatatatatatatatatatatatatatata
+Sbjct 217 atatatatatatatatatatatatgtctct-tctata 252
+ || ||||||||||||||||||||| | | | | ||||
+Query 29119 atgtatatatatatatatatatatatatatatatata 29155
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
34 1214 219 R 35 0 77819 51 6 82.61
-atatatatatatatatatatatgtctct-tctata
-|| ||||||||||||||||||| | | | | ||||
-atgtatatatatatatatatatatatatatatata
+Sbjct 219 atatatatatatatatatatatgtctct-tctata 252
+ || ||||||||||||||||||| | | | | ||||
+Query 29119 atgtatatatatatatatatatatatatatatata 29153
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
32 1214 221 R 33 0 77821 47 6 81.54
-atatatatatatatatatatgtctct-tctata
-|| ||||||||||||||||| | | | | ||||
-atgtatatatatatatatatatatatatatata
+Sbjct 221 atatatatatatatatatatgtctct-tctata 252
+ || ||||||||||||||||| | | | | ||||
+Query 29119 atgtatatatatatatatatatatatatatata 29151
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
34 1701 303 R 36 0 77826 52 6 82.86
-aa-aaatctt-tatatatatatatatatntatntat
-|| ||| | | ||||||||||||||||| ||| |||
-aataaaccatgtatatatatatatatatatatatat
+Sbjct 303 aa-aaatctt-tatatatatatatatatntatntat 336
+ || ||| | | ||||||||||||||||| ||| |||
+Query 29111 aataaaccatgtatatatatatatatatatatatat 29146
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
30 1214 223 R 31 0 77823 43 6 80.33
-atatatatatatatatatgtctct-tctata
-|| ||||||||||||||| | | | | ||||
-atgtatatatatatatatatatatatatata
+Sbjct 223 atatatatatatatatatgtctct-tctata 252
+ || ||||||||||||||| | | | | ||||
+Query 29119 atgtatatatatatatatatatatatatata 29149
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
35 1214 205 R 35 0 77815 70 0 100.00
-atatatatatatatatatatatatatatatatata
-|||||||||||||||||||||||||||||||||||
-atatatatatatatatatatatatatatatatata
+Sbjct 205 atatatatatatatatatatatatatatatatata 239
+ |||||||||||||||||||||||||||||||||||
+Query 29123 atatatatatatatatatatatatatatatatata 29157
+
34 1701 303 R 38 0 77824 51 7 80.56
-aa-aaatc-t-t-tatatatatatatatatntatntat
-|| ||| | | | ||||||||||||||||| ||| |||
-aataaaccatgtatatatatatatatatatatatatat
+Sbjct 303 aa-aaatc-t-t-tatatatatatatatatntatntat 336
+ || ||| | | | ||||||||||||||||| ||| |||
+Query 29111 aataaaccatgtatatatatatatatatatatatatat 29148
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
36 1214 205 R 35 0 77813 68 1 97.18
-atatatatatatatatatatatatatatatatatat
-||||||||||||||||||||||||||||||||| ||
-atatatatatatatatatatatatatatatata-at
+Sbjct 205 atatatatatatatatatatatatatatatatatat 240
+ ||||||||||||||||||||||||||||||||| ||
+Query 29125 atatatatatatatatatatatatatatatata-at 29159
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 1214 205 R 39 0 77807 67 3 92.11
-atatatatatatatatatatatatatatata-tata-tg
-||||||||||||||||||||||||||||||| || | ||
-atatatatatatatatatatatatatatataatagaatg
+Sbjct 205 atatatatatatatatatatatatatatata-tata-tg 241
+ ||||||||||||||||||||||||||||||| || | ||
+Query 29127 atatatatatatatatatatatatatatataatagaatg 29165
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
30 1701 307 R 30 0 77820 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29123 atatatatatatatatatatatatatatat 29152
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1524 237 R 42 0 77802 58 8 80.49
-atatatatatatatatatatagtctttata-ta-a-tgtctta
-||||||||||||||||||||| | | |||| || | || |||
-atatatatatatatatatata-tatatataatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtctttata-ta-a-tgtctta 276
+ ||||||||||||||||||||| | | |||| || | || |||
+Query 29129 atatatatatatatatatata-tatatataatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 43/43, seed_on_start, seed_on_end
37 1214 205 R 37 0 77807 65 3 91.89
-atatatatatatatatatatatatatatatatata-tg
-||||||||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatatatatata-atagaatg
+Sbjct 205 atatatatatatatatatatatatatatatatata-tg 241
+ ||||||||||||||||||||||||||||| ||| | ||
+Query 29129 atatatatatatatatatatatatatata-atagaatg 29165
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
30 1701 307 R 30 0 77818 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29125 atatatatatatatatatatatatatatat 29154
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1524 237 R 40 0 77802 59 7 82.50
-atatatatatatatatatatagtcttta-tataatgtctta
-||||||||||||||||||||| | | || || |||| |||
-atatatatatatatatatata-tatataatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtcttta-tataatgtctta 276
+ ||||||||||||||||||||| | | || || |||| |||
+Query 29131 atatatatatatatatatata-tatataatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 41/41, seed_on_start, seed_on_end
37 1214 205 R 35 0 77807 63 3 91.67
-atatatatatatatatatatatatatatatatatatg
-||||||||||||||||||||||||||| ||| | |||
-atatatatatatatatatatatatata-ataga-atg
+Sbjct 205 atatatatatatatatatatatatatatatatatatg 241
+ ||||||||||||||||||||||||||| ||| | |||
+Query 29131 atatatatatatatatatatatatata-ataga-atg 29165
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
30 1701 307 R 30 0 77816 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29127 atatatatatatatatatatatatatatat 29156
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1524 237 R 38 0 77802 57 7 82.05
-atatatatatatatatatatagtctttatataatgtctta
-||||||||||||||||||||| | | ||| |||| |||
-atatatatatatatatatata-tat-aatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtctttatataatgtctta 276
+ ||||||||||||||||||||| | | ||| |||| |||
+Query 29133 atatatatatatatatatata-tat-aatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 40/40, seed_on_start, seed_on_end
34 1214 205 R 32 0 77808 57 3 90.91
-atatatatatatatatatatatatatatatatat
-||||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatatata-ataga-at
+Sbjct 205 atatatatatatatatatatatatatatatatat 238
+ ||||||||||||||||||||||||| ||| | ||
+Query 29133 atatatatatatatatatatatata-ataga-at 29164
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
32 1214 205 R 30 0 77808 53 3 90.32
-atatatatatatatatatatatatatatatat
-||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatata-ataga-at
+Sbjct 205 atatatatatatatatatatatatatatatat 236
+ ||||||||||||||||||||||| ||| | ||
+Query 29135 atatatatatatatatatatata-ataga-at 29164
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 357 287 R 32 0 77145 45 6 80.95
-tga-attttcttcatggtacatttttctaaaa
-||| ||| ||||| | ||||||||||||||
-tgatattatcttctttaaacatttttctaaaa
+Sbjct 287 tga-attttcttcatggtacatttttctaaaa 317
+ ||| ||| ||||| | ||||||||||||||
+Query 29796 tgatattatcttctttaaacatttttctaaaa 29827
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 79 224 R 32 0 75548 44 6 80.65
-ttaagttg-aagaa-aagaagaagttttcgtt
-||||| | ||| | |||||||||||||| ||
-ttaagaggtaagtagaagaagaagttttcctt
+Sbjct 224 ttaagttg-aagaa-aagaagaagttttcgtt 253
+ ||||| | ||| | |||||||||||||| ||
+Query 31393 ttaagaggtaagtagaagaagaagttttcctt 31424
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
29 1495 169 R 32 0 75548 43 6 80.33
-ttaagttg-aag-a-aagaagaagttttcgtt
-||||| | ||| | |||||||||||||| ||
-ttaagaggtaagtagaagaagaagttttcctt
+Sbjct 169 ttaagttg-aag-a-aagaagaagttttcgtt 197
+ ||||| | ||| | |||||||||||||| ||
+Query 31393 ttaagaggtaagtagaagaagaagttttcctt 31424
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1055 285 R 32 0 74770 45 6 80.95
-attgttg--taataaacttgtgaaagtgatttt
-||| ||| |||| || || |||||||||||||
-att-ttgattaatcaaattttgaaagtgatttt
+Sbjct 285 attgttg--taataaacttgtgaaagtgatttt 315
+ ||| ||| |||| || || |||||||||||||
+Query 32171 att-ttgattaatcaaattttgaaagtgatttt 32202
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 1542 430 R 32 0 74770 45 6 80.95
-attgttg--taataaacttgtgaaagtgatttt
-||| ||| |||| || || |||||||||||||
-att-ttgattaatcaaattttgaaagtgatttt
+Sbjct 430 attgttg--taataaacttgtgaaagtgatttt 460
+ ||| ||| |||| || || |||||||||||||
+Query 32171 att-ttgattaatcaaattttgaaagtgatttt 32202
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
36 1565 142 R 34 0 74565 49 7 80.00
-ag-atcttcccaaatgttaagcaagataaaaaaaaca
-|| || || ||||| ||||| || ||||||||||||
-agaatttt-ccaaaaattaag-aa-ataaaaaaaaca
+Sbjct 142 ag-atcttcccaaatgttaagcaagataaaaaaaaca 177
+ || || || ||||| ||||| || ||||||||||||
+Query 32374 agaatttt-ccaaaaattaag-aa-ataaaaaaaaca 32407
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
31 335 262 R 31 0 74523 50 4 87.10
-atgaaat-aaagtgttctcaaaatgtttatga
-|| |||| ||||| ||| ||||||||||||||
-ataaaataaaagttttc-caaaatgtttatga
+Sbjct 262 atgaaat-aaagtgttctcaaaatgtttatga 292
+ || |||| ||||| ||| ||||||||||||||
+Query 32419 ataaaataaaagttttc-caaaatgtttatga 32449
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1059 469 R 31 0 74523 50 4 87.10
-atgaaat-aaagtgttctcaaaatgtttatga
-|| |||| ||||| ||| ||||||||||||||
-ataaaataaaagttttc-caaaatgtttatga
+Sbjct 469 atgaaat-aaagtgttctcaaaatgtttatga 499
+ || |||| ||||| ||| ||||||||||||||
+Query 32419 ataaaataaaagttttc-caaaatgtttatga 32449
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
34 270 358 R 32 0 74379 48 6 81.82
-gtaatatcaaaataaataaaaaaaa-acttattcc
-|||| || |||| |||||||||||| | || ||||
-gtaa-ataaaaa-aaataaaaaaaagaatt-ttcc
+Sbjct 358 gtaatatcaaaataaataaaaaaaa-acttattcc 391
+ |||| || |||| |||||||||||| | || ||||
+Query 32562 gtaa-ataaaaa-aaataaaaaaaagaatt-ttcc 32593
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
32 166 119 R 30 0 74340 53 3 90.32
-gaaagttgaaaaaaaaaaatcttatttccaaa
-||||||| |||||||||||| || ||||||||
-gaaagttaaaaaaaaaaaat-tt-tttccaaa
+Sbjct 119 gaaagttgaaaaaaaaaaatcttatttccaaa 150
+ ||||||| |||||||||||| || ||||||||
+Query 32603 gaaagttaaaaaaaaaaaat-tt-tttccaaa 32632
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1257 181 R 30 0 73427 43 6 80.33
-atttaaaaattgctccccaaaaaaaaaaaat
-|||||||||||| | |||||| ||| |||
-atttaaaaattg-tgaacaaaaataaataat
+Sbjct 181 atttaaaaattgctccccaaaaaaaaaaaat 211
+ |||||||||||| | |||||| ||| |||
+Query 33516 atttaaaaattg-tgaacaaaaataaataat 33545
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 1480 383 R 30 0 70767 43 6 80.33
-ttttttactttttatcttttacttaggtctt
-||| | | |||| || || ||||||||||||
-tttataaattttcat-ttatacttaggtctt
+Sbjct 383 ttttttactttttatcttttacttaggtctt 413
+ ||| | | |||| || || ||||||||||||
+Query 36176 tttataaattttcat-ttatacttaggtctt 36205
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
28 635 184 R 32 0 66537 42 6 80.00
-cactaagaaggaga-a-a-tttactggag-gc
-|||||||||||||| | | || |||||| ||
-cactaagaaggagatagaggttgctggagagc
+Sbjct 184 cactaagaaggaga-a-a-tttactggag-gc 211
+ |||||||||||||| | | || |||||| ||
+Query 40404 cactaagaaggagatagaggttgctggagagc 40435
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
34 155 13 R 29 0 63670 45 6 80.95
-gttcatttccttgaaaacggttacagaattaggg
-|||| ||| ||| |||| || ||||||||||||
-gttc-ttt-ctt-aaaatgg--acagaattaggg
+Sbjct 13 gttcatttccttgaaaacggttacagaattaggg 46
+ |||| ||| ||| |||| || ||||||||||||
+Query 43274 gttc-ttt-ctt-aaaatgg--acagaattaggg 43302
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
35 870 405 R 36 0 52827 53 6 83.10
-atttccctaaaaaataaacaaaaaaaaatgta--taa
-|| | ||||||||| ||| ||||||||||||| |||
-atgtacctaaaaaaaaaa-aaaaaaaaatgtacctaa
+Sbjct 405 atttccctaaaaaataaacaaaaaaaaatgta--taa 439
+ || | ||||||||| ||| ||||||||||||| |||
+Query 54110 atgtacctaaaaaaaaaa-aaaaaaaaatgtacctaa 54145
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
30 1397 172 R 31 0 51775 43 6 80.33
-ctac-aaa-taaaatgggacaaaaaaaaagaa
-|||| ||| || | | ||| ||||||||||||
-ctacgaaactagact-ggaaaaaaaaaaagaa
+Sbjct 172 ctac-aaa-taaaatgggacaaaaaaaaagaa 201
+ |||| ||| || | | ||| ||||||||||||
+Query 55167 ctacgaaactagact-ggaaaaaaaaaaagaa 55197
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1895 132 R 30 0 50674 43 6 80.33
-agaaatc-tatgcacaaggaagaatctctgat
-|| |||| | |||||||||||||| |||||
-ag-aatcttgtgcacaaggaagaa-aactgat
+Sbjct 132 agaaatc-tatgcacaaggaagaatctctgat 162
+ || |||| | |||||||||||||| |||||
+Query 56269 ag-aatcttgtgcacaaggaagaa-aactgat 56298
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
39 1403 176 R 35 0 49809 56 6 83.78
-aaaaagatcaaagagagagagagagagagagagagaaag
-||||| | ||| ||||| |||| |||||||||||||||
-aaaaa-a--aaa-agagatagagggagagagagagaaag
+Sbjct 176 aaaaagatcaaagagagagagagagagagagagagaaag 214
+ ||||| | ||| ||||| |||| |||||||||||||||
+Query 57129 aaaaa-a--aaa-agagatagagggagagagagagaaag 57163
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
38 1403 175 R 34 0 49810 54 6 83.33
-aaaaaagatcaaagagagagagagagagagagagagaa
-|||||| | ||||||| |||| |||||||||||| ||
-aaaaaa-a--aaagagatagagggagagagagaga-aa
+Sbjct 175 aaaaaagatcaaagagagagagagagagagagagagaa 212
+ |||||| | ||||||| |||| |||||||||||| ||
+Query 57129 aaaaaa-a--aaagagatagagggagagagagaga-aa 57162
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
36 1403 175 R 35 0 49809 50 7 80.28
-aaaaaagatcaaagagagagagagagagagagagag
-|||||| | | ||| |||| |||||||||||| ||
-aaaaaaaaa-agagatagagggagagagagagaaag
+Sbjct 175 aaaaaagatcaaagagagagagagagagagagagag 210
+ |||||| | | ||| |||| |||||||||||| ||
+Query 57129 aaaaaaaaa-agagatagagggagagagagagaaag 57163
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 1403 175 R 34 0 49806 50 7 80.28
-aaaaaagatcaaagagagagagagagagagagagaga
-|||||||| | |||| |||||||||||| | || ||
-aaaaaagag-atagagggagagagagaga-a-agtga
+Sbjct 175 aaaaaagatcaaagagagagagagagagagagagaga 211
+ |||||||| | |||| |||||||||||| | || ||
+Query 57133 aaaaaagag-atagagggagagagagaga-a-agtga 57166
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
28 314 160 R 32 0 43281 42 6 80.00
-gagagagagagaga-a-ag-caga-agaagaa
-|||||||||||||| | || |||| | || ||
-gagagagagagagagagagtcagacaaaaaaa
+Sbjct 160 gagagagagagaga-a-ag-caga-agaagaa 187
+ |||||||||||||| | || |||| | || ||
+Query 63660 gagagagagagagagagagtcagacaaaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 314 158 R 32 0 43281 47 5 83.87
-gagagagagagagagaaag-caga-agaagaa
-|||||||||||||||| || |||| | || ||
-gagagagagagagagagagtcagacaaaaaaa
+Sbjct 158 gagagagagagagagaaag-caga-agaagaa 187
+ |||||||||||||||| || |||| | || ||
+Query 63660 gagagagagagagagagagtcagacaaaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 1403 192 R 31 0 43282 52 3 90.16
-gagagagagagagagagagaaaga-aaaaaa
-||||||||||||||||||| ||| ||||||
-gagagagagagagagagagtcagacaaaaaa
+Sbjct 192 gagagagagagagagagagaaaga-aaaaaa 221
+ ||||||||||||||||||| ||| ||||||
+Query 63660 gagagagagagagagagagtcagacaaaaaa 63690
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
32 1403 190 R 32 0 43281 52 4 87.50
-gagagagagagagagagagagaaagaaaaaaa
-||||||||||||||||||| | | |||||||
-gagagagagagagagagagtcagacaaaaaaa
+Sbjct 190 gagagagagagagagagagagaaagaaaaaaa 221
+ ||||||||||||||||||| | | |||||||
+Query 63660 gagagagagagagagagagtcagacaaaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
33 1403 188 R 32 0 43281 53 4 87.69
-gagagagagagagagagagagagaaagaaaaaa
-||||||||||||||||||| ||| | ||||||
-gagagagagagagagagagtcagaca-aaaaaa
+Sbjct 188 gagagagagagagagagagagagaaagaaaaaa 220
+ ||||||||||||||||||| ||| | ||||||
+Query 63660 gagagagagagagagagagtcagaca-aaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1403 187 R 31 0 43281 51 4 87.30
-agagagagagagagagagagagagaaagaaaa
-|||||||||||||||||| ||| ||| ||||
-agagagagagagagagagtcagacaaa-aaaa
+Sbjct 187 agagagagagagagagagagagagaaagaaaa 218
+ |||||||||||||||||| ||| ||| ||||
+Query 63661 agagagagagagagagagtcagacaaa-aaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 314 158 R 30 0 43281 42 6 80.00
-gagagagagagagagaaagcaga-agaagaa
-|||||||||||||||| |||| | || ||
-gagagagagagagaga-gtcagacaaaaaaa
+Sbjct 158 gagagagagagagagaaagcaga-agaagaa 187
+ |||||||||||||||| |||| | || ||
+Query 63662 gagagagagagagaga-gtcagacaaaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 1403 187 R 29 0 43281 45 5 83.33
-agagagagagagagagagagagagaaagaaa
-|||||||||||||||| ||| | ||| |||
-agagagagagagagagtcagaca-aaa-aaa
+Sbjct 187 agagagagagagagagagagagagaaagaaa 217
+ |||||||||||||||| ||| | ||| |||
+Query 63663 agagagagagagagagtcagaca-aaa-aaa 63691
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
32 442 118 R 34 0 43184 48 6 81.82
-ctttcttcttctttgttttgg-ggt-tccagtct
-|||||||||||||| | |||| || || |||||
-ctttcttcttctttttgttggaagtctcaagtct
+Sbjct 118 ctttcttcttctttgttttgg-ggt-tccagtct 149
+ |||||||||||||| | |||| || || |||||
+Query 63755 ctttcttcttctttttgttggaagtctcaagtct 63788
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
36 249 271 R 38 0 41333 53 7 81.08
-agttcatccagatattggt-atttca-ag-caaagctat
-|||||||||||||| |||| ||| || || ||| | |||
-agttcatccagatagtggtcatt-catagacaatggtat
+Sbjct 271 agttcatccagatattggt-atttca-ag-caaagctat 306
+ |||||||||||||| |||| ||| || || ||| | |||
+Query 65602 agttcatccagatagtggtcatt-catagacaatggtat 65639
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
35 1275 281 R 34 0 40045 54 5 85.51
-tttttttgccattgacaattttt-ccttcttccttc
-|||||||| |||| | |||||| ||||||||||||
-tttttttgtcatt-at-atttttgccttcttccttc
+Sbjct 281 tttttttgccattgacaattttt-ccttcttccttc 315
+ |||||||| |||| | |||||| ||||||||||||
+Query 66894 tttttttgtcatt-at-atttttgccttcttccttc 66927
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
28 1894 15 R 32 0 37196 42 6 80.00
-ataatc-caaaaaaaaaaaccat-a-t-tttt
-|| ||| |||||||||||| ||| | | ||||
-attatcacaaaaaaaaaaaacattaatctttt
+Sbjct 15 ataatc-caaaaaaaaaaaccat-a-t-tttt 42
+ || ||| |||||||||||| ||| | | ||||
+Query 69745 attatcacaaaaaaaaaaaacattaatctttt 69776
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
33 1214 218 R 28 0 36466 43 6 80.33
-tatatatatatatatatatatatgtctcttcta
-||||||||||||||| ||| | || |||| ||
-tatatatatatatat-tat-t-tga-tctt-ta
+Sbjct 218 tatatatatatatatatatatatgtctcttcta 250
+ ||||||||||||||| ||| | || |||| ||
+Query 70479 tatatatatatatat-tat-t-tga-tctt-ta 70506
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
29 1701 314 R 32 0 36462 43 6 80.33
-tatatatatatatatntatnt-at-ttt--ttt
-||||||||||||||| ||| | || ||| |||
-tatatatatatatat-tatttgatctttagttt
+Sbjct 314 tatatatatatatatntatnt-at-ttt--ttt 342
+ ||||||||||||||| ||| | || ||| |||
+Query 70479 tatatatatatatat-tatttgatctttagttt 70510
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 1458 316 R 32 0 34905 48 5 84.13
-taaca-tatggttt-tttgttttgtttttcttc
-||||| ||| ||| |||||||||||||| |||
-taacagtattctttgtttgttttgttttt-ttc
+Sbjct 316 taaca-tatggttt-tttgttttgtttttcttc 346
+ ||||| ||| ||| |||||||||||||| |||
+Query 72036 taacagtattctttgtttgttttgttttt-ttc 72067
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1712 5 R 29 0 33440 43 6 80.33
-aggatgataacgtcgtccctaacctcatctct
-|||| | | || | || |||||||||||||||
-agga-g-tcac-tggttcctaacctcatctct
+Sbjct 5 aggatgataacgtcgtccctaacctcatctct 36
+ |||| | | || | || |||||||||||||||
+Query 73504 agga-g-tcac-tggttcctaacctcatctct 73532
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 323 367 R 30 0 27210 42 6 80.00
-ttgttgaagaagtttatacata--aaa-agtta
-|| || ||| |||||||||||| ||| |||||
-tt-tt-aag-agtttatacatatcaaacagtta
+Sbjct 367 ttgttgaagaagtttatacata--aaa-agtta 396
+ || || ||| |||||||||||| ||| |||||
+Query 79733 tt-tt-aag-agtttatacatatcaaacagtta 79762
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 573 274 R 29 0 26867 42 6 80.00
-ggttctttggtttggtttgtgtctctt-gatt
-|| | ||||||||||||| | || ||| ||||
-ggct-tttggtttggttt-t-tccctttgatt
+Sbjct 274 ggttctttggtttggtttgtgtctctt-gatt 304
+ || | ||||||||||||| | || ||| ||||
+Query 80077 ggct-tttggtttggttt-t-tccctttgatt 80105
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1106 281 R 29 0 22621 42 6 80.00
-cttcttcagattactttacctactctctatc
-|| |||| | || | || |||||||||||||
-ctccttc-g-ttgcgtttcctactctctatc
+Sbjct 281 cttcttcagattactttacctactctctatc 311
+ || |||| | || | || |||||||||||||
+Query 84323 ctccttc-g-ttgcgtttcctactctctatc 84351
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 71 84 R 33 0 21526 46 6 81.25
-tttgc-tattccttcctcttctctc-gtaaagg
-|||| | |||||||||||| | || |||||||
-tttgtgttttccttcctcttttgtcagtaaagg
+Sbjct 84 tttgc-tattccttcctcttctctc-gtaaagg 114
+ |||| | |||||||||||| | || |||||||
+Query 85414 tttgtgttttccttcctcttttgtcagtaaagg 85446
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 323 267 R 29 0 21401 42 6 80.00
-tgtgcgtatcaa-attttggatgggaaatttg
-|||||||||||| || || ||| |||||||
-tgtgcgtatcaacatatt-aatg--aaatttg
+Sbjct 267 tgtgcgtatcaa-attttggatgggaaatttg 297
+ |||||||||||| || || ||| |||||||
+Query 85543 tgtgcgtatcaacatatt-aatg--aaatttg 85571
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
28 944 307 R 32 0 21134 42 6 80.00
-gtat-t-ctcacatatatatat-tatga-taa
-|||| | | ||||||||||||| ||| | |||
-gtatatacacacatatatatatatatcaataa
+Sbjct 307 gtat-t-ctcacatatatatat-tatga-taa 334
+ |||| | | ||||||||||||| ||| | |||
+Query 85807 gtatatacacacatatatatatatatcaataa 85838
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
32 1214 206 R 33 0 21135 47 6 81.54
-ta-tatatatatatatatatatatatatatata
-|| |||||| | | |||||||||||||| |||
-tagtatatacacacatatatatatatatcaata
+Sbjct 206 ta-tatatatatatatatatatatatatatata 237
+ || |||||| | | |||||||||||||| |||
+Query 85805 tagtatatacacacatatatatatatatcaata 85837
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1214 208 R 33 0 21135 47 6 81.54
-ta-tatatatatatatatatatatatatatata
-|| |||||| | | |||||||||||||| |||
-tagtatatacacacatatatatatatatcaata
+Sbjct 208 ta-tatatatatatatatatatatatatatata 239
+ || |||||| | | |||||||||||||| |||
+Query 85805 tagtatatacacacatatatatatatatcaata 85837
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 1214 210 R 33 0 21135 45 6 80.95
-ta-tatatatatatatatatatatatat-a-ta
-|| |||||| | | |||||||||||||| | ||
-tagtatatacacacatatatatatatatcaata
+Sbjct 210 ta-tatatatatatatatatatatatat-a-ta 239
+ || |||||| | | |||||||||||||| | ||
+Query 85805 tagtatatacacacatatatatatatatcaata 85837
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
33 859 211 R 31 0 20269 46 6 81.25
-tatatatatatatatatataaagcaaacatgtt
-|||| ||||||||||||| ||| || | || ||
-tata-atatatatatataaaaaacatatat-tt
+Sbjct 211 tatatatatatatatatataaagcaaacatgtt 243
+ |||| ||||||||||||| ||| || | || ||
+Query 86673 tata-atatatatatataaaaaacatatat-tt 86703
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1214 205 R 29 0 20267 43 6 80.33
-atatatatatatatatatatatatatatatat
-||||||||||||| | | | |||||| | |||
-atatatatatata-aaaaacatatat-t-tat
+Sbjct 205 atatatatatatatatatatatatatatatat 236
+ ||||||||||||| | | | |||||| | |||
+Query 86677 atatatatatata-aaaaacatatat-t-tat 86705
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
37 1214 208 R 36 0 20264 52 7 80.82
-tatatatatatatatatatata-tatatatatatgtct
-|||| ||||||||||||| | | |||||| |||| ||
-tata-atatatatatataaaaaacatatatttatg-ct
+Sbjct 208 tatatatatatatatatatata-tatatatatatgtct 244
+ |||| ||||||||||||| | | |||||| |||| ||
+Query 86673 tata-atatatatatataaaaaacatatatttatg-ct 86708
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
29 38 44 R 33 0 17928 44 6 80.65
-tact-tgtc-tctctctctctctctct-t-tca
-|| | |||| ||| ||||||||||||| | |||
-tagtctgtcgtctgtctctctctctctctctca
+Sbjct 44 tact-tgtc-tctctctctctctctct-t-tca 72
+ || | |||| ||| ||||||||||||| | |||
+Query 89012 tagtctgtcgtctgtctctctctctctctctca 89044
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 1584 1 R 31 0 17929 44 6 80.65
-agctct-tcttctctatctctctctctccctc
-|| ||| || ||| | |||||||||||| |||
-ag-tctgtcgtctgtctctctctctctctctc
+Sbjct 1 agctct-tcttctctatctctctctctccctc 31
+ || ||| || ||| | |||||||||||| |||
+Query 89013 ag-tctgtcgtctgtctctctctctctctctc 89043
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
33 1524 244 R 33 0 17258 48 6 81.82
-tatatatatatatagtctttata-taatgtctta
-|||||||||||||| | | |||| || | |||||
-tatatatatatata-tatatatactattctctta
+Sbjct 244 tatatatatatatagtctttata-taatgtctta 276
+ |||||||||||||| | | |||| || | |||||
+Query 89682 tatatatatatata-tatatatactattctctta 89714
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
36 1524 238 R 37 0 17254 52 7 80.82
-tatatatatatatatatatagtct-ttatat-aatgtc
-|||||||||||||||||||| || || | | ||| ||
-tatatatatatatatatatatactattctcttaat-tc
+Sbjct 238 tatatatatatatatatatagtct-ttatat-aatgtc 273
+ |||||||||||||||||||| || || | | ||| ||
+Query 89682 tatatatatatatatatatatactattctcttaat-tc 89718
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
41 1214 192 R 36 0 17265 56 7 81.82
-aactgatcctcncatatatatatatatatatatatatatat
-|||| | ||| | |||||||||||||||||||||| |||
-aactt-t-ctc-c-tatatatatatatatatatatac-tat
+Sbjct 192 aactgatcctcncatatatatatatatatatatatatatat 232
+ |||| | ||| | |||||||||||||||||||||| |||
+Query 89672 aactt-t-ctc-c-tatatatatatatatatatatac-tat 89707
+
# polishing(m=400,d=-600,p=30): 41/41, seed_on_start, seed_on_end
33 1214 212 R 31 0 17260 52 4 87.50
-tatatatatatatatatatatatatatatgtct
-|||||||||||||||||||||| ||| | |||
-tatatatatatatatatatatac-tat-tctct
+Sbjct 212 tatatatatatatatatatatatatatatgtct 244
+ |||||||||||||||||||||| ||| | |||
+Query 89682 tatatatatatatatatatatac-tat-tctct 89712
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
34 1214 214 R 32 0 17259 57 3 90.91
-tatatatatatatatatatatatatatgtctctt
-|||||||||||||||||||||| ||| ||||||
-tatatatatatatatatatatac-tat-tctctt
+Sbjct 214 tatatatatatatatatatatatatatgtctctt 247
+ |||||||||||||||||||||| ||| ||||||
+Query 89682 tatatatatatatatatatatac-tat-tctctt 89713
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
32 1214 216 R 32 0 17259 58 2 93.75
-tatatatatatatatatatata-tatgtctctt
-|||||||||||||||||||||| ||| ||||||
-tatatatatatatatatatatactat-tctctt
+Sbjct 216 tatatatatatatatatatata-tatgtctctt 247
+ |||||||||||||||||||||| ||| ||||||
+Query 89682 tatatatatatatatatatatactat-tctctt 89713
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
35 1214 218 R 33 0 17258 53 5 85.29
-tatatatatatatatatatata-tgtctcttctata
-|||||||||||||||||||||| | | ||| || ||
-tatatatatatatatatatatactat-tct-ct-ta
+Sbjct 218 tatatatatatatatatatata-tgtctcttctata 252
+ |||||||||||||||||||||| | | ||| || ||
+Query 89682 tatatatatatatatatatatactat-tct-ct-ta 89714
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
35 1701 308 R 37 0 17259 51 7 80.56
-tctt-tatatatatatatatatntat-ntattttttt
-||| ||||||||||||||||| ||| |||| | ||
-tctcctatatatatatatatatatatactattctctt
+Sbjct 308 tctt-tatatatatatatatatntat-ntattttttt 342
+ ||| ||||||||||||||||| ||| |||| | ||
+Query 89677 tctcctatatatatatatatatatatactattctctt 89713
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
37 1524 237 R 36 0 17254 55 6 83.56
-atatatatatatatatatatagtctt-tatataatgtc
-||||||||||||||||||||| | || | | |||| ||
-atatatatatatatatatatactattctct-taat-tc
+Sbjct 237 atatatatatatatatatatagtctt-tatataatgtc 273
+ ||||||||||||||||||||| | || | | |||| ||
+Query 89683 atatatatatatatatatatactattctct-taat-tc 89718
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
34 1701 309 R 33 0 17259 49 6 82.09
-ctttatatatatatatatatntatntattttttt
-|| ||||||||||||||||| || |||| | ||
-ctatatatatatatatatatata-ctattctctt
+Sbjct 309 ctttatatatatatatatatntatntattttttt 342
+ || ||||||||||||||||| || |||| | ||
+Query 89681 ctatatatatatatatatatata-ctattctctt 89713
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
30 1257 299 R 32 0 13647 44 6 80.65
-atata-ga-aatg-aggagaggaaaaaaaagaa
-||||| || || | || ||||||||||||| ||
-atatacgacaacgaagaagaggaaaaaaaa-aa
+Sbjct 299 atata-ga-aatg-aggagaggaaaaaaaagaa 328
+ ||||| || || | || ||||||||||||| ||
+Query 93294 atatacgacaacgaagaagaggaaaaaaaa-aa 93325
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
36 124 120 R 32 0 8890 50 6 82.35
-ttactatcttcttctccttcttcttcctcctcaatg
-|| |||| ||||||||||||| |||| |||| | ||
-tt-ctat-ttcttctccttctccttc-tcctta-tg
+Sbjct 120 ttactatcttcttctccttcttcttcctcctcaatg 155
+ || |||| ||||||||||||| |||| |||| | ||
+Query 98051 tt-ctat-ttcttctccttctccttc-tcctta-tg 98082
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
36 817 239 R 34 0 6628 49 7 80.00
-gatgaagaagaagaagaagcacattgagactggaga
-|| |||||||||||||||| | || ||| |||||
-gaagaagaagaagaagaagaatat-aaga-gggaga
+Sbjct 239 gatgaagaagaagaagaagcacattgagactggaga 274
+ || |||||||||||||||| | || ||| |||||
+Query 100311 gaagaagaagaagaagaagaatat-aaga-gggaga 100344
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
35 1080 25 R 35 0 6597 49 7 80.00
-gagagagagagag-ggaagaggaaggaggaagatga
-||||||||||||| |||| | |||| | |||| ||
-gagagagagagagaggaaaaagaag-ataaagacga
+Sbjct 25 gagagagagagag-ggaagaggaaggaggaagatga 59
+ ||||||||||||| |||| | |||| | |||| ||
+Query 100341 gagagagagagagaggaaaaagaag-ataaagacga 100375
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
31 314 158 R 29 0 6601 45 5 83.33
-gagagagagagagagaaagcagaagaagaag
-||||||||||||| |||| |||||| |||
-gagagagagagag-gaaa-aagaagataaag
+Sbjct 158 gagagagagagagagaaagcagaagaagaag 188
+ ||||||||||||| |||| |||||| |||
+Query 100343 gagagagagagag-gaaa-aagaagataaag 100371
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
30 103 74 R 32 0 5954 44 6 80.65
-cttcttcttcttcttct-cttc-taatcct-ag
-||||||||||||||||| || | | ||| | ||
-cttcttcttcttcttcttct-catgatcatcag
+Sbjct 74 cttcttcttcttcttct-cttc-taatcct-ag 103
+ ||||||||||||||||| || | | ||| | ||
+Query 100987 cttcttcttcttcttcttct-catgatcatcag 101018
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 31 4 R 33 0 5963 52 4 87.50
-gtct-cttt-cttcttcttcttcttcttctcat
-|||| || |||||||||||||||||||||||
-gtctactcaacttcttcttcttcttcttctcat
+Sbjct 4 gtct-cttt-cttcttcttcttcttcttctcat 34
+ |||| || |||||||||||||||||||||||
+Query 100977 gtctactcaacttcttcttcttcttcttctcat 101009
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 632 159 R 33 0 5968 47 6 81.54
-tccaggtgt-ctcttcttcttcttcttcttctt
-||| || | ||| ||||||||||||||||||
-tccgagtctactcaacttcttcttcttcttctt
+Sbjct 159 tccaggtgt-ctcttcttcttcttcttcttctt 190
+ ||| || | ||| ||||||||||||||||||
+Query 100972 tccgagtctactcaacttcttcttcttcttctt 101004
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
33 524 303 R 32 0 5074 56 3 90.77
-ggaagtagaagaagaagaagacgaagaagatga
-||||| ||||||||||||||| |||||||| ||
-ggaag-agaagaagaagaagaagaagaagaaga
+Sbjct 303 ggaagtagaagaagaagaagacgaagaagatga 335
+ ||||| ||||||||||||||| |||||||| ||
+Query 101867 ggaag-agaagaagaagaagaagaagaagaaga 101898
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 856 0 R 31 0 5074 50 4 87.10
-gaagaagaagaagaagaaggagaa-aagatga
-|||| |||||||||||||| |||| |||| ||
-gaag-agaagaagaagaagaagaagaagaaga
+Sbjct 0 gaagaagaagaagaagaaggagaa-aagatga 30
+ |||| |||||||||||||| |||| |||| ||
+Query 101868 gaag-agaagaagaagaagaagaagaagaaga 101898
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 856 0 R 32 0 5068 54 3 90.48
-gaagaagaagaagaagaaggagaa-aagatga
-||||||||||||||||||| |||| |||| ||
-gaagaagaagaagaagaagaagaagaagaaga
+Sbjct 0 gaagaagaagaagaagaaggagaa-aagatga 30
+ ||||||||||||||||||| |||| |||| ||
+Query 101873 gaagaagaagaagaagaagaagaagaagaaga 101904
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 953 116 R 29 0 5076 42 6 80.00
-gataaagaagagaagaagaagaa-aaggagaa
-|| | || | ||||||||||||| ||| ||||
-ga-agag-a-agaagaagaagaagaagaagaa
+Sbjct 116 gataaagaagagaagaagaagaa-aaggagaa 146
+ || | || | ||||||||||||| ||| ||||
+Query 101868 ga-agag-a-agaagaagaagaagaagaagaa 101896
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 856 0 R 32 0 5065 54 3 90.48
-gaagaagaagaagaagaaggagaa-aagatga
-||||||||||||||||||| |||| |||| ||
-gaagaagaagaagaagaagaagaagaagaaga
+Sbjct 0 gaagaagaagaagaagaaggagaa-aagatga 30
+ ||||||||||||||||||| |||| |||| ||
+Query 101876 gaagaagaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
34 1700 142 R 34 0 5068 50 6 82.35
-gagaa-aagaagaagaaggtaggagaagatcaaga
-||||| |||||||||||| || |||||| ||||
-gagaagaagaagaagaag-aagaagaagaagaaga
+Sbjct 142 gagaa-aagaagaagaaggtaggagaagatcaaga 175
+ ||||| |||||||||||| || |||||| ||||
+Query 101871 gagaagaagaagaagaag-aagaagaagaagaaga 101904
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
31 953 116 R 32 0 5073 48 5 84.13
-gataaagaag-agaagaagaagaa-aaggagaa
-|| | ||||| ||||||||||||| ||| ||||
-ga-agagaagaagaagaagaagaagaagaagaa
+Sbjct 116 gataaagaag-agaagaagaagaa-aaggagaa 146
+ || | ||||| ||||||||||||| ||| ||||
+Query 101868 ga-agagaagaagaagaagaagaagaagaagaa 101899
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
34 20 9 R 32 0 5073 51 5 84.85
-gaaggaaaagatgagaagaagaagaagaagaa-aa
-||| || |||| ||||||||||||||||||| ||
-gaa-gagaaga--agaagaagaagaagaagaagaa
+Sbjct 9 gaaggaaaagatgagaagaagaagaagaagaa-aa 42
+ ||| || |||| ||||||||||||||||||| ||
+Query 101868 gaa-gagaaga--agaagaagaagaagaagaagaa 101899
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
35 524 301 R 34 0 5068 57 4 88.41
-gaggaagtagaagaagaagaagacgaagaagatga
-|| |||| ||||||||||||||| |||||||| ||
-ga-gaagaagaagaagaagaagaagaagaagaaga
+Sbjct 301 gaggaagtagaagaagaagaagacgaagaagatga 335
+ || |||| ||||||||||||||| |||||||| ||
+Query 101871 ga-gaagaagaagaagaagaagaagaagaagaaga 101904
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
34 1903 3 R 31 0 5074 53 4 87.69
-gaagagaacgaaggaagaagaagaagaggaacga
-|||||||| ||| |||||||||||||| ||| ||
-gaagagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 3 gaagagaacgaaggaagaagaagaagaggaacga 36
+ |||||||| ||| |||||||||||||| ||| ||
+Query 101868 gaagagaa-gaa-gaagaagaagaagaagaa-ga 101898
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
32 953 115 R 33 0 5070 50 5 84.62
-agataaagaag-agaagaagaagaa-aaggagaa
-||| |||||| ||||||||||||| ||| ||||
-agag-aagaagaagaagaagaagaagaagaagaa
+Sbjct 115 agataaagaag-agaagaagaagaa-aaggagaa 146
+ ||| |||||| ||||||||||||| ||| ||||
+Query 101870 agag-aagaagaagaagaagaagaagaagaagaa 101902
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
34 20 9 R 35 0 5070 54 5 85.51
-gaaggaaaagatg-agaagaagaagaagaagaa-aa
-||| || |||| | ||||||||||||||||||| ||
-gaa-gagaagaagaagaagaagaagaagaagaagaa
+Sbjct 9 gaaggaaaagatg-agaagaagaagaagaagaa-aa 42
+ ||| || |||| | ||||||||||||||||||| ||
+Query 101868 gaa-gagaagaagaagaagaagaagaagaagaagaa 101902
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
30 539 304 R 31 0 5078 43 6 80.33
-act--aagagg-gaagattagaagaagaagaag
-||| ||||| ||||| ||||||||||||||
-actggaagagaagaaga--agaagaagaagaag
+Sbjct 304 act--aagagg-gaagattagaagaagaagaag 333
+ ||| ||||| ||||| ||||||||||||||
+Query 101864 actggaagagaagaaga--agaagaagaagaag 101894
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
35 1903 2 R 32 0 5071 49 6 82.09
-agaag-agaacgaaggaagaagaagaagaggaacga
-|| || |||| ||| |||||||||||||| ||| ||
-ag-agaagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 2 agaag-agaacgaaggaagaagaagaagaggaacga 36
+ || || |||| ||| |||||||||||||| ||| ||
+Query 101870 ag-agaagaa-gaa-gaagaagaagaagaagaa-ga 101901
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 1700 133 R 37 0 5068 53 7 81.08
-gaagatatggagaa-aagaagaagaaggtaggagaaga
-||||| | | |||| |||||||||||| || ||||||
-gaagagaagaagaagaagaagaagaag-aagaagaaga
+Sbjct 133 gaagatatggagaa-aagaagaagaaggtaggagaaga 169
+ ||||| | | |||| |||||||||||| || ||||||
+Query 101868 gaagagaagaagaagaagaagaagaag-aagaagaaga 101904
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
37 953 112 R 39 0 5064 55 7 81.58
-agcagataaagaag-agaagaagaagaa-aaggagaa-ac
-|| ||| |||||| ||||||||||||| ||| |||| ||
-ag-agaagaagaagaagaagaagaagaagaagaagaagac
+Sbjct 112 agcagataaagaag-agaagaagaagaa-aaggagaa-ac 148
+ || ||| |||||| ||||||||||||| ||| |||| ||
+Query 101870 ag-agaagaagaagaagaagaagaagaagaagaagaagac 101908
+
# polishing(m=400,d=-600,p=30): 40/40, seed_on_start, seed_on_end
36 20 7 R 37 0 5067 55 6 83.56
-aagaaggaa-aagatg-agaagaagaagaagaagaa-aa
-||| | ||| |||| | ||||||||||||||||||| ||
-aag-a-gaagaagaagaagaagaagaagaagaagaagaa
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaagaagaa-aa 42
+ ||| | ||| |||| | ||||||||||||||||||| ||
+Query 101869 aag-a-gaagaagaagaagaagaagaagaagaagaagaa 101905
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
42 524 291 R 41 0 5065 65 6 85.54
-ggaagaagttgaggaagtagaagaagaagaagacgaagaaga
-||||| || || |||| ||||||||||||||| ||||||||
-ggaag-agaagaagaagaagaagaagaagaagaagaagaaga
+Sbjct 291 ggaagaagttgaggaagtagaagaagaagaagacgaagaaga 332
+ ||||| || || |||| ||||||||||||||| ||||||||
+Query 101867 ggaag-agaagaagaagaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
35 1903 2 R 33 0 5068 53 5 85.29
-agaag-agaacgaaggaagaagaagaagaggaacga
-||||| |||| ||| |||||||||||||| ||| ||
-agaagaagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 2 agaag-agaacgaaggaagaagaagaagaggaacga 36
+ ||||| |||| ||| |||||||||||||| ||| ||
+Query 101872 agaagaagaa-gaa-gaagaagaagaagaagaa-ga 101904
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 20 7 R 42 0 5062 58 7 82.28
-aaga-aggaa-aagatg-agaagaagaagaagaagaa-a-ac
-|||| | ||| |||| | ||||||||||||||||||| | ||
-aagagaagaagaagaagaagaagaagaagaagaagaagacac
+Sbjct 7 aaga-aggaa-aagatg-agaagaagaagaagaagaa-a-ac 43
+ |||| | ||| |||| | ||||||||||||||||||| | ||
+Query 101869 aagagaagaagaagaagaagaagaagaagaagaagaagacac 101910
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
41 524 289 R 40 0 5065 60 7 82.72
-gaggaagaagttgaggaagtagaagaagaagaagacgaaga
-|| | ||||| || |||| ||||||||||||||| |||||
-gaag-agaagaagaagaagaagaagaagaagaagaagaaga
+Sbjct 289 gaggaagaagttgaggaagtagaagaagaagaagacgaaga 329
+ || | ||||| || |||| ||||||||||||||| |||||
+Query 101868 gaag-agaagaagaagaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 41/41, seed_on_start, seed_on_end
35 1903 2 R 33 0 5065 53 5 85.29
-agaag-agaacgaaggaagaagaagaagaggaacga
-||||| |||| ||| |||||||||||||| ||| ||
-agaagaagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 2 agaag-agaacgaaggaagaagaagaagaggaacga 36
+ ||||| |||| ||| |||||||||||||| ||| ||
+Query 101875 agaagaagaa-gaa-gaagaagaagaagaagaa-ga 101907
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
38 20 7 R 39 0 5060 59 6 84.42
-aagaaggaa-aagatg-agaagaagaagaagaagaaaact
-||||| ||| |||| | |||||||||||||||||| | ||
-aagaa-gaagaagaagaagaagaagaagaagaagacacct
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaagaagaaaact 44
+ ||||| ||| |||| | |||||||||||||||||| | ||
+Query 101874 aagaa-gaagaagaagaagaagaagaagaagaagacacct 101912
+
# polishing(m=400,d=-600,p=30): 40/40, seed_on_start, seed_on_end
39 524 288 R 38 0 5065 59 6 84.42
-agaggaagaagttgaggaagtagaagaagaagaagacga
-||| ||||||| || |||| ||||||||||||||| ||
-aga-gaagaagaagaagaagaagaagaagaagaagaaga
+Sbjct 288 agaggaagaagttgaggaagtagaagaagaagaagacga 326
+ ||| ||||||| || |||| ||||||||||||||| ||
+Query 101870 aga-gaagaagaagaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
34 817 230 R 37 0 5059 56 5 85.92
-aag-a-aagaagatgaagaagaagaagaag-cacatt
-||| | ||||||| |||||||||||||||| ||| ||
-aagaagaagaagaagaagaagaagaagaagacacctt
+Sbjct 230 aag-a-aagaagatgaagaagaagaagaag-cacatt 263
+ ||| | ||||||| |||||||||||||||| ||| ||
+Query 101877 aagaagaagaagaagaagaagaagaagaagacacctt 101913
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
33 1903 2 R 33 0 5062 51 5 84.85
-agaag-agaacgaaggaagaagaagaagagga-ac
-||||| |||| ||| |||||||||||||| || ||
-agaagaagaa-gaa-gaagaagaagaagaagacac
+Sbjct 2 agaag-agaacgaaggaagaagaagaagagga-ac 34
+ ||||| |||| ||| |||||||||||||| || ||
+Query 101878 agaagaagaa-gaa-gaagaagaagaagaagacac 101910
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
30 20 7 R 31 0 5065 49 4 86.89
-aagaaggaa-aagatg-agaagaagaagaaga
-||||| ||| |||| | |||||||||||||||
-aagaa-gaagaagaagaagaagaagaagaaga
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaaga 36
+ ||||| ||| |||| | |||||||||||||||
+Query 101877 aagaa-gaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
42 524 283 R 41 0 5064 62 7 83.13
-gatgcagaggaagaagttgaggaagtagaagaagaagaagac
-|| | ||| ||||||| || |||| ||||||||||||||||
-gaag-agaagaagaagaagaagaagaagaagaagaagaagac
+Sbjct 283 gatgcagaggaagaagttgaggaagtagaagaagaagaagac 324
+ || | ||| ||||||| || |||| ||||||||||||||||
+Query 101868 gaag-agaagaagaagaagaagaagaagaagaagaagaagac 101908
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
34 817 230 R 34 0 5059 50 6 82.35
-aag-a-aagaagatgaagaagaagaagaagcacatt
-||| | ||||||| |||||||||||||| ||| ||
-aagaagaagaagaagaagaagaagaaga--cacctt
+Sbjct 230 aag-a-aagaagatgaagaagaagaagaagcacatt 263
+ ||| | ||||||| |||||||||||||| ||| ||
+Query 101880 aagaagaagaagaagaagaagaagaaga--cacctt 101913
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
35 953 103 R 35 0 5065 49 7 80.00
-gaagaactcagcagataaagaag-agaagaagaaga
-|||||| || ||| |||||| ||||||||||||
-gaagaaga-agaagaagaagaagaagaagaagaaga
+Sbjct 103 gaagaactcagcagataaagaag-agaagaagaaga 137
+ |||||| || ||| |||||| ||||||||||||
+Query 101873 gaagaaga-agaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
42 524 279 R 41 0 5065 62 7 83.13
-ggaagatgcagaggaagaagttgaggaagtagaagaagaaga
-|||||| | ||| ||||||| || |||| ||||||||||||
-ggaaga-gaagaagaagaagaagaagaagaagaagaagaaga
+Sbjct 279 ggaagatgcagaggaagaagttgaggaagtagaagaagaaga 320
+ |||||| | ||| ||||||| || |||| ||||||||||||
+Query 101867 ggaaga-gaagaagaagaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_end
31 139 87 R 32 0 2624 45 6 80.95
-gttaa--ttttcttattcggaaaaaaaaaatga
-||||| |||| || ||||||||||||| |||
-gttaacgttttaataatcggaaaaaaaaa-tga
+Sbjct 87 gttaa--ttttcttattcggaaaaaaaaaatga 117
+ ||||| |||| || ||||||||||||| |||
+Query 104317 gttaacgttttaataatcggaaaaaaaaa-tga 104348
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 139 87 R 32 0 2624 45 6 80.95
-gttaa--ttttcttattcggaaaaaaaaaatga
-||||| |||| || |||| ||||||||||||
-gttaacgttttaataatcgg-aaaaaaaaatga
+Sbjct 87 gttaa--ttttcttattcggaaaaaaaaaatga 117
+ ||||| |||| || |||| ||||||||||||
+Query 104317 gttaacgttttaataatcgg-aaaaaaaaatga 104348
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
diff --git a/testdata/repfind-result/at1MB-U8-xdrop-20-20-80-6-a b/testdata/repfind-result/at1MB-U8-xdrop-20-20-80-6-a
index 4ee1e9f..5e77344 100644
--- a/testdata/repfind-result/at1MB-U8-xdrop-20-20-80-6-a
+++ b/testdata/repfind-result/at1MB-U8-xdrop-20-20-80-6-a
@@ -1,207 +1,260 @@
+# Options: -minidentity 80 -l 20 -extendxdrop -ii at1MB -q /local/kurtz/genometools/testsuite/../testdata/U89959_genomic.fas -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
23 859 207 F 23 0 17268 46 0 100.00
-catatatatatatatatatatat
-|||||||||||||||||||||||
-catatatatatatatatatatat
+Sbjct 207 catatatatatatatatatatat 229
+ |||||||||||||||||||||||
+Query 17268 catatatatatatatatatatat 17290
+
23 859 208 F 24 0 17266 44 1 95.74
-at-atatatatatatatatatata
-|| |||||||||||||||||||||
-atcatatatatatatatatatata
+Sbjct 208 at-atatatatatatatatatata 230
+ || |||||||||||||||||||||
+Query 17266 atcatatatatatatatatatata 17289
+
# polishing(m=400,d=-600,p=30): 24/24, seed_on_end
20 859 208 F 20 0 17271 40 0 100.00
-atatatatatatatatatat
-||||||||||||||||||||
-atatatatatatatatatat
+Sbjct 208 atatatatatatatatatat 227
+ ||||||||||||||||||||
+Query 17271 atatatatatatatatatat 17290
+
29 561 415 F 29 0 71281 55 1 96.55
-tcatcatcatcatcatcatcatcatacat
-|||||||||||||||||||||||||| ||
-tcatcatcatcatcatcatcatcatatat
+Sbjct 415 tcatcatcatcatcatcatcatcatacat 443
+ |||||||||||||||||||||||||| ||
+Query 71281 tcatcatcatcatcatcatcatcatatat 71309
+
# polishing(m=400,d=-600,p=30): 29/29
333 1265 0 F 330 0 72423 612 17 94.87
-ccttagangg-tgggaaattgcatgagtttggcacatcccttnttctnncggatttnggatcnnagtatg
-||||||| || ||||||| ||||||||| ||||||||||||| |||| ||||||| ||| | ||||||
-ccttagaaggatgggaaa-tgcatgagtgtggcacatcccttcttctctcggattt-gga-ccaagtatg
-ggaagccctgtctcagcctnngcttccagcntctcctccttccacatcnttaaaactccaaccttggaag
-||||| |||||||||||| ||||||||| ||||||||||||||||| |||||||||||||||||||||
-ggaag-cctgtctcagccacggcttccagcctctcctccttccacatcattaaaactccaaccttggaag
-attttaggagaatgagagcgacacgctctgtgcttcttttccttatgatccagctcttccacgcacaaat
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-attttaggagaatgagagcgacacgctctgtgcttcttttccttatgatccagctcttccacgcacaaat
-gaactatgaaacatatataaagcgcacacatatatttatgcatatcaagcttttggtgattatggtattg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gaactatgaaacatatataaagcgcacacatatatttatgcatatcaagcttttggtgattatggtattg
-atagagtcaaattaagctcggtgactatggtattaataagagtactatttcctt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||
-atagagtcaaattaagctcggtgactatggtattaataagagtactatttcctt
+Sbjct 0 ccttagangg-tgggaaattgcatgagtttggcacatcccttnttctnncggatttnggatcnnagtatg 68
+ ||||||| || ||||||| ||||||||| ||||||||||||| |||| ||||||| ||| | ||||||
+Query 72423 ccttagaaggatgggaaa-tgcatgagtgtggcacatcccttcttctctcggattt-gga-ccaagtatg 72489
+
+Sbjct 69 ggaagccctgtctcagcctnngcttccagcntctcctccttccacatcnttaaaactccaaccttggaag 138
+ ||||| |||||||||||| ||||||||| ||||||||||||||||| |||||||||||||||||||||
+Query 72490 ggaag-cctgtctcagccacggcttccagcctctcctccttccacatcattaaaactccaaccttggaag 72558
+
+Sbjct 139 attttaggagaatgagagcgacacgctctgtgcttcttttccttatgatccagctcttccacgcacaaat 208
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72559 attttaggagaatgagagcgacacgctctgtgcttcttttccttatgatccagctcttccacgcacaaat 72628
+
+Sbjct 209 gaactatgaaacatatataaagcgcacacatatatttatgcatatcaagcttttggtgattatggtattg 278
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72629 gaactatgaaacatatataaagcgcacacatatatttatgcatatcaagcttttggtgattatggtattg 72698
+
+Sbjct 279 atagagtcaaattaagctcggtgactatggtattaataagagtactatttcctt 332
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72699 atagagtcaaattaagctcggtgactatggtattaataagagtactatttcctt 72752
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_end
78 859 0 F 81 0 72588 129 10 87.42
-gtgcttnttttccttatgatccagctcttccacgcncncatgaactatgaaacatatataangcgcncnc
-|||||| |||||||||||||||||||||||||||| | |||||||||||||||||||||| |||| | |
-gtgcttcttttccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacac
-at-t-tt-atg
-|| | || |||
-atatatttatg
+Sbjct 0 gtgcttnttttccttatgatccagctcttccacgcncncatgaactatgaaacatatataangcgcncnc 69
+ |||||| |||||||||||||||||||||||||||| | |||||||||||||||||||||| |||| | |
+Query 72588 gtgcttcttttccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacac 72657
+
+Sbjct 70 at-t-tt-atg 77
+ || | || |||
+Query 72658 atatatttatg 72668
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_start
78 859 0 F 81 0 72588 129 10 87.42
-gtgcttnttttccttatgatccagctcttccacgcncncatgaactatgaaacatatataangcgcncnc
-|||||| |||||||||||||||||||||||||||| | |||||||||||||||||||||| |||| | |
-gtgcttcttttccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacac
-at-t-tt-atg
-|| | || |||
-atatatttatg
+Sbjct 0 gtgcttnttttccttatgatccagctcttccacgcncncatgaactatgaaacatatataangcgcncnc 69
+ |||||| |||||||||||||||||||||||||||| | |||||||||||||||||||||| |||| | |
+Query 72588 gtgcttcttttccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacac 72657
+
+Sbjct 70 at-t-tt-atg 77
+ || | || |||
+Query 72658 atatatttatg 72668
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_end
135 859 84 F 135 0 72651 258 4 97.04
-cgcncacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt
-||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cgcacacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt
-gactatggtattaataagagtactatttccttatctctttgtgaactaaganncatatatatata
-|||||||||||||||||||||||||||||||| |||||||||||||||||| ||||||||||||
-gactatggtattaataagagtactatttccttttctctttgtgaactaagaaacatatatatata
+Sbjct 84 cgcncacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt 153
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72651 cgcacacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt 72720
+
+Sbjct 154 gactatggtattaataagagtactatttccttatctctttgtgaactaaganncatatatatata 218
+ |||||||||||||||||||||||||||||||| |||||||||||||||||| ||||||||||||
+Query 72721 gactatggtattaataagagtactatttccttttctctttgtgaactaagaaacatatatatata 72785
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_start, seed_on_end
167 859 84 F 155 0 72651 271 17 89.44
-cgcncacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt
-||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cgcacacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt
-gactatggtattaataagagtactatttccttatctctttgtgaactaaganncatatatatatatatat
-|||||||||||||||||||||||||||||||| |||| || || | || | || | | | | ||||
-gactatggtattaataagagtactatttccttttctc-tt-tg---t--ga-ac-ta-aga-a-acatat
-atatataaagcaaacatgttccagaat
-|||||||||||||||||||||||||||
-atatataaagcaaacatgttccagaat
+Sbjct 84 cgcncacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt 153
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72651 cgcacacatatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcggt 72720
+
+Sbjct 154 gactatggtattaataagagtactatttccttatctctttgtgaactaaganncatatatatatatatat 223
+ |||||||||||||||||||||||||||||||| |||| || || | || | || | | | | ||||
+Query 72721 gactatggtattaataagagtactatttccttttctc-tt-tg---t--ga-ac-ta-aga-a-acatat 72778
+
+Sbjct 224 atatataaagcaaacatgttccagaat 250
+ |||||||||||||||||||||||||||
+Query 72779 atatataaagcaaacatgttccagaat 72805
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_end
38 1214 205 F 38 0 77815 76 0 100.00
-atatatatatatatatatatatatatatatatatatgt
-||||||||||||||||||||||||||||||||||||||
-atatatatatatatatatatatatatatatatatatgt
+Sbjct 205 atatatatatatatatatatatatatatatatatatgt 242
+ ||||||||||||||||||||||||||||||||||||||
+Query 77815 atatatatatatatatatatatatatatatatatatgt 77852
+
36 1214 205 F 37 0 77812 70 1 97.26
-at-atatatatatatatatatatatatatatatatat
-|| ||||||||||||||||||||||||||||||||||
-ataatatatatatatatatatatatatatatatatat
+Sbjct 205 at-atatatatatatatatatatatatatatatatat 240
+ || ||||||||||||||||||||||||||||||||||
+Query 77812 ataatatatatatatatatatatatatatatatatat 77848
+
# polishing(m=400,d=-600,p=30): 37/37
36 1214 205 F 35 0 77812 68 1 97.18
-atatatatatatatatatatatatatatatatatat
-||| ||||||||||||||||||||||||||||||||
-ata-atatatatatatatatatatatatatatatat
+Sbjct 205 atatatatatatatatatatatatatatatatatat 240
+ ||| ||||||||||||||||||||||||||||||||
+Query 77812 ata-atatatatatatatatatatatatatatatat 77846
+
# polishing(m=400,d=-600,p=30): 36/36
34 1214 207 F 33 0 77812 64 1 97.01
-atatatatatatatatatatatatatatatatat
-||| ||||||||||||||||||||||||||||||
-ata-atatatatatatatatatatatatatatat
+Sbjct 207 atatatatatatatatatatatatatatatatat 240
+ ||| ||||||||||||||||||||||||||||||
+Query 77812 ata-atatatatatatatatatatatatatatat 77844
+
# polishing(m=400,d=-600,p=30): 34/34
32 1214 209 F 31 0 77812 60 1 96.83
-atatatatatatatatatatatatatatatat
-||| ||||||||||||||||||||||||||||
-ata-atatatatatatatatatatatatatat
+Sbjct 209 atatatatatatatatatatatatatatatat 240
+ ||| ||||||||||||||||||||||||||||
+Query 77812 ata-atatatatatatatatatatatatatat 77842
+
# polishing(m=400,d=-600,p=30): 32/32
49 1214 206 F 48 0 77808 70 9 81.44
-tatatatatatatatatatatatatatatatatatgtctct-tctatacc
-|| | ||| |||||||||||||||||||||||||| | | | | | ||||
-ta-agata-atatatatatatatatatatatatatatatatatatgtacc
+Sbjct 206 tatatatatatatatatatatatatatatatatatgtctct-tctatacc 254
+ || | ||| |||||||||||||||||||||||||| | | | | | ||||
+Query 77808 ta-agata-atatatatatatatatatatatatatatatatatatgtacc 77855
+
# polishing(m=400,d=-600,p=30): 50/50
33 1214 208 F 31 0 77808 55 3 90.62
-tatatatatatatatatatatatatatatatat
-|| | ||| ||||||||||||||||||||||||
-ta-agata-atatatatatatatatatatatat
+Sbjct 208 tatatatatatatatatatatatatatatatat 240
+ || | ||| ||||||||||||||||||||||||
+Query 77808 ta-agata-atatatatatatatatatatatat 77838
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_end
43 1214 210 F 42 0 77808 61 8 81.18
-tatatatatatatatatatatatatatatatgtctct-tctata
-|| | ||| |||||||||||||||||||||| | | | | ||||
-ta-agata-atatatatatatatatatatatatatatatatata
+Sbjct 210 tatatatatatatatatatatatatatatatgtctct-tctata 252
+ || | ||| |||||||||||||||||||||| | | | | ||||
+Query 77808 ta-agata-atatatatatatatatatatatatatatatatata 77849
+
# polishing(m=400,d=-600,p=30): 44/44, seed_on_end
41 1214 212 F 40 0 77808 57 8 80.25
-tatatatatatatatatatatatatatatgtctct-tctata
-|| | ||| |||||||||||||||||||| | | | | ||||
-ta-agata-atatatatatatatatatatatatatatatata
+Sbjct 212 tatatatatatatatatatatatatatatgtctct-tctata 252
+ || | ||| |||||||||||||||||||| | | | | ||||
+Query 77808 ta-agata-atatatatatatatatatatatatatatatata 77847
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_end
34 1214 205 F 34 0 77817 68 0 100.00
-atatatatatatatatatatatatatatatatat
-||||||||||||||||||||||||||||||||||
-atatatatatatatatatatatatatatatatat
+Sbjct 205 atatatatatatatatatatatatatatatatat 238
+ ||||||||||||||||||||||||||||||||||
+Query 77817 atatatatatatatatatatatatatatatatat 77850
+
35 1214 205 F 35 0 77819 67 1 97.14
-atatatatatatatatatatatatatatatatata
-|||||||||||||||||||||||||||||||| ||
-atatatatatatatatatatatatatatatatgta
+Sbjct 205 atatatatatatatatatatatatatatatatata 239
+ |||||||||||||||||||||||||||||||| ||
+Query 77819 atatatatatatatatatatatatatatatatgta 77853
+
# polishing(m=400,d=-600,p=30): 35/35
43 859 208 F 39 0 77821 58 8 80.49
-atatatatatatatatatatataaagcaaacatgttccagaat
-||||||||||||||||||||||| | | | ||| ||| |||
-atatatatatatatatatatatata-tata--tgtacca-aat
+Sbjct 208 atatatatatatatatatatataaagcaaacatgttccagaat 250
+ ||||||||||||||||||||||| | | | ||| ||| |||
+Query 77821 atatatatatatatatatatatata-tata--tgtacca-aat 77859
+
# polishing(m=400,d=-600,p=30): 43/43
33 1214 205 F 33 0 77821 63 1 96.97
-atatatatatatatatatatatatatatatata
-|||||||||||||||||||||||||||||| ||
-atatatatatatatatatatatatatatatgta
+Sbjct 205 atatatatatatatatatatatatatatatata 237
+ |||||||||||||||||||||||||||||| ||
+Query 77821 atatatatatatatatatatatatatatatgta 77853
+
# polishing(m=400,d=-600,p=30): 33/33
31 1214 205 F 31 0 77823 59 1 96.77
-atatatatatatatatatatatatatatata
-|||||||||||||||||||||||||||| ||
-atatatatatatatatatatatatatatgta
+Sbjct 205 atatatatatatatatatatatatatatata 235
+ |||||||||||||||||||||||||||| ||
+Query 77823 atatatatatatatatatatatatatatgta 77853
+
# polishing(m=400,d=-600,p=30): 31/31
29 1214 205 F 29 0 77825 55 1 96.55
-atatatatatatatatatatatatatata
-|||||||||||||||||||||||||| ||
-atatatatatatatatatatatatatgta
+Sbjct 205 atatatatatatatatatatatatatata 233
+ |||||||||||||||||||||||||| ||
+Query 77825 atatatatatatatatatatatatatgta 77853
+
# polishing(m=400,d=-600,p=30): 29/29
113 1361 1 F 108 0 105325 158 21 81.00
-ttccaantcggggngttttacaanttccatancgggtacttaagntttggnggtncatgccanttaanct
-|| ||| || || | | ||||| | |||| ||||||| |||| |||| ||| |||| || |||| ||
-ttacaaatca-ggag-tatacaag-tacataacgggtac-taag-attggaggt-catg-cagttaagct
-cattggctggggaacttctgatgacggcgaagattattgg-t-tg
-|||||||||||||||||||||||||||||||||||||||| | ||
-cattggctggggaacttctgatgacggcgaagattattgggtatg
+Sbjct 1 ttccaantcggggngttttacaanttccatancgggtacttaagntttggnggtncatgccanttaanct 70
+ || ||| || || | | ||||| | |||| ||||||| |||| |||| ||| |||| || |||| ||
+Query 105325 ttacaaatca-ggag-tatacaag-tacataacgggtac-taag-attggaggt-catg-cagttaagct 105387
+
+Sbjct 71 cattggctggggaacttctgatgacggcgaagattattgg-t-tg 113
+ |||||||||||||||||||||||||||||||||||||||| | ||
+Query 105388 cattggctggggaacttctgatgacggcgaagattattgggtatg 105432
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_end
222 1361 148 F 222 0 105629 435 3 98.65
-gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac
-||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
-gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac
-cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-|||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-tcaccttcaatc
-||||||||||||
-tcaccttcaatc
+Sbjct 148 gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac 217
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
+Query 105629 gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac 105698
+
+Sbjct 218 cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 287
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105699 cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 105768
+
+Sbjct 288 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105769 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 105838
+
+Sbjct 358 tcaccttcaatc 369
+ ||||||||||||
+Query 105839 tcaccttcaatc 105850
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_start
222 1361 148 F 222 0 105629 435 3 98.65
-gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac
-||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
-gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac
-cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-|||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-tcaccttcaatc
-||||||||||||
-tcaccttcaatc
+Sbjct 148 gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac 217
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
+Query 105629 gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac 105698
+
+Sbjct 218 cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 287
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105699 cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 105768
+
+Sbjct 288 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105769 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 105838
+
+Sbjct 358 tcaccttcaatc 369
+ ||||||||||||
+Query 105839 tcaccttcaatc 105850
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_start
222 1361 148 F 222 0 105629 435 3 98.65
-gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac
-||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
-gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac
-cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-|||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-tcaccttcaatc
-||||||||||||
-tcaccttcaatc
+Sbjct 148 gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac 217
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
+Query 105629 gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac 105698
+
+Sbjct 218 cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 287
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105699 cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 105768
+
+Sbjct 288 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105769 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 105838
+
+Sbjct 358 tcaccttcaatc 369
+ ||||||||||||
+Query 105839 tcaccttcaatc 105850
+
# polishing(m=400,d=-600,p=30): 64/64
222 1361 148 F 222 0 105629 435 3 98.65
-gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac
-||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
-gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac
-cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-|||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa
-tcaccttcaatc
-||||||||||||
-tcaccttcaatc
+Sbjct 148 gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgtagctggtttac 217
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||||||||||||
+Query 105629 gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgtagctggtttac 105698
+
+Sbjct 218 cttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 287
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105699 cttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctggtttcctcagtctaaacaag 105768
+
+Sbjct 288 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105769 acgatgtgtccctacttctgtaatatatcatttgcaactgtgttgtaagtttaatataccattgaaagaa 105838
+
+Sbjct 358 tcaccttcaatc 369
+ ||||||||||||
+Query 105839 tcaccttcaatc 105850
+
# polishing(m=400,d=-600,p=30): 64/64, seed_on_end
diff --git a/testdata/repfind-result/at1MB-U8-xdrop-r-12-30-80-6-a b/testdata/repfind-result/at1MB-U8-xdrop-r-12-30-80-6-a
index 55c5d9c..5253068 100644
--- a/testdata/repfind-result/at1MB-U8-xdrop-r-12-30-80-6-a
+++ b/testdata/repfind-result/at1MB-U8-xdrop-r-12-30-80-6-a
@@ -1,400 +1,482 @@
+# Options: -minidentity 80 -l 30 -seedlength 12 -extendxdrop -ii at1MB -q /local/kurtz/genometools/testsuite/../testdata/U89959_genomic.fas -r -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
32 1099 143 R 30 0 106365 44 6 80.65
-cttgtttgggctcttcaggat-ctcttgtcaag
-||| |||||||||||| | || || ||||| ||
-ctt-tttgggctcttccg-atgct-ttgtctag
+Sbjct 143 cttgtttgggctcttcaggat-ctcttgtcaag 174
+ ||| |||||||||||| | || || ||||| ||
+Query 578 ctt-tttgggctcttccg-atgct-ttgtctag 607
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1013 180 R 30 0 100448 44 6 80.65
-gcaagagtaatcctctattattatctccccca
-|||| | ||||||||||||| || | || |||
-gcaacactaatcctctattacta-c-cctcca
+Sbjct 180 gcaagagtaatcctctattattatctccccca 211
+ |||| | ||||||||||||| || | || |||
+Query 6495 gcaacactaatcctctattacta-c-cctcca 6524
+
# polishing(m=400,d=-600,p=30): 32/32
31 986 284 R 32 0 97954 45 6 80.95
-tatgt-taatatttgtattatggtttgtatta
-||| | ||||||||||||| | ||| |||||
-tatttataatatttgtattgttttttttatta
+Sbjct 284 tatgt-taatatttgtattatggtttgtatta 314
+ ||| | ||||||||||||| | ||| |||||
+Query 8987 tatttataatatttgtattgttttttttatta 9018
+
# polishing(m=400,d=-600,p=30): 32/32
31 139 93 R 30 0 97699 46 5 83.61
-tttcttattcggaaaaaaaaaatgattggaa
-||||||| | || ||||||||||||||||
-tttctta-taaaaataaaaaaatgattggaa
+Sbjct 93 tttcttattcggaaaaaaaaaatgattggaa 123
+ ||||||| | || ||||||||||||||||
+Query 9244 tttctta-taaaaataaaaaaatgattggaa 9273
+
# polishing(m=400,d=-600,p=30): 31/31
33 571 310 R 29 0 97107 44 6 80.65
-ttcttcttcttctttcttaaacttttgcatcaa
-|||||||||||||| |||| | ||||| |||
-ttcttcttcttctt-ctta---tgttgcaccaa
+Sbjct 310 ttcttcttcttctttcttaaacttttgcatcaa 342
+ |||||||||||||| |||| | ||||| |||
+Query 9837 ttcttcttcttctt-ctta---tgttgcaccaa 9865
+
# polishing(m=400,d=-600,p=30): 33/33
31 31 0 R 31 0 93825 47 5 83.87
-ctctg-tctctttcttcttcttcttcttcttc
-|||| | |||||||||||| |||||| ||||
-ctctcat-tctttcttcttcctcttctacttc
+Sbjct 0 ctctg-tctctttcttcttcttcttcttcttc 30
+ |||| | |||||||||||| |||||| ||||
+Query 13117 ctctcat-tctttcttcttcctcttctacttc 13147
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 479 183 R 31 0 91402 46 5 83.61
-aagaaaaaagaaaaaaaaagcaag-aaacat
-|| |||||||||||||||| || ||||||
-aataaaaaagaaaaaaaaaattagcaaacat
+Sbjct 183 aagaaaaaagaaaaaaaaagcaag-aaacat 212
+ || |||||||||||||||| || ||||||
+Query 15540 aataaaaaagaaaaaaaaaattagcaaacat 15570
+
# polishing(m=400,d=-600,p=30): 31/31
32 1134 277 R 28 0 88553 42 6 80.00
-atgtttggatgtggataagtatttgacgatta
-|| | ||| | ||| |||| ||||||||||||
-atttctgg-t-tgg-taag-atttgacgatta
+Sbjct 277 atgtttggatgtggataagtatttgacgatta 308
+ || | ||| | ||| |||| ||||||||||||
+Query 18392 atttctgg-t-tgg-taag-atttgacgatta 18419
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
32 950 310 R 28 0 85878 42 6 80.00
-ttatgtaatgttttatgtggtttgagttgtaa
-||| || | | | ||| |||||||||||||||
-tta-gt-a-g-tctatctggtttgagttgtaa
+Sbjct 310 ttatgtaatgttttatgtggtttgagttgtaa 341
+ ||| || | | | ||| |||||||||||||||
+Query 21067 tta-gt-a-g-tctatctggtttgagttgtaa 21094
+
# polishing(m=400,d=-600,p=30): 32/32
32 1041 299 R 28 0 85878 42 6 80.00
-ttatgtaatgttttatgtggtttgagttgtaa
-||| || | | | ||| |||||||||||||||
-tta-gt-a-g-tctatctggtttgagttgtaa
+Sbjct 299 ttatgtaatgttttatgtggtttgagttgtaa 330
+ ||| || | | | ||| |||||||||||||||
+Query 21067 tta-gt-a-g-tctatctggtttgagttgtaa 21094
+
# polishing(m=400,d=-600,p=30): 32/32
37 965 245 R 38 0 84004 54 7 81.33
-ttttgttctnt-ctttttcaaaaacttatta-agctctt
-||| ||||| | ||||||||||||||| ||| | || ||
-tttcgttctttactttttcaaaaactt-ttacacctatt
+Sbjct 245 ttttgttctnt-ctttttcaaaaacttatta-agctctt 281
+ ||| ||||| | ||||||||||||||| ||| | || ||
+Query 22931 tttcgttctttactttttcaaaaactt-ttacacctatt 22968
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_end
42 703 366 R 38 0 83361 56 8 80.00
-ctgttttttttttctttttgttgttgatgttgtccttatttg
-||||||||||||| ||||| || ||||| || | | |||||
-ctgttttttttttttttttttttttgat-tt-t-at-atttg
+Sbjct 366 ctgttttttttttctttttgttgttgatgttgtccttatttg 407
+ ||||||||||||| ||||| || ||||| || | | |||||
+Query 23574 ctgttttttttttttttttttttttgat-tt-t-at-atttg 23611
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
37 777 257 R 38 0 83360 54 7 81.33
-tgttttttttttctttcttgtattgactctat-tttgg
-|||||||||||| ||| || | |||| | ||| |||||
-tgttttttttttttttttttttttgattttatatttgg
+Sbjct 257 tgttttttttttctttcttgtattgactctat-tttgg 293
+ |||||||||||| ||| || | |||| | ||| |||||
+Query 23575 tgttttttttttttttttttttttgattttatatttgg 23612
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tg-t-tttttttttttttttttttttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tg-t-tttttttttttttttttttttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tgtt-ttttttttttttt-tttttttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tgtt-ttttttttttttt-tttttttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
31 351 283 R 29 0 83369 42 6 80.00
-tgctctttttttttttttgttttaataattt
-|| | ||||||||||||| |||| | ||||
-tgtttttttttttttttt-tttt-ttgattt
+Sbjct 283 tgctctttttttttttttgttttaataattt 313
+ || | ||||||||||||| |||| | ||||
+Query 23575 tgtttttttttttttttt-tttt-ttgattt 23603
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
30 351 288 R 34 0 83358 46 6 81.25
-tttttttttttttgttttaat---a-atttggtt
-||||||||||||| |||| || | ||||||||
-ttttttttttttttttttgattttatatttggtt
+Sbjct 288 tttttttttttttgttttaat---a-atttggtt 317
+ ||||||||||||| |||| || | ||||||||
+Query 23581 ttttttttttttttttttgattttatatttggtt 23614
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_end
30 351 288 R 33 0 83358 45 6 80.95
-tttttttttttttgttttaat---a-atttggtt
-||||||||||||| |||| || | ||||||||
-ttttttttttttt-ttttgattttatatttggtt
+Sbjct 288 tttttttttttttgttttaat---a-atttggtt 317
+ ||||||||||||| |||| || | ||||||||
+Query 23582 ttttttttttttt-ttttgattttatatttggtt 23614
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_end
30 351 288 R 32 0 83358 44 6 80.65
-ttttttttttttt---g-ttttaataatttggtt
-||||||||||||| | ||||| || |||||||
-ttttttttttttttttgatttta-ta-tttggtt
+Sbjct 288 ttttttttttttt---g-ttttaataatttggtt 317
+ ||||||||||||| | ||||| || |||||||
+Query 23583 ttttttttttttttttgatttta-ta-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_end
30 351 288 R 31 0 83358 46 5 83.61
-ttttttttttttt--g-ttttaataatttggtt
-||||||||||||| | ||||| || |||||||
-tttttttttttttttgatttta-ta-tttggtt
+Sbjct 288 ttttttttttttt--g-ttttaataatttggtt 317
+ ||||||||||||| | ||||| || |||||||
+Query 23584 tttttttttttttttgatttta-ta-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_end
30 351 288 R 30 0 83358 48 4 86.67
-ttttttttttttt-g-ttttaataatttggtt
-||||||||||||| | ||||| || |||||||
-ttttttttttttttgatttta-ta-tttggtt
+Sbjct 288 ttttttttttttt-g-ttttaataatttggtt 317
+ ||||||||||||| | ||||| || |||||||
+Query 23585 ttttttttttttttgatttta-ta-tttggtt 23614
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_end
34 859 197 R 31 0 77831 50 5 84.62
-aactaaganncatatatatatatatatatatata
-|| ||| | ||| ||||||||||||||||||||
-aa-taa-ac-catgtatatatatatatatatata
+Sbjct 197 aactaaganncatatatatatatatatatatata 230
+ || ||| | ||| ||||||||||||||||||||
+Query 29111 aa-taa-ac-catgtatatatatatatatatata 29141
+
# polishing(m=400,d=-600,p=30): 34/34
34 1701 303 R 36 0 77826 52 6 82.86
-aa-aaatctt-tatatatatatatatatntatntat
-|| ||| | | ||||||||||||||||| ||| |||
-aataaaccatgtatatatatatatatatatatatat
+Sbjct 303 aa-aaatctt-tatatatatatatatatntatntat 336
+ || ||| | | ||||||||||||||||| ||| |||
+Query 29111 aataaaccatgtatatatatatatatatatatatat 29146
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
34 1701 303 R 35 0 77824 51 6 82.61
-aaaa-atctttatatatatatatatatntatntat
-||| || | ||||||||||||||||| ||| |||
-aaaccatgtatatatatatatatatatatatatat
+Sbjct 303 aaaa-atctttatatatatatatatatntatntat 336
+ ||| || | ||||||||||||||||| ||| |||
+Query 29114 aaaccatgtatatatatatatatatatatatatat 29148
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
30 1701 307 R 30 0 77820 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29123 atatatatatatatatatatatatatatat 29152
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1524 237 R 42 0 77802 58 8 80.49
-atatatatatatatatatatagtctttata-ta-a-tgtctta
-||||||||||||||||||||| | | |||| || | || |||
-atatatatatatatatatata-tatatataatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtctttata-ta-a-tgtctta 276
+ ||||||||||||||||||||| | | |||| || | || |||
+Query 29129 atatatatatatatatatata-tatatataatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 43/43
37 1214 205 R 37 0 77807 65 3 91.89
-atatatatatatatatatatatatatatatatata-tg
-||||||||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatatatatata-atagaatg
+Sbjct 205 atatatatatatatatatatatatatatatatata-tg 241
+ ||||||||||||||||||||||||||||| ||| | ||
+Query 29129 atatatatatatatatatatatatatata-atagaatg 29165
+
# polishing(m=400,d=-600,p=30): 38/38
30 1701 307 R 30 0 77818 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29125 atatatatatatatatatatatatatatat 29154
+
# polishing(m=400,d=-600,p=30): 30/30, seed_on_start, seed_on_end
40 1524 237 R 40 0 77802 59 7 82.50
-atatatatatatatatatatagtcttta-tataatgtctta
-||||||||||||||||||||| | | || || |||| |||
-atatatatatatatatatata-tatataatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtcttta-tataatgtctta 276
+ ||||||||||||||||||||| | | || || |||| |||
+Query 29131 atatatatatatatatatata-tatataatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 41/41
37 1214 205 R 35 0 77807 63 3 91.67
-atatatatatatatatatatatatatatatatatatg
-||||||||||||||||||||||||||| ||| | |||
-atatatatatatatatatatatatata-ataga-atg
+Sbjct 205 atatatatatatatatatatatatatatatatatatg 241
+ ||||||||||||||||||||||||||| ||| | |||
+Query 29131 atatatatatatatatatatatatata-ataga-atg 29165
+
# polishing(m=400,d=-600,p=30): 37/37
30 1701 307 R 30 0 77816 48 4 86.67
-atctttatatatatatatatatntatntat
-|| | ||||||||||||||||| ||| |||
-atatatatatatatatatatatatatatat
+Sbjct 307 atctttatatatatatatatatntatntat 336
+ || | ||||||||||||||||| ||| |||
+Query 29127 atatatatatatatatatatatatatatat 29156
+
# polishing(m=400,d=-600,p=30): 30/30
40 1524 237 R 38 0 77802 57 7 82.05
-atatatatatatatatatatagtctttatataatgtctta
-||||||||||||||||||||| | | ||| |||| |||
-atatatatatatatatatata-tat-aatagaatgaatta
+Sbjct 237 atatatatatatatatatatagtctttatataatgtctta 276
+ ||||||||||||||||||||| | | ||| |||| |||
+Query 29133 atatatatatatatatatata-tat-aatagaatgaatta 29170
+
# polishing(m=400,d=-600,p=30): 40/40, seed_on_start, seed_on_end
34 1214 205 R 32 0 77808 57 3 90.91
-atatatatatatatatatatatatatatatatat
-||||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatatata-ataga-at
+Sbjct 205 atatatatatatatatatatatatatatatatat 238
+ ||||||||||||||||||||||||| ||| | ||
+Query 29133 atatatatatatatatatatatata-ataga-at 29164
+
# polishing(m=400,d=-600,p=30): 34/34
32 1214 205 R 30 0 77808 53 3 90.32
-atatatatatatatatatatatatatatatat
-||||||||||||||||||||||| ||| | ||
-atatatatatatatatatatata-ataga-at
+Sbjct 205 atatatatatatatatatatatatatatatat 236
+ ||||||||||||||||||||||| ||| | ||
+Query 29135 atatatatatatatatatatata-ataga-at 29164
+
# polishing(m=400,d=-600,p=30): 32/32
31 357 287 R 32 0 77145 45 6 80.95
-tga-attttcttcatggtacatttttctaaaa
-||| ||| ||||| | ||||||||||||||
-tgatattatcttctttaaacatttttctaaaa
+Sbjct 287 tga-attttcttcatggtacatttttctaaaa 317
+ ||| ||| ||||| | ||||||||||||||
+Query 29796 tgatattatcttctttaaacatttttctaaaa 29827
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1542 430 R 32 0 74770 45 6 80.95
-attgttg--taataaacttgtgaaagtgatttt
-||| ||| |||| || || |||||||||||||
-att-ttgattaatcaaattttgaaagtgatttt
+Sbjct 430 attgttg--taataaacttgtgaaagtgatttt 460
+ ||| ||| |||| || || |||||||||||||
+Query 32171 att-ttgattaatcaaattttgaaagtgatttt 32202
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
36 1565 142 R 34 0 74565 49 7 80.00
-ag-atcttcccaaatgttaagcaagataaaaaaaaca
-|| || || ||||| ||||| || ||||||||||||
-agaatttt-ccaaaaattaag-aa-ataaaaaaaaca
+Sbjct 142 ag-atcttcccaaatgttaagcaagataaaaaaaaca 177
+ || || || ||||| ||||| || ||||||||||||
+Query 32374 agaatttt-ccaaaaattaag-aa-ataaaaaaaaca 32407
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_end
31 335 262 R 31 0 74523 50 4 87.10
-atgaaat-aaagtgttctcaaaatgtttatga
-|| |||| ||||| ||| ||||||||||||||
-ataaaataaaagttttc-caaaatgtttatga
+Sbjct 262 atgaaat-aaagtgttctcaaaatgtttatga 292
+ || |||| ||||| ||| ||||||||||||||
+Query 32419 ataaaataaaagttttc-caaaatgtttatga 32449
+
# polishing(m=400,d=-600,p=30): 32/32
31 1059 469 R 31 0 74523 50 4 87.10
-atgaaat-aaagtgttctcaaaatgtttatga
-|| |||| ||||| ||| ||||||||||||||
-ataaaataaaagttttc-caaaatgtttatga
+Sbjct 469 atgaaat-aaagtgttctcaaaatgtttatga 499
+ || |||| ||||| ||| ||||||||||||||
+Query 32419 ataaaataaaagttttc-caaaatgtttatga 32449
+
# polishing(m=400,d=-600,p=30): 32/32
31 1257 181 R 30 0 73427 43 6 80.33
-atttaaaaattgctccccaaaaaaaaaaaat
-|||||||||||| | |||||| ||| |||
-atttaaaaattg-tgaacaaaaataaataat
+Sbjct 181 atttaaaaattgctccccaaaaaaaaaaaat 211
+ |||||||||||| | |||||| ||| |||
+Query 33516 atttaaaaattg-tgaacaaaaataaataat 33545
+
# polishing(m=400,d=-600,p=30): 31/31
31 1480 383 R 30 0 70767 43 6 80.33
-ttttttactttttatcttttacttaggtctt
-||| | | |||| || || ||||||||||||
-tttataaattttcat-ttatacttaggtctt
+Sbjct 383 ttttttactttttatcttttacttaggtctt 413
+ ||| | | |||| || || ||||||||||||
+Query 36176 tttataaattttcat-ttatacttaggtctt 36205
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
28 635 184 R 32 0 66537 42 6 80.00
-cactaagaaggaga-a-a-tttactggag-gc
-|||||||||||||| | | || |||||| ||
-cactaagaaggagatagaggttgctggagagc
+Sbjct 184 cactaagaaggaga-a-a-tttactggag-gc 211
+ |||||||||||||| | | || |||||| ||
+Query 40404 cactaagaaggagatagaggttgctggagagc 40435
+
# polishing(m=400,d=-600,p=30): 32/32
34 155 13 R 29 0 63670 45 6 80.95
-gttcatttccttgaaaacggttacagaattaggg
-|||| ||| ||| |||| || ||||||||||||
-gttc-ttt-ctt-aaaatgg--acagaattaggg
+Sbjct 13 gttcatttccttgaaaacggttacagaattaggg 46
+ |||| ||| ||| |||| || ||||||||||||
+Query 43274 gttc-ttt-ctt-aaaatgg--acagaattaggg 43302
+
# polishing(m=400,d=-600,p=30): 34/34
35 870 405 R 36 0 52827 53 6 83.10
-atttccctaaaaaataaacaaaaaaaaatgta--taa
-|| | ||||||||| ||| ||||||||||||| |||
-atgtacctaaaaaaaaaa-aaaaaaaaatgtacctaa
+Sbjct 405 atttccctaaaaaataaacaaaaaaaaatgta--taa 439
+ || | ||||||||| ||| ||||||||||||| |||
+Query 54110 atgtacctaaaaaaaaaa-aaaaaaaaatgtacctaa 54145
+
# polishing(m=400,d=-600,p=30): 37/37
30 1397 172 R 31 0 51775 43 6 80.33
-ctac-aaa-taaaatgggacaaaaaaaaagaa
-|||| ||| || | | ||| ||||||||||||
-ctacgaaactagact-ggaaaaaaaaaaagaa
+Sbjct 172 ctac-aaa-taaaatgggacaaaaaaaaagaa 201
+ |||| ||| || | | ||| ||||||||||||
+Query 55167 ctacgaaactagact-ggaaaaaaaaaaagaa 55197
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
38 1403 175 R 34 0 49810 54 6 83.33
-aaaaaagatcaaagagagagagagagagagagagagaa
-|||||| | ||||||| |||| |||||||||||| ||
-aaaaaa-a--aaagagatagagggagagagagaga-aa
+Sbjct 175 aaaaaagatcaaagagagagagagagagagagagagaa 212
+ |||||| | ||||||| |||| |||||||||||| ||
+Query 57129 aaaaaa-a--aaagagatagagggagagagagaga-aa 57162
+
# polishing(m=400,d=-600,p=30): 38/38
36 1403 175 R 35 0 49809 50 7 80.28
-aaaaaagatcaaagagagagagagagagagagagag
-|||||| | | ||| |||| |||||||||||| ||
-aaaaaaaaa-agagatagagggagagagagagaaag
+Sbjct 175 aaaaaagatcaaagagagagagagagagagagagag 210
+ |||||| | | ||| |||| |||||||||||| ||
+Query 57129 aaaaaaaaa-agagatagagggagagagagagaaag 57163
+
# polishing(m=400,d=-600,p=30): 36/36
30 1403 192 R 31 0 43282 52 3 90.16
-gagagagagagagagagagaaaga-aaaaaa
-||||||||||||||||||| ||| ||||||
-gagagagagagagagagagtcagacaaaaaa
+Sbjct 192 gagagagagagagagagagaaaga-aaaaaa 221
+ ||||||||||||||||||| ||| ||||||
+Query 63660 gagagagagagagagagagtcagacaaaaaa 63690
+
# polishing(m=400,d=-600,p=30): 31/31
32 1403 190 R 32 0 43281 52 4 87.50
-gagagagagagagagagagagaaagaaaaaaa
-||||||||||||||||||| | | |||||||
-gagagagagagagagagagtcagacaaaaaaa
+Sbjct 190 gagagagagagagagagagagaaagaaaaaaa 221
+ ||||||||||||||||||| | | |||||||
+Query 63660 gagagagagagagagagagtcagacaaaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
33 1403 188 R 32 0 43281 53 4 87.69
-gagagagagagagagagagagagaaagaaaaaa
-||||||||||||||||||| ||| | ||||||
-gagagagagagagagagagtcagaca-aaaaaa
+Sbjct 188 gagagagagagagagagagagagaaagaaaaaa 220
+ ||||||||||||||||||| ||| | ||||||
+Query 63660 gagagagagagagagagagtcagaca-aaaaaa 63691
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 1403 187 R 31 0 43281 51 4 87.30
-agagagagagagagagagagagagaaagaaaa
-|||||||||||||||||| ||| ||| ||||
-agagagagagagagagagtcagacaaa-aaaa
+Sbjct 187 agagagagagagagagagagagagaaagaaaa 218
+ |||||||||||||||||| ||| ||| ||||
+Query 63661 agagagagagagagagagtcagacaaa-aaaa 63691
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
31 1403 187 R 29 0 43281 45 5 83.33
-agagagagagagagagagagagagaaagaaa
-|||||||||||||||| ||| | ||| |||
-agagagagagagagagtcagaca-aaa-aaa
+Sbjct 187 agagagagagagagagagagagagaaagaaa 217
+ |||||||||||||||| ||| | ||| |||
+Query 63663 agagagagagagagagtcagaca-aaa-aaa 63691
+
# polishing(m=400,d=-600,p=30): 31/31, seed_on_start, seed_on_end
32 442 118 R 34 0 43184 48 6 81.82
-ctttcttcttctttgttttgg-ggt-tccagtct
-|||||||||||||| | |||| || || |||||
-ctttcttcttctttttgttggaagtctcaagtct
+Sbjct 118 ctttcttcttctttgttttgg-ggt-tccagtct 149
+ |||||||||||||| | |||| || || |||||
+Query 63755 ctttcttcttctttttgttggaagtctcaagtct 63788
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
31 237 140 R 30 0 42784 43 6 80.33
-gag-aagaaagtggcggctgaggaggagaa-ac
-||| ||||||||||||| | ||| ||||| ||
-gagtaagaaagtggcgg--g-ggaagagaacac
+Sbjct 140 gag-aagaaagtggcggctgaggaggagaa-ac 170
+ ||| ||||||||||||| | ||| ||||| ||
+Query 64159 gagtaagaaagtggcgg--g-ggaagagaacac 64188
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
35 1275 281 R 34 0 40045 54 5 85.51
-tttttttgccattgacaattttt-ccttcttccttc
-|||||||| |||| | |||||| ||||||||||||
-tttttttgtcatt-at-atttttgccttcttccttc
+Sbjct 281 tttttttgccattgacaattttt-ccttcttccttc 315
+ |||||||| |||| | |||||| ||||||||||||
+Query 66894 tttttttgtcatt-at-atttttgccttcttccttc 66927
+
# polishing(m=400,d=-600,p=30): 36/36
28 1894 15 R 32 0 37196 42 6 80.00
-ataatc-caaaaaaaaaaaccat-a-t-tttt
-|| ||| |||||||||||| ||| | | ||||
-attatcacaaaaaaaaaaaacattaatctttt
+Sbjct 15 ataatc-caaaaaaaaaaaccat-a-t-tttt 42
+ || ||| |||||||||||| ||| | | ||||
+Query 69745 attatcacaaaaaaaaaaaacattaatctttt 69776
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 323 367 R 30 0 27210 42 6 80.00
-ttgttgaagaagtttatacata--aaa-agtta
-|| || ||| |||||||||||| ||| |||||
-tt-tt-aag-agtttatacatatcaaacagtta
+Sbjct 367 ttgttgaagaagtttatacata--aaa-agtta 396
+ || || ||| |||||||||||| ||| |||||
+Query 79733 tt-tt-aag-agtttatacatatcaaacagtta 79762
+
# polishing(m=400,d=-600,p=30): 33/33
31 573 274 R 29 0 26867 42 6 80.00
-ggttctttggtttggtttgtgtctctt-gatt
-|| | ||||||||||||| | || ||| ||||
-ggct-tttggtttggttt-t-tccctttgatt
+Sbjct 274 ggttctttggtttggtttgtgtctctt-gatt 304
+ || | ||||||||||||| | || ||| ||||
+Query 80077 ggct-tttggtttggttt-t-tccctttgatt 80105
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
33 859 211 R 31 0 20269 46 6 81.25
-tatatatatatatatatataaagcaaacatgtt
-|||| ||||||||||||| ||| || | || ||
-tata-atatatatatataaaaaacatatat-tt
+Sbjct 211 tatatatatatatatatataaagcaaacatgtt 243
+ |||| ||||||||||||| ||| || | || ||
+Query 86673 tata-atatatatatataaaaaacatatat-tt 86703
+
# polishing(m=400,d=-600,p=30): 33/33
36 1524 238 R 37 0 17254 52 7 80.82
-tatatatatatatatatatagtct-ttatat-aatgtc
-|||||||||||||||||||| || || | | ||| ||
-tatatatatatatatatatatactattctcttaat-tc
+Sbjct 238 tatatatatatatatatatagtct-ttatat-aatgtc 273
+ |||||||||||||||||||| || || | | ||| ||
+Query 89682 tatatatatatatatatatatactattctcttaat-tc 89718
+
# polishing(m=400,d=-600,p=30): 38/38, seed_on_start, seed_on_end
35 1701 308 R 37 0 17259 51 7 80.56
-tctt-tatatatatatatatatntat-ntattttttt
-||| ||||||||||||||||| ||| |||| | ||
-tctcctatatatatatatatatatatactattctctt
+Sbjct 308 tctt-tatatatatatatatatntat-ntattttttt 342
+ ||| ||||||||||||||||| ||| |||| | ||
+Query 89677 tctcctatatatatatatatatatatactattctctt 89713
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_end
34 1701 309 R 33 0 17259 49 6 82.09
-ctttatatatatatatatatntatntattttttt
-|| ||||||||||||||||| || |||| | ||
-ctatatatatatatatatatata-ctattctctt
+Sbjct 309 ctttatatatatatatatatntatntattttttt 342
+ || ||||||||||||||||| || |||| | ||
+Query 89681 ctatatatatatatatatatata-ctattctctt 89713
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_end
36 124 120 R 32 0 8890 50 6 82.35
-ttactatcttcttctccttcttcttcctcctcaatg
-|| |||| ||||||||||||| |||| |||| | ||
-tt-ctat-ttcttctccttctccttc-tcctta-tg
+Sbjct 120 ttactatcttcttctccttcttcttcctcctcaatg 155
+ || |||| ||||||||||||| |||| |||| | ||
+Query 98051 tt-ctat-ttcttctccttctccttc-tcctta-tg 98082
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
36 817 239 R 34 0 6628 49 7 80.00
-gatgaagaagaagaagaagcacattgagactggaga
-|| |||||||||||||||| | || ||| |||||
-gaagaagaagaagaagaagaatat-aaga-gggaga
+Sbjct 239 gatgaagaagaagaagaagcacattgagactggaga 274
+ || |||||||||||||||| | || ||| |||||
+Query 100311 gaagaagaagaagaagaagaatat-aaga-gggaga 100344
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
30 103 74 R 32 0 5954 44 6 80.65
-cttcttcttcttcttct-cttc-taatcct-ag
-||||||||||||||||| || | | ||| | ||
-cttcttcttcttcttcttct-catgatcatcag
+Sbjct 74 cttcttcttcttcttct-cttc-taatcct-ag 103
+ ||||||||||||||||| || | | ||| | ||
+Query 100987 cttcttcttcttcttcttct-catgatcatcag 101018
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 632 159 R 33 0 5968 47 6 81.54
-tccaggtgt-ctcttcttcttcttcttcttctt
-||| || | ||| ||||||||||||||||||
-tccgagtctactcaacttcttcttcttcttctt
+Sbjct 159 tccaggtgt-ctcttcttcttcttcttcttctt 190
+ ||| || | ||| ||||||||||||||||||
+Query 100972 tccgagtctactcaacttcttcttcttcttctt 101004
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
30 1024 109 R 32 0 5070 44 6 80.65
-gagaagaagaagaagna-aaca-gaaggcgaa
-||||||||||||||| | || | |||| |||
-gagaagaagaagaagaagaagaagaagaagaa
+Sbjct 109 gagaagaagaagaagna-aaca-gaaggcgaa 138
+ ||||||||||||||| | || | |||| |||
+Query 101871 gagaagaagaagaagaagaagaagaagaagaa 101902
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
30 539 304 R 31 0 5078 43 6 80.33
-act--aagagg-gaagattagaagaagaagaag
-||| ||||| ||||| ||||||||||||||
-actggaagagaagaaga--agaagaagaagaag
+Sbjct 304 act--aagagg-gaagattagaagaagaagaag 333
+ ||| ||||| ||||| ||||||||||||||
+Query 101864 actggaagagaagaaga--agaagaagaagaag 101894
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
34 1903 3 R 34 0 5071 53 5 85.29
-gaagagaacgaag--gaagaagaagaagaggaacga
-|||||||| |||| |||||||||||||| ||| ||
-gaagagaa-gaagaagaagaagaagaagaagaa-ga
+Sbjct 3 gaagagaacgaag--gaagaagaagaagaggaacga 36
+ |||||||| |||| |||||||||||||| ||| ||
+Query 101868 gaagagaa-gaagaagaagaagaagaagaagaa-ga 101901
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 953 112 R 39 0 5064 55 7 81.58
-agcagataaagaag-agaagaagaagaa-aaggagaa-ac
-|| ||| |||||| ||||||||||||| ||| |||| ||
-ag-agaagaagaagaagaagaagaagaagaagaagaagac
+Sbjct 112 agcagataaagaag-agaagaagaagaa-aaggagaa-ac 148
+ || ||| |||||| ||||||||||||| ||| |||| ||
+Query 101870 ag-agaagaagaagaagaagaagaagaagaagaagaagac 101908
+
# polishing(m=400,d=-600,p=30): 40/40
36 20 7 R 37 0 5067 55 6 83.56
-aagaaggaa-aagatg-agaagaagaagaagaagaa-aa
-||| | ||| |||| | ||||||||||||||||||| ||
-aag-a-gaagaagaagaagaagaagaagaagaagaagaa
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaagaagaa-aa 42
+ ||| | ||| |||| | ||||||||||||||||||| ||
+Query 101869 aag-a-gaagaagaagaagaagaagaagaagaagaagaa 101905
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
35 1903 2 R 33 0 5068 53 5 85.29
-agaag-agaacgaaggaagaagaagaagaggaacga
-||||| |||| ||| |||||||||||||| ||| ||
-agaagaagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 2 agaag-agaacgaaggaagaagaagaagaggaacga 36
+ ||||| |||| ||| |||||||||||||| ||| ||
+Query 101872 agaagaagaa-gaa-gaagaagaagaagaagaa-ga 101904
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
37 20 7 R 42 0 5062 58 7 82.28
-aaga-aggaa-aagatg-agaagaagaagaagaagaa-a-ac
-|||| | ||| |||| | ||||||||||||||||||| | ||
-aagagaagaagaagaagaagaagaagaagaagaagaagacac
+Sbjct 7 aaga-aggaa-aagatg-agaagaagaagaagaagaa-a-ac 43
+ |||| | ||| |||| | ||||||||||||||||||| | ||
+Query 101869 aagagaagaagaagaagaagaagaagaagaagaagaagacac 101910
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
35 1903 2 R 33 0 5065 53 5 85.29
-agaag-agaacgaaggaagaagaagaagaggaacga
-||||| |||| ||| |||||||||||||| ||| ||
-agaagaagaa-gaa-gaagaagaagaagaagaa-ga
+Sbjct 2 agaag-agaacgaaggaagaagaagaagaggaacga 36
+ ||||| |||| ||| |||||||||||||| ||| ||
+Query 101875 agaagaagaa-gaa-gaagaagaagaagaagaa-ga 101907
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
38 20 7 R 39 0 5060 59 6 84.42
-aagaaggaa-aagatg-agaagaagaagaagaagaaaact
-||||| ||| |||| | |||||||||||||||||| | ||
-aagaa-gaagaagaagaagaagaagaagaagaagacacct
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaagaagaaaact 44
+ ||||| ||| |||| | |||||||||||||||||| | ||
+Query 101874 aagaa-gaagaagaagaagaagaagaagaagaagacacct 101912
+
# polishing(m=400,d=-600,p=30): 40/40, seed_on_start, seed_on_end
33 1903 2 R 33 0 5062 51 5 84.85
-agaag-agaacgaaggaagaagaagaagagga-ac
-||||| |||| ||| |||||||||||||| || ||
-agaagaagaa-gaa-gaagaagaagaagaagacac
+Sbjct 2 agaag-agaacgaaggaagaagaagaagagga-ac 34
+ ||||| |||| ||| |||||||||||||| || ||
+Query 101878 agaagaagaa-gaa-gaagaagaagaagaagacac 101910
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
30 20 7 R 31 0 5065 49 4 86.89
-aagaaggaa-aagatg-agaagaagaagaaga
-||||| ||| |||| | |||||||||||||||
-aagaa-gaagaagaagaagaagaagaagaaga
+Sbjct 7 aagaaggaa-aagatg-agaagaagaagaaga 36
+ ||||| ||| |||| | |||||||||||||||
+Query 101877 aagaa-gaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 32/32, seed_on_start, seed_on_end
35 953 103 R 35 0 5065 49 7 80.00
-gaagaactcagcagataaagaag-agaagaagaaga
-|||||| || ||| |||||| ||||||||||||
-gaagaaga-agaagaagaagaagaagaagaagaaga
+Sbjct 103 gaagaactcagcagataaagaag-agaagaagaaga 137
+ |||||| || ||| |||||| ||||||||||||
+Query 101873 gaagaaga-agaagaagaagaagaagaagaagaaga 101907
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_end
31 139 87 R 32 0 2624 45 6 80.95
-gttaa--ttttcttattcggaaaaaaaaaatga
-||||| |||| || ||||||||||||| |||
-gttaacgttttaataatcggaaaaaaaaa-tga
+Sbjct 87 gttaa--ttttcttattcggaaaaaaaaaatga 117
+ ||||| |||| || ||||||||||||| |||
+Query 104317 gttaacgttttaataatcggaaaaaaaaa-tga 104348
+
# polishing(m=400,d=-600,p=30): 33/33
31 139 87 R 32 0 2624 45 6 80.95
-gttaa--ttttcttattcggaaaaaaaaaatga
-||||| |||| || |||| ||||||||||||
-gttaacgttttaataatcgg-aaaaaaaaatga
+Sbjct 87 gttaa--ttttcttattcggaaaaaaaaaatga 117
+ ||||| |||| || |||| ||||||||||||
+Query 104317 gttaacgttttaataatcgg-aaaaaaaaatga 104348
+
# polishing(m=400,d=-600,p=30): 33/33
diff --git a/testdata/repfind-result/at1MB-greedy-70-500-90-1-39-a b/testdata/repfind-result/at1MB-greedy-70-500-90-1-39-a
index d631f8f..8382c77 100644
--- a/testdata/repfind-result/at1MB-greedy-70-500-90-1-39-a
+++ b/testdata/repfind-result/at1MB-greedy-70-500-90-1-39-a
@@ -1,644 +1,847 @@
+# Options: -extendgreedy -ii at1MB -seedlength 70 -l 500 -minidentity 90 -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
635 5 11 F 635 39 45 1162 36 94.33
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
-aaatatttgactgttacagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacac
-aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg
-tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccagac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaac
-aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgattttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc
-tcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcact
-| |||| |||||||||||||||||||||||||||||||||||| ||| ||||||||||||||||||||
-tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcact
-tccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaat
-|||||||||||||| ||||||||||||||||||||||||||||| |||||||||||||||||||||||||
-tccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggggagcggttaat
-ctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||| | | ||||| | |||| |||||||||||||||||||||||||| ||
-ctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggtacccgattcga
-agcggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcatcaaaaggatat
-|||| |||||||||||||||||||||||| ||| || | | | || |||| |||||||||||||| |||
-agcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcatcaaaagggtat
-ttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctt
- ||||||||||||||||||||||||||||||||||||||||||||||| | || ||||| ||||||| ||
-atggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgttt
-aaatatc
-|||||||
-aaatatc
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 45 aaatatttgactgttacagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacac 114
+
+Sbjct 81 aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg 150
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg 184
+
+Sbjct 151 tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccagac 220
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 185 tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaac 254
+
+Sbjct 221 aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgattttc 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 255 aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 324
+
+Sbjct 291 tcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcact 360
+ | |||| |||||||||||||||||||||||||||||||||||| ||| ||||||||||||||||||||
+Query 325 tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcact 394
+
+Sbjct 361 tccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaat 430
+ |||||||||||||| ||||||||||||||||||||||||||||| |||||||||||||||||||||||||
+Query 395 tccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggggagcggttaat 464
+
+Sbjct 431 ctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||| | | ||||| | |||| |||||||||||||||||||||||||| ||
+Query 465 ctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggtacccgattcga 533
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcatcaaaaggatat 568
+ |||| |||||||||||||||||||||||| ||| || | | | || |||| |||||||||||||| |||
+Query 534 agcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcatcaaaagggtat 602
+
+Sbjct 569 ttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctt 638
+ ||||||||||||||||||||||||||||||||||||||||||||||| | || ||||| ||||||| ||
+Query 603 atggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgttt 672
+
+Sbjct 639 aaatatc 645
+ |||||||
+Query 673 aaatatc 679
+
# polishing(m=200,d=-800,p=30): 64/64
565 79 59 F 566 1495 2 1020 37 93.46
-gccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagatcttat-gttggtg
-||||| |||||||||| ||||||||| |||| |||| ||| |||| | ||| | ||| | |||||
-gccgg-tttggtttgtncccaacgttg-tttggntttccttcnataaccccatggnccttntggttgg-n
-ataatggtttaggtgatttttcgc-ttaaaga-tctttattatccaattcgatcttttgagttt-gagat
- |||||||||||| | |||||||| ||||||| | ||||||| ||||||||| |||| ||||| | |||
-ntaatggtttaggngttttttcgcattaaagact-tttattanccaattcgacctttnnagtttggggat
-ttgc-aggaatcaa-tttagagatttgcatc-ttaagttgaagaaaagaagaagttttcgttgcatatta
-|||| ||| |||| ||| |||| ||||||| ||||||||||| ||||||||||||||||||||||||||
-ttgcngggattcaattttggaga-ttgcatcnttaagttgaag-aaagaagaagttttcgttgcatatta
-atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa
-tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt
-cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg
-ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct
-tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt
-tccacttatgag
-||||||||||||
-tccacttatgag
+Sbjct 59 gccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagatcttat-gttggtg 127
+ ||||| |||||||||| ||||||||| |||| |||| ||| |||| | ||| | ||| | |||||
+Query 2 gccgg-tttggtttgtncccaacgttg-tttggntttccttcnataaccccatggnccttntggttgg-n 68
+
+Sbjct 128 ataatggtttaggtgatttttcgc-ttaaaga-tctttattatccaattcgatcttttgagttt-gagat 194
+ |||||||||||| | |||||||| ||||||| | ||||||| ||||||||| |||| ||||| | |||
+Query 69 ntaatggtttaggngttttttcgcattaaagact-tttattanccaattcgacctttnnagtttggggat 137
+
+Sbjct 195 ttgc-aggaatcaa-tttagagatttgcatc-ttaagttgaagaaaagaagaagttttcgttgcatatta 261
+ |||| ||| |||| ||| |||| ||||||| ||||||||||| ||||||||||||||||||||||||||
+Query 138 ttgcngggattcaattttggaga-ttgcatcnttaagttgaag-aaagaagaagttttcgttgcatatta 205
+
+Sbjct 262 atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa 331
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 206 atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa 275
+
+Sbjct 332 tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt 401
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 276 tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt 345
+
+Sbjct 402 cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg 471
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 346 cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg 415
+
+Sbjct 472 ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct 541
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 416 ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct 485
+
+Sbjct 542 tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt 611
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 486 tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt 555
+
+Sbjct 612 tccacttatgag 623
+ ||||||||||||
+Query 556 tccacttatgag 567
+
# polishing(m=200,d=-800,p=30): 53/64, seed_on_end
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
539 3 71 F 538 6 71 972 35 93.50
-cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-|||||| ||||||||| ||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaa-gggtatatggtgaatgatgccattatcttttg
-|| |||||||||||||| ||||||||||||||| ||| |||||||||||||||||||||||||||||| |
-ataatattgatgtcaga-gctaaaagatgcatccaaaagggtatatggtgaatgatgccattatcttt-g
-aaactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-|| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-aagctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 71 cgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 139
+ |||||| ||||||||| ||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 421 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 489
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaa-gggtatatggtgaatgatgccattatcttttg 558
+ || |||||||||||||| ||||||||||||||| ||| |||||||||||||||||||||||||||||| |
+Query 490 ataatattgatgtcaga-gctaaaagatgcatccaaaagggtatatggtgaatgatgccattatcttt-g 557
+
+Sbjct 559 aaactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ || |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 558 aagctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 608
+
# polishing(m=200,d=-800,p=30): 30/64
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64
581 2 45 F 600 5 11 1010 57 90.35
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attgga
-||||||||||||||||||||||| | |||||||||||||| ||| | ||||| |||||||||| ||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-aacg-ttatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tt
-| || ||||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||| ||||||| ||
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaag
-|||||| ||| ||| | ||||| ||| ||||| ||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaag
+Sbjct 45 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 114
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+
+Sbjct 115 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 183
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+
+Sbjct 184 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 253
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+
+Sbjct 254 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 323
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+
+Sbjct 324 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 393
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+
+Sbjct 394 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 463
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+
+Sbjct 464 tctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attgga 529
+ ||||||||||||||||||||||| | |||||||||||||| ||| | ||||| |||||||||| ||||||
+Query 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+
+Sbjct 530 aacg-ttatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tt 590
+ | || ||||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||| ||||||| ||
+Query 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+
+Sbjct 591 tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaag 625
+ |||||| ||| ||| | ||||| ||| ||||| ||||||||
+Query 570 tggtgaatgatgccattatctttgaagctgaaatggttaag 610
+
# polishing(m=200,d=-800,p=30): 64/64
547 2 0 F 552 39 0 943 52 90.54
-gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct
- |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
-cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct
-acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc
-|||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
-acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc
-ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-| | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
-gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-cgtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagac
-||||||||||||||||||||||||||||||||||| ||||||||||| |||| |||||||||||||||||
-cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac
-taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg
-||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
-taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg
-ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaant
-|||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||||||
-ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc
-tctaaccatagacaat-atnt-ctgca-cttggtaccc-attggaaacg-ttatggtntggga
-|| ||||| | ||||| || | ||||| |||||||||| ||| ||| || ||||||| |||||
-tccaaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtggga
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa 69
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct 138
+ |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
+Query 70 cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct 138
+
+Sbjct 139 acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc 208
+ |||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
+Query 139 acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc 208
+
+Sbjct 209 ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+ | | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+
+Sbjct 279 cgtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagac 348
+ ||||||||||||||||||||||||||||||||||| ||||||||||| |||| |||||||||||||||||
+Query 279 cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac 348
+
+Sbjct 349 taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 418
+ ||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 349 taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 419 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaant 488
+ |||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc 488
+
+Sbjct 489 tctaaccatagacaat-atnt-ctgca-cttggtaccc-attggaaacg-ttatggtntggga 546
+ || ||||| | ||||| || | ||||| |||||||||| ||| ||| || ||||||| |||||
+Query 489 tccaaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtggga 551
+
# polishing(m=200,d=-800,p=30): 64/63
680 16 84 F 680 39 0 1168 64 90.59
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct
- |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
-cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct
-acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc
-|||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
-acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc
-ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-| | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
-gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-cgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagac
-||||||||||||||||||||||||||||||||||| |||||| |||| |||| |||||||||||||||||
-cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac
-taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg
-||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
-taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg
-ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-
-|||||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
-ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc
-tactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaac
-| | ||||| | |||| |||||||||||||||||||||||||| ||| || |||||||||||||||||||
-tcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaac
-aatatcatactgttag-ctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatcttt
-||||| ||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-aatataatattgat-gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt
-gaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatc
-|||||||||||||||||||||||| | || ||||| ||||||| |||||||||
-gaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatc
+Sbjct 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa 69
+
+Sbjct 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct 222
+ |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
+Query 70 cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct 138
+
+Sbjct 223 acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc 292
+ |||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
+Query 139 acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc 208
+
+Sbjct 293 ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 362
+ | | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+
+Sbjct 363 cgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagac 432
+ ||||||||||||||||||||||||||||||||||| |||||| |||| |||| |||||||||||||||||
+Query 279 cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac 348
+
+Sbjct 433 taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 502
+ ||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 349 taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 503 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag- 572
+ |||||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc 488
+
+Sbjct 573 tactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaac 641
+ | | ||||| | |||| |||||||||||||||||||||||||| ||| || |||||||||||||||||||
+Query 489 tcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaac 557
+
+Sbjct 642 aatatcatactgttag-ctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatcttt 710
+ ||||| ||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 558 aatataatattgat-gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt 626
+
+Sbjct 711 gaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatc 763
+ |||||||||||||||||||||||| | || ||||| ||||||| |||||||||
+Query 627 gaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatc 679
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-|||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcat-caaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ |||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcat-caaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64
517 64 0 F 517 65 0 1034 0 100.00
-cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga
-gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt
-agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg
-accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac
-aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga
-aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt
-cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca
-tcatctaagcccatcatctagattttt
-|||||||||||||||||||||||||||
-tcatctaagcccatcatctagattttt
+Sbjct 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+
+Sbjct 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+
+Sbjct 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+
+Sbjct 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+
+Sbjct 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+
+Sbjct 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+
+Sbjct 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+
+Sbjct 490 tcatctaagcccatcatctagattttt 516
+ |||||||||||||||||||||||||||
+Query 490 tcatctaagcccatcatctagattttt 516
+
537 474 3 F 520 658 82 973 28 94.70
-aggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgccgttgaattggct
-|||||| |||| |||||||||||| ||| | | |||||||| ||| | |||||| || || |||||||
-aggttg-cccc-atcggaagagaanttgaactc-ttcttcct-cctnnc-ttagtgacg-tg-attggct
-aaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccggattn
-||||||| || | ||||||||||| || ||||||| || ||||||| ||||||||||||||| ||||||
-aaggaag-tgac-tccttctccgc-ac-agtggattcc-tgtgttg-attcgagttggagca-cggattt
-gtgtaccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttccat
-||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||| |||||||||
-gtgtaccgtgagcacggaa-cactcccggatactatgatggacggtactggacaatgtgg-agcttccat
-tggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcg
-| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||
-t-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta-cctggcg
-ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc
-cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta
-tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa
-atgttattcctatcagtttctctataattatagttatcatttcatttc
-||||||||||||||||||||||||||||||||||||||||||||||||
-atgttattcctatcagtttctctataattatagttatcatttcatttc
+Sbjct 3 aggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgccgttgaattggct 72
+ |||||| |||| |||||||||||| ||| | | |||||||| ||| | |||||| || || |||||||
+Query 82 aggttg-cccc-atcggaagagaanttgaactc-ttcttcct-cctnnc-ttagtgacg-tg-attggct 144
+
+Sbjct 73 aaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccggattn 141
+ ||||||| || | ||||||||||| || ||||||| || ||||||| ||||||||||||||| ||||||
+Query 145 aaggaag-tgac-tccttctccgc-ac-agtggattcc-tgtgttg-attcgagttggagca-cggattt 207
+
+Sbjct 142 gtgtaccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttccat 211
+ ||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 208 gtgtaccgtgagcacggaa-cactcccggatactatgatggacggtactggacaatgtgg-agcttccat 275
+
+Sbjct 212 tggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcg 281
+ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||
+Query 276 t-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta-cctggcg 343
+
+Sbjct 282 ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 351
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 344 ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 413
+
+Sbjct 352 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta 421
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta 483
+
+Sbjct 422 tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa 491
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 484 tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa 553
+
+Sbjct 492 atgttattcctatcagtttctctataattatagttatcatttcatttc 539
+ ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 554 atgttattcctatcagtttctctataattatagttatcatttcatttc 601
+
# polishing(m=200,d=-800,p=30): 33/64, seed_on_end
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
582 3 0 F 579 5 38 1056 35 93.97
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg
-||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg
-tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta
-||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc
-||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
-ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc
-|||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
-ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta
-c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca
-| ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
-ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca
-atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt
-|||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt
-tgaaactgaaatggttaaggtctct
- ||| ||||||||||||||||||||
--gaagctgaaatggttaaggtctct
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 107
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 108 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 177
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg 208
+ ||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
+Query 178 agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg 246
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 247 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 316
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 317 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 386
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 387 ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 455
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
+Query 456 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca 524
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 525 atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt 592
+
+Sbjct 557 tgaaactgaaatggttaaggtctct 581
+ ||| ||||||||||||||||||||
+Query 593 -gaagctgaaatggttaaggtctct 616
+
# polishing(m=200,d=-800,p=30): 64/64, seed_on_start
626 2 0 F 645 16 84 1190 27 95.75
-gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact
-||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
-gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta
-ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca-
-|||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
-ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa
-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa
-|||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
-tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa
--ctgaa-tggttaag
- ||||| ||||||||
-gctgaaatggttaag
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 223
+
+Sbjct 140 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 293
+
+Sbjct 210 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 363
+
+Sbjct 280 gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact 349
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 364 gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact 433
+
+Sbjct 350 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta 573
+
+Sbjct 490 ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca- 553
+ |||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa 643
+
+Sbjct 554 tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa 612
+ |||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
+Query 644 tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa 713
+
+Sbjct 613 -ctgaa-tggttaag 625
+ ||||| ||||||||
+Query 714 gctgaaatggttaag 728
+
# polishing(m=200,d=-800,p=30): 64/64, seed_on_start
626 2 0 F 645 16 84 1190 27 95.75
-gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact
-||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
-gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta
-ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca-
-|||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
-ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa
-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa
-|||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
-tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa
--ctgaa-tggttaag
- ||||| ||||||||
-gctgaaatggttaag
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 223
+
+Sbjct 140 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 293
+
+Sbjct 210 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 363
+
+Sbjct 280 gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact 349
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 364 gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact 433
+
+Sbjct 350 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta 573
+
+Sbjct 490 ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca- 553
+ |||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa 643
+
+Sbjct 554 tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa 612
+ |||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
+Query 644 tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa 713
+
+Sbjct 613 -ctgaa-tggttaag 625
+ ||||| ||||||||
+Query 714 gctgaaatggttaag 728
+
# polishing(m=200,d=-800,p=30): 64/64
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
582 3 0 F 579 5 38 1056 35 93.97
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg
-||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg
-tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta
-||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc
-||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
-ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc
-|||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
-ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta
-c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca
-| ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
-ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca
-atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt
-|||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt
-tgaaactgaaatggttaaggtctct
- ||| ||||||||||||||||||||
--gaagctgaaatggttaaggtctct
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 107
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 108 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 177
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg 208
+ ||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
+Query 178 agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg 246
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 247 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 316
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 317 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 386
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 387 ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 455
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
+Query 456 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca 524
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 525 atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt 592
+
+Sbjct 557 tgaaactgaaatggttaaggtctct 581
+ ||| ||||||||||||||||||||
+Query 593 -gaagctgaaatggttaaggtctct 616
+
# polishing(m=200,d=-800,p=30): 64/64
diff --git a/testdata/repfind-result/at1MB-greedy-r-14-32-80-2-36-a b/testdata/repfind-result/at1MB-greedy-r-14-32-80-2-36-a
index de5217c..8230415 100644
--- a/testdata/repfind-result/at1MB-greedy-r-14-32-80-2-36-a
+++ b/testdata/repfind-result/at1MB-greedy-r-14-32-80-2-36-a
@@ -1,160 +1,194 @@
+# Options: -seedlength 14 -l 32 -r -outfmt alignment=70 polinfo -verify-alignment -extendgreedy -ii at1MB -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
35 10 286 R 35 10 286 52 6 82.86
-tgtgta-g-tggcggcgtgtgcggcggttggatatgt
-||| || | ||||||||||||||||||| | || |||
-tgtataggttggcggcgtgtgcggcggt-g-atgtgt
+Sbjct 286 tgtgta-g-tggcggcgtgtgcggcggttggatatgt 320
+ ||| || | ||||||||||||||||||| | || |||
+Query 494 tgtataggttggcggcgtgtgcggcggt-g-atgtgt 528
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
33 31 0 R 33 31 0 48 6 81.82
-ctctgtc-tctttcttcttcttctt-cttct-tctc
-|||| || || |||||||||||||| || || ||||
-ctct-tcttc-ttcttcttcttctttct-ctgtctc
+Sbjct 0 ctctgtc-tctttcttcttcttctt-cttct-tctc 32
+ |||| || || |||||||||||||| || || ||||
+Query 250 ctct-tcttc-ttcttcttcttctttct-ctgtctc 282
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
36 38 50 R 38 90 28 59 5 86.49
-tctctc---tctctctctctctttcactcttgtcttgtc
-|||||| | ||||||||||||||||| ||||||||||
-tctctcanatgtctctctctctttcact-ttgtcttgtc
+Sbjct 50 tctctc---tctctctctctctttcactcttgtcttgtc 85
+ |||||| | ||||||||||||||||| ||||||||||
+Query 143 tctctcanatgtctctctctctttcact-ttgtcttgtc 180
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
36 118 2 R 36 118 2 54 6 83.33
-acatcttctaagaaagaaacaaagaaaga--cttc-aca
-||| |||| ||||||||||||||||||| |||| |||
-aca-cttc--agaaagaaacaaagaaagaatcttctaca
+Sbjct 2 acatcttctaagaaagaaacaaagaaaga--cttc-aca 37
+ ||| |||| ||||||||||||||||||| |||| |||
+Query 201 aca-cttc--agaaagaaacaaagaaagaatcttctaca 236
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
32 121 68 R 32 121 68 52 4 87.50
-ctt-cctctctcttccttccttctct-tcccttc
-||| ||| |||||||||||||||||| ||| |||
-cttccct-tctcttccttccttctctctcc-ttc
+Sbjct 68 ctt-cctctctcttccttccttctct-tcccttc 99
+ ||| ||| |||||||||||||||||| ||| |||
+Query 110 cttccct-tctcttccttccttctctctcc-ttc 141
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
33 31 0 R 33 135 79 48 6 81.82
-ctctgtctctt-t-cttcttcttcttcttcttctc
-|||| || ||| | || ||||||||||||||| ||
-ctctttc-cttctcctccttcttcttcttctt-tc
+Sbjct 0 ctctgtctctt-t-cttcttcttcttcttcttctc 32
+ |||| || ||| | || ||||||||||||||| ||
+Query 52 ctctttc-cttctcctccttcttcttcttctt-tc 84
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
30 19 553 R 34 554 328 46 6 81.25
-at-tttcccaag-gtggtttttttttgt--ttgt
-|| ||||| || ||||||||||||||| ||||
-atgtttccttagagtggtttttttttgtggttgt
+Sbjct 553 at-tttcccaag-gtggtttttttttgt--ttgt 582
+ || ||||| || ||||||||||||||| ||||
+Query 3 atgtttccttagagtggtttttttttgtggttgt 36
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
31 457 350 R 33 576 203 46 6 81.25
-taga-tttttgtttttgttttttgtttc-tc-tg
-||| |||||||||||||||||| || | || ||
-tagtgtttttgtttttgtttttt-ttccatcgtg
+Sbjct 350 taga-tttttgtttttgttttttgtttc-tc-tg 380
+ ||| |||||||||||||||||| || | || ||
+Query 183 tagtgtttttgtttttgtttttt-ttccatcgtg 215
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
33 135 70 R 31 632 167 46 6 81.25
-tctctgtccctttcttcttcttcttcctcctct
-|||| || | ||||||||||||||| || |||
-tctccgtttc-ttcttcttcttcttcttc-tct
+Sbjct 70 tctctgtccctttcttcttcttcttcctcctct 102
+ |||| || | ||||||||||||||| || |||
+Query 226 tctccgtttc-ttcttcttcttcttcttc-tct 256
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
41 634 281 R 42 693 409 59 8 80.72
-tcctctgtgtgtgt-tttttttgttctcttc-a-taattttccc
-|||| | || || | |||||||||||||||| | || |||||||
-tcctgtatg-gtttctttttttgttctcttccacta-ttttccc
+Sbjct 281 tcctctgtgtgtgt-tttttttgttctcttc-a-taattttccc 321
+ |||| | || || | |||||||||||||||| | || |||||||
+Query 45 tcctgtatg-gtttctttttttgttctcttccacta-ttttccc 86
+
# polishing(m=400,d=-600,p=30): 44/44, seed_on_start, seed_on_end
40 466 426 R 40 704 301 56 8 80.00
-taaat-tttaatttcgtaaatgcacagattacaatgt-ctct
-||| | |||||||||||||| | | | |||| ||||| ||||
-taattgtttaatttcgtaaa-gaaaaaatta-aatgttctct
+Sbjct 426 taaat-tttaatttcgtaaatgcacagattacaatgt-ctct 465
+ ||| | |||||||||||||| | | | |||| ||||| ||||
+Query 81 taattgtttaatttcgtaaa-gaaaaaatta-aatgttctct 120
+
# polishing(m=400,d=-600,p=30): 42/42, seed_on_start, seed_on_end
45 693 362 R 39 758 186 60 8 80.95
-ctactctttgtgatcttctttgtttgtttgtttggtttttttttt
-|| |||| |||| || ||||| ||| || |||||||||||||||
-ct-ctctctgtg-tc-tctttc-ttg-tt-tttggtttttttttt
+Sbjct 362 ctactctttgtgatcttctttgtttgtttgtttggtttttttttt 406
+ || |||| |||| || ||||| ||| || |||||||||||||||
+Query 83 ct-ctctctgtg-tc-tctttc-ttg-tt-tttggtttttttttt 121
+
# polishing(m=400,d=-600,p=30): 45/45, seed_on_end
32 368 268 R 33 913 451 47 6 81.54
-cttcttccaca-tatgtaatcttgtaactttta
-||| |||| | |||||||||||||| |||||
-ctttttcctaattatgtaatcttgtagatttta
+Sbjct 268 cttcttccaca-tatgtaatcttgtaactttta 299
+ ||| |||| | |||||||||||||| |||||
+Query 2 ctttttcctaattatgtaatcttgtagatttta 34
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
42 693 409 R 41 976 291 59 8 80.72
-ccctttt-atcaccttctcttgtttttttctttg-gtatgtcct
-||||||| || | |||||||||||||||| | || || | ||||
-cccttttaat-a-cttctcttgttttttt-tgtgtgtgtctcct
+Sbjct 409 ccctttt-atcaccttctcttgtttttttctttg-gtatgtcct 450
+ ||||||| || | |||||||||||||||| | || || | ||||
+Query 78 cccttttaat-a-cttctcttgttttttt-tgtgtgtgtctcct 118
+
# polishing(m=400,d=-600,p=30): 44/44, seed_on_start, seed_on_end
32 926 328 R 32 989 330 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 328 tttgtataggtttc-tttatcgtgtgttgtatt 359
+ |||||||||||||| ||| | | |||||| ||
+Query 44 tttgtataggtttcgatta-cctttgttgtgtt 75
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 480 385 R 32 989 330 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 385 tttgtataggtttc-tttatcgtgtgttgtatt 416
+ |||||||||||||| ||| | | |||||| ||
+Query 44 tttgtataggtttcgatta-cctttgttgtgtt 75
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
34 632 164 R 36 997 219 49 7 80.00
-gtgtctcttcttctt-cttcttctt-ctttgcct-ct
-||||||||||||||| || || ||| ||| ||| ||
-gtgtctcttcttcttact-ctccttagtttacctact
+Sbjct 164 gtgtctcttcttctt-cttcttctt-ctttgcct-ct 197
+ ||||||||||||||| || || ||| ||| ||| ||
+Query 235 gtgtctcttcttcttact-ctccttagtttacctact 270
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
35 771 340 R 30 1057 430 47 6 81.54
-tcatttttgagtgatctgctctctttctcttttgt
-|| |||||||||||||| || | | || |||||||
-tc-tttttgagtgatct-ct-t-tgtc-cttttgt
+Sbjct 340 tcatttttgagtgatctgctctctttctcttttgt 374
+ || |||||||||||||| || | | || |||||||
+Query 29 tc-tttttgagtgatct-ct-t-tgtc-cttttgt 58
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
31 509 337 R 35 1066 356 48 6 81.82
-tta-ata-caattgatcgtttctactctg--agaa
-||| || |||||| |||||||||||||| ||||
-ttatatctcaattgttcgtttctactctgttagaa
+Sbjct 337 tta-ata-caattgatcgtttctactctg--agaa 367
+ ||| || |||||| |||||||||||||| ||||
+Query 29 ttatatctcaattgttcgtttctactctgttagaa 63
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
32 632 173 R 33 1132 164 50 5 84.62
-cttcttcttcttcttctttg-cctcttagctgt
-|| ||||||||||||||||| |||| | ||||
-ctncttcttcttcttctttggcctcaaacctgt
+Sbjct 173 cttcttcttcttcttctttg-cctcttagctgt 204
+ || ||||||||||||||||| |||| | ||||
+Query 192 ctncttcttcttcttctttggcctcaaacctgt 224
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 632 173 R 33 1140 72 47 6 81.54
-cttcttcttcttcttctttg-cctcttagctgt
-|| |||||||||||||| || |||| | ||||
-ctncttcttcttcttctctggcctcaaacctgt
+Sbjct 173 cttcttcttcttcttctttg-cctcttagctgt 204
+ || |||||||||||||| || |||| | ||||
+Query 194 ctncttcttcttcttctctggcctcaaacctgt 226
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
33 619 454 R 34 1161 198 49 6 82.09
-gtttctttttttctttctttctac-ttt-tc-ttta
-|||| |||||||||||||| || | ||| || ||||
-gttt-tttttttctttctt-cttcgtttatcattta
+Sbjct 454 gtttctttttttctttctttctac-ttt-tc-ttta 486
+ |||| |||||||||||||| || | ||| || ||||
+Query 138 gttt-tttttttctttctt-cttcgtttatcattta 171
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
32 138 47 R 35 1243 232 49 6 82.09
-tctctctctctctc-tctatcat-ctctttt-ctt
-|||||||||||||| | | | || ||||||| |||
-tctctctctctctcctttttgatactcttttgctt
+Sbjct 47 tctctctctctctc-tctatcat-ctctttt-ctt 78
+ |||||||||||||| | | | || ||||||| |||
+Query 123 tctctctctctctcctttttgatactcttttgctt 157
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
36 31 1 R 37 1298 266 52 7 80.82
-tctgtctctttcttcttcttcttcttcttctca-tta
-||| ||| |||| | |||||||||||||| || |||
-tctatctatttcgttatcttcttcttcttcgcactta
+Sbjct 1 tctgtctctttcttcttcttcttcttcttctca-tta 36
+ ||| ||| |||| | |||||||||||||| || |||
+Query 82 tctatctatttcgttatcttcttcttcttcgcactta 118
+
# polishing(m=400,d=-600,p=30): 37/37, seed_on_start, seed_on_end
32 926 328 R 32 1350 272 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 328 tttgtataggtttc-tttatcgtgtgttgtatt 359
+ |||||||||||||| ||| | | |||||| ||
+Query 95 tttgtataggtttcgatta-cctttgttgtgtt 126
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 480 385 R 32 1350 272 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 385 tttgtataggtttc-tttatcgtgtgttgtatt 416
+ |||||||||||||| ||| | | |||||| ||
+Query 95 tttgtataggtttcgatta-cctttgttgtgtt 126
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
31 291 307 R 33 1400 150 46 6 81.25
-gaatact-agttttttt-tttgtgaattgaatt
-||| | | | |||| || |||||||||||||||
-gaagagtcatttttcttgtttgtgaattgaatt
+Sbjct 307 gaatact-agttttttt-tttgtgaattgaatt 337
+ ||| | | | |||| || |||||||||||||||
+Query 101 gaagagtcatttttcttgtttgtgaattgaatt 133
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
32 314 158 R 33 1403 172 47 6 81.54
-gagagagagagagaga-aagc-agaagaagaagt
-|||||||||||||||| || | |||| || | ||
-gagagagagagagagagaaactagaa-aaaacgt
+Sbjct 158 gagagagagagagaga-aagc-agaagaagaagt 189
+ |||||||||||||||| || | |||| || | ||
+Query 106 gagagagagagagagagaaactagaa-aaaacgt 138
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
39 138 39 R 34 1584 4 52 7 80.82
-ccacaccttctctctctctctctctatcatctcttttct
-||| | | |||| ||||||||||||||| ||| | ||||
-cca-a-c-tctccctctctctctctatc-tct-tcttct
+Sbjct 39 ccacaccttctctctctctctctctatcatctcttttct 77
+ ||| | | |||| ||||||||||||||| ||| | ||||
+Query 147 cca-a-c-tctccctctctctctctatc-tct-tcttct 180
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
41 1695 59 R 41 1695 59 58 8 80.49
-acaactatggt-t-caacaacaacaacaacctctgg-ctcaaca
-|||||| ||| | |||||||||||||||| | ||| ||||||
-acaactc-ggtctccaacaacaacaacaac-t-tggtatcaaca
+Sbjct 59 acaactatggt-t-caacaacaacaacaacctctgg-ctcaaca 99
+ |||||| ||| | |||||||||||||||| | ||| ||||||
+Query 287 acaactc-ggtctccaacaacaacaacaac-t-tggtatcaaca 327
+
# polishing(m=400,d=-600,p=30): 44/44, seed_on_start, seed_on_end
33 1524 237 R 32 1701 304 47 6 81.54
-atatatatatatatatatatagtctttatataa
-|| ||| |||||||||||||| | ||| || ||
-atntatntatatatatatata-tatttctaaaa
+Sbjct 237 atatatatatatatatatatagtctttatataa 269
+ || ||| |||||||||||||| | ||| || ||
+Query 80 atntatntatatatatatata-tatttctaaaa 111
+
# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
36 1214 206 R 35 1701 298 50 7 80.28
-tatatatatatatatatatatatatatatatatatg
-||| ||||||||||||||||| | || | | || ||
-tatntatatatatatatatatttctaaaaagat-tg
+Sbjct 206 tatatatatatatatatatatatatatatatatatg 241
+ ||| ||||||||||||||||| | || | | || ||
+Query 83 tatntatatatatatatatatttctaaaaagat-tg 117
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
diff --git a/testdata/repfind-result/at1MB-xdrop-20-20-80-6 b/testdata/repfind-result/at1MB-xdrop-20-20-80-6
index f931a2d..2267873 100644
--- a/testdata/repfind-result/at1MB-xdrop-20-20-80-6
+++ b/testdata/repfind-result/at1MB-xdrop-20-20-80-6
@@ -942,6 +942,7 @@
163 1578 0 F 163 1682 12 299 9 94.48
412 460 68 F 411 1351 41 775 16 96.11
349 1351 92 F 351 1936 27 667 11 96.86
+181 160 124 F 181 160 305 362 0 100.00
230 474 145 F 230 605 23 421 13 94.35
180 543 135 F 182 605 71 344 6 96.69
240 605 13 F 236 658 201 428 16 93.28
diff --git a/testdata/repfind-result/at1MB-xdrop-70-500-90-1-39-a b/testdata/repfind-result/at1MB-xdrop-70-500-90-1-39-a
index 39d5d6d..f96dfa8 100644
--- a/testdata/repfind-result/at1MB-xdrop-70-500-90-1-39-a
+++ b/testdata/repfind-result/at1MB-xdrop-70-500-90-1-39-a
@@ -1,592 +1,779 @@
+# Options: -extendxdrop -ii at1MB -seedlength 70 -l 500 -minidentity 90 -outfmt alignment=70 polinfo -verify-alignment -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
635 5 11 F 635 39 45 1162 36 94.33
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
-aaatatttgactgttacagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacac
-aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg
-tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccagac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaac
-aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgattttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc
-tcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcact
-| |||| |||||||||||||||||||||||||||||||||||| ||| ||||||||||||||||||||
-tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcact
-tccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaat
-|||||||||||||| ||||||||||||||||||||||||||||| |||||||||||||||||||||||||
-tccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggggagcggttaat
-ctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||| | | ||||| | |||| |||||||||||||||||||||||||| ||
-ctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggtacccgattcga
-agcggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcatcaaaaggatat
-|||| |||||||||||||||||||||||| ||| || | | | || |||| |||||||||||||| |||
-agcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcatcaaaagggtat
-ttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctt
- ||||||||||||||||||||||||||||||||||||||||||||||| | || ||||| ||||||| ||
-atggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgttt
-aaatatc
-|||||||
-aaatatc
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 45 aaatatttgactgttacagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacac 114
+
+Sbjct 81 aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg 150
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 aattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttgg 184
+
+Sbjct 151 tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccagac 220
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 185 tgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaac 254
+
+Sbjct 221 aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgattttc 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 255 aatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 324
+
+Sbjct 291 tcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcact 360
+ | |||| |||||||||||||||||||||||||||||||||||| ||| ||||||||||||||||||||
+Query 325 tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcact 394
+
+Sbjct 361 tccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaat 430
+ |||||||||||||| ||||||||||||||||||||||||||||| |||||||||||||||||||||||||
+Query 395 tccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggggagcggttaat 464
+
+Sbjct 431 ctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||| | | ||||| | |||| |||||||||||||||||||||||||| ||
+Query 465 ctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggtacccgattcga 533
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcatcaaaaggatat 568
+ |||| |||||||||||||||||||||||| ||| || | | | || |||| |||||||||||||| |||
+Query 534 agcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcatcaaaagggtat 602
+
+Sbjct 569 ttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctt 638
+ ||||||||||||||||||||||||||||||||||||||||||||||| | || ||||| ||||||| ||
+Query 603 atggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgttt 672
+
+Sbjct 639 aaatatc 645
+ |||||||
+Query 673 aaatatc 679
+
# polishing(m=200,d=-800,p=30): 64/64
565 79 59 F 566 1495 2 1020 37 93.46
-gccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagatcttat-gttggtg
-||||| |||||||||| ||||||||| |||| |||| ||| |||| | ||| | ||| | |||||
-gccgg-tttggtttgtncccaacgttg-tttggntttccttcnataaccccatggnccttntggttgg-n
-ataatggtttaggtgatttttcgc-ttaaaga-tctttattatccaattcgatcttttgagttt-gagat
- |||||||||||| | |||||||| ||||||| | ||||||| ||||||||| |||| ||||| | |||
-ntaatggtttaggngttttttcgcattaaagact-tttattanccaattcgacctttnnagtttggggat
-ttgc-aggaatcaa-tttagagatttgcatc-ttaagttgaagaaaagaagaagttttcgttgcatatta
-|||| ||| |||| ||| |||| ||||||| ||||||||||| ||||||||||||||||||||||||||
-ttgcngggattcaattttggaga-ttgcatcnttaagttgaag-aaagaagaagttttcgttgcatatta
-atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa
-tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt
-cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg
-ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct
-tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt
-tccacttatgag
-||||||||||||
-tccacttatgag
+Sbjct 59 gccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagatcttat-gttggtg 127
+ ||||| |||||||||| ||||||||| |||| |||| ||| |||| | ||| | ||| | |||||
+Query 2 gccgg-tttggtttgtncccaacgttg-tttggntttccttcnataaccccatggnccttntggttgg-n 68
+
+Sbjct 128 ataatggtttaggtgatttttcgc-ttaaaga-tctttattatccaattcgatcttttgagttt-gagat 194
+ |||||||||||| | |||||||| ||||||| | ||||||| ||||||||| |||| ||||| | |||
+Query 69 ntaatggtttaggngttttttcgcattaaagact-tttattanccaattcgacctttnnagtttggggat 137
+
+Sbjct 195 ttgc-aggaatcaa-tttagagatttgcatc-ttaagttgaagaaaagaagaagttttcgttgcatatta 261
+ |||| ||| |||| ||| |||| ||||||| ||||||||||| ||||||||||||||||||||||||||
+Query 138 ttgcngggattcaattttggaga-ttgcatcnttaagttgaag-aaagaagaagttttcgttgcatatta 205
+
+Sbjct 262 atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa 331
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 206 atattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaagaa 275
+
+Sbjct 332 tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt 401
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 276 tcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgt 345
+
+Sbjct 402 cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg 471
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 346 cggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagattgg 415
+
+Sbjct 472 ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct 541
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 416 ttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgttct 485
+
+Sbjct 542 tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt 611
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 486 tgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataagattt 555
+
+Sbjct 612 tccacttatgag 623
+ ||||||||||||
+Query 556 tccacttatgag 567
+
# polishing(m=200,d=-800,p=30): 53/64, seed_on_end
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64
581 2 45 F 600 5 11 1010 57 90.35
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attgga
-||||||||||||||||||||||| | |||||||||||||| ||| | ||||| |||||||||| ||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-aacg-ttatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tt
-| || ||||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||| ||||||| ||
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaag
-|||||| ||| ||| | ||||| ||| ||||| ||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaag
+Sbjct 45 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 114
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+
+Sbjct 115 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 183
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+
+Sbjct 184 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 253
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+
+Sbjct 254 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 323
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+
+Sbjct 324 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 393
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+
+Sbjct 394 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 463
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+
+Sbjct 464 tctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attgga 529
+ ||||||||||||||||||||||| | |||||||||||||| ||| | ||||| |||||||||| ||||||
+Query 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+
+Sbjct 530 aacg-ttatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tt 590
+ | || ||||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||| ||||||| ||
+Query 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+
+Sbjct 591 tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaag 625
+ |||||| ||| ||| | ||||| ||| ||||| ||||||||
+Query 570 tggtgaatgatgccattatctttgaagctgaaatggttaag 610
+
# polishing(m=200,d=-800,p=30): 64/64
680 16 84 F 680 39 0 1168 64 90.59
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct
- |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
-cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct
-acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc
-|||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
-acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc
-ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-| | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
-gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt
-cgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagac
-||||||||||||||||||||||||||||||||||| |||||| |||| |||| |||||||||||||||||
-cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac
-taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg
-||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
-taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg
-ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-
-|||||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
-ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc
-tactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaac
-| | ||||| | |||| |||||||||||||||||||||||||| ||| || |||||||||||||||||||
-tcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaac
-aatatcatactgttag-ctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatcttt
-||||| ||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-aatataatattgat-gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt
-gaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatc
-|||||||||||||||||||||||| | || ||||| ||||||| |||||||||
-gaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatc
+Sbjct 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa 69
+
+Sbjct 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgat-caacattct 222
+ |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| | |||||||||
+Query 70 cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctc-ttccaacattct 138
+
+Sbjct 223 acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc 292
+ |||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
+Query 139 acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc 208
+
+Sbjct 293 ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 362
+ | | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+
+Sbjct 363 cgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagac 432
+ ||||||||||||||||||||||||||||||||||| |||||| |||| |||| |||||||||||||||||
+Query 279 cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac 348
+
+Sbjct 433 taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 502
+ ||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 349 taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 503 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag- 572
+ |||||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc 488
+
+Sbjct 573 tactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaac 641
+ | | ||||| | |||| |||||||||||||||||||||||||| ||| || |||||||||||||||||||
+Query 489 tcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaac 557
+
+Sbjct 642 aatatcatactgttag-ctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatcttt 710
+ ||||| ||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 558 aatataatattgat-gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt 626
+
+Sbjct 711 gaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatc 763
+ |||||||||||||||||||||||| | || ||||| ||||||| |||||||||
+Query 627 gaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatc 679
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
721 6 71 F 724 39 143 1343 34 95.29
-cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac
-|||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
-cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac
-agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt
-||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata
-taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag
-|||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
-taatattgatgtcagagctaaaagatgcat-caaaagggtatatggtgaatgatgccattatctttgaag
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt
-aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa
- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
-natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa
-a-ggtataaaactctc-tt-ggtttt
-| ||| |||||||||| || ||||||
-aaggtttaaaactctcctttggtttt
+Sbjct 71 cgcgaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgac 140
+ |||||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||
+Query 143 cgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgac 211
+
+Sbjct 141 agaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgt 210
+ ||||| || | | |||| |||||||||| ||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 211 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 280
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 281 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 350
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 351 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 421 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 490
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaata 561
+
+Sbjct 491 taatattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaag 560
+ |||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 562 taatattgatgtcagagctaaaagatgcat-caaaagggtatatggtgaatgatgccattatctttgaag 630
+
+Sbjct 561 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 630
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 631 ctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaaca 700
+
+Sbjct 631 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 700
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 701 accttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgt 770
+
+Sbjct 701 aatcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taa 768
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||
+Query 771 natcgttgtttctgctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataa 840
+
+Sbjct 769 a-ggtataaaactctc-tt-ggtttt 791
+ | ||| |||||||||| || ||||||
+Query 841 aaggtttaaaactctcctttggtttt 866
+
# polishing(m=200,d=-800,p=30): 31/64, seed_on_end
517 64 0 F 517 65 0 1034 0 100.00
-cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga
-gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt
-agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg
-accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac
-aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga
-aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt
-cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca
-tcatctaagcccatcatctagattttt
-|||||||||||||||||||||||||||
-tcatctaagcccatcatctagattttt
+Sbjct 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+
+Sbjct 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+
+Sbjct 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+
+Sbjct 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+
+Sbjct 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+
+Sbjct 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+
+Sbjct 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+
+Sbjct 490 tcatctaagcccatcatctagattttt 516
+ |||||||||||||||||||||||||||
+Query 490 tcatctaagcccatcatctagattttt 516
+
537 474 3 F 520 658 82 973 28 94.70
-aggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgccgttgaattggct
-|||||| |||| |||||||||||| ||| | | |||||||| ||| | |||||| || || |||||||
-aggttg-cccc-atcggaagagaanttgaactc-ttcttcct-cctnnc-ttagtgacg-tg-attggct
-aaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccggattn
-||||||| || | ||||||||||| || ||||||| || ||||||| ||||||||||||||| ||||||
-aaggaag-tgac-tccttctccgc-ac-agtggattcc-tgtgttg-attcgagttggagca-cggattt
-gtgtaccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttccat
-||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||| |||||||||
-gtgtaccgtgagcacggaa-cactcccggatactatgatggacggtactggacaatgtgg-agcttccat
-tggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcg
-| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||
-t-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta-cctggcg
-ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc
-cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta
-tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa
-atgttattcctatcagtttctctataattatagttatcatttcatttc
-||||||||||||||||||||||||||||||||||||||||||||||||
-atgttattcctatcagtttctctataattatagttatcatttcatttc
+Sbjct 3 aggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgccgttgaattggct 72
+ |||||| |||| |||||||||||| ||| | | |||||||| ||| | |||||| || || |||||||
+Query 82 aggttg-cccc-atcggaagagaanttgaactc-ttcttcct-cctnnc-ttagtgacg-tg-attggct 144
+
+Sbjct 73 aaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccggattn 141
+ ||||||| || | ||||||||||| || ||||||| || ||||||| ||||||||||||||| ||||||
+Query 145 aaggaag-tgac-tccttctccgc-ac-agtggattcc-tgtgttg-attcgagttggagca-cggattt 207
+
+Sbjct 142 gtgtaccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttccat 211
+ ||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 208 gtgtaccgtgagcacggaa-cactcccggatactatgatggacggtactggacaatgtgg-agcttccat 275
+
+Sbjct 212 tggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcg 281
+ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||
+Query 276 t-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta-cctggcg 343
+
+Sbjct 282 ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 351
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 344 ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 413
+
+Sbjct 352 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta 421
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta 483
+
+Sbjct 422 tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa 491
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 484 tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaa 553
+
+Sbjct 492 atgttattcctatcagtttctctataattatagttatcatttcatttc 539
+ ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 554 atgttattcctatcagtttctctataattatagttatcatttcatttc 601
+
# polishing(m=200,d=-800,p=30): 33/64, seed_on_end
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
582 3 0 F 579 5 38 1056 35 93.97
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg
-||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg
-tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta
-||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc
-||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
-ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc
-|||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
-ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta
-c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca
-| ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
-ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca
-atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt
-|||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt
-tgaaactgaaatggttaaggtctct
- ||| ||||||||||||||||||||
--gaagctgaaatggttaaggtctct
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 107
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 108 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 177
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg 208
+ ||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
+Query 178 agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg 246
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 247 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 316
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 317 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 386
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 387 ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 455
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
+Query 456 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca 524
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 525 atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt 592
+
+Sbjct 557 tgaaactgaaatggttaaggtctct 581
+ ||| ||||||||||||||||||||
+Query 593 -gaagctgaaatggttaaggtctct 616
+
# polishing(m=200,d=-800,p=30): 64/64, seed_on_start
626 2 0 F 645 16 84 1190 27 95.75
-gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact
-||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
-gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta
-ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca-
-|||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
-ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa
-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa
-|||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
-tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa
--ctgaa-tggttaag
- ||||| ||||||||
-gctgaaatggttaag
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 223
+
+Sbjct 140 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 293
+
+Sbjct 210 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 363
+
+Sbjct 280 gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact 349
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 364 gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact 433
+
+Sbjct 350 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta 573
+
+Sbjct 490 ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca- 553
+ |||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa 643
+
+Sbjct 554 tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa 612
+ |||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
+Query 644 tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa 713
+
+Sbjct 613 -ctgaa-tggttaag 625
+ ||||| ||||||||
+Query 714 gctgaaatggttaag 728
+
# polishing(m=200,d=-800,p=30): 64/64, seed_on_start
626 2 0 F 645 16 84 1190 27 95.75
-gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-|||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc
-gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact
-||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
-gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
-cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta
-ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca-
-|||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
-ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa
-tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa
-|||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
-tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa
--ctgaa-tggttaag
- ||||| ||||||||
-gctgaaatggttaag
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 223
+
+Sbjct 140 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 293
+
+Sbjct 210 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 363
+
+Sbjct 280 gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact 349
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 364 gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact 433
+
+Sbjct 350 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta 573
+
+Sbjct 490 ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca- 553
+ |||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa 643
+
+Sbjct 554 tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa 612
+ |||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
+Query 644 tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa 713
+
+Sbjct 613 -ctgaa-tggttaag 625
+ ||||| ||||||||
+Query 714 gctgaaatggttaag 728
+
# polishing(m=200,d=-800,p=30): 64/64
728 5 11 F 732 16 129 1307 51 93.01
-aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac
-||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
-aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac
-aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg
-|||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
-aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg
-gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga
-||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
-gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac
-ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa
-||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
-ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga
-agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt
-| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
-aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta
-aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg
-||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
-aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg
-taataagaaaacgttaatgtttgtgaattgtgaa
-| |||| ||||| ||||||||||| || ||||||
-ttataanaaaactttaatgtttgttaaatgtgaa
+Sbjct 11 aaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcacac 80
+ ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||||| ||| ||
+Query 129 aaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggac 198
+
+Sbjct 81 aattgatttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttg 149
+ |||||||| ||| | ||||||||||||||||||||||||| ||||||| |||||||| | ||||||||
+Query 199 aattgattcctcgat-caacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttg 267
+
+Sbjct 150 gtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaga 219
+ ||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||| |
+Query 268 gtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctccaaa 337
+
+Sbjct 220 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 338 caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatntt 407
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 477
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggggagcggttaa 429
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 478 ttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggggagcggttaa 547
+
+Sbjct 430 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 499
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 548 tctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattgga 617
+
+Sbjct 500 agcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcaaaaggatatt 569
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 618 aacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaaggatatt 687
+
+Sbjct 570 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 688 tggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgctta 757
+
+Sbjct 640 aatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttg 704
+ ||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| || || | ||||
+Query 758 aatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttg 826
+
+Sbjct 705 taataagaaaacgttaatgtttgtgaattgtgaa 738
+ | |||| ||||| ||||||||||| || ||||||
+Query 827 ttataanaaaactttaatgtttgttaaatgtgaa 860
+
# polishing(m=200,d=-800,p=30): 64/45
610 3 0 F 607 39 72 1163 18 97.04
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-|||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt
-||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt
-ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag
-|||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
-ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag
-gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca
-|||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
-gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc
-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat
-||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
-aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat
-atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga
-|| |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga
-aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat
-| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
-agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatat 609
+ | |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat 678
+
# polishing(m=200,d=-800,p=30): 64/64
582 3 0 F 579 5 38 1056 35 93.97
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca
-acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
-acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac
-agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg
-||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
-agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg
-tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta
-||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
-tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta
-ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc
-||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
-ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc
-ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc
-|||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
-ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta
-c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca
-| ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
-ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca
-atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt
-|||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
-atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt
-tgaaactgaaatggttaaggtctct
- ||| ||||||||||||||||||||
--gaagctgaaatggttaaggtctct
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 107
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 108 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 177
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg 208
+ ||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
+Query 178 agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg 246
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 247 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 316
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 317 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 386
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 387 ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 455
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
+Query 456 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca 524
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 525 atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt 592
+
+Sbjct 557 tgaaactgaaatggttaaggtctct 581
+ ||| ||||||||||||||||||||
+Query 593 -gaagctgaaatggttaaggtctct 616
+
# polishing(m=200,d=-800,p=30): 64/64
diff --git a/testdata/repfind-result/at1MB-xdrop-r-14-32-80-6-a b/testdata/repfind-result/at1MB-xdrop-r-14-32-80-6-a
index b6fc4ba..f48a7a3 100644
--- a/testdata/repfind-result/at1MB-xdrop-r-14-32-80-6-a
+++ b/testdata/repfind-result/at1MB-xdrop-r-14-32-80-6-a
@@ -1,95 +1,122 @@
+# Options: -seedlength 14 -l 32 -r -outfmt alignment=70 polinfo -verify-alignment -extendxdrop -ii at1MB -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
33 31 0 R 33 31 0 48 6 81.82
-ctctgtc-tctttcttcttcttctt-cttct-tctc
-|||| || || |||||||||||||| || || ||||
-ctct-tcttc-ttcttcttcttctttct-ctgtctc
+Sbjct 0 ctctgtc-tctttcttcttcttctt-cttct-tctc 32
+ |||| || || |||||||||||||| || || ||||
+Query 250 ctct-tcttc-ttcttcttcttctttct-ctgtctc 282
+
# polishing(m=400,d=-600,p=30): 36/36, seed_on_start, seed_on_end
36 38 50 R 38 90 28 59 5 86.49
-tctctc---tctctctctctctttcactcttgtcttgtc
-|||||| | ||||||||||||||||| ||||||||||
-tctctcanatgtctctctctctttcact-ttgtcttgtc
+Sbjct 50 tctctc---tctctctctctctttcactcttgtcttgtc 85
+ |||||| | ||||||||||||||||| ||||||||||
+Query 143 tctctcanatgtctctctctctttcact-ttgtcttgtc 180
+
# polishing(m=400,d=-600,p=30): 39/39
36 118 2 R 36 118 2 54 6 83.33
-acatcttctaagaaagaaacaaagaaaga--cttc-aca
-||| |||| ||||||||||||||||||| |||| |||
-aca-cttc--agaaagaaacaaagaaagaatcttctaca
+Sbjct 2 acatcttctaagaaagaaacaaagaaaga--cttc-aca 37
+ ||| |||| ||||||||||||||||||| |||| |||
+Query 201 aca-cttc--agaaagaaacaaagaaagaatcttctaca 236
+
# polishing(m=400,d=-600,p=30): 39/39, seed_on_start, seed_on_end
33 31 0 R 33 135 79 48 6 81.82
-ctctgtctctt-t-cttcttcttcttcttcttctc
-|||| || ||| | || ||||||||||||||| ||
-ctctttc-cttctcctccttcttcttcttctt-tc
+Sbjct 0 ctctgtctctt-t-cttcttcttcttcttcttctc 32
+ |||| || ||| | || ||||||||||||||| ||
+Query 52 ctctttc-cttctcctccttcttcttcttctt-tc 84
+
# polishing(m=400,d=-600,p=30): 35/35, seed_on_start, seed_on_end
30 19 553 R 34 554 328 46 6 81.25
-at-tttcccaag-gtggtttttttttgt--ttgt
-|| ||||| || ||||||||||||||| ||||
-atgtttccttagagtggtttttttttgtggttgt
+Sbjct 553 at-tttcccaag-gtggtttttttttgt--ttgt 582
+ || ||||| || ||||||||||||||| ||||
+Query 3 atgtttccttagagtggtttttttttgtggttgt 36
+
# polishing(m=400,d=-600,p=30): 34/34, seed_on_start, seed_on_end
+36 632 154 R 31 632 169 52 5 85.07
+Sbjct 154 atctctccaggtgtctcttcttcttcttcttcttct 189
+ || ||||| || | |||||||||||||||||||||
+Query 224 at-tctcc--gt-t-tcttcttcttcttcttcttct 254
+
+# polishing(m=400,d=-600,p=30): 36/36
+36 632 154 R 33 632 167 51 6 82.61
+Sbjct 154 atctctccaggtgtc-tcttcttcttcttcttcttct 189
+ || ||||| || || |||||||||||||||||| ||
+Query 224 at-tctcc--gtttcttcttcttcttcttcttct-ct 256
+
+# polishing(m=400,d=-600,p=30): 37/37
41 634 281 R 42 693 409 59 8 80.72
-tcctctgtgtgtgt-tttttttgttctcttc-a-taattttccc
-|||| | || || | |||||||||||||||| | || |||||||
-tcctgtatg-gtttctttttttgttctcttccacta-ttttccc
+Sbjct 281 tcctctgtgtgtgt-tttttttgttctcttc-a-taattttccc 321
+ |||| | || || | |||||||||||||||| | || |||||||
+Query 45 tcctgtatg-gtttctttttttgttctcttccacta-ttttccc 86
+
# polishing(m=400,d=-600,p=30): 44/44
40 466 426 R 40 704 301 56 8 80.00
-taaat-tttaatttcgtaaatgcacagattacaatgt-ctct
-||| | |||||||||||||| | | | |||| ||||| ||||
-taattgtttaatttcgtaaa-gaaaaaatta-aatgttctct
+Sbjct 426 taaat-tttaatttcgtaaatgcacagattacaatgt-ctct 465
+ ||| | |||||||||||||| | | | |||| ||||| ||||
+Query 81 taattgtttaatttcgtaaa-gaaaaaatta-aatgttctct 120
+
# polishing(m=400,d=-600,p=30): 42/42
45 693 362 R 39 758 186 60 8 80.95
-ctactctttgtgatcttctttgtttgtttgtttggtttttttttt
-|| |||| |||| || ||||| ||| || |||||||||||||||
-ct-ctctctgtg-tc-tctttc-ttg-tt-tttggtttttttttt
+Sbjct 362 ctactctttgtgatcttctttgtttgtttgtttggtttttttttt 406
+ || |||| |||| || ||||| ||| || |||||||||||||||
+Query 83 ct-ctctctgtg-tc-tctttc-ttg-tt-tttggtttttttttt 121
+
# polishing(m=400,d=-600,p=30): 45/45, seed_on_end
42 693 409 R 41 976 291 59 8 80.72
-ccctttt-atcaccttctcttgtttttttctttg-gtatgtcct
-||||||| || | |||||||||||||||| | || || | ||||
-cccttttaat-a-cttctcttgttttttt-tgtgtgtgtctcct
+Sbjct 409 ccctttt-atcaccttctcttgtttttttctttg-gtatgtcct 450
+ ||||||| || | |||||||||||||||| | || || | ||||
+Query 78 cccttttaat-a-cttctcttgttttttt-tgtgtgtgtctcct 118
+
# polishing(m=400,d=-600,p=30): 44/44
32 926 328 R 32 989 330 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 328 tttgtataggtttc-tttatcgtgtgttgtatt 359
+ |||||||||||||| ||| | | |||||| ||
+Query 44 tttgtataggtttcgatta-cctttgttgtgtt 75
+
# polishing(m=400,d=-600,p=30): 33/33
32 480 385 R 32 989 330 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 385 tttgtataggtttc-tttatcgtgtgttgtatt 416
+ |||||||||||||| ||| | | |||||| ||
+Query 44 tttgtataggtttcgatta-cctttgttgtgtt 75
+
# polishing(m=400,d=-600,p=30): 33/33
31 509 337 R 35 1066 356 48 6 81.82
-tta-ata-caattgatcgtttctactctg--agaa
-||| || |||||| |||||||||||||| ||||
-ttatatctcaattgttcgtttctactctgttagaa
+Sbjct 337 tta-ata-caattgatcgtttctactctg--agaa 367
+ ||| || |||||| |||||||||||||| ||||
+Query 29 ttatatctcaattgttcgtttctactctgttagaa 63
+
# polishing(m=400,d=-600,p=30): 35/35
32 632 173 R 33 1140 72 47 6 81.54
-cttcttcttcttcttctttg-cctcttagctgt
-|| |||||||||||||| || |||| | ||||
-ctncttcttcttcttctctggcctcaaacctgt
+Sbjct 173 cttcttcttcttcttctttg-cctcttagctgt 204
+ || |||||||||||||| || |||| | ||||
+Query 194 ctncttcttcttcttctctggcctcaaacctgt 226
+
# polishing(m=400,d=-600,p=30): 33/33
32 138 47 R 35 1243 232 49 6 82.09
-tctctctctctctc-tctatcat-ctctttt-ctt
-|||||||||||||| | | | || ||||||| |||
-tctctctctctctcctttttgatactcttttgctt
+Sbjct 47 tctctctctctctc-tctatcat-ctctttt-ctt 78
+ |||||||||||||| | | | || ||||||| |||
+Query 123 tctctctctctctcctttttgatactcttttgctt 157
+
# polishing(m=400,d=-600,p=30): 35/35
32 926 328 R 32 1350 272 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 328 tttgtataggtttc-tttatcgtgtgttgtatt 359
+ |||||||||||||| ||| | | |||||| ||
+Query 95 tttgtataggtttcgatta-cctttgttgtgtt 126
+
# polishing(m=400,d=-600,p=30): 33/33
32 480 385 R 32 1350 272 46 6 81.25
-tttgtataggtttc-tttatcgtgtgttgtatt
-|||||||||||||| ||| | | |||||| ||
-tttgtataggtttcgatta-cctttgttgtgtt
+Sbjct 385 tttgtataggtttc-tttatcgtgtgttgtatt 416
+ |||||||||||||| ||| | | |||||| ||
+Query 95 tttgtataggtttcgatta-cctttgttgtgtt 126
+
# polishing(m=400,d=-600,p=30): 33/33
31 291 307 R 33 1400 150 46 6 81.25
-gaatact-agttttttt-tttgtgaattgaatt
-||| | | | |||| || |||||||||||||||
-gaagagtcatttttcttgtttgtgaattgaatt
+Sbjct 307 gaatact-agttttttt-tttgtgaattgaatt 337
+ ||| | | | |||| || |||||||||||||||
+Query 101 gaagagtcatttttcttgtttgtgaattgaatt 133
+
# polishing(m=400,d=-600,p=30): 33/33
32 314 158 R 33 1403 172 47 6 81.54
-gagagagagagagaga-aagc-agaagaagaagt
-|||||||||||||||| || | |||| || | ||
-gagagagagagagagagaaactagaa-aaaacgt
+Sbjct 158 gagagagagagagaga-aagc-agaagaagaagt 189
+ |||||||||||||||| || | |||| || | ||
+Query 106 gagagagagagagagagaaactagaa-aaaacgt 138
+
# polishing(m=400,d=-600,p=30): 34/34
-33 1524 237 R 32 1701 304 47 6 81.54
-atatatatatatatatatatagtctttatataa
-|| ||| |||||||||||||| | ||| || ||
-atntatntatatatatatata-tatttctaaaa
-# polishing(m=400,d=-600,p=30): 33/33, seed_on_start, seed_on_end
diff --git a/testdata/repfind-result/humhbb.fna-gr-ext.result b/testdata/repfind-result/humhbb.fna-gr-ext.result
index a49b4f4..2e8b158 100644
--- a/testdata/repfind-result/humhbb.fna-gr-ext.result
+++ b/testdata/repfind-result/humhbb.fna-gr-ext.result
@@ -282,6 +282,7 @@
14 0 13089 F 14 0 50895 28 0 100.00
14 0 17683 F 14 0 50895 28 0 100.00
14 0 13089 F 14 0 17678 28 0 100.00
+14 0 13075 F 14 0 13089 28 0 100.00
14 0 13075 F 14 0 17683 28 0 100.00
14 0 17678 F 14 0 50898 28 0 100.00
14 0 13075 F 14 0 50898 28 0 100.00
diff --git a/testdata/repfind-result/ychrIII.fna-gr-ext.result b/testdata/repfind-result/ychrIII.fna-gr-ext.result
index 11010e2..fdd52ea 100644
--- a/testdata/repfind-result/ychrIII.fna-gr-ext.result
+++ b/testdata/repfind-result/ychrIII.fna-gr-ext.result
@@ -949,6 +949,7 @@
15 0 109609 F 15 0 195179 30 0 100.00
2508 0 11498 F 2508 0 197399 5004 4 99.84
14 0 15000 F 14 0 218892 28 0 100.00
+20 0 29440 F 20 0 29460 40 0 100.00
15 0 87104 F 15 0 296984 30 0 100.00
14 0 193518 F 14 0 292113 28 0 100.00
14 0 12587 F 14 0 193518 28 0 100.00
@@ -993,6 +994,7 @@
239 0 13679 F 239 0 293100 466 4 98.33
239 0 199580 F 239 0 293100 469 3 98.74
44 0 91 F 46 0 135 84 2 95.56
+15 0 156 F 15 0 171 30 0 100.00
64 0 61 F 61 0 125 107 6 90.40
115 0 56 F 109 0 175 191 11 90.18
29 0 112 F 30 0 141 56 1 96.61
@@ -1079,6 +1081,7 @@
26 0 221 F 28 0 247 48 2 92.59
14 0 118 F 14 0 134 28 0 100.00
27 0 77 F 28 0 104 52 1 96.36
+14 0 295 F 14 0 309 28 0 100.00
24 0 185 F 24 0 210 42 2 91.67
14 0 62353 F 14 0 108231 28 0 100.00
14 0 92905 F 14 0 191344 28 0 100.00
@@ -1224,6 +1227,7 @@
45 0 315239 F 45 0 315294 81 3 93.33
27 0 315253 F 27 0 315281 54 0 100.00
28 0 315269 F 27 0 315297 52 1 96.36
+14 0 315239 F 14 0 315253 28 0 100.00
27 0 315239 F 28 0 315266 52 1 96.36
42 0 315239 F 42 0 315281 78 2 95.24
14 0 282931 F 14 0 297274 28 0 100.00
diff --git a/testdata/see-ext-U8-evalue-bitscore.matches b/testdata/see-ext-U8-evalue-bitscore.matches
new file mode 100644
index 0000000..0d1372e
--- /dev/null
+++ b/testdata/see-ext-U8-evalue-bitscore.matches
@@ -0,0 +1,11 @@
+# Options: -ii U89959_genomic -l 50 -outfmt bitscore evalue -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, bit score, evalue
+149 0 66233 F 149 0 70166 235 21 85.91 152.6 1e-36
+190 0 73505 F 188 0 73696 288 30 84.13 178.4 2e-44
+343 0 73448 F 350 0 74209 528 55 84.13 329.5 8e-90
+225 0 73774 F 228 0 74560 342 37 83.66 207.6 4e-53
+208 0 79213 F 207 0 85486 307 36 82.65 178.4 2e-44
+374 0 79690 F 369 0 85882 539 68 81.70 308.9 1e-83
+121 0 79313 F 122 0 88347 234 3 97.53 195.6 2e-49
+452 0 103938 F 451 0 106522 750 51 88.70 523.5 3e-148
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, bit score, evalue
diff --git a/testdata/see-ext-ani-at1MB-U8.txt b/testdata/see-ext-ani-at1MB-U8.txt
new file mode 100644
index 0000000..c0cff1d
--- /dev/null
+++ b/testdata/see-ext-ani-at1MB-U8.txt
@@ -0,0 +1,6 @@
+# Options: -ii at1MB -qii U89959_genomic.fas -ani -minidentity 80 -history 60
+# TIME seedextend-greedy-9-22-80-5-64 overall 0.667635
+ANI at1MB U89959_genomic 83.5046 82.9379
+# space peak in megabytes: 9.84 (in 1123 events)
+# mmap space peak in megabytes: 0.55
+# combined space peak in megabytes: 10.39
diff --git a/testdata/see-ext-at1MB-400-al-from-dtrace.matches b/testdata/see-ext-at1MB-400-al-from-dtrace.matches
new file mode 100644
index 0000000..165afe7
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-al-from-dtrace.matches
@@ -0,0 +1,7610 @@
+# Options: -ii at1MB -outfmt trace -l 400 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+597 1 0 F 592 4 7 898 97 83.68
+Sbjct 0 atgnanantcaaaaatggagtntaggtttcatatctctcgcttttctcttcatcacttcc 59
+ ||| | | ||| ||||||||| ||||||||| || || ||||| |||||||||||||||
+Query 7 atggatagtcacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcc 66
+
+Sbjct 60 tcttcagctgagttcatcattcaacaggtcacaaagggcanaggaatagagtacaacagt 119
+ ||||| |||||| |||||||| ||||||||||| |||||| |||||||||||||||||
+Query 67 tcttccgctgagctcatcattaaacaggtcacacagggcagaggaatagagtacaacaac 126
+
+Sbjct 120 tcttacagtctcgaggagaatcttggagtgacna---gagagttgagagaagagcgacca 176
+ |||||||||||| | ||||||||||||||| | ||||||||||||| |||||||||
+Query 127 tcttacagtctcacgtcgaatcttggagtgacgacaagagagttgagagacgagcgacca 186
+
+Sbjct 177 tcgagtaagatagtgacaataacaagcttctcagtgattaaaggcagaggagaaccctat 236
+ || ||||||||||||||||| ||||||||||| |||||||| | ||||||||||||||||
+Query 187 tcaagtaagatagtgacaatcacaagcttctctgtgattaaggacagaggagaaccctat 246
+
+Sbjct 237 gaatcctctgtttttgaggctgctggttacaaatggagattggttttgtacgtgaatggt 296
+ ||||| ||| ||||||||||||| ||||||||||||||||| |||||||||||||| |||
+Query 247 gaatcatctatttttgaggctgccggttacaaatggagattagttttgtacgtgaagggt 306
+
+Sbjct 297 aataaaaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagacaaac 356
+ ||| || | |||| |||| |||||||||| |||||||| ||||| ||||||||| |
+Query 307 aatccgaaaggcggtataaataatcatatttcactttacgcgaggatagaagagacagaa 366
+
+Sbjct 357 tctcttccattaggttgggaagtgaatgttgatctcaaactctttgtccataatgggaag 416
+ |||||||| ||| ||||||||||||||||||||||||||||||||||| ||| ||||
+Query 367 actcttccaagagggtgggaagtgaatgttgatctcaaactctttgtccacaatcggaan 426
+
+Sbjct 417 ctacacaaatatttgactgttacagatggcttanttgaagcgatataacaatgcnaaaaa 476
+ || | ||||||||| ||||||||||||| | | ||||||||| ||| |||| |||||
+Query 427 ttaaagaaatatttgtctgttacagatggaacagt-gaagcgatacaacgatgcaaaaaa 485
+
+Sbjct 477 agaatggggtttcggacaattgattcctcnatc-aacattctacaacgcgaacgaaggtt 535
+ ||| ||||| ||| |||||||||| ||| || |||||||||||||||||||||||| |
+Query 486 agagtggggattcncacaattgatttctc-ttccaacattctacaacgcgaacgaagggt 544
+
+Sbjct 536 acctt-tgaccaaggacactggttccttttgggtggcnggaaaancctttattgtttaaa 594
+ |||| || ||| |||||| ||||||| ||||| | | | || | || || ||| ||
+Query 545 tccttgtg-cca-ggacacancttccttt-gggtg-ctg-anaa-c-ttcatcgtt-aac 596
+
+Sbjct 595 cc 596
+ ||
+Query 597 cc 598
+
+538 1 9 F 523 47 0 779 94 82.28
+Sbjct 9 caaaaatggagtntaggtttcatatctctcgcttttctcttcatcacttcctcttcagct 68
+ || ||||||||| ||||||||| || || ||||| |||||||||||||||||||| |||
+Query 0 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgct 59
+
+Sbjct 69 gagttcatcattcaacaggtcacaaagggcanaggaatagagtacaacagttcttacagt 128
+ ||| |||||||| ||||||||||| |||||| ||||||||||||||||| |||||||||
+Query 60 gagctcatcattaaacaggtcacacagggcagaggaatagagtacaacaactcttacagt 119
+
+Sbjct 129 ctcgaggagaatcttggagtgacnaga-gag--ttgagagaagagcgaccatcgagtaag 185
+ ||| | ||||||||||||||| | | ||| |||||||| ||||||||||| ||||||
+Query 120 ctcacgtcgaatcttggagtgacgacaagagagttgagagacgagcgaccatcaagtaag 179
+
+Sbjct 186 atagtgacaataacaagcttctcagtgattaaaggcagaggagaaccctatgaatcctct 245
+ ||||||||||| ||||||||||| |||||||| | ||||||||||||||||||||| |||
+Query 180 atagtgacaatcacaagcttctctgtgattaaggacagaggagaaccctatgaatcatct 239
+
+Sbjct 246 gtttttgaggctgctggttacaaatggagattggttttgtacgtgaatggtaataaaaac 305
+ ||||||||||||| ||||||||||||||||| ||||||||||||| |||||| ||
+Query 240 atttttgaggctgccggttacaaatggagattanttttgtacgtgaagggtaatccgaaa 299
+
+Sbjct 306 gacggtggaaatgatcatatttccctttacgcaaggatcgaagagaca-aa-ctctcttc 363
+ | |||| | || |||||||||| |||||||| ||||| ||||||||| || |||| | |
+Query 300 ggcggtatanataatcatatttcactttacgcgaggatagaagagacagaaactct-t-c 357
+
+Sbjct 364 catta-ggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagctacac 422
+ || | ||| |||||||||||||||||||||||||||||||||| ||| ||||| | |
+Query 358 caagaaggt-gggaagtgaatgttgatctcaaactctttgtccacaatcggaagtnaaag 416
+
+Sbjct 423 aaatatttgactgttacagatgg-cttanttgaagcgatataacaatgcnaaaaaagaat 481
+ || |||| | ||||||||||||| | | | ||| |||| | | |||| |||||||| |
+Query 417 aa-tatt-gtctgttacagatggac--a-t-gaancgatcca-cnatgcnaaaaaaga-t 468
+
+Sbjct 482 ggggtttcggacaattgattcctcnatcaacattctacaacgcgaacgaaggttacctt- 541
+ |||| | | ||| ||||||| || || |||| || || | |||| |||||| || ||
+Query 469 ggggatcc--aca-ttgattc-tc--tccacat-ct-ca-c-cgaa-gaaggt-actttc 516
+
+Sbjct 542 tgacca 546
+ |||||
+Query 517 agacca 522
+
+577 2 72 F 606 3 0 916 89 84.95
+Sbjct 72 gtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc- 131
+ ||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| ||
+Query 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctc-ttcc 58
+
+Sbjct 132 aacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctga 190
+ |||||||||||||||||||||||| ||| ||| |||||||| | |||||||||||||||
+Query 59 aacattctacaacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctga 118
+
+Sbjct 191 gatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctcc 250
+ |||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||
+Query 119 gatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcc 178
+
+Sbjct 251 aaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 310
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 gaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 238
+
+Sbjct 311 ctccgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaagggga 370
+ ||| ||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 239 ctctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatc 298
+
+Sbjct 371 tggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggccataaggcaaa 430
+ ||| ||||| |||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 299 tggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaa 358
+
+Sbjct 431 tgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc 490
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 359 cgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+
+Sbjct 491 taaccatagacaat-atnt-ctgca-cttggtaccc--attggaaacg-ttatggtntgg 544
+ ||||| | ||||| || | ||||| |||||||||| ||| ||| || ||||||| |||
+Query 419 caaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgg 478
+
+Sbjct 545 gant-aaca-tatc-tactgttg-ctga--ttaac-ga-gcatccaaaggattt-tggtg 595
+ || | |||| |||| || || || | || ||| || ||||| ||||| | | |||||
+Query 479 gagtgaacaatatcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtg 538
+
+Sbjct 596 a-tga-gccnt-atctt--gaa-ctgaa-tggttaagn-c-ctat-acca-c-tc-tctc 642
+ | ||| ||| | ||||| ||| ||||| |||||||| | || | | || | | ||||
+Query 539 aatgatgccattatcttttgaaactgaaatggttaaggtctctgtgaacaacatantctc 598
+
+Sbjct 643 c-ctnaa 648
+ | || ||
+Query 599 cncttaa 605
+
+626 2 34 F 656 5 0 1063 73 88.61
+Sbjct 34 ggaagctacacaaatatttgactgttacagatggcttagtgaagcgatataacaatgcga 93
+ ||||| || | ||||||||| ||||||||||||| |||||||||||| ||| |||| |
+Query 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaa 59
+
+Sbjct 94 aaaaagaatggggtttcggacaattgattcctcgatc-aacattctacaacgcgaacgaa 152
+ ||||||| ||||| ||| |||||||||| ||| || ||||||||||||||||||||||
+Query 60 aaaaagagtggggattcacacaattgatttctc-ttccaacattctacaacgcgaacgaa 118
+
+Sbjct 153 ggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccggct 212
+ || ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||| |
+Query 119 gggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 178
+
+Sbjct 213 caacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaag 272
+ || ||||||||||||| ||||||||||||||||||||| ||||||||||||||||||||
+Query 179 gaaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttcacttggaag 238
+
+Sbjct 273 atacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaa 332
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaa 298
+
+Sbjct 333 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 392
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 358
+
+Sbjct 393 cttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttgg 452
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 359 cttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgg 418
+
+Sbjct 453 ggagcggttaatctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ct 510
+ |||||||||||||||||||||||||||||||||| | |||||||||||||| ||| | ||
+Query 419 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattct 478
+
+Sbjct 511 gca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca-tatc-tactgtt- 564
+ ||| |||||||||| ||||||| || ||||||| ||||| | |||| |||| |||||||
+Query 479 gcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgtta 538
+
+Sbjct 565 gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa-ct 614
+ ||||||| || ||| ||||| ||||||| |||||||| ||| ||| | ||||| ||| ||
+Query 539 gctgatttaaacgatgcatcaaaaggatatttggtgaatgatgccattatctttgaagct 598
+
+Sbjct 615 gaa-tggttaagn-c-ctata-cca-c-tc-tctcc-ctnaa-t-tct-c-cttctt 659
+ ||| |||||||| | ||||| ||| | || ||||| || || | ||| | ||||||
+Query 599 gaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcacttctt 655
+
+484 2 176 F 513 6 104 730 89 82.15
+Sbjct 176 ttcttttggtgctgagatctttat-tgttaaaccggctcaacaacaagagaaagttacat 234
+ |||||| |||||||| ||||| || | || ||| | || || | | ||| |||
+Query 104 ttctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncat 163
+
+Sbjct 235 tcatatcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttgg 294
+ ||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 164 tcatatcnnaccctccnaacaatgttttcacttggaagatacttcgtttctctaccttgg 223
+
+Sbjct 295 aagataaattctattactccgatgattttctcgttgaagaccgatactggagactaggat 354
+ ||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||||||
+Query 224 aagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggat 283
+
+Sbjct 355 ttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctc 414
+ ||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||
+Query 284 ttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctc 343
+
+Sbjct 415 aaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaa 474
+ |||||||||||||||| ||||||| |||||||||||||||||||||||||||||||||||
+Query 344 aaggccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaa 403
+
+Sbjct 475 agaatcaacgaanttctaaccatagacaat-atnt-ctgca-cttggtaccc-attggaa 530
+ |||||||||||| || ||||| | ||||| || | ||||| |||||||||| ||| |||
+Query 404 agaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacccgattcgaa 463
+
+Sbjct 531 acg-ttatggtntgggant-aaca-tat-ctactgttg-ctgat-taa-cga-gcatcca 582
+ || ||||||| ||||| | |||| ||| || || || | || ||| || |||||||
+Query 464 gcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatcca 523
+
+Sbjct 583 aa-ggattt-tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaagn-c-ctat- 632
+ || || | | |||||| ||| ||| | ||||| ||| ||||| |||||||| | || |
+Query 524 aaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtg 583
+
+Sbjct 633 acca-c-t-ctctccct-naattctc-cttctt 659
+ || | | | ||||| | || | || || |||
+Query 584 acaaacatagtctccgtttaaatatcactactt 616
+
+706 2 0 F 749 16 84 1269 62 91.48
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 143
+
+Sbjct 60 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 144 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 203
+
+Sbjct 120 attcctcgatcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttct 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 204 attcctcgatcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttct 263
+
+Sbjct 180 tttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcata 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 264 tttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcata 323
+
+Sbjct 240 tcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagat 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 324 tcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagat 383
+
+Sbjct 300 aaattctattactccgatgattttctcgttgaagaccgatactggagactaggatttaac 359
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 384 aaattctattactccgatgatnttctcgttgaagaccgatactggagactaggatttaac 443
+
+Sbjct 360 ccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 444 ccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaat 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaat 563
+
+Sbjct 480 caacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-t 534
+ ||||||| | |||||||||||||| ||| | ||||| |||||||||| |||||||||| |
+Query 564 caacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggt 623
+
+Sbjct 535 tatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaagga 587
+ |||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||||||||||
+Query 624 tatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaagga 683
+
+Sbjct 588 t-tttggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaagn-c-ctata-cca-c 636
+ | |||||||| ||| ||| | ||||| ||| ||||| |||||||| | ||||| ||| |
+Query 684 tatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaac 743
+
+Sbjct 637 -tc-tctcc-ctnaa-t-tct-c-cttcttn-tc-ncna-ca-tc-ncnttn--a-taaa 681
+ || ||||| || || | ||| | |||||| || | | || || | || | ||||
+Query 744 atcgtctccgcttaaatatctgcncttctttgtctacnancaatccaccttatgaataaa 803
+
+Sbjct 682 aaa-ttt-a-tt-gat-aattttttanaa 705
+ ||| ||| | || ||| ||||| ||| ||
+Query 804 aaaattttaatttgatgaatttgttataa 832
+
+660 2 0 F 687 39 0 1065 94 86.04
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+
+Sbjct 60 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 119
+ |||||||| |||||||||||| ||| |||| |||||||| ||||| ||| |||||||
+Query 60 acagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattg 119
+
+Sbjct 120 attcctcgatc-aacattctacaacgcgaacgaaggttaccttgaccaggacactggttc 178
+ ||| ||| || |||||||||||||||||||||||| ||||||| |||||||| | |||
+Query 120 atttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttc 178
+
+Sbjct 179 ttttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcat 238
+ |||||||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||
+Query 179 ttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcat 238
+
+Sbjct 239 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 298
+
+Sbjct 299 taaattctattactccgatgattttctcgttgaagaccgatactggagactaggatttaa 358
+ ||||||||||||||| ||||||||||| |||| |||||||||||||||||||||||||||
+Query 299 taaattctattactctgatgattttctngttggagaccgatactggagactaggatttaa 358
+
+Sbjct 359 cccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 418
+ ||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 359 cccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 419 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaa 478
+ |||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaa 478
+
+Sbjct 479 tcaacgaanttctaaccatagacaat-atnt-ctgca-cttggtaccc-attggaaacg- 534
+ |||||||| || ||||| | ||||| || | ||||| |||||||||| ||| ||| ||
+Query 479 tcaacgaagctccaaccacaaacaattatattctgcagcttggtacccgattcgaagcga 538
+
+Sbjct 535 ttatggtntgggant-aaca-tat-ctactgttg-ctga-ttaac-ga-gcatccaaagg 586
+ ||||||| ||||| | |||| ||| || || || | || ||| || ||||| |||||
+Query 539 ttatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatcaaaagg 598
+
+Sbjct 587 attt-tggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaagn-c-ctat-acca- 636
+ | | |||||| ||| ||| | ||||| ||| ||||| |||||||| | || | || |
+Query 599 gtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaa 658
+
+Sbjct 637 c-t-ctctccct-naattctc-cttctt 659
+ | | ||||| | || | || || |||
+Query 659 catagtctccgtttaaatatcactactt 686
+
+668 3 0 F 660 5 38 1139 63 90.51
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttcca 59
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttcca 97
+
+Sbjct 60 acattctacaacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgag 119
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 98 acattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgag 157
+
+Sbjct 120 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcc- 179
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 158 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcca 217
+
+Sbjct 180 gaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 238
+ || |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 218 ga-caatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 276
+
+Sbjct 239 ctctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatc 298
+ ||| ||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 277 ctccgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaagggga 336
+
+Sbjct 299 tggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaa 358
+ ||| ||||| |||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 337 tggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggccataaggcaaa 396
+
+Sbjct 359 cgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 397 cgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagtac 456
+
+Sbjct 419 caaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgg 478
+ ||||| | |||| |||||||||||||||||||||| |||| |||||| |||||||||||
+Query 457 taaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgg 515
+
+Sbjct 479 gagtgaacaatatcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtg 538
+ ||||||||||||||||| || | | || |||| |||||||| ||||| ||| |||||
+Query 516 gagtgaacaatatcatactgttagctga-tttaaacgatgcatcaaaaggatatttggtg 574
+
+Sbjct 539 aatgatgccattatcttttgaaactgaaatggttaaggtctctgtgaac-aacatantct 597
+ |||||||||||||||||| ||| |||||||||||||||||||| | ||| ||||| |||
+Query 575 aatgatgccattatcttt-gaagctgaaatggttaaggtctctat-aaccaacatcgtct 632
+
+Sbjct 598 ccncttaaatatatntcactacttctttatcccccgn--aat-aaccttacaaagaaaaa 654
+ || ||||||||| | |||| | |||| || | | ||| ||||||| || ||| |
+Query 633 ccgcttaaatatctg-cact--t-ctttgtctac-gatcaatcaaccttatgaataaaga 687
+
+Sbjct 655 ttgatgatttaat 667
+ ||| |||| ||
+Query 688 --gat-atttgat 697
+
+639 3 14 F 631 6 14 1063 69 89.13
+Sbjct 14 cgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgc 73
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||
+Query 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgc 73
+
+Sbjct 74 gaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcat-cgtta 132
+ ||| ||||||||| ||||| | ||| ||||||| |||||||| |||||||| || ||
+Query 74 gaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgnta 133
+
+Sbjct 133 acccgacagaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttca 192
+ ||||||||||| || | | |||| |||||||||| ||||||| |||||||||||||
+Query 134 ncccgacagaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttca 193
+
+Sbjct 193 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 252
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 194 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 253
+
+Sbjct 253 tcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagac 312
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 254 tcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagac 313
+
+Sbjct 313 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 372
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 314 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 373
+
+Sbjct 373 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 432
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 374 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+
+Sbjct 433 tatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaatatc 492
+ |||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 434 tatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaatata 492
+
+Sbjct 493 atattgatgtcagaagctaaaagatgcatcnaaa-gggtatatggtgaatgatgccatta 551
+ |||||||||||||| ||||||||||||||| ||| |||||||||||||||||||||||||
+Query 493 atattgatgtcaga-gctaaaagatgcatccaaaagggtatatggtgaatgatgccatta 551
+
+Sbjct 552 tcttttgaaactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatata 610
+ ||||| ||| |||||||||||||||||||||||| ||| |||| ||||| ||||||||
+Query 552 tcttt-gaagctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat- 609
+
+Sbjct 611 tntcactacttctttatcccccgnaataaccttacaaagaaa 652
+ |||||||||||| || | || |||||||| || |||
+Query 610 ---cactacttctttttcaac---aacaaccttacgaataaa 644
+
+655 3 0 F 650 16 156 1047 86 86.82
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctc-ttcc 58
+ ||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| ||
+Query 156 gtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc- 215
+
+Sbjct 59 aacattctacaacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctga 118
+ |||||||||||||||||||||||| ||| ||| |||||||| | |||||||||||||||
+Query 216 aacattctacaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctga 274
+
+Sbjct 119 gatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcc 178
+ |||||| || ||||| ||| | || ||||||||||||| ||||||||||||||||||||
+Query 275 gatctttattgttaaaccggctcaacaacaagagaaagttacattcatatcaaaccctcc 334
+
+Sbjct 179 gaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 238
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 335 aaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctatta 394
+
+Sbjct 239 ctctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatc 298
+ ||| |||||| |||||||||||||||||||||||||| |||||||||||||||||||
+Query 395 ctccgatgatnttctcgttgaagaccgatactggagactaggatttaacccgaaagggga 454
+
+Sbjct 299 tggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaa 358
+ ||| ||||| |||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 455 tggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggccataaggcaaa 514
+
+Sbjct 359 cgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ ||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 515 tgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagtac 574
+
+Sbjct 419 caaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgg 478
+ ||||| | |||| |||||||||||||||||||||| |||| ||| || |||||||||||
+Query 575 taaccatagacaaatatattctgcagcttggtaccc-gattggaaacggttatggtgtgg 633
+
+Sbjct 479 gagtgaacaatatcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtg 538
+ ||||||||||||||||| || | | || |||| |||||||| ||||| ||| |||||
+Query 634 gagtgaacaatatcatactgttagctga-tttaaacgatgcatccaaaggatatttggtg 692
+
+Sbjct 539 aatgatgccattatcttttgaaactgaaatggttaaggtctctgtgaac-aacatantct 597
+ |||||||||||||||||| ||| |||||||||||||||||||| | ||| ||||| |||
+Query 693 aatgatgccattatcttt-gaagctgaaatggttaaggtctctat-aaccaacatcgtct 750
+
+Sbjct 598 ccncttaaatatatntcactacttctttatcccccgn-aat-aaccttacaaagaaaaa 654
+ || ||||||||| | | || | |||| || | ||| |||||| || |||||
+Query 751 ccgcttaaatatct-gcnct--t-ctttgtctacnancaatccaccttatgaataaaaa 805
+
+653 3 0 F 643 39 72 1203 31 95.22
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttcca 59
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttcca 131
+
+Sbjct 60 acattctacaacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgag 119
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 132 acattctacaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgag 191
+
+Sbjct 120 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctccg 179
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 192 atcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaaaccctcca 251
+
+Sbjct 180 aacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattac 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 252 aacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattac 311
+
+Sbjct 240 tctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatct 299
+ |||||||||||||| |||| |||||||||||||||| |||||||||||||||||||||||
+Query 312 tctgatgattttctngttggagaccgatactggagactaggatttaacccgaaaggatct 371
+
+Sbjct 300 ggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaac 359
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 372 ggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaac 431
+
+Sbjct 360 gcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 432 gcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtggg 479
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtggg 550
+
+Sbjct 480 agtgaacaatatcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtga 539
+ |||||||||||| |||||||||||||| ||||||||||||||| ||||||||||||||||
+Query 551 agtgaacaatataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtga 609
+
+Sbjct 540 atgatgccattatcttttgaaactgaaatggttaaggtctctgtgaacaa-catantctc 598
+ ||||||||||||||||| ||| |||||||||||||||||||||||| ||| |||| ||||
+Query 610 atgatgccattatcttt-gaagctgaaatggttaaggtctctgtga-caaacatagtctc 667
+
+Sbjct 599 cncttaaatatatntcactacttctttatcccccgnaataaccttacaaagaaa 652
+ | |||||||| |||||||||||| || | || |||||||| || |||
+Query 668 cgtttaaatat----cactacttctttttcaac---aacaaccttacgaataaa 714
+
+613 4 16 F 571 47 0 1022 54 90.88
+Sbjct 16 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgct 75
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgct 59
+
+Sbjct 76 gagctcatcattaaacaggtcacacagggcagaggaatagagtacaacaactcttacagt 135
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 gagctcatcattaaacaggtcacacagggcagaggaatagagtacaacaactcttacagt 119
+
+Sbjct 136 ctcacgtcgaatcttggagtgacgacaagagagttgagagacgagcgaccatcaagtaag 195
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 ctcacgtcgaatcttggagtgacgacaagagagttgagagacgagcgaccatcaagtaag 179
+
+Sbjct 196 atagtgacaatcacaagcttctctgtgattaaggacagaggagaaccctatgaatcatct 255
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 atagtgacaatcacaagcttctctgtgattaaggacagaggagaaccctatgaatcatct 239
+
+Sbjct 256 atttttgaggctgccggttacaaatggagattagttttgtacgtgaagggtaatccgaaa 315
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 240 atttttgaggctgccggttacaaatggagattanttttgtacgtgaagggtaatccgaaa 299
+
+Sbjct 316 ggcggtataaataatcatatttcactttacgcgaggatagaagagacagaaactcttcca 375
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 300 ggcggtatanataatcatatttcactttacgcgaggatagaagagacagaaactcttcca 359
+
+Sbjct 376 agagggtgggaagtgaatgttgatctcaaactctttgtccacaatcggaanttaaagaaa 435
+ ||| |||||||||||||||||||||||||||||||||||||||||||||| | ||||||
+Query 360 agaaggtgggaagtgaatgttgatctcaaactctttgtccacaatcggaagtnaaagaa- 419
+
+Sbjct 436 tatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtgggga 495
+ |||| |||||||||||||||| || |||| |||| || | |||| |||||||| ||||||
+Query 420 tatt-gtctgttacagatgga-ca-tgaancgatcca-cnatgcnaaaaaaga-tgggga 473
+
+Sbjct 496 ttcncacaattgatttctcttccaacattctacaacgcgaacgaagggttccttgtgcca 555
+ | | |||| |||||| |||| ||| ||| || || | |||| ||||| | | || | | |
+Query 474 t-c-caca-ttgatt-ctct-cca-cat-ct-ca-c-cgaa-gaagg-tac-tt-t-c-a 517
+
+Sbjct 556 ggacacancttcctttgggtgctganaacttcatcgttaacccgaccgaaaaaccagaaa 615
+ | || || || | ||||| |||||| | || | || ||| || ||| |||| | |||||
+Query 518 g-ac-ca-ct-c-tttgg-tgctgana-ct-c-tcntta-cc-gac-gaaa--c-agaaa 562
+
+Sbjct 616 aaatccctttctt 628
+ ||| || |||
+Query 563 ---tcc-tt-ctt 570
+
+704 5 52 F 700 6 14 1056 116 83.48
+Sbjct 52 cgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgc 111
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||
+Query 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgc 73
+
+Sbjct 112 gaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgtta 170
+ ||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || ||
+Query 74 gaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgnta 133
+
+Sbjct 171 acccgacagaaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttca 230
+ ||||||||||| || | | |||| |||||||||| ||||||| ||||||||||||
+Query 134 ncccgacagaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttca 193
+
+Sbjct 231 cttggaagatacttcgtttctctaccttggaagataaattctattactccgatgattttc 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 194 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 253
+
+Sbjct 291 tcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaagac 350
+ ||||||||||||||||||||||| ||||||||||||||||||| ||| ||||| ||||
+Query 254 tcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagac 313
+
+Sbjct 351 cacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaa 410
+ |||||||||||||||||||||||| ||||||||||||||||||||||||||||| |||||
+Query 314 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 373
+
+Sbjct 411 acacttggggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaa 470
+ ||||||||||||||||||||||||||||||||||||||||||| | ||||| | ||||
+Query 374 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+
+Sbjct 471 tatattctgcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatca 530
+ |||||||||||||||||||||||||| |||||| |||||||||||||||||||||||| |
+Query 434 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataa 493
+
+Sbjct 531 tactgttagctgatttaaacgatgcatc-aaaaggatatttggtgaatgatgccattatc 589
+ || || | | || |||| |||||||| |||||| ||| ||||||||||||||||||||
+Query 494 tattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatc 553
+
+Sbjct 590 tttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgca 649
+ ||||||||||||||||||||||||||| | || ||||| ||||||| ||||||||| |
+Query 554 tttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcacta 613
+
+Sbjct 650 cttctttgtctacgatcaatcaaccttatgaataaagagatatttgatgagtttgtaata 709
+ ||||||| || | | ||| |||||||| |||||||| | |||||||||||| |||
+Query 614 cttctttttc-a--a-caa-caaccttacgaataaagtggactttgatgagttt--aatt 666
+
+Sbjct 710 ag-aaaacgttaatgtttgt-ga--attgtgaagttattacttctgtt-ct 755
+ | | ||| || ||| || || |||||| || || | | |||| ||
+Query 667 tgttatacgacaacgtt-gttgatgcttgtgatgtaat--cgt-tgtttct 713
+
+742 5 0 F 746 16 118 1323 55 92.61
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaa 59
+ ||||| || | ||||||||| ||||||||||||| |||||||||||| ||| |||| |
+Query 118 ggaagctacacaaatatttgactgttacagatggcttagtgaagcgatataacaatgcga 177
+
+Sbjct 60 aaaaagagtggggattcacacaattgatttctc-ttccaacattctacaacgcgaacgaa 118
+ ||||||| ||||| ||| |||||||||| ||| || ||||||||||||||||||||||
+Query 178 aaaaagaatggggtttcggacaattgattcctcgatc-aacattctacaacgcgaacgaa 236
+
+Sbjct 119 gggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 178
+ || ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||| |
+Query 237 ggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccggct 296
+
+Sbjct 179 gaaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttcacttggaag 238
+ || ||||||||||||| ||||||||||||||||||||| ||||||||||||||||||||
+Query 297 caacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaag 356
+
+Sbjct 239 atacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaa 298
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 357 atacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaa 416
+
+Sbjct 299 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 417 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 476
+
+Sbjct 359 cttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgg 418
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 477 cttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttgg 536
+
+Sbjct 419 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattct 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 537 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattct 596
+
+Sbjct 479 gcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgtta 538
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 597 gcagcttggtacccgattggaaacggttatggtgtgggagtgaacaatatcatactgtta 656
+
+Sbjct 539 gctgatttaaacgatgcatcaaaaggatatttggtgaatgatgccattatctttgaagct 598
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 657 gctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaagct 716
+
+Sbjct 599 gaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcacttctttgt 658
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 717 gaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttctttgt 776
+
+Sbjct 659 ctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttgtaataagaa 713
+ |||| | ||||| |||||||||||||| | || ||| || || | ||||| |||| ||
+Query 777 ctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttgttataanaa 835
+
+Sbjct 714 aacgttaatgtttgtgaattgtgaagtt 741
+ ||| ||||||||||| || |||||| ||
+Query 836 aactttaatgtttgttaaatgtgaaatt 863
+
+756 5 0 F 750 39 34 1275 77 89.77
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaa 59
+ ||||| || | ||||||||| ||||||||||||||||||||||||||||||||||||| |
+Query 34 ggaagctacacaaatatttgactgttacagatggaacagtgaagcgatacaacgatgcna 93
+
+Sbjct 60 aaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaag 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 94 aaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaag 153
+
+Sbjct 120 ggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgacag 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 ggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgacag 213
+
+Sbjct 180 aaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttcacttggaaga 239
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 214 aaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaaga 273
+
+Sbjct 240 tacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaag 299
+ |||||||||||||||||||||||||||||||||||||||| ||||||||||| |||| ||
+Query 274 tacttcgtttctctaccttggaagataaattctattactctgatgattttctngttggag 333
+
+Sbjct 300 accgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ |||||||||||||||||||||||||||||||||| ||| |||||||||||||||||||
+Query 334 accgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcac 393
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggg 419
+ ||||||||||||||| ||||||||||||||||||||||||||||| ||||||||||||||
+Query 394 ttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggg 453
+
+Sbjct 420 gagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctg 479
+ |||||||||||||||||||||||||||||||||| | ||||| | |||| |||||||||
+Query 454 gagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaattatattctg 513
+
+Sbjct 480 cagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgttag 539
+ ||||||||||||||||| |||||| |||||||||||||||||||||||| ||| || |
+Query 514 cagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataatattgatgt 573
+
+Sbjct 540 ctgatttaaacgatgcatcaaaaggatatttggtgaatgatgccattatctttgaagctg 599
+ | || |||| |||||||||||||| ||| ||||||||||||||||||||||||||||||
+Query 574 cagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatctttgaagctg 633
+
+Sbjct 600 aaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcacttctttgtc 659
+ ||||||||||||||||| | || ||||| ||||||| ||||||||| |||||||| ||
+Query 634 aaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttc 693
+
+Sbjct 660 tacgatcaatcaaccttatgaataaagagatatttgatgagtttgtaataag-aaaacgt 718
+ | | ||| |||||||| |||||||| | |||||||||||| ||| | | |||
+Query 694 -a--a-caa-caaccttacgaataaagtggactttgatgagttt--aatttgttatacga 746
+
+Sbjct 719 taatgtttgt-ga--attgtgaagttattacttctgtt-ct 755
+ || ||| || || |||||| || || | | |||| ||
+Query 747 caacgtt-gttgatgcttgtgatgtnat--cgt-tgtttct 783
+
+599 6 104 F 601 16 260 915 95 84.17
+Sbjct 104 ttctttnggtgctganatcttcatgcgntancccgacagaaanacnnnananagtcncat 163
+ |||||| |||||||| ||||| || | || ||| | || || | | ||| |||
+Query 260 ttcttttggtgctgagatctttat-tgttaaaccggctcaacaacaagagaaagttacat 318
+
+Sbjct 164 tcatatcnnaccctccnaacaatgttttcacttggaagatacttcgtttctctaccttgg 223
+ ||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 319 tcatatcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttgg 378
+
+Sbjct 224 aagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggat 283
+ ||||||||||||||||||| |||||| |||||||||||||||||||||||||| ||||||
+Query 379 aagataaattctattactccgatgatnttctcgttgaagaccgatactggagactaggat 438
+
+Sbjct 284 ttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctc 343
+ ||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||
+Query 439 ttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctc 498
+
+Sbjct 344 aaggccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaa 403
+ |||||||||||||||| ||||||| |||||||||||||||||||||||||||||||||||
+Query 499 aaggccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaa 558
+
+Sbjct 404 agaatcaacgaagctccaaccacaaacaattatattctgcagcttggtacccgattcgaa 463
+ ||||||||||||| | ||||| | |||| |||||||||||||||||||||||||| |||
+Query 559 agaatcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaa 618
+
+Sbjct 464 gcgattatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatcca 523
+ || |||||||||||||||||||||||| ||| || | | || |||| ||||||||||
+Query 619 acggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatcca 678
+
+Sbjct 524 aaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtg 583
+ || || ||| ||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 679 aa-ggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctata 737
+
+Sbjct 584 acaaacatagtctccgtttaaatatcactacttctttttc-a--a-caa-caaccttacg 638
+ || ||||| ||||||| ||||||||| ||||||| || | | ||| | |||||| |
+Query 738 accaacatcgtctccgcttaaatatctgcncttctttgtctacnancaatccaccttatg 797
+
+Sbjct 639 aataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtga- 698
+ |||||| | ||| || | | ||||||||||| | ||| || | ||| |||| |
+Query 798 aataaa-aaaattttaatttgatgaatttgttataanaaaac-tt-t-aatgtttgttaa 853
+
+Sbjct 699 -tgt-aa 702
+ ||| ||
+Query 854 atgtgaa 860
+
+783 6 14 F 788 39 86 1400 57 92.74
+Sbjct 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgc 73
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||
+Query 86 cgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgc 145
+
+Sbjct 74 gaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgnta 133
+ ||| ||||||||||||||| | ||| ||||||| |||||||| |||||||| || ||
+Query 146 gaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgtta 204
+
+Sbjct 134 ncccgacagaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttca 193
+ ||||||||||| || | | |||| |||||||||| ||||||| |||||||||||||
+Query 205 acccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttca 264
+
+Sbjct 194 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 253
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 265 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 324
+
+Sbjct 254 tcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagac 313
+ | |||| |||||||||||||||| ||||||||||||||||||||||||||||||| ||||
+Query 325 tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagac 384
+
+Sbjct 314 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 385 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 444
+
+Sbjct 374 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 445 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 504
+
+Sbjct 434 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataa 493
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 505 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataa 564
+
+Sbjct 494 tattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatc 553
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 565 tattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatc 623
+
+Sbjct 554 tttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcacta 613
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 624 tttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcacta 683
+
+Sbjct 614 cttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaatttgttata 673
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 684 cttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaatttgttata 743
+
+Sbjct 674 cgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttt 733
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 744 cgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttt 803
+
+Sbjct 734 actttttttttcatgttttgctatc-aatgaaa-taaa-ggtataaaactctc-tt-ggt 788
+ ||||||||||||||||||||||||| ||||||| |||| ||| |||||||||| || |||
+Query 804 actttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggt 863
+
+Sbjct 789 ttt-aaa-gt 796
+ ||| ||| ||
+Query 864 ttttaaaagt 873
+
+467 11 135 F 449 29 138 766 50 89.08
+Sbjct 135 gtcctgatggatgnggangttcacntagataccaaagcacaagaaattcgaaggtgctgg 194
+ ||||||||| | | |||| | | |||||||||||||||||||||||||||||||||
+Query 138 gtcctgatg-agccgtttgttcgcat-gataccaaagcacaagaaattcgaaggtgctgg 195
+
+Sbjct 195 agaaaaggcgaccactttcactaagagcatttggctcgaggaagctgatgcgagngccat 254
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||
+Query 196 agaaaaggcgaccactttcactaagagcatttggctcgaggaagctgatgcgagtgccat 255
+
+Sbjct 255 atccgttggtgaggaagtaactttgatggattggggaaatgctatcgtaaaggaaatcnc 314
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 256 atccgttggtgaggaagtaactttgatggattggggaaatgctatcgtaaaggaaatcac 315
+
+Sbjct 315 naangacgaggagggtcgtgtcactgccttatctggtgtcttgaatctccaaggttctgt 374
+ || ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 316 aaaggacgaggagggtcgtgtcactgccttatctggtgtcttgaatctccaaggttctgt 375
+
+Sbjct 375 naagactacaaagctgaagctgacatggcttcctgatactaatgaattggtccatctcnc 434
+ ||||||||||||||||||||||||||||||||||||||||||||||||||| ||||| |
+Query 376 aaagactacaaagctgaagctgacatggcttcctgatactaatgaattggtcaatctcac 435
+
+Sbjct 435 nttaacagagtttgattatctaatccccnanaagaaactggaanatgatgatgaaatttg 494
+ |||||||||||||||||||||||| || | || ||||||||| ||||||||||| || |
+Query 436 attaacagagtttgattatctaatcaccaagaaaaaactggaagatgatgatgaagtt-g 494
+
+Sbjct 495 ctgattttgctgaatccnnncccnaaaaangaanacntttggcncttnggtngattccca 554
+ ||||||||| ||||||| ||| || || ||| | || ||| ||| ||| |||||| |
+Query 495 ctgattttg-tgaatcctaaccccaagaaggaaca--tt-ggcnctt-ggt-gattcc-a 547
+
+Sbjct 555 atattgagagaatcttgaaattgttggaaaatntttattcccccttt 601
+ |||| || ||||||| ||||| || ||||| | | ||||||| |||
+Query 548 atat-ga-agaatct-gaaat-gt-ggaaa-tntg-attcccc-ttt 586
+
+767 16 84 F 766 39 0 1248 95 87.61
+Sbjct 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 143
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+
+Sbjct 144 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 203
+ |||||||| |||||||||||| ||| |||| |||||||| ||||| ||| |||||||
+Query 60 acagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattg 119
+
+Sbjct 204 attcctcgatc-aacattctacaacgcgaacgaaggttaccttgaccaggacactggttc 262
+ ||| ||| || |||||||||||||||||||||||| ||||||| |||||||| | |||
+Query 120 atttctc-ttccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttc 178
+
+Sbjct 263 ttttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcat 322
+ |||||||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||
+Query 179 ttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcat 238
+
+Sbjct 323 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 382
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 298
+
+Sbjct 383 taaattctattactccgatgatnttctcgttgaagaccgatactggagactaggatttaa 442
+ ||||||||||||||| |||||| |||| |||| |||||||||||||||||||||||||||
+Query 299 taaattctattactctgatgattttctngttggagaccgatactggagactaggatttaa 358
+
+Sbjct 443 cccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 502
+ ||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 359 cccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 503 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaa 562
+ |||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaa 478
+
+Sbjct 563 tcaacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacgg 622
+ ||||||||| | ||||| | |||| |||||||||||||||||||||||||| ||| ||
+Query 479 tcaacgaagctccaaccacaaacaattatattctgcagcttggtacccgattcgaagcga 538
+
+Sbjct 623 ttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaagg 682
+ |||||||||||||||||||||||| ||| || | | || |||| |||||||| |||||
+Query 539 ttatggtgtgggagtgaacaatataatattgatgtcagagctaaaagatgcatcaaaagg 598
+
+Sbjct 683 atatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaa 742
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||| | || ||
+Query 599 gtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaa 658
+
+Sbjct 743 catcgtctccgcttaaatatctgcncttctttgtctacnancaatccaccttatgaataa 802
+ ||| ||||||| ||||||||| ||||||| || || | ||| || ||| ||||||
+Query 659 catagtctccgtttaaatatcactacttctttttcaac-aacaa-cc---ttacgaataa 713
+
+Sbjct 803 a-aaaattttaatttgatgaatttgttataanaaaac-tt-t-aatgtttgt 850
+ | | ||| || | | ||||||||||| | ||| || | ||| ||||
+Query 714 agtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgt 765
+
+397 18 0 F 417 46 194 634 60 85.26
+Sbjct 0 cctgtcccatcgggccgttngtgggtttttgacccattgcggttggagctcgacgttnga 59
+ ||||||||||||||||||| ||||||||||||||||||||||||||||||||||||| ||
+Query 194 cctgtcccatcgggccgttggtgggtttttgacccattgcggttggagctcgacgttgga 253
+
+Sbjct 60 aagcgtcgttggcggcgttccgatnatcgcatggccactttttgccgagcagaatatgaa 119
+ |||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 254 aagcgtcgttggcggcgttccgatgatcgcatggccactttttgccgagcagaatatgaa 313
+
+Sbjct 120 tgcggcgttgctcagcgacgaactgggaatcgcagtcagattggatgatccaaaggagga 179
+ ||||||||||||||||||||||||||||||||| ||| ||||||||||||||||||||||
+Query 314 tgcggcgttgctcagcgacgaactgggaatcgccgtcngattggatgatccaaaggagga 373
+
+Sbjct 180 tatttctaggtggaanattgaggcgttggtgaggaaggttatgactgagaaggaaggtga 239
+ |||||||| |||||| ||||| |||||||||| ||| ||||||||||| |||||| ||||
+Query 374 tatttctangtggaanattgaagcgttggtgaagaangttatgactgaaaaggaangtga 433
+
+Sbjct 240 agcgatgagaaggaaagtgaagaagtt-gagagactcggcggagatgtcactgagc-att 297
+ | |||||| || ||||||||| || || || | |||| ||||| |||||||||| | |||
+Query 434 ancgatgaaaangaaagtgaaaaaatttgaaanactcngcgganatgtcactgaaccatt 493
+
+Sbjct 298 gacggtgg-tggtttggcgcacga-gtcgc-ttt-gc-agagt-cacc-aaggagtgt-c 349
+ ||| |||| ||||||||||| | | || | ||| || | | | || ||||| | | |
+Query 494 gacngtgggtggtttggcgccccaaatccccttttgccnnaattcccccaaggaattttc 553
+
+Sbjct 350 aac-ggttttt-ggaa-cgtgt-cgt-gga-cttgt-cacgtg-gt-gc-ttaaaaa 396
+ || ||||||| |||| | | | | | ||| ||||| | | | || || |||||||
+Query 554 caccggttttttggaaacnttttccttggaacttgttcccctttgttgccttaaaaa 610
+
+458 34 157 F 442 1317 0 789 37 91.78
+Sbjct 157 ggcaacagattgtcctgataagagaggattttagagttatcgtagcaaatggtttctgct 216
+ |||| || || ||| ||| | | || |||| | || ||||| ||| ||||| | ||
+Query 0 ggca-ca-nttc-cct-ata-g-gngg-tttttgngt-atcgtgncaa-tggttccn-ct 49
+
+Sbjct 217 cttgggagaaagatccttgtcctttttggtgttcttaatgcgaatcttttcgtgcttgct 276
+ |||||||||| || ||||| |||||| ||||| |||||||||||||||| ||||||||||
+Query 50 cttgggagaa-ga-ccttgncctttt-ggtgtccttaatgcgaatcttt-cgtgcttgct 105
+
+Sbjct 277 tcaacggtttgtttcagacggtagagaagcaatcagggaggaggatacatgcttcggaca 336
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 106 tcaacggtttgtttcagacgntagagaagcaatcagggaggaggatacatgcttcggaca 165
+
+Sbjct 337 aggtagagcagaaataaataagagagaggcaatagcaaaagtaaaggagaaggttttcct 396
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 166 aggtagagcagaaataaataagagagaggcaatagcaaaagtaaaggagaaggttttcct 225
+
+Sbjct 397 caaattggcattttcagagtttgcgtgagaaacaagggaaagctgatggatctttttatg 456
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 226 caaattggcattttcagngtttgcgtgagaaacaagggaaagctgatggatctttttatg 285
+
+Sbjct 457 ttagggttattataatagtcttaatgatcagtttccatgtttctaaggttttgtttgatt 516
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 286 ttagggttattataatagtcttaatgatcagtttccatgtttctaaggttttgtttgatt 345
+
+Sbjct 517 taagttggttattaattcagtctacttacactacttttattttcatttttgtacnttttc 576
+ ||||| |||||||| | ||||||||||||||||||||||||||||||||||||| |||||
+Query 346 taagt-ggttattagt-cagtctacttacactacttttattttcatttttgtacgttttc 403
+
+Sbjct 577 aattgttatatgttaattccgatcncatttttttggac 614
+ |||||||||||| ||||| |||| ||| | |||||||
+Query 404 tattgttatatgtgaattcggatcacatgtgtttggac 441
+
+399 35 140 F 402 72 145 717 28 93.01
+Sbjct 140 act-tca-gggaggagtatg-ctt-gcccgttctgttcagacta-ttttgata-tcgtct 193
+ ||| ||| ||| ||||| ||| |||| | | || | |||| | | ||||||
+Query 145 actatcaccggatnagtatatcttagcccctnccgtcccaactaaaaacgggaatcgtct 204
+
+Sbjct 194 ctctatgctgtcacattgatgaagatcatcctatggatgcaaaaaatggggtatgtcccg 253
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 205 ctctatgctgtcacattgatgaagatcatcctatggatgcaaaaaatggggtatgtcccg 264
+
+Sbjct 254 tttgtgcggtgaaagtgagctctgatatgattgctcatataaccctacaacatgcaaata 313
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 265 tttgtgcggtgaaagtgagctctgatatgattgctcatataaccctacaacatgcaaata 324
+
+Sbjct 314 tgttcaaggtgacgcggaaaaggaaatcaagaagatgcggggctcaatccatgctatcga 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 325 tgttcaaggtgacgcggaaaaggaaatcaagaagatgcggggctcaatccatgctatcga 384
+
+Sbjct 374 tcttgaagagagagtttcctgatggaaattttcagagcctatttgaaggaacatcacgtg 433
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 385 tcttgaagagagagtttcctgatggaaattttcngagcctatttgaaggaacatcacgtg 444
+
+Sbjct 434 ctgtatcctcttcttctgccagtatagctgctgatcctttactgtcttcattcatttcac 493
+ |||||||||||||||||||||||||| ||||||||||||||||||||||||||||||| |
+Query 445 ctgtatcctcttcttctgccagtata-ctgctgatcctttactgtcttcattcatttccc 503
+
+Sbjct 494 caatggctgatgactttttcatttctgaatcaagtctatgttgca 538
+ |||||||||||||||||||| |||||||||||| ||||||| |||
+Query 504 caatggctgatgactttttcctttctgaatcaa-tctatgt-gca 546
+
+430 61 134 F 438 65 137 787 27 93.78
+Sbjct 134 ggtnccacgtgtgaggacta-tccaccaatggaccgatatcaaagaaatgaaggcgatac 192
+ ||| |||||| || || | |||||||||||||||||||||||||||||||||||||||
+Query 137 ggtagcacgtgaga-tacaagtccaccaatggaccgatatcaaagaaatgaaggcgatac 195
+
+Sbjct 193 aagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccg 252
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 196 aagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccg 255
+
+Sbjct 253 atatcaaagaaatgaaggcgatacaagtcgaccaatggatcgatatcaaagaaatgaagg 312
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 256 atatcaaagaaatgaaggcgatacaagtcgaccaatggatcgatatcaaagaaatgaagg 315
+
+Sbjct 313 cgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcccngatatctgaaaagc 372
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 316 cgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcc-agatatctgaaaagc 374
+
+Sbjct 373 ataataaatgaatcaatatctaaaatctggtgtttttctctctttcttcttcccaacaat 432
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||
+Query 375 ataataaatgaatcaatatctaaaatctggtgtttttctctctttcttcttccccacaat 434
+
+Sbjct 433 gattgaaaaactctttcttgttatgaataaagatggatgcccatt-ataagggccatcnt 491
+ ||||||||||||||| ||||||||||||||||||||||||||||| |||||||||||| |
+Query 435 gattgaaaaactctt-cttgttatgaataaagatggatgcccatttataagggccatcat 493
+
+Sbjct 492 ctaagcccatcatctanatgtttctaggg-ttttaccctttcc-ttgttctcc-tatat- 548
+ |||||||||||||||| || ||||||||| |||||||| |||| |||||| || |||||
+Query 494 ctaagcccatcatctagatttttctaggggttttaccccttcccttgttccccctatatt 553
+
+Sbjct 549 -aaagaa--cc-ttt-atctc 563
+ |||||| || ||| |||||
+Query 554 naaagaaancccttttatctc 574
+
+517 64 0 F 517 65 0 1034 0 100.00
+Sbjct 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaa 59
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaa 59
+
+Sbjct 60 ctcagatggagcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgata 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 ctcagatggagcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgata 119
+
+Sbjct 120 gaacttgaattagtaagggtagcacgtgagatacaagtccaccaatggaccgatatcaaa 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 gaacttgaattagtaagggtagcacgtgagatacaagtccaccaatggaccgatatcaaa 179
+
+Sbjct 180 gaaatgaaggcgatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaa 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 gaaatgaaggcgatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaa 239
+
+Sbjct 240 gtcgaccaatggaccgatatcaaagaaatgaaggcgatacaagtcgaccaatggatcgat 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 240 gtcgaccaatggaccgatatcaaagaaatgaaggcgatacaagtcgaccaatggatcgat 299
+
+Sbjct 300 atcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcc 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 300 atcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcc 359
+
+Sbjct 360 agatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 360 agatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+
+Sbjct 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccattt 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccattt 479
+
+Sbjct 480 ataagggccatcatctaagcccatcatctagattttt 516
+ |||||||||||||||||||||||||||||||||||||
+Query 480 ataagggccatcatctaagcccatcatctagattttt 516
+
+461 78 86 F 459 80 149 800 40 91.30
+Sbjct 86 ttttcattgccgtagacatggctttccgttgccgtgtttttatgtcgtcgcttttgttag 145
+ |||| || | ||||||||||||||||||||||| |||||||||||||| |||||||||||
+Query 149 tttt-at-gtcgtagacatggctttccgttgccatgtttttatgtcgttgcttttgttag 206
+
+Sbjct 146 gtgttgtttgtttgcttccaataaaggggaattgtctttcgtctctgtctttacagagtt 205
+ ||||||||||| ||||||||||||| ||||||||||| ||||||||||||||||||||||
+Query 207 gtgttgtttgtctgcttccaataaaagggaattgtctatcgtctctgtctttacagagtt 266
+
+Sbjct 206 ttatgagagatgacacacctatcttatatgtttatagtttatacaagtgtttttatgttt 265
+ | ||||||||||||||||||||||||||||||| |||||||||||||||||||||||||
+Query 267 tcatgagagatgacacacctatcttatatgtttctagtttatacaagtgtttttatgttc 326
+
+Sbjct 266 gttggatttgaagcgaagcttaaccatcttatggtgacttagatctatttagaaccttta 325
+ |||||||||||||||| |||| ||||||| ||||||| | ||||||||||||||||||||
+Query 327 gttggatttgaagcgaggctttaccatct-atggtgaatcagatctatttagaaccttta 385
+
+Sbjct 326 gttggtggcttttctccggatcgtcatgttgggtatacggattactgaaatttcaaggat 385
+ ||||||||||||||||| |||||||||||||||||| ||||||| ||||||||| ||||
+Query 386 gttggtggcttttctccttatcgtcatgttgggtatatggattacagaaatttcagggat 445
+
+Sbjct 386 agtttgcaaataaaattgaagaaaagaaagaaatttccttcgcgattttaagatgccttt 445
+ |||| |||||||| ||||||||||||| |||||||| ||| | ||||||||||||||||
+Query 446 agtt-gcaaataatgttgaagaaaagaa-gaaatttcattcaccattttaagatgccttt 503
+
+Sbjct 446 tagccgtgatttcaattgttcgg--a-gttttgattcgttttgcaaccagctttgtcggt 502
+ || |||||||||||| |||| | | |||||||||||| |||||||||||||| |||||
+Query 504 tatccgtgatttcaagtgtttgatcaagttttgattcgtattgcaaccagctttatcggt 563
+
+Sbjct 503 gaaaatcagaagaatcaatagtcgaatttcagttatcggcaatg 546
+ ||||||||||| ||||||| |||||||||||||||||| |||||
+Query 564 gaaaatcagaaaaatcaatggtcgaatttcagttatcgtcaatg 607
+
+542 78 223 F 540 1488 8 995 29 94.64
+Sbjct 223 cctatc-ttatatgtttatagtttatacaagtgtttttatgtttgttgg-atttgaagcg 280
+ ||| || ||| ||||| |||| || | || | |||| | | ||| ||| |||||| |||
+Query 8 cctttccttaaatgtt-ataggttttccaggnntttt-anggttggtgggatttgacgcg 65
+
+Sbjct 281 aagcttaaccatctt-atggtgacttagatctatttagaacctttagttggtggcttttc 339
+ | ||||| ||||||| |||||| ||| | ||||||||| | |||||| ||||||||| |
+Query 66 a-gcttacccatctttatggtg-ctttggactatttagaccntttagt-ggtggctttcc 122
+
+Sbjct 340 tccggatcgtcatgttgggtatacggattactgaaatttcaaggatagtttgcaaataaa 399
+ |||||||| ||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 123 tccggatcntcatgttgggtatccggattactgaaatttcaaggatagtttgcaaataaa 182
+
+Sbjct 400 attgaagaaaagaaagaaatttccttcgcgattttaagatgccttttagccgtgatttca 459
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 183 attgaagaaaagaaagaaatttccttcgcgattttaagatgccttttagccgtgatttca 242
+
+Sbjct 460 attgttcggagttttgattcgttttgcaaccagctttgtcggtgaaaatcagaagaatca 519
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 243 attgttcggagttttgattcgttttgcaaccagctttgtcggtgaaaatcagaagaatca 302
+
+Sbjct 520 atagtcgaatttcagttatcggcaatgattttcttcaccagaatcagcatcttagatggc 579
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 303 atagtcgaatttcagttatcggcaatgattttcttcaccagaatcagcatcttagatggc 362
+
+Sbjct 580 ggtggtgatgtcggaaagcttttagaattttcatccaacacgtgtaccactgttgacacg 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 363 ggtggtgatgtcggaaagcttttagaattttcatccaacacgtgtaccactgttgacacg 422
+
+Sbjct 640 tttgtttgggaatgaaactaatgataaactttcttcaagttgaagcaatatattgtgtgg 699
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 423 tttgtttgggaatgaaactaatgataaactttcttcaagttgaagcaatatattgtgtgg 482
+
+Sbjct 700 gcctttatgggctgtaatctgttttgtaacccatgttgttatgaataaaatcctaatctt 759
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 483 gcctttatgggctgtaatctgttttgtaacccatgttgttatgaataaaatcctaatctt 542
+
+Sbjct 760 gcgag 764
+ |||||
+Query 543 gcgag 547
+
+568 79 56 F 568 1495 0 1022 38 93.31
+Sbjct 56 ttggccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagat 115
+ ||| |||| |||||||||| |||||||||||| | ||| ||| | |||| | ||| |
+Query 0 ttg-ccgg-tttggtttgtncccaacgttgtttggntttcctt-cnataaccccatggnc 56
+
+Sbjct 116 cttatg-ttggtgataatggtttaggtgatttttcgc-ttaaagatcttt-attatccaa 172
+ ||| || |||| |||||||||||| | |||||||| ||||||| |||| |||| ||||
+Query 57 cttntggttgg-nntaatggtttaggngttttttcgcattaaaga-cttttattanccaa 114
+
+Sbjct 173 ttcgatcttttgagtttgag-atttgcaggaat-caatttag-agatttgcatc-ttaag 228
+ ||||| |||| |||||| | |||||| || || |||||| | ||||| ||||| |||||
+Query 115 ttcgacctttnnagtttggggatttgcngggattcaattttggagatt-gcatcnttaag 173
+
+Sbjct 229 ttgaagaaaagaagaagttttcgttgcatattaatattgcccttagctgctaagttttta 288
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 ttgaagaaa-gaagaagttttcgttgcatattaatattgcccttagctgctaagttttta 232
+
+Sbjct 289 tctggaagttcgattggtttgtttaaggtgaaacccagaagaatcaaacttgctttcatt 348
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 233 tctggaagttcgattggtttgtttaaggtgaaacccagaagaatcaaacttgctttcatt 292
+
+Sbjct 349 atcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgtcggaaat 408
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 293 atcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaagatgtcggaaat 352
+
+Sbjct 409 gcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagat 468
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 353 gcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagat 412
+
+Sbjct 469 tggttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttagga 528
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 413 tggttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttagga 472
+
+Sbjct 529 cttcaaatgttcttgtaatctcagtgtatgttgggcttttggttttttagcccatgtatg 588
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 473 cttcaaatgttcttgtaatctcagtgtatgttgggcttttggttttttagcccatgtatg 532
+
+Sbjct 589 gttggttaacgttaataagattttccacttatgag 623
+ |||||||||||||||||||||||||||||||||||
+Query 533 gttggttaacgttaataagattttccacttatgag 567
+
+417 223 0 F 414 271 2 801 10 97.59
+Sbjct 0 agagnttagcggttctgtgaaattgcctcacgttcctaggccaaagatgaagntttgcat 59
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||| |||||||
+Query 2 aga--ttagcggttctgtgaaattgcctcacgttcctaggccaaagatgaagatttgcat 59
+
+Sbjct 60 gcttggtgatgcccagcacgtcgaagnggctgagaagnttggattggaatctatggatgt 119
+ |||||||||||||||||||||||||| |||||||||| ||||||||||||||||||||||
+Query 60 gcttggtgatgcccagcacgtcgaagaggctgagaagattggattggaatctatggatgt 119
+
+Sbjct 120 tgaagctcttaagaagttgaacaagaacaagaaacttgttaagaagcttgctaagaaatt 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 tgaagctcttaagaagttgaacaagaacaagaaacttgttaagaagcttgctaagaaatt 179
+
+Sbjct 180 ccatgctttccttgcttctgaatctgtcattaagcagattcctcgtcttcttggtcctgg 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 ccatgctttccttgcttctgaatctgtcattaagcagattcctcgtcttcttggtcctgg 239
+
+Sbjct 240 tctcaacaaggcaggaaaattcccaactcttgttagccaccaagagtctttggaatccaa 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 240 tctcaacaaggcaggaaaattcccaactcttgttagccaccaagagtctttggaatccaa 299
+
+Sbjct 300 agtgaatgagacaaaggcaacagtgaagttccagctcaagaaggttctatgtatgggaat 359
+ ||||||||||||||||||||||||||||||||| |||||||||||||||||||||||| |
+Query 300 agtgaatgagacaaaggcaacagtgaagttccanctcaagaaggttctatgtatgggagt 359
+
+Sbjct 360 tgctgtcggtaatctttccatgggaggaaaaacagatctttcaaaatgttcagatga 416
+ ||||||||||||||||||||||| |||| || |||||||||||||||||||||||||
+Query 360 tgctgtcggtaatctttccatgg-aggagaagcagatctttcaaaatgttcagatga 415
+
+418 229 0 F 419 270 0 828 3 99.28
+Sbjct 0 cacggagataactacagtgacctaagccgcaaaatcaagctagctatgcgactagttgag 59
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacggagataactacagtgacctaagccgcaaaatcaagctagctatgcgactagttgag 59
+
+Sbjct 60 ctttaccagccttacttactcttcaagggcatatttgatgatttaaataccgaaagactg 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 ctttaccagccttacttactcttcaagggcatatttgatgatttaaataccgaaagactg 119
+
+Sbjct 120 cgaatgaaaagaaaggagaatatcaaagagttagatggatcgttcgagttcgatcccaag 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 cgaatgaaaagaaaggagaatatcaaagagttagatggatcgttcgagttcgatcccaag 179
+
+Sbjct 180 tccattgattgggacaattatatcacaaacacccacattcctggcctcatcacccatgtg 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 tccattgattgggacaattatatcacaaacacccacattcctggcctcatcacccatgtg 239
+
+Sbjct 240 cttaaacaataaattatgctggtaatatgtttggaactattgtgaatctcgtgtgtaata 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 240 cttaaacaataaattatgctggtaatatgtttggaactattgtgaatctcgtgtgtaata 299
+
+Sbjct 300 ttattaaagaatacgattatatcattctaatcttgtaatttacagtttgtgttggcgtgt 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 300 ttattaaagaatacgattatatcattctaatcttgtaatttacagtttgtgttggcgtgt 359
+
+Sbjct 360 aatatcaaaataaataaaaaaaaacttattccacaatggataagacttt-gaatcatgc 417
+ |||||||||||||||||||||||||||||||| |||||||||||||||| ||||| |||
+Query 360 aatatcaaaataaataaaaaaaaacttattccccaatggataagacttttgaatcntgc 418
+
+418 318 13 F 428 1693 142 621 75 82.27
+Sbjct 13 acatg-tccccncct-gcc-tttcattgcnccc-tctt-gctgncttagccaaga-gcnc 66
+ ||||| | ||| ||| ||| ||||||||| ||| |||| |||| ||||||||||| || |
+Query 142 acatggtgcccaccttgccgtttcattgcacccgtctttgctgacttagccaagaagcac 201
+
+Sbjct 67 ctcgacgtag-tctcttccaaggtcgatgttgaccgaattgaacactnttgctgagggag 125
+ |||||||||| | ||||| ||||||||||||||| |||||||||||| ||||||||| ||
+Query 202 ctcgacgtagntttcttc-aaggtcgatgttgac-gaattgaacactgttgctgagg-ag 258
+
+Sbjct 126 tttaaagttccaggcaatgcccaac-gtttatcttcatgaaagaaggagagatcaaggag 184
+ |||||||||| |||||||||| ||| ||||||||||||||||||||||||||||||||||
+Query 259 tttaaagttc-aggcaatgcc-aaccgtttatcttcatgaaagaaggagagatcaaggag 316
+
+Sbjct 185 actgtggttggtgctgctaaagaagaaatcatt-gccaa-tctcg-agaagcacaagac- 241
+ ||||||||||||||||||||||||| ||||||| ||||| ||||| ||||| |||| |
+Query 317 actgtggttggtgctgctaaagaaggaatcatttgccaaatctcggngaagcccaagncc 376
+
+Sbjct 242 agtt-gttgc-tgctgctt-gattt-gcttttc-tc-tctta-cctatttt-gctaaaat 292
+ |||| ||||| |||||||| ||||| |||||| || ||||| |||||||| |||||||
+Query 377 agtttgttgcctgctgctttgattttgctttttntcctcttancctatttttgctaaaaa 436
+
+Sbjct 293 -atg-tttggtgttttaa-taaatcc-tttgttcgcccgagtcttttcaccttaaat-gt 347
+ ||| ||||| | ||||| |||| || |||||||||||||| ||||||||| |||| ||
+Query 437 natggtttgggggtttaaataaanccctttgttcgcccgagn-ttttcacct-aaatngt 494
+
+Sbjct 348 gctcttatg-tgt-ggtggtgaataaatgttgttgcaaacttgattactcgcagctatgc 405
+ |||||||| ||| || || | | || |||||| |||||||| || | | || |||
+Query 495 cctcttatggtgttggggg-gnanaa-tgttgt-gcaaactttgttccngg-ag-tat-n 548
+
+Sbjct 406 taattgttcgttcatggttatgttt 430
+ |||| | || | |||| || |||
+Query 549 naattnt-cg-gcntggt-at-ttt 569
+
+405 336 36 F 419 1703 0 734 30 92.72
+Sbjct 36 cag-agagagaccgtagcaaaacagggcttaccggagcagaacggaaaaccccatttcga 94
+ ||| ||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 0 cagnagagagaacgtagcaaaacagggcttaccggagcagaacggaaaaacccatttcga 59
+
+Sbjct 95 agctggagatgatcgtgctaaggagtacgtcagtctcttgaaatcgaacgatccaattgg 154
+ |||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 60 agctggagatgatcgtnctaaggagtacgtcagtctcttgaaatcgaacgatccaattgg 119
+
+Sbjct 155 attcaacattgttgatgttcttgcttggggttctattggacacatcgttgcttactacat 214
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 attcaacattgttgatgttcttgcttggggttctattggacacatcgttgcttactacat 179
+
+Sbjct 215 cttggctacttccagcaatggatacgacccaagcttctttggatgattcgtttcaatgtc 274
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 cttggctacttccagcaatggatacgacccaagcttctttggatgattcgtttcaatgtc 239
+
+Sbjct 275 aatctctcgtatatgtatatgtatatgtttgacttgtgttgcaagctatctaatctgttc 334
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 240 aatctctcgtatatgtatatgtatatgtttgacttgtgttgcaagctatctaatctgtnc 299
+
+Sbjct 335 tctatctctgtttcttc-ttct-gttgttg-ttgttg-ttgtc-taagactt-gtccctc 388
+ ||||||||||||||| | |||| || |||| |||||| ||| | |||| ||| ||||| |
+Query 300 tctatctctgtttctcccttctngtngttggttgttggttgncctaaggcttngtccccc 359
+
+Sbjct 389 -ttttt-gcaaa-tgtttta-tttct-ccatttacaaa-gatt-ggtttgcagagtttt 440
+ ||||| ||||| ||||| ||||| || ||| |||| | || ||||| ||| |||||
+Query 360 cttttttgcaaaangtttttntttctncccttttcaaaagnttnggtttccagggtttt 418
+
+439 376 0 F 450 1694 81 703 62 86.05
+Sbjct 0 taa-gccct-ggcgc-cggatggaan-ccgtga-cttg-ngagataaattat-ntgaccc 52
+ ||| | ||| ||||| || |||||| |||||| |||| ||||||||| || ||| ||
+Query 81 taatgtccttggcgcacgaatggaactccgtgaacttggagagataaatnatgctgatcc 140
+
+Sbjct 53 actaggttt-actcggcccattgtccccattcatgt-ccggnttttccgc-tcggcggcc 109
+ ||||||||| |||||||||||||||||||||||||| |||| |||||||| |||||||||
+Query 141 actaggttttactcggcccattgtccccattcatgttccgggttttccgcctcggcggcc 200
+
+Sbjct 110 aactat-ccgcagt-accaccatatcgtcccagaaggtgccctttctgttatcctcctcc 167
+ |||||| ||||||| |||||||||||||||||||||||||||||||||| ||||||||||
+Query 201 aactattccgcagttaccaccatatcgtcccagaaggtgccctttctgtnatcctcctcc 260
+
+Sbjct 168 tcccccaaaggctttcccaaaaaactcaccaagtcactgatgtcactatagctacgaaat 227
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 261 tcccccaaaggctttcccaaaaaactcaccaagtcactgatgtcactatagctacggaat 320
+
+Sbjct 228 tgcgtcaataaatgtatgcacgttaatttgtttcattt-gtgatgtgtggggctctttat 286
+ |||||||||||||||||||||| ||||||||||||||| |||||||||||||||||||||
+Query 321 tgcgtcaataaatgtatgcacggtaatttgtttcattttgtgatgtgtggggctctttat 380
+
+Sbjct 287 ctattatatgcatgtcacgtg-tttgtcatatttgcaa-tgtatcatgtatgtggctctt 344
+ ||||||||||||||||||| | |||| | |||||||| ||||||||| |||||| |||
+Query 381 ctattatatgcatgtcacggggtttgnaanatttgcaaatgtatcatggatgtggnnctt 440
+
+Sbjct 345 tatctattata-tgcatgtgtttgtcaattgtcata-tttgcgatgtatcatgtatgatg 402
+ | | | || | |||||| ||||| ||||| || | |||||| | | ||| |||| |
+Query 441 -aaccantaaaatgcatgngtttgnnaattg-caaaatttgcggng-ntnatgaatgang 497
+
+Sbjct 403 tatgtgggctc-tttatttattatatgcatgtgtttt 438
+ || |||| | |||||| || | ||| ||| |||||
+Query 498 -at-tggggncctttatt-atna-atgnatgggtttt 530
+
+400 380 1 F 408 451 26 766 14 96.53
+Sbjct 1 caagggga-tcc-ttgtgtt-gaat-cgagttagagcncggattt-gtgt-ccc-tgagc 53
+ |||| ||| ||| |||| |||| ||||||||||| ||||||| |||| ||| |||||
+Query 26 caagtggantccnnngtgtnngaattcgagttagagcacggattttgtgtacccgtgagc 85
+
+Sbjct 54 -acggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattg 112
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 86 cacggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattg 145
+
+Sbjct 113 ttcggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtac 172
+ |||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||
+Query 146 ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtac 205
+
+Sbjct 173 ccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 232
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 206 ccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 265
+
+Sbjct 233 ttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctt 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 266 ttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctt 325
+
+Sbjct 293 atgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagac 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 326 atgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagac 385
+
+Sbjct 353 aatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 400
+ ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 386 aatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 433
+
+403 380 0 F 406 630 10 722 29 92.83
+Sbjct 0 acaaggggatccttgtgttgaat-cgagttagagcncggatttgtgtccct-gagcacgg 57
+ ||| ||| ||||| |||| || || |||| || ||||||| | | ||| | ||||||
+Query 10 acatgggnttccttnggttggattcgnnttagggcccggatttttttncctngngcacgg 69
+
+Sbjct 58 aaacactcccggatactacgatggacggtactggacaatgt-ggaagcttccattgttcg 116
+ || || |||||||||||||||||| ||||||||| | || | |||| ||||||||||||
+Query 70 aaccantcccggatactacgatggncggtactggnccattttggaangttccattgttcg 129
+
+Sbjct 117 gatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacccgg 176
+ ||||||| || ||||||||| | |||||||||||||||||||||||||||||||||||||
+Query 130 gatgcacngantccgctcaantgttgaaggaagttgaagaatgcaagaaggagtacccgg 189
+
+Sbjct 177 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 190 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 249
+
+Sbjct 237 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatga 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 250 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatga 309
+
+Sbjct 297 attatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatt 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 310 attatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatt 369
+
+Sbjct 357 tctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 370 tctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 415
+
+401 380 0 F 404 736 106 784 7 98.26
+Sbjct 0 acaaggggatcc-ttgtgttgaat-cgagttagagcncggatttgtgt-ccctgagcacg 56
+ ||||| |||||| ||||||||||| ||||||||||| ||||||||||| || ||||||||
+Query 106 acaagtggatccnttgtgttgaattcgagttagagcacggatttgtgtaccgtgagcacg 165
+
+Sbjct 57 gaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttcg 116
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 166 gaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttcg 225
+
+Sbjct 117 gatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacccgg 176
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 226 gatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgg 285
+
+Sbjct 177 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 286 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 345
+
+Sbjct 237 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatga 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 346 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatga 405
+
+Sbjct 297 attatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatt 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 406 attatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatt 465
+
+Sbjct 357 tctatcggattgtcaaatgtctgatttatgaatatgtaatttat 400
+ ||||||||||||||||||||||||||||||||||||||||||||
+Query 466 tctatcggattgtcaaatgtctgatttatgaatatgtaatttat 509
+
+400 380 3 F 403 846 215 773 10 97.51
+Sbjct 3 aggggat-ccttgtgttgaat-cgagttagagcncggatttgtgt-ccctgagcacggaa 59
+ || |||| || |||||||||| ||||||||||| ||||||||||| || |||||||||||
+Query 215 agtggattccctgtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaa 274
+
+Sbjct 60 acactcccggatactacgatggacggtactggacaatgtggaagcttccattgttcggat 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 275 acactcccggatactacgatggacggtactggacaatgtggaagcttccattgttcggat 334
+
+Sbjct 120 gcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacccgggcg 179
+ ||||||||||||||||||| ||||||||||||||||||||||||||||| ||||||||||
+Query 335 gcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggantacccgggcg 394
+
+Sbjct 180 ccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattg 239
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 395 cnttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattg 454
+
+Sbjct 240 cctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaatt 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 455 cctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaatt 514
+
+Sbjct 300 atctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttct 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 515 atctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttct 574
+
+Sbjct 360 atcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ |||||||||||||||||||||||||||||||||||||||||||
+Query 575 atcggattgtcaaatgtctgatttatgaatatgtaatttatat 617
+
+403 380 0 F 407 902 16 783 9 97.78
+Sbjct 0 acaaggggatccttgtgttg-aatcg-agttagagcnc-ggatttgtgt-ccctgagcac 55
+ ||||| |||||||||||||| ||||| | ||||||| | |||||||||| || |||||||
+Query 16 acaagtggatccttgtgttggaatcggatttagagcnccggatttgtgtaccgtgagcac 75
+
+Sbjct 56 ggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttc 115
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 76 ggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttc 135
+
+Sbjct 116 ggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacccg 175
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 136 ggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccg 195
+
+Sbjct 176 ggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttc 235
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 196 ggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttc 255
+
+Sbjct 236 attgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatg 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 256 attgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatg 315
+
+Sbjct 296 aattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaat 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 316 aattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaat 375
+
+Sbjct 356 ttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ |||||||||||||||||||||||||||||||||||||||||||||||
+Query 376 ttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 422
+
+401 380 2 F 408 1100 35 740 23 94.31
+Sbjct 2 aaggggatcct-tgtgttgaat-cgagttagagcncgg-atttg-tgt-ccctgagcac- 56
+ |||||| || |||||||||| || ||||| || ||| ||||| ||| ||| | || |
+Query 35 aaggggnccccctgtgttgaattcgngttagggcccgggatttggtgtncccngngcccc 94
+
+Sbjct 57 ggaaacact-cccggatactacgatggacggtactggacaatgtggaagcttccattgtt 114
+ |||| |||| ||||||||||||||||| ||||||||||||||||||| |||||||||||
+Query 95 ggaancactncccggatactacgatggccggtactggacaatgtggangcttccattgtc 154
+
+Sbjct 115 cggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtaccc 174
+ |||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 155 cggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccc 214
+
+Sbjct 175 gggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagttt 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 215 gggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagttt 274
+
+Sbjct 235 cattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttat 294
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 275 cattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttat 334
+
+Sbjct 295 gaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaa 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 335 gaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaa 394
+
+Sbjct 355 tttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ ||||||||||||||||||||||||||||||||||||| | ||||||||
+Query 395 tttctatcggattgtcaaatgtctgatttatgaatatnttatttatat 442
+
+401 380 2 F 407 1143 2 721 29 92.82
+Sbjct 2 aaggggatccttgtgttgaat-cgagttagagcnc-ggatttgtgt-ccc-tgagcac-g 56
+ || ||| ||| || ||||||| || ||| | || | |||||||||| ||| || || | |
+Query 2 aaagggntccctg-gttgaattcg-gttngngccccggatttgtgtncccgtgngccccg 59
+
+Sbjct 57 gaaacactcccggatactac-gatggac-ggtactggacaatgtggaagcttcc-attgt 113
+ ||| ||| ||| | |||| | ||||||| |||||||| ||||||||||| |||| |||||
+Query 60 gaaccacccccnggtacttccgatggaccggtactggccaatgtggaagnttcccattgt 119
+
+Sbjct 114 tcggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacc 173
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 120 tcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacc 179
+
+Sbjct 174 cgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtt 233
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 cgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtt 239
+
+Sbjct 234 tcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctta 293
+ ||||||||||||||||||||||||||||||||||||||| |||||||||||||| |||||
+Query 240 tcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacantctta 299
+
+Sbjct 294 tgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagaca 353
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 300 tgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagaca 359
+
+Sbjct 354 atttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ |||||||||||||||||||||||||||||||||||||||| ||||||||
+Query 360 atttctatcggattgtcaaatgtctgatttatgaatatgtnatttatat 408
+
+403 380 0 F 407 1151 49 786 8 98.02
+Sbjct 0 acaaggggatccttgtgtt-gaat-cgagttagagcn-cggatttgtgt-ccctgagcac 55
+ ||||| ||||||||||||| |||| ||||||||||| ||||||||||| || |||||||
+Query 49 acaagtggatccttgtgtttgaattcgagttagagccacggatttgtgtaccgtgagcac 108
+
+Sbjct 56 ggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttc 115
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 109 ggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccattgttc 168
+
+Sbjct 116 ggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacccg 175
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 169 ggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccg 228
+
+Sbjct 176 ggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttc 235
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 229 ggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttc 288
+
+Sbjct 236 attgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatg 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 289 attgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatg 348
+
+Sbjct 296 aattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaat 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 349 aattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaat 408
+
+Sbjct 356 ttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ |||||||||||||||||||||||||||||||||||||||||||||||
+Query 409 ttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 455
+
+403 380 0 F 409 1230 104 773 13 96.80
+Sbjct 0 acaaggggatcc-ttgtgttgaat-cgagttagagcncggatttgtgtccc-tgagcacg 56
+ |||| || ||| ||||||||||| |||||||| || |||||||||||||| ||||| ||
+Query 104 acaaatggntcccttgtgttgaattcgagttagggcncggatttgtgtcccgtgagcccg 163
+
+Sbjct 57 gaaacactcccggatactacgatggac-ggtactggacaat-gtggaagcttcc-attgt 113
+ ||||||||||||||||||||||||||| ||||||||||||| |||||||||||| |||||
+Query 164 gaaacactcccggatactacgatggaccggtactggacaattgtggaagcttcccattgt 223
+
+Sbjct 114 tcggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtacc 173
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 224 tcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacc 283
+
+Sbjct 174 cgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtt 233
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 284 cgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtt 343
+
+Sbjct 234 tcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctta 293
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 344 tcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctta 403
+
+Sbjct 294 tgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagaca 353
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 404 tgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagaca 463
+
+Sbjct 354 atttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 402
+ |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 464 atttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 512
+
+399 380 0 F 406 1360 9 730 25 93.79
+Sbjct 0 acaag-gggatcc-ttg-tgttgaatcg-agttag-agcncggatttgtgt-ccctgagc 53
+ |||| ||||||| ||| |||| ||||| |||| | || ||||||||||| || |||||
+Query 9 acaantgggatcccttggtgttnaatcggagtttggngcacggatttgtgtnccgtgagc 68
+
+Sbjct 54 acggaaac-actcccggatactacgatggacggtactggacaatgtggaagcttccattg 112
+ |||| ||| ||||| ||||||||||||||||| |||||||||||||||||||||||||||
+Query 69 acggnaaccactccnggatactacgatggacgntactggacaatgtggaagcttccattg 128
+
+Sbjct 113 ttcggatgcaccgactccgctcaagtnttgaaggaagttgaagaatgcaagaaggagtac 172
+ | |||||||||||||||||||||||| |||||||||||||| ||||||||||||| ||||
+Query 129 tncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgcaagaaggngtac 188
+
+Sbjct 173 ccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 232
+ ||||||||||||||| ||||||||||||||||||||||||||||||||||||||||| ||
+Query 189 ccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtccaatgcatcngt 248
+
+Sbjct 233 ttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctt 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 249 ttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattctt 308
+
+Sbjct 293 atgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagac 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 309 atgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagac 368
+
+Sbjct 353 aatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 398
+ |||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 369 aatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+475 404 165 F 466 819 35 809 44 90.65
+Sbjct 165 ggaacantcgacaaatcncataggttncacgttggagctaacatctnggc-ggtggagtt 223
+ ||| || || | || | ||| ||| ||||| || |||| || | | |||||| ||
+Query 35 gga-ca-tcncccaaccncat-ggtn-cacgt-ggngcta-ca-c-cncctggtggactt 86
+
+Sbjct 224 tcagcggagttncatgaacccagccgttgntttcggaccagccgtcgtaagctggacgtg 283
+ ||||| | | || |||||| |||||| |||||| || |||||||||||||||||||
+Query 87 -cagcg-ngctcca-gaaccccaccgttgctttcgg-cccnccgtcgtaagctggacgtg 142
+
+Sbjct 284 gaccaac-actgggtttactgggntggtcctcttattggtggtggantcgccggaatta- 342
+ | ||| | ||||||||||||||| ||| |||||||||||||||||| ||||||||||||
+Query 143 gcccacccactgggtttactgggctggncctcttattggtggtggactcgccggaattat 202
+
+Sbjct 343 ctacgactttgtnttcatcgatgaaaatgcccacgagcaattgcctaccaccgattactg 401
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 203 ctacgactttgtcttcatcgatgaaaatgcccacgagcaattgcctaccaccgattactg 262
+
+Sbjct 402 aagacgtcaaattcaacgttgttaatctgatgaatttttcgtgatttgcttttttaattt 461
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 263 aagacgtcaaattcaacgttgttaatctgatgaatttttcgtgatttgcttttttaattt 322
+
+Sbjct 462 gcatcgtaatgggtttntggncgttggatcatttttagatgaatctttgtctantgattg 521
+ |||||||||||||||| ||| |||||||||||||||||||||||||||||||| ||||||
+Query 323 gcatcgtaatgggtttctggccgttggatcatttttagatgaatctttgtctattgattg 382
+
+Sbjct 522 atcatttatgtgtntttgggtttgttgttggagttgtaatatctctggaaggcttttgtg 581
+ ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 383 atcatttatgtgtctttgggtttgttgttggagttgtaatatctctggaaggcttttgtg 442
+
+Sbjct 582 caattgtattgtacggtttaataactataattgagaaaaccagggaatgtgaattatg 639
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 443 caattgtattgtacggtttaataactataattgagaaaaccagggaatgtgaattatg 500
+
+418 404 186 F 420 975 52 760 26 93.79
+Sbjct 186 aggttncacgttggagctaacatctnggc-ggtggagtttcagcggag-ttncatgaacc 243
+ ||||| ||||| || |||| || | | |||||| || |||||||| || ||||| ||
+Query 52 aggttccacgtggg-gcta-cacccnccctggtggacttncagcggagcttccatgaccc 109
+
+Sbjct 244 cagccgttgntttcggaccagccgtcgtaagctggacgtggaccaac-actgggtttact 302
+ ||||||||| ||||||||||||||||||||||||||||||||||||| ||||||||||||
+Query 110 cagccgttgctttcggaccagccgtcgtaagctggacgtggaccaaccactgggtttact 169
+
+Sbjct 303 gggntggtcctcttattggtggtggantcgccggaatta-ctacgactttgtnttcatcg 361
+ ||| ||||||||||||| |||||||| |||||||||||| |||||||||||| |||||||
+Query 170 gggctggtcctcttattngtggtggactcgccggaattatctacgactttgtcttcatcg 229
+
+Sbjct 362 atgaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgtt 421
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 230 atgaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgtt 289
+
+Sbjct 422 gttaatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttntgg 481
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 290 gttaatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctgg 349
+
+Sbjct 482 ncgttggatcatttttagatgaatctttgtctantgattgatcatttatgtgtntttggg 541
+ |||||||||||||||||||||||||||||||| ||||||||||||||||||| ||||||
+Query 350 ccgttggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttggg 409
+
+Sbjct 542 tttgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggttta 601
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 410 tttgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggttta 469
+
+Sbjct 602 at 603
+ ||
+Query 470 at 471
+
+420 404 213 F 444 1362 2 699 55 87.27
+Sbjct 213 gc-ggt-ggagtttcag-cggagttncat-gaaccc-agccgttgnttt-cggacc-agc 265
+ || ||| || | ||| | ||| ||| ||| || ||| ||||||| ||| |||||| | |
+Query 2 gctggttggggcttccggcggngttncattgaccccnagccgttncttttcggacccacc 61
+
+Sbjct 266 cgtcgtaagctggacgtggaccaa-c-actgggttt-actgggn-tgg-tcc-tctt-at 318
+ | ||||||||||||||||| || | | | ||||||| ||||| ||| || |||| ||
+Query 62 cttcgtaagctggacgtggncccanccantgggttttactggncctgggnccctctttat 121
+
+Sbjct 319 tgg-tgg-tggantc-gccggaatta---ctacgactttgtnttcatc-gatg-aaaatg 370
+ ||| ||| || | || ||||| ||| |||||||||||| ||| || |||| ||||||
+Query 122 tggntgggtgnactcnnccggatttaattctacgactttgtcttcntccgatggaaaatg 181
+
+Sbjct 371 ccc-acgagcaattgcctaccaccgatt-actgaagacgtcaaattcaacgttgttaatc 428
+ ||| |||||||||||||| ||||||||| |||||||||||||||||||||||||||||||
+Query 182 ccccacgagcaattgcctcccaccgatttactgaagacgtcaaattcaacgttgttaatc 241
+
+Sbjct 429 tgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttntggncgttgg 488
+ ||||||||||||||||||||||||||||||||||||||||||||||||| ||| ||||||
+Query 242 tgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttgg 301
+
+Sbjct 489 atcatttttagatgaatctttgtctantgattgatcatttatgtgtntttgggtttgttg 548
+ |||||||||||||||||||||||||| ||||||||||||||||||| |||||||||||||
+Query 302 atcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgttg 361
+
+Sbjct 549 ttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataacta 608
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 362 ttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataacta 421
+
+Sbjct 609 taattgagaaaaccagggaatgtg 632
+ |||||||||||||||||| |||||
+Query 422 taattgagaaaaccagggtatgtg 445
+
+453 404 187 F 455 1500 29 806 34 92.51
+Sbjct 187 ggttncacgttggagctaacatctnggc-ggtggagtttcagcggag-ttncatgaaccc 244
+ |||| ||||| || |||| |||| || |||||| |||||| || | || ||||| |||
+Query 29 ggttccacgtggg-gcta-catccncgccggtggantttcagnggggcttccatgacccc 86
+
+Sbjct 245 agccgttgntttcggaccagccgtcgtaagctggacgtggaccaac-actgggttt-act 302
+ | ||||| ||||||||| ||||| ||| |||||||||| ||| | ||||||||| |||
+Query 87 a-ccgttnctttcggaccnnccgtcttaanctggacgtggcccacccactgggttttact 145
+
+Sbjct 303 gggntggtcctcttattggtggtggantcgccggaatta-ctacgactttgtnttcatcg 361
+ ||| ||| |||||||||||||||||| |||||||||||| |||||||||||| |||||||
+Query 146 gggctggncctcttattggtggtggactcgccggaattatctacgactttgtcttcatcg 205
+
+Sbjct 362 atgaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgtt 421
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 206 atgaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgtt 265
+
+Sbjct 422 gttaatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttntgg 481
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 266 gttaatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctgg 325
+
+Sbjct 482 ncgttggatcatttttagatgaatctttgtctantgattgatcatttatgtgtntttggg 541
+ |||||||||||||||||||||||||||||||| ||||||||||||||||||| ||||||
+Query 326 ccgttggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttggg 385
+
+Sbjct 542 tttgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggttta 601
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 386 tttgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggttta 445
+
+Sbjct 602 ataactataattgagaaaaccagggaatgtgaattatg 639
+ ||||||||||||||||||||||||||||||||||||||
+Query 446 ataactataattgagaaaaccagggaatgtgaattatg 483
+
+434 406 8 F 430 542 0 771 31 92.82
+Sbjct 8 tcaaaatngtcgnnagtgncntcaagaagancaagaccgacaagccttcggaattaacgg 67
+ ||||||| | | | || | |||||| | |||| ||||||| ||| |||||||| |||
+Query 0 tcaaaattgccccca-tg-cgtcaagaggttcaag-ccgacaaccct-cggaatta-cgg 54
+
+Sbjct 68 cagcatggacttgagggacggcgtng-acc-nccggcagaaagggcaagggatacggtgt 125
+ | || |||||||||||||| |||| | ||| ||||||||||||||||||||| ||||||
+Query 55 c-gcctggacttgagggaccgcgtcggaccctccggcagaaagggcaagggatncggtgt 113
+
+Sbjct 126 ttacaagtacgtcgacaagtatggagctaacgncgatggatacagtcctatttacaacga 185
+ |||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||
+Query 114 ttacaagtacgtcgacaagtatggagctaacgtcgatggatacagtcctatttacaacga 173
+
+Sbjct 186 gaacgantggtcancgagtggtgacgtgtacaagggaggagtcactggattggcaatttg 245
+ |||||| |||||| ||||||||||||||||||||||||||||||| ||||||||||||||
+Query 174 gaacgagtggtcagcgagtggtgacgtgtacaagggaggagtcaccggattggcaatttg 233
+
+Sbjct 246 ggcggtaactctcgccggaattcttgccggaggtgctcttcttgtgtacaacacaagtgc 305
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 ggcggtaactctcgccggaattcttgccggaggtgctcttcttgtgtacaacacaagtgc 293
+
+Sbjct 306 tttggctcagtaaatcttaaagttgttagcgcatgtgtaancatgtttctataaatgttt 365
+ |||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 294 tttggctcagtaaatcttaaagttgttagcgcatgtgtaatcatgtttctataaatgttt 353
+
+Sbjct 366 ntgtgttgttctatntctctctaatgttgtaaaactcagacatactttgaatttataaga 425
+ ||||||||||| | |||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ctgtgttgttctctttctctctaatgttgtaaaactcagacatactttgaatttataaga 413
+
+Sbjct 426 cttctagtgtttgtat 441
+ ||||||||||||||||
+Query 414 cttctagtgtttgtat 429
+
+402 406 40 F 413 1056 0 713 34 91.66
+Sbjct 40 aagaccgacaagcc-ttcggaattaacggcagc-atggacttgagggacggcgtn--ga- 95
+ ||| |||||||||| ||||||||| ||||||| ||| |||||||||| |||| ||
+Query 0 aagcccgacaagcccntcggaatta-cggcagccatgatcttgagggacngcgttcngaa 58
+
+Sbjct 96 ccnccggcagaaagggcaagggatac-ggtgttt-acaagtacg-tc-gacaagtatgg- 150
+ || |||||||||||||||||| ||| ||||||| |||||||| || |||||||||||
+Query 59 cctccggcagaaagggcaagg-ntaccggtgttttacaagtaccntccgacaagtatggg 117
+
+Sbjct 151 agct-aacgncgatggatac-ag-tcctatttacaacgagaacgantggtcancgagtgg 206
+ | || |||| |||||||||| || ||||||||||||||||||||| |||||| |||||||
+Query 118 ancttaacgtcgatggataccaggtcctatttacaacgagaacgagtggtcagcgagtgg 177
+
+Sbjct 207 tgacgtgtacaagggaggagtcactggattggcaatttgggcggtaactctcgccggaat 266
+ | |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 178 tnacgtgtacaagggaggagtcaccggattggcaatttgggcggtaactctcgccggaat 237
+
+Sbjct 267 tcttgccggaggtgctcttcttgtgtacaacacaagtgctttggctcagtaaatcttaaa 326
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 tcttgccggaggtgctcttcttgtgtacaacacaagtgctttggctcagtaaatcttaaa 297
+
+Sbjct 327 gttgttagcgcatgtgtaancatgtttctataaatgtttntgtgttgttctatntctctc 386
+ ||||||||||||||||||| ||||||||||||||||||| ||||||||||| | ||||||
+Query 298 gttgttagcgcatgtgtaatcatgtttctataaatgtttctgtgttgttctctttctctc 357
+
+Sbjct 387 taatgttgtaaaactcagacatactttgaatttataagacttctagtgtttgtat 441
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 taatgttgtaaaactcagacatactttgaatttataagacttctagtgtttgtat 412
+
+430 412 83 F 436 1525 0 755 37 91.45
+Sbjct 83 tcg-gntccaaanccacag--ttacact-g-ggncccctgccactnttg-agtacatcac 136
+ ||| | | |||| |||||| ||||||| | || ||| || |||| ||| ||| ||| ||
+Query 0 tcgagtttcaaagccacaggcttacacttgaggacccntgtcactnttgnagtncatnac 59
+
+Sbjct 137 tcgctaccatg-ct-gcccttcaaccaga-gtatacccnaaa-tg-tggtgtccagaccc 191
+ ||||| ||||| || || ||||| | | |||| ||| ||| || ||||||| |||||
+Query 60 tcgcttccatggctngc-tttcaaacnnaagtat-ccccaaagtggtggtgtc-agacc- 116
+
+Sbjct 192 ctcg-tctttctactcttatcgttggctttgaccccttactctcgcctcccttcccctat 250
+ ||| |||||||||||||||||||||||||||||| |||||||||||||||||||| |||
+Query 117 ttcgntctttctactcttatcgttggctttgaccc-ttactctcgcctcccttccc-tat 173
+
+Sbjct 251 atcagactgatccttctgggactttctctgcttggaaagctaatgctaccggcagaaact 310
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 174 atcagactgatccttctgggactntctctgcttggaaagctaatgctaccggcagaaact 233
+
+Sbjct 311 ccaactctattagggaattcctcgagaagaactacaaagaatcctctggccaagaaacta 370
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 ccaactctattagggaattcctcgagaagaactacaaagaatcctctggccaagaaacta 293
+
+Sbjct 371 ttaaactcgctatccgtgctctgcttgaggtagttgagagtggcggaaagaacattgagg 430
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 ttaaactcgctatccgtgctctgcttgaggtagttgagagtggcggaaagaacattgagg 353
+
+Sbjct 431 ttgtcgtaatgacacgggaggaaactggtgcgccagctagaagaagctgaaattgattca 490
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 354 ttgccgtaatgacacgggaggaaactggtgcgccagctagaagaagctgaaattgatgca 413
+
+Sbjct 491 atcgtggccaagatcgaagctg 512
+ ||||||||||||||||||||||
+Query 414 atcgtggccaagatcgaagctg 435
+
+434 426 27 F 429 795 0 722 47 89.11
+Sbjct 27 gttcagaagcgatcaatccctgaatggagcagatttggatggaagac-aataagagcccc 85
+ |||| | ||||| |||||| ||||||| || |||| || ||| || | |||| | | | |
+Query 0 gttccggagcga-caatcc-tgaatgg-gccgatt-ggntggnaggcnaata-g-gtctc 53
+
+Sbjct 86 agaggctgaggctag-ccaccnagaggccattttgagcgntcacacctctttc-atattc 143
+ |||| ||||| |||| ||||| || |||| || | ||| |||||| |||||| |||| |
+Query 54 agag-ctgag-ctaggccaccaaggngccaattggggcggtcacac-tctttccatat-c 109
+
+Sbjct 144 tc-aaaaaatgcaaattctgg-agggttcctttgaagcatatagggttagtggaaaatgg 201
+ || |||||||||||||||||| | ||| | |||||| |||||| |||| |||||||||||
+Query 110 tccaaaaaatgcaaattctggnanggt-c-tttgaaccatatanggttngtggaaaatgg 167
+
+Sbjct 202 cggtttc-agacagtaactaaaactcactgctggtgc-acgctaggctttatccgccttt 259
+ ||||||| ||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 168 cggtttccagacagtaactaaaactcactgctggtgccacgctaggctttatccgccttt 227
+
+Sbjct 260 gatgcatgaaggtcgttaaggaatggtctttttttgagaaagataacaattagattaaag 319
+ ||||||||||||||||||| ||||||||||||||||| |||||| |||||||||||||
+Query 228 gatgcatgaaggtcgttaacgaatggtctttttttganaaagatnacaattagattaann 287
+
+Sbjct 320 cagagaacccatgtttcttgtctgttcgaatcctgcgagattggttgtagttgaagttgc 379
+ || ||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 288 canagaacccatgtttcttgtctgttcgaatcctgcgagattggttgtagttgaagttnc 347
+
+Sbjct 380 attttcttcttgtcttttttgttggtattttgacacaatttggctttttggcatatgaga 439
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 348 attttcttcttgtcttttttgttggtattttgacacaatttggctttttggcatatgaga 407
+
+Sbjct 440 gtgactgtagcagtctgtttt 460
+ |||||||| |||||||||||
+Query 408 gtgactgtnccagtctgtttt 428
+
+409 432 9 F 410 652 0 735 28 93.16
+Sbjct 9 aanttgnta-ccctggtggaatc-ttaaccccgcttaacttggctncctacgcaagaggc 66
+ || ||| || ||||||||||| | | ||||| | | |||||| | || || | ||||||
+Query 0 aatttggtanccctggtggaaacntnaaccc-gnt-aacttg-c-cccnaccccagaggc 55
+
+Sbjct 67 c-aaggagaaagagc-tagcaaacggg-aggttggccgatgtt-ggcattcttagggttt 122
+ | |||| ||||| | ||||||||||| |||||| | |||||| ||||||||||||| ||
+Query 56 cnaaggngaaagnncctagcaaacggggaggttgnc-gatgttaggcattcttaggggtt 114
+
+Sbjct 123 tgtggttcaacacaatgtgactggaaaaggaccatttgagaatctgttgcagcacttgtc 182
+ ||||||| ||||||||||| ||||||||||||||||||||||||||||||||||||| ||
+Query 115 tgtggttnaacacaatgtgnctggaaaaggaccatttgagaatctgttgcagcacttntc 174
+
+Sbjct 183 tgacccatggcacaacactattgtccaaaccttcaactaaagagtgaagacagacttatg 242
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 tgacccatggcacaacactattgtccaaaccttcaactaaagagtgaagacagacttatg 234
+
+Sbjct 243 atctcatacctatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatctta 302
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 atctcatacctatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatctta 294
+
+Sbjct 303 gagttcttggtttttgagcttgaattattgttgaaccgttgtagctccatgaacaaattt 362
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 gagttcttggtttttgagcttgaattattgttgaaccgttgtagctccatgaacaaattt 354
+
+Sbjct 363 ggaatcttcaatgtacagaggaactaagttaatcaacattgttgtactctttaat 417
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 ggaatcttcaatgtacagaggaactaagttaatcaacattgttgtactctttaat 409
+
+422 432 0 F 423 825 61 791 18 95.74
+Sbjct 0 cc-taagggt-aanttgntaccctggtggaatcttaaccccgcttaacttggctncctac 57
+ || || |||| || | | | |||||| |||||||| |||||||||||||| || | |||
+Query 61 ccnta-gggtgaagtggct-ccctggnggaatctttaccccgcttaactttgcctcntac 118
+
+Sbjct 58 gcaagaggccaaggagaaagagctagc-aaacgggaggttggccgatgttggcattc-tt 115
+ ||||||| ||||||||||| ||||||| ||||||||||||||||||||||||||||| ||
+Query 119 gcaagagcccaaggagaaanagctagccaaacgggaggttggccgatgttggcattcctt 178
+
+Sbjct 116 agggttttgtggttcaacacaatgtgactggaaaaggaccatttgagaatctgttgcagc 175
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 agggttt-gtggttcaacacaatgtgactggaaaaggaccatttgagaatctgttgcagc 237
+
+Sbjct 176 acttgtctgacccatggcacaacactattgtccaaaccttcaactaaagagtgaagacag 235
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 acttgtctgacccatggcacaacactattgtccaaaccttcaactaaagagtgaagacag 297
+
+Sbjct 236 acttatgatctcatacctatctatcttccatcactttcatgtctgtctgtgagtgtgttt 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 acttatgatctcatacctatctatcttccatcactttcatgtctgtctgtgagtgtgttt 357
+
+Sbjct 296 catcttagagttcttggtttttgagcttgaattattgttgaaccgttgtagctccatgaa 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 catcttagagttcttggtttttgagcttgaattattgttgaaccgttgtagctccatgaa 417
+
+Sbjct 356 caaatttggaatcttcaatgtacagaggaactaagttaatcaacattgttgtactcttta 415
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 418 caaatttggaatcttcaatgtacagaggaactaagttaatcaacattgttgtactcttta 477
+
+Sbjct 416 atatct 421
+ ||||||
+Query 478 atatct 483
+
+397 432 0 F 403 1469 51 728 24 94.00
+Sbjct 0 cctaagggt-aan-tt-gntaccctggtggaatcttaacccc-gcttaactt-ggctncc 54
+ ||| ||||| || || | | ||||||||||||||| ||||| | ||||||| |||| ||
+Query 51 ccttagggtgaaagttngttcccctggtggaatctttacccccggttaacttnggct-cc 109
+
+Sbjct 55 tac-gcaag-aggccaagg-agaaag-agctagcaaacgggaggttggccgatgttggca 110
+ | | ||||| ||||| ||| || ||| |||||||| |||||||||||| |||||||| |
+Query 110 ttccgcaaggaggcccagggaggaaggagctagcanccgggaggttggc-gatgttggna 168
+
+Sbjct 111 ttcttagggttttgtggttcaacacaatgtgactggaaaaggaccatttgagaatctgtt 170
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 169 ttcttagggttt-gtggttcaacacaatgtgactggaaaaggaccatttgagaatctgtt 227
+
+Sbjct 171 gcagcacttgtctgacccatggcacaacactattgtccaaaccttcaactaaagagtgaa 230
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 228 gcagcacttgtctgacccatggcacaacactattgtccaaaccttcaactaaagagtgaa 287
+
+Sbjct 231 gacagacttatgatctcatacctatctatcttccatcactttcatgtctgtctgtgagtg 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 288 gacagacttatgatctcatacctatctatcttccatcactttcatgtctgtctgtgagtg 347
+
+Sbjct 291 tgtttcatcttagagttcttggtttttgagcttgaattattgttgaaccgttgtagctcc 350
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 348 tgtttcatcttagagttcttggtttttgagcttgaattattgttgaaccgttgtagctcc 407
+
+Sbjct 351 atgaacaaatttggaatcttcaatgtacagaggaactaagttaatc 396
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 atgaacaaatttggaatcttcaatgtacagaggaactaagttaatc 453
+
+423 449 0 F 421 868 143 802 14 96.68
+Sbjct 0 cctcaaaatctcccnttcaag-ncgctgcatntgncaaaactcaggggaaatggccctct 58
+ |||||| ||||||| | |||| |||||||| || |||| ||||||||||||||||||||
+Query 143 cctcaacatctcccct-caaggtcgctgcat-tgacaaa-ctcaggggaaatggccctct 199
+
+Sbjct 59 tngatcccctccaggtctcaag-ct-cctcttcatatcaggacccaagatgcgtggcttg 116
+ | |||||| ||||||||||||| || |||||||||||||||| |||||||||||||||||
+Query 200 ttgatccc-tccaggtctcaagacttcctcttcatatcaggaaccaagatgcgtggcttg 258
+
+Sbjct 117 gcngaagaagaaagagaacccaccagatggtttcatgtgtccctctggttggaaggtgtt 176
+ || |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 259 gc-gaagaagaaagagaacccaccagatggtttcatgtgtccctctggttggaaggtgtt 317
+
+Sbjct 177 ggttgattactacgacagtctcagtgcagagtctggtaatggaagggtttcagaggctgt 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 318 ggttgattactacgacagtctcagtgcagagtctggtaatggaagggtttcagaggctgt 377
+
+Sbjct 237 tgcttctgcttaaatgcaaaaggttccttgccccacaagtttcacattttctggttgtta 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 378 tgcttctgcttaaatgcaaaaggttccttgccccacaagtttcacattttctggttgtta 437
+
+Sbjct 297 agtaactatgctctgtaagaaacagcttccaataaaaccaatgtaacaactgtgtgttct 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 438 agtaactatgctctgtaagaaacagcttccaataaaaccaatgtaacaactgtgtgttct 497
+
+Sbjct 357 ttgcgtctctgttgtcaaacttgtcatcgggtcgcatctatttgtaccatatttgcttat 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 498 ttgcgtctctgttgtcaaacttgtcatcgggtcgcatctatttgtaccatatttgcttat 557
+
+Sbjct 417 tgtgtt 422
+ ||||||
+Query 558 tgtgtt 563
+
+434 451 0 F 427 736 83 825 12 97.21
+Sbjct 0 aggaagttgactaccttctccgcaancaagtggantccnnngtgtnngaattcgagttag 59
+ |||||||||||| | |||||||||| |||||||| ||| |||| |||||||||||||
+Query 83 aggaagttgactnc-ttctccgcaa-caagtgga-tccnttgtgt-tgaattcgagttag 138
+
+Sbjct 60 agcacggattttgtgtacccgtgagccacggaaacactcccggatactacgatggacggt 119
+ ||||||||||| ||||||| |||||| |||||||||||||||||||||||||||||||||
+Query 139 agcacggattt-gtgtacc-gtgagc-acggaaacactcccggatactacgatggacggt 195
+
+Sbjct 120 actggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaagg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 196 actggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaagg 255
+
+Sbjct 180 aagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgaca 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 256 aagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgaca 315
+
+Sbjct 240 acacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaag 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 316 acacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaag 375
+
+Sbjct 300 cttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgt 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 376 cttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgt 435
+
+Sbjct 360 ctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatg 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 436 ctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatg 495
+
+Sbjct 420 aatatgtaatttat 433
+ ||||||||||||||
+Query 496 aatatgtaatttat 509
+
+434 451 0 F 427 846 189 816 15 96.52
+Sbjct 0 aggaagttgactaccttctccgcaancaagtggantccnnngtgtnngaattcgagttag 59
+ |||||||||||||||||| ||||| || ||||| ||| |||| |||||||||||||
+Query 189 aggaagttgactaccttcaccgcan-ca-gtggattccct-gtgt-tgaattcgagttag 244
+
+Sbjct 60 agcacggattttgtgtacccgtgagccacggaaacactcccggatactacgatggacggt 119
+ ||||||||||| ||||||| |||||| |||||||||||||||||||||||||||||||||
+Query 245 agcacggattt-gtgtacc-gtgagc-acggaaacactcccggatactacgatggacggt 301
+
+Sbjct 120 actggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaagg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 302 actggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaagg 361
+
+Sbjct 180 aagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgaca 239
+ |||||||||||||||||||||| ||||||||||| |||||||||||||||||||||||||
+Query 362 aagttgaagaatgcaagaaggantacccgggcgcnttcattaggatcatcggattcgaca 421
+
+Sbjct 240 acacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaag 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 acacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaag 481
+
+Sbjct 300 cttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgt 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 482 cttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgt 541
+
+Sbjct 360 ctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatg 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 542 ctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatg 601
+
+Sbjct 420 aatatgtaatttat 433
+ ||||||||||||||
+Query 602 aatatgtaatttat 615
+
+424 451 10 F 420 902 1 787 19 95.50
+Sbjct 10 ctaccttctccg-caancaagtggantccnnngtgtnngaattcg-agttagagcac-gg 66
+ || ||||| || ||| |||||||| ||| |||| |||| || | ||||||| | ||
+Query 1 cttccttcnncggcaa-caagtgga-tcc-ttgtgttggaat-cggatttagagcnccgg 56
+
+Sbjct 67 attttgtgtacccgtgagccacggaaacactcccggatactacgatggacggtactggac 126
+ |||| ||||||| |||||| ||||||||||||||||||||||||||||||||||||||||
+Query 57 attt-gtgtacc-gtgagc-acggaaacactcccggatactacgatggacggtactggac 113
+
+Sbjct 127 aatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttga 186
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 114 aatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttga 173
+
+Sbjct 187 agaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccg 246
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 agaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccg 233
+
+Sbjct 247 tcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatt 306
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 tcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatt 293
+
+Sbjct 307 tcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgtt 366
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 tcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgtt 353
+
+Sbjct 367 ctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgt 426
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgt 413
+
+Sbjct 427 aatttat 433
+ |||||||
+Query 414 aatttat 420
+
+434 451 0 F 429 1100 12 764 33 92.35
+Sbjct 0 aggaagttgactaccttctccgcaancaagtggantccnnngtgtnngaattcgagttag 59
+ ||||||||| || ||||| | | || ||| || || |||| ||||||| |||||
+Query 12 aggaagttg-ctcccttcccng-aa--aaggggnccccct-gtgt-tgaattcgngttag 65
+
+Sbjct 60 agcacgg-attttgtgtacccgtgagccacggaaacact-cccggatactacgatggacg 117
+ || ||| |||| |||| ||| | ||| ||||| |||| ||||||||||||||||| ||
+Query 66 ggcccgggatttggtgtnccc-ngngccccggaancactncccggatactacgatggccg 124
+
+Sbjct 118 gtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaa 177
+ ||||||||||||||||| ||||||||||| ||||||||||||||||||||||||||||||
+Query 125 gtactggacaatgtggangcttccattgtccggatgcaccgactccgctcaagtgttgaa 184
+
+Sbjct 178 ggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcga 237
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 185 ggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcga 244
+
+Sbjct 238 caacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccga 297
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 245 caacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccga 304
+
+Sbjct 298 agcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctatt 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 305 agcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctatt 364
+
+Sbjct 358 gtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattta 417
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 365 gtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattta 424
+
+Sbjct 418 tgaatatgtaatttat 433
+ ||||||| | ||||||
+Query 425 tgaatatnttatttat 440
+
+434 451 0 F 428 1151 26 823 13 96.98
+Sbjct 0 aggaagttgactaccttctccgcaancaagtggantccnnngtgtnngaattcgagttag 59
+ ||||||||| || |||||||||||| |||||||| ||| |||| |||||||||||||
+Query 26 aggaagttg-cttccttctccgcaa-caagtgga-tcc-ttgtgtttgaattcgagttag 81
+
+Sbjct 60 agc-acggattttgtgtacccgtgagccacggaaacactcccggatactacgatggacgg 118
+ ||| |||||||| ||||||| |||||| ||||||||||||||||||||||||||||||||
+Query 82 agccacggattt-gtgtacc-gtgagc-acggaaacactcccggatactacgatggacgg 138
+
+Sbjct 119 tactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaag 178
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 139 tactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaag 198
+
+Sbjct 179 gaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgac 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 199 gaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgac 258
+
+Sbjct 239 aacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaa 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 259 aacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaa 318
+
+Sbjct 299 gcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattg 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 319 gcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattg 378
+
+Sbjct 359 tctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttat 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 379 tctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttat 438
+
+Sbjct 419 gaatatgtaatttat 433
+ |||||||||||||||
+Query 439 gaatatgtaatttat 453
+
+434 451 0 F 431 1230 80 805 20 95.38
+Sbjct 0 aggaagttgactaccttctccgcaancaagtggantccnnngtgtnngaattcgagttag 59
+ |||||||||||| | ||||| |||| ||| ||| ||| |||| |||||||||||||
+Query 80 aggaagttgactccnttctcngcaa-caaatgg-ntcccttgtgt-tgaattcgagttag 136
+
+Sbjct 60 agcacggattttgtgtacccgtgagccacggaaacactcccggatactacgatggac-gg 118
+ || ||||||| |||| |||||||||| ||||||||||||||||||||||||||||| ||
+Query 137 ggcncggattt-gtgt-cccgtgagcc-cggaaacactcccggatactacgatggaccgg 193
+
+Sbjct 119 tactggacaat-gtggaagcttcc-attgttcggatgcaccgactccgctcaagtgttga 176
+ ||||||||||| |||||||||||| |||||||||||||||||||||||||||||||||||
+Query 194 tactggacaattgtggaagcttcccattgttcggatgcaccgactccgctcaagtgttga 253
+
+Sbjct 177 aggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcg 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 254 aggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcg 313
+
+Sbjct 237 acaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccg 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 314 acaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccg 373
+
+Sbjct 297 aagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctat 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 374 aagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctat 433
+
+Sbjct 357 tgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattt 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 tgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattt 493
+
+Sbjct 417 atgaatatgtaatttat 433
+ |||||||||||||||||
+Query 494 atgaatatgtaatttat 510
+
+417 451 15 F 414 1360 1 726 35 91.58
+Sbjct 15 ttctccgcaancaagtggantccnnng-tgtnngaattcg-agttag-agcacggatttt 71
+ ||| ||| || ||| ||| ||| | ||| ||| || |||| | ||||||||||
+Query 1 ttc-ccg-aaacaantgggatcccttggtgttn-aat-cggagtttggngcacggattt- 56
+
+Sbjct 72 gtgtacccgtgagccacggaaac-actcccggatactacgatggacggtactggacaatg 130
+ |||| || |||||| |||| ||| ||||| ||||||||||||||||| ||||||||||||
+Query 57 gtgtncc-gtgagc-acggnaaccactccnggatactacgatggacgntactggacaatg 113
+
+Sbjct 131 tggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaa 190
+ |||||||||||||||| |||||||||||||||||||||||| |||||||||||||| |||
+Query 114 tggaagcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaa 173
+
+Sbjct 191 tgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaa 250
+ |||||||||| ||||||||||||||||||| |||||||||||||||||||||||||||||
+Query 174 tgcaagaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaa 233
+
+Sbjct 251 gtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttctt 310
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 gtccaatgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttctt 293
+
+Sbjct 311 ttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttt 370
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 ttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttt 353
+
+Sbjct 371 ttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatt 430
+ ||||||||||||||||||||||||||| ||||||||||||||||||||| |||||| |||
+Query 354 ttctctttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgatt 413
+
+Sbjct 431 t 431
+ |
+Query 414 t 414
+
+415 452 0 F 413 882 3 750 26 93.72
+Sbjct 0 cc-aaagnaaggancctagg-accnatcgcntccaatcgccatcggctnnatagtttggt 57
+ || |||| ||||| ||| || || |||| ||||||||||||||||| ||| || |||
+Query 3 ccnaaag-aaggacccttgggncccatcg-ntccaatcgccatcggcttcatantt-ggt 59
+
+Sbjct 58 gcc-aacaatcctcg-cttnctgggtccattcagtgntggctccatgaatccagcaaggt 115
+ ||| |||| |||||| || |||| |||| ||||| ||||||||||||||||||||| |
+Query 60 gcccaaca-tcctcggct-gctggncccatccagtggtggctccatgaatccagcaag-t 116
+
+Sbjct 116 cgttcggaccagctgttgncagtggtgacttgtccc-aaatctggatctattgggtggga 174
+ ||||||||||| |||||| ||||||||||||||||| |||||||||||||||||||||||
+Query 117 cgttcggacca-ctgttgtcagtggtgacttgtccccaaatctggatctattgggtggga 175
+
+Sbjct 175 ccacttgtgggtggtgcactcgcgggacttatctacggtgatgtgttcatcggttcttat 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 176 ccacttgtgggtggtgcactcgcgggacttatctacggtgatgtgttcatcggttcttat 235
+
+Sbjct 235 gaagcggtagaaacacgtgagatccgagtgtaattgactgggttttgtgattgcttgatg 294
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 gaagcggtagaaacacgtgagatccgagtgtaattgactgggttttgtgattgcttgatg 295
+
+Sbjct 295 gttggttgatgttttgtttgcgtgtgtatgtttggtgtccactttcttgcaagattgtat 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 296 gttggttgatgttttgtttgcgtgtgtatgtttggtgtccactttcttgcaagattgtat 355
+
+Sbjct 355 gtagagaaaagaaaaaaagttatgtcctgttaataagaaaatgtatatacatttcacttc 414
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 356 gtagagaaaagaaaaaaagttatgtcctgttaataagaaaatgtatatacatttcacttc 415
+
+424 454 70 F 432 1837 0 793 21 95.09
+Sbjct 70 agccccggatttgtgtaccgtgagcacggtaactcacccggatactatgatggacggtac 129
+ ||| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 agcac-ggatttgtgtaccgtgagcacggtaactcacccggatactatgatggacggtac 58
+
+Sbjct 130 tggacaatgtggaagcttcccttggttcg-ttgcaccgactccgctcaagtgttgaagga 188
+ |||||||||||||||||||||||| | || ||||||||| ||||||||||| ||||||||
+Query 59 tggacaatgtggaagcttcccttg-tncggttgcaccgantccgctcaagtnttgaagga 117
+
+Sbjct 189 agtggaagagtgcaagaaggagtaccccaatgccttcattaggatcatcggattcgacaa 248
+ ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Query 118 agtggaagagtgcaagaaggagtaccccaatgccttcattaggntcatcggattcgacaa 177
+
+Sbjct 249 cacccgtcaagtccagtgcatcagtttcattgcctacaagccaccaagcttcaccggtta 308
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 178 cacccgtcaagtccagtgcatcantttcattgcctacaagccaccaagcttcaccggtta 237
+
+Sbjct 309 atttccctttgcttttgtgtaaacctcaaaactttatcccccatctttgattttatccct 368
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 238 atttccctttgcttttgtgtaaacctcaaaactttatcccccatctttnattttatccct 297
+
+Sbjct 369 tgtttttctgcttttttcttctttcttgggttttaa-tttccggacttaacgtttgtttt 427
+ |||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||
+Query 298 tgtttttctgcttttttcttctttcttgggttttaaatttccggacttaacgtttgtttt 357
+
+Sbjct 428 ccggtttgcg-ag-aca-tattctatcggatt-ctcaactgtctgatgaaataaata-tg 482
+ |||||||||| || ||| ||||||||||| || ||||||||||||||| |||||||| ||
+Query 358 ccggtttgcgnaggacaatattctatcggntttctcaactgtctgatgnaataaataatg 417
+
+Sbjct 483 -taa-tg-ttctat 493
+ ||| || ||||||
+Query 418 gtaantgnttctat 431
+
+453 460 27 F 452 1351 0 821 28 93.81
+Sbjct 27 aggaattccatta-gcttt-gacncccaagctccacgaagagatcaagctgtcttcaaga 84
+ |||||| | |||| ||||| | ||| ||||| |||||| ||||||| |||||||||
+Query 0 aggaat-c-attaagcttttnncccccnagctcancgaaganntcaagctntcttcaaga 57
+
+Sbjct 85 aggntat-g-agggagctcccaagtttttgctccccaggctcagtgacttccaattcttt 142
+ ||| ||| | |||| || ||| |||||||| ||| |||||||||||||||||||||||||
+Query 58 agg-tattggagggngcaccctagtttttgttccncaggctcagtgacttccaattcttt 116
+
+Sbjct 143 gttggggagggtatgcatgatgacagcactttggtctttgcttactacaaggagggttca 202
+ ||||||||||||||||||||||||||||| ||||||||||| |||||||||| ||||||
+Query 117 gttggggagggtatgcatgatgacagcacnntggtctttgct-actacaagganggttca 175
+
+Sbjct 203 actaacccaacatttttgtacttcgctcatggtttgaaggaggtcaagtgctgagagaga 262
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 176 nctaacccaacatttttgtact-cgctcatggtttgaaggaggtcaagtgctgagagaga 234
+
+Sbjct 263 agctctcgttgggttactgtggtcggtcgcagcgactctctaagtttatgtttctttata 322
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 agctctcgttgggttactgtggtcggtcgcagcgactctctaagtttatgtttctttata 294
+
+Sbjct 323 ttgtcctgtgtttcgtcgtcgtcccctattaaaattacctgccagtttacttttctctct 382
+ |||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 295 ttgtcctgtgtttcgtcgtcgtcccctattaaaattacctnccagtttacttttctctct 354
+
+Sbjct 383 tcttgttttctgtgttggaagattctcaagttatttattccgcaaaaaacggtttatcat 442
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 tcttgttttctgtgttggaagattctcaagttatttattccgcaaaaaacggtttatcat 414
+
+Sbjct 443 ttacaattagttgaattttggtcgttactttttgtgt 479
+ |||||||||||||||||||||||||||||||||||||
+Query 415 ttacaattagttgaattttggtcgttactttttgtgt 451
+
+492 474 48 F 480 543 0 903 23 95.27
+Sbjct 48 tgccnttagtgccgttgaattggctaaggaagttgcttccttctccgcaacaagtggatc 107
+ |||| || |||| ||||||| ||||| ||| |||||| ||||| ||||| || |||| ||
+Query 0 tgcc-tt-gtgc-gttgaat-ggctaggga-gttgct-ccttcnccgca-ca-gtggttc 51
+
+Sbjct 108 ccttgtgttgaattcgagttggagcaccggattngtgtaccgtgagcacggaaccactcc 167
+ | ||||||||| ||||||||||| | | ||||| |||| ||||| |||||||||||||||
+Query 52 c-ttgtgttga-ttcgagttggaccnc-ggatttgtgtcccgtgggcacggaaccactcc 108
+
+Sbjct 168 cggatactatgatggacggtactggacaatgtggaagcttccattggttcggatgcaccg 227
+ | | ||||||||||| |||||||||||||||||||||||||||||| |||||||||||||
+Query 109 ccggtactatgatggncggtactggacaatgtggaagcttccattg-ttcggatgcaccg 167
+
+Sbjct 228 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 287
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 168 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 227
+
+Sbjct 288 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 347
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 228 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 287
+
+Sbjct 348 agcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattct 407
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 288 agcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattct 347
+
+Sbjct 408 ggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttg 467
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 348 ggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttg 407
+
+Sbjct 468 aggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagtta 527
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 aggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagtta 467
+
+Sbjct 528 tcatttcatttc 539
+ ||||||||||||
+Query 468 tcatttcatttc 479
+
+540 474 0 F 522 658 80 975 29 94.54
+Sbjct 0 tgaaggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgc 59
+ ||| ||||||||| | ||||||||||| ||| | ||| |||||||| | | ||||||
+Query 80 tga-ggttgcccc-a-tcggaagagaanttgaactctt-cttcctcc-tnnc-ttagtga 133
+
+Sbjct 60 cgttgaattggctaaggaagttgcttccttctccgcaacaagtggatcccttgtgttgaa 119
+ ||| || |||||||||||||| || ||||||||||| || |||||| ||| |||||||
+Query 134 cgt-ga-ttggctaaggaagtgact-ccttctccgca-ca-gtggattcct-gtgttga- 187
+
+Sbjct 120 ttcgagttggagcaccggattngtgtaccgtgagcacggaaccactcccggatactatga 179
+ ||||||||||||||| ||||| |||||||||||||||||||| |||||||||||||||||
+Query 188 ttcgagttggagcac-ggatttgtgtaccgtgagcacggaac-actcccggatactatga 244
+
+Sbjct 180 tggacggtactggacaatgtggaagcttccattggttcggatgcaccgactccgctcaag 239
+ ||||||||||||||||||||||| |||||||||| |||||||||||||||||||||||||
+Query 245 tggacggtactggacaatgtgga-gcttccattg-ttcggatgcaccgactccgctcaag 302
+
+Sbjct 240 tgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatcg 299
+ |||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||
+Query 303 tgttgaaggaagttgaagaatgcaagaaggagtacc-tggcgccttcattaggatcatcg 361
+
+Sbjct 300 gattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagct 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 362 gattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagct 421
+
+Sbjct 360 tcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 tcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttc 481
+
+Sbjct 420 tatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgt 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 482 tatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgt 541
+
+Sbjct 480 ttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 539
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 542 ttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 601
+
+454 474 86 F 440 713 0 786 36 91.95
+Sbjct 86 ccttctccgcaacaagtggatccct-tgtgttgaattcgagttggagcaccggattngtg 144
+ || |||| | | ||| || ||||| | | || |||||| ||||| | |||| || |
+Query 0 cc--ctccccna-aaggggctccctnt-t-tt-aattcg-gttgg--ccccgg-tt-ttt 48
+
+Sbjct 145 taccgtgagcacggaaccactcccggatactatgatggacggtactggac-aatgtggaa 203
+ | ||| | || ||||||| | ||| | | || || ||| ||||||||||| |||||||||
+Query 49 tcccg-gggcccggaacc-cnccccggttctntgntggccggtactggaccaatgtggaa 106
+
+Sbjct 204 gcttccattggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgca 263
+ ||| |||| | |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 107 gct-ccat-g-ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgca 163
+
+Sbjct 264 agaaggagtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 323
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 164 agaaggagtcccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 223
+
+Sbjct 324 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttct 383
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttct 283
+
+Sbjct 384 ggaatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaaga 443
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 284 ggaatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaaga 343
+
+Sbjct 444 aattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattccta 503
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 344 aattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattccta 403
+
+Sbjct 504 tcagtttctctataattatagttatcatttcatttc 539
+ ||||||||||||||||||||||||||||||||||||
+Query 404 tcagtttctctataattatagttatcatttcatttc 439
+
+423 474 0 F 408 736 18 693 46 88.93
+Sbjct 0 tgaaggttgcccccaatcggaaga-gaagttgngcnctttctt-cctccctgccnttagt 57
+ ||| ||| ||||| ||| |||||| || ||| || |||||| || || |||| |||||
+Query 18 tga-ggt-gcccc-aat-ggaagaagat-ttg-gc-ttttcttnccncc-tgcc-ttagt 68
+
+Sbjct 58 gccgttgaattggctaaggaagttg-cttccttctccgcaacaagtggatcccttgtgtt 116
+ || || |||| |||||||||||||| || | ||||||||||||||||||||| |||||||
+Query 69 gc-gtcgaat-ggctaaggaagttgactnc-ttctccgcaacaagtggatccnttgtgtt 125
+
+Sbjct 117 gaattcgagttggagcaccggattngtgtaccgtgagcacggaaccactcccggatacta 176
+ ||||||||||| |||||| ||||| ||||||||||||||||||| |||||||||||||||
+Query 126 gaattcgagttagagcac-ggatttgtgtaccgtgagcacggaaacactcccggatacta 184
+
+Sbjct 177 tgatggacggtactggacaatgtggaagcttccattggttcggatgcaccgactccgctc 236
+ |||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 185 cgatggacggtactggacaatgtggaagcttccattg-ttcggatgcaccgactccgctc 243
+
+Sbjct 237 aagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatca 296
+ |||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 244 aagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatca 303
+
+Sbjct 297 tcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaa 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 304 tcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaa 363
+
+Sbjct 357 gcttcaccgaagcttaatcccctttctggaatattcagcgttga-ttat-tctggaaccc 414
+ |||||||||||||||||| | ||||| || |||| | || |||| |||| | |
+Query 364 gcttcaccgaagcttaatttcttttctaaaacattctta-t-gaattatctctg---ctc 418
+
+Sbjct 415 atttctat 422
+ ||||| ||
+Query 419 atttc-at 425
+
+435 474 105 F 433 798 0 811 19 95.62
+Sbjct 105 atcccttgtgttg-aattcgagttggagcaccggattngtgtaccgtgagcacgg-aacc 162
+ ||||||||| ||| |||||| ||||| ||| || || |||| |||||||||||| ||||
+Query 0 atcccttgt-ttggaattcgtnttggancac-ggntt-gtgttccgtgagcacggnaacc 56
+
+Sbjct 163 actcccggatactatgatggacggtactggacaatgtggaagcttccattggttcggatg 222
+ |||||| ||||||||||||||||| |||||||||||||||||||| ||| ||||||||
+Query 57 -ctcccgnntactatgatggacggtantggacaatgtggaagcttccnttg-ttcggatg 114
+
+Sbjct 223 caccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgc 282
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 caccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgc 174
+
+Sbjct 283 cttcattaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattg 341
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 175 cttcattaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattg 234
+
+Sbjct 342 cctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgat 401
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 cctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgat 294
+
+Sbjct 402 tattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaa 461
+ |||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||
+Query 295 tattctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaa 354
+
+Sbjct 462 aagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataatta 521
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 aagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataatta 414
+
+Sbjct 522 tagttatcatttcatttc 539
+ |||||| |||||||||||
+Query 415 tagttaccatttcatttc 432
+
+480 474 35 F 479 826 2 914 15 96.87
+Sbjct 35 ctttcttcctccctgccnttagtgccgttgaattggctaaggaagttgcttcc-ttctcc 93
+ ||||||||| ||||||| |||||| |||||||||||||| ||||||||||||| ||||||
+Query 2 ctttcttccnccctgcccttagtgncgttgaattggctagggaagttgcttcccttctcc 61
+
+Sbjct 94 g-caacaagtggatcccttgtgttgaattcgagttggagcaccggattngtgtaccgtga 152
+ | |||||||||||||| ||||||||||||||||||||||| | ||||| |||| ||||||
+Query 62 ggcaacaagtggatcc-ttgtgttgaattcgagttggagcnc-ggatttgtgtnccgtga 119
+
+Sbjct 153 gcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttccatt 212
+ |||||||| |||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 120 gcacggaaacactcccggatactatgatggacgatactggacaatgtggaagcttccatt 179
+
+Sbjct 213 ggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 272
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 g-ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 238
+
+Sbjct 273 accctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 332
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 accctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 298
+
+Sbjct 333 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 392
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 358
+
+Sbjct 393 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 452
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 418
+
+Sbjct 453 ccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 512
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccgacttaacagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 478
+
+Sbjct 513 ct 514
+ ||
+Query 479 ct 480
+
+423 474 0 F 418 846 114 685 52 87.63
+Sbjct 0 tgaaggt-t-gcccccaatcggaagagaagt-tgng-cnctttctt-cctccctgccntt 54
+ ||||||| | ||| ||| | ||||||||||| || | | || |||| |||||||| | ||
+Query 114 tgaaggtgtngccacca-ttggaagagaagtntgagactctatcttacctccctgac-tt 171
+
+Sbjct 55 agtgccgttgaattggctaaggaagttg-cttccttctccgcaacaagtggat-cccttg 112
+ |||| ||| || ||||| | |||||||| || ||||| ||||| || |||||| |||| |
+Query 172 agtgacgtcga-ttggcna-ggaagttgactaccttcaccgcanca-gtggattccct-g 227
+
+Sbjct 113 tgttgaattcgagttggagcaccggattngtgtaccgtgagcacggaaccactcccggat 172
+ ||||||||||||||| |||||| ||||| ||||||||||||||||||| |||||||||||
+Query 228 tgttgaattcgagttagagcac-ggatttgtgtaccgtgagcacggaaacactcccggat 286
+
+Sbjct 173 actatgatggacggtactggacaatgtggaagcttccattggttcggatgcaccgactcc 232
+ |||| |||||||||||||||||||||||||||||||||||| ||||||||||||||||||
+Query 287 actacgatggacggtactggacaatgtggaagcttccattg-ttcggatgcaccgactcc 345
+
+Sbjct 233 gctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattagg 292
+ |||||||||||||||||||||||||||||||||||||| ||||| ||||| |||||||||
+Query 346 gctcaagtgttgaaggaagttgaagaatgcaagaaggantacccgggcgcnttcattagg 405
+
+Sbjct 293 atcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccc 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 406 atcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccc 465
+
+Sbjct 353 ccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga-ttat-tctgga 410
+ |||||||||||||||||||||| | ||||| || |||| | || |||| ||||
+Query 466 ccaagcttcaccgaagcttaatttcttttctaaaacattctta-t-gaattatctctg-- 522
+
+Sbjct 411 acccatttctat 422
+ | |||||| ||
+Query 523 -ctcatttc-at 531
+
+422 474 118 F 417 849 0 758 27 93.56
+Sbjct 118 aattcgagttggagcaccggattngtgt-accgtgagcacggaaccactcccggatacta 176
+ ||||||||||||||||| ||||| |||| | |||||||||||| | ||||||||||||||
+Query 0 aattcgagttggagcac-ggatttgtgtcaacgtgagcacgganc-actcccggatacta 57
+
+Sbjct 177 tgatggacggtactggacaatgtggaagcttccattggttcggatgcaccgactccgctc 236
+ || ||| || ||||||||| |||||| ||| | ||| ||||||||||||||||||||
+Query 58 tgntggncgatactggacantgtgga-gctncnatt--nccggatgcaccgactccgctc 114
+
+Sbjct 237 aagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatca 296
+ |||||||||||||||||||||||||| |||||| || |||||||||||||||| ||||||
+Query 115 aagtgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatca 174
+
+Sbjct 297 tcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaa 356
+ ||||||||| | || |||||||||||||||||||||||||||||||||||||||||||||
+Query 175 tcggattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaa 234
+
+Sbjct 357 gcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccat 416
+ |||||||||||||||| ||||||||| |||||||||||||||||||||||||||||||||
+Query 235 gcttcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccat 293
+
+Sbjct 417 ttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactat 476
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 294 ttctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactat 353
+
+Sbjct 477 tgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcat 536
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 tgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcat 413
+
+Sbjct 537 ttc 539
+ |||
+Query 414 ttc 416
+
+488 474 47 F 483 912 0 932 13 97.32
+Sbjct 47 ctgccnttagtgccgttgaattggctaaggaagttgcttccttctccgcaacaagtggat 106
+ ||||| ||||||||||||| ||||||||||| ||||||||||| |||||||||||||||
+Query 0 ctgcc-ttagtgccgttga-ttggctaaggagnttgcttccttc-ccgcaacaagtggat 56
+
+Sbjct 107 cccttgtgttgaattcgagttggagcaccggattngtgtaccgtgagcacggaaccactc 166
+ ||||||||||||||||||||||||||| ||||| ||||||||| |||||||||| |||
+Query 57 tccttgtgttgaattcgagttggagcac-ggatttntgtaccgtgggcacggaacc-ctc 114
+
+Sbjct 167 ccggatactatgatggacggtactggacaatgtggaagcttcc-attggttcggatgcac 225
+ ||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||
+Query 115 ccggatactatgatggacggtactggacaatgtggaagcttcccattg-ttcggatgcac 173
+
+Sbjct 226 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 285
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 233
+
+Sbjct 286 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 345
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 293
+
+Sbjct 346 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 405
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 353
+
+Sbjct 406 ctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagt 465
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagt 413
+
+Sbjct 466 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagt 525
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagt 473
+
+Sbjct 526 tatcatttc 534
+ |||||||||
+Query 474 tatcatttc 482
+
+407 474 57 F 407 988 0 664 50 87.71
+Sbjct 57 tgccgttgaattggctaaggaagttgcttccttctccgcaa-caagtggatcccttgtgt 115
+ ||| || |||||||| | ||| ||| || ||||||||| || || | || |||| ||||
+Query 0 tgc-gtcgaattggcnangga-gttactaccttctccgnaaacagggggncccctggtgt 57
+
+Sbjct 116 tgaattcgagtt-ggagcaccggat-tngtgtaccgtgagcacggaaccactcccggata 173
+ || |||||||| ||||||| |||| | |||||||||||||||||||| |||||||||||
+Query 58 ngacttcgagtttggagcacgggatcttgtgtaccgtgagcacggaac-actcccggata 116
+
+Sbjct 174 ctatgatggacggtactggacaatgtggaagcttccattggttcggatgcaccgactccg 233
+ ||| |||||||||||||||||||||||||||||||||||| ||||||||||||||||| |
+Query 117 ctacgatggacggtactggacaatgtggaagcttccattg-ttcggatgcaccgactctg 175
+
+Sbjct 234 ctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattagga 293
+ ||||||| ||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Query 176 ctcaagtattgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattagga 235
+
+Sbjct 294 tcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccc 353
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 236 tcatcggattcgacaacacccgtcaagtccagtgcatcagtttcattgcctacaagcccc 295
+
+Sbjct 354 caagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctggaac 412
+ |||||||||| || |||||| ||| ||||||||||||||| ||||| ||| | |||||
+Query 296 caagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactatcc-ggaac 353
+
+Sbjct 413 ccatttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 463
+ ||| || | | ||||||||| ||||||| |||||||| ||| | | ||||
+Query 354 ccaattttgtatggtcaatgtnnatttaagtaattattttgccaaagtgaaaa 406
+
+419 474 45 F 417 1049 0 722 38 90.91
+Sbjct 45 ccctgccnttagtgccgttgaattggctaaggaagttgcttccttctccgcaacaagtgg 104
+ || |||| || |||||| |||||| |||||||||||||| ||||||||||||||| |||
+Query 0 ccttgccnttnntgccgtcgaattg-ctaaggaagttgctaccttctccgcaacaa-tgg 57
+
+Sbjct 105 atcccttgtgttgaattcgagttggagcaccggattngtgtaccgtgagcacggaaccac 164
+ ||||||||||||||| |||||||||||| | ||||| ||||||||||||||||||| |||
+Query 58 atcccttgtgttgaantcgagttggagcnc-ggatttgtgtaccgtgagcacggaancac 116
+
+Sbjct 165 tcccgg-atactatgatggacggtactggacaatgtggaagcttccattggttcggatgc 223
+ |||||| |||||| |||||||||||||||||||||||||||||||||||| |||||||||
+Query 117 tcccgggatactacgatggacggtactggacaatgtggaagcttccattg-ttcggatgc 175
+
+Sbjct 224 accgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcc 283
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||
+Query 176 accgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgcc 235
+
+Sbjct 284 ttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcc 343
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 ttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcc 295
+
+Sbjct 344 tacaagcccccaagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgatt 402
+ |||||||||||||||||||| || |||||| ||| ||||||||||||||| ||||| |
+Query 296 tacaagcccccaagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgact 354
+
+Sbjct 403 attctggaacccatttctatgtggtcaatgcaaatttaagaaattattt-gccga-ctta 460
+ || | |||||||| || | | ||||||||| ||||||||| |||||||| ||| | | |
+Query 355 at-ccggaacccaattttgtatggtcaatgtaaatttaagtaattattttgccaaagtga 413
+
+Sbjct 461 aaa 463
+ |||
+Query 414 aaa 416
+
+453 474 87 F 444 1120 0 798 33 92.64
+Sbjct 87 cttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccggattngtgta 146
+ |||| |||||||| | || ||||| | |||||||| | ||||| | |||| || || |
+Query 0 cttc-ccgcaacagg-gg-tccct-gggttgaattngngttgg-gncccggntttgtttc 54
+
+Sbjct 147 ccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagct 206
+ ||||| | ||||||| | ||||| | ||||| ||| |||| |||| |||||||||||||
+Query 55 ccgtggncccggaacc-cncccggntnctatgntggccggtnctggccaatgtggaagct 113
+
+Sbjct 207 tccattggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaaga 266
+ |||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 114 -ccattg-ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaaga 171
+
+Sbjct 267 aggagtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaat 326
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 172 aggagtnccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaat 231
+
+Sbjct 327 gcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctgga 386
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 232 gcatcagtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctgga 290
+
+Sbjct 387 atattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaat 446
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 291 atattcagcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaat 350
+
+Sbjct 447 tatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatca 506
+ ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 351 tatttgccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatca 410
+
+Sbjct 507 gtttctctataattatagttatcatttcatttc 539
+ |||||||| ||||||||||||||||||||||||
+Query 411 gtttctctntaattatagttatcatttcatttc 443
+
+422 474 1 F 425 1230 2 679 56 86.78
+Sbjct 1 gaaggttgccccc-aatcggaa-ga-gaagtt-gngcncttt-cttcctccctg-ccntt 54
+ |||| | |||||| ||| |||| || ||| || | || |||| ||||| ||||| || ||
+Query 2 gaagnt-gccccccaattggaaagaagaantttgggc-cttttcttccnccctggccttt 59
+
+Sbjct 55 agtgccgttg-aattggctaaggaagttg-cttccttctccgcaacaagtggatcccttg 112
+ ||| || | | |||||||||||||||||| || | ||||| ||||||| ||| |||||||
+Query 60 agtnccntcggaattggctaaggaagttgactccnttctcngcaacaaatggntcccttg 119
+
+Sbjct 113 tgttgaattcgagttggagcaccggattngtgtaccgtgagcacggaaccactcccggat 172
+ ||||||||||||||| | || | ||||| |||| |||||||| ||||| |||||||||||
+Query 120 tgttgaattcgagttagggcnc-ggatttgtgtcccgtgagcccggaaacactcccggat 178
+
+Sbjct 173 actatgatggac-ggtactggacaat-gtggaagcttcc-attggttcggatgcaccgac 229
+ |||| ||||||| ||||||||||||| |||||||||||| |||| |||||||||||||||
+Query 179 actacgatggaccggtactggacaattgtggaagcttcccattg-ttcggatgcaccgac 237
+
+Sbjct 230 tccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatt 289
+ ||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||
+Query 238 tccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcatt 297
+
+Sbjct 290 aggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaag 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 aggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaag 357
+
+Sbjct 350 cccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga-ttat-tct 407
+ ||||||||||||||||||||||||| | ||||| || |||| | || |||| |||
+Query 358 cccccaagcttcaccgaagcttaatttcttttctaaaacattctta-t-gaattatctct 415
+
+Sbjct 408 ggaacccatttctat 422
+ | | |||||| ||
+Query 416 g---ctcatttc-at 426
+
+500 474 40 F 475 1297 0 852 41 91.59
+Sbjct 40 ttcctccctgccnttagtgccgttgaattggctaaggaagttgcttccttctccgcaaca 99
+ |||| ||||||| |||| || || || | | ||| | | || ||| | ||| ||||| |
+Query 0 ttcc-ccctgcc-ttag-gc-gt-ga-t-gncta-gna-gt-gctnc-ttc-ccgcan-a 46
+
+Sbjct 100 agtggatcccttgtgttgaattcgagttggagcaccggattngtgtaccgtgagcacgga 159
+ ||| ||| || |||||||| ||||| || || | ||||| | | ||||| ||||| |
+Query 47 -gtgn-tcc-ttntgttgaat-cgagt-ggngcnc-ggatt-tttttccgtgngcacgna 99
+
+Sbjct 160 accactcccggatactatgatggacggtactggacaatgtggaagcttccattggttcgg 219
+ || |||||||| | ||||||||| |||||||||| ||||||||||||||||||| |||||
+Query 100 ac-actcccgg-tnctatgatggccggtactgga-aatgtggaagcttccattg-ttcgg 155
+
+Sbjct 220 atgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctgg 279
+ ||||||||| |||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 156 atgcaccga-tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctgg 214
+
+Sbjct 280 cgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcat 339
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 215 cgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcat 274
+
+Sbjct 340 tgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttg 399
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 275 tgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttg 334
+
+Sbjct 400 attattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgactt 459
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 335 attattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgactt 394
+
+Sbjct 460 aaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataat 519
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 395 aaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataat 454
+
+Sbjct 520 tatagttatcatttcatttc 539
+ ||||||||||||||||||||
+Query 455 tatagttatcatttcatttc 474
+
+447 474 68 F 436 1327 0 775 36 91.85
+Sbjct 68 tggctaaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagt 126
+ |||||| |||| ||| || ||||| ||| |||| ||| ||| || | ||||||||| |
+Query 0 tggcta-ggaa-ttgact-ccttc-ccg-aaca-ntggntcc-tt-ttttgaattcgntt 51
+
+Sbjct 127 tggagcaccggattngtgtaccgtgagcacggaaccactcccggatactatgatggacgg 186
+ ||| || | || || | ||||| || || ||| ||||| || |||| |||||| |||
+Query 52 tggngcnc-ggntttttnncccgtgngcncgnaac-actccngg-tactntgatggncgg 108
+
+Sbjct 187 tactggacaatgtggaagcttccattggttcggatgcaccgactccgctcaagtgttgaa 246
+ ||||||||| | ||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 109 tactggacattntggaagcttccattg-ttcggatgcaccgactccgctcaagtgttgaa 167
+
+Sbjct 247 ggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatcggattcga 306
+ |||| ||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 168 ggaanttgaagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcga 227
+
+Sbjct 307 caacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccga 366
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 228 caacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccga 287
+
+Sbjct 367 agcttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtgg 426
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 288 agcttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtgg 347
+
+Sbjct 427 tcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaag 486
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 348 tcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaag 407
+
+Sbjct 487 tgaaaatgttattcctatcagtttctct 514
+ ||||||||||||||||||||||||||||
+Query 408 tgaaaatgttattcctatcagtttctct 435
+
+409 480 46 F 398 926 0 744 21 94.80
+Sbjct 46 gatctggagctccttattacgctcatggatatcaaactgttcccagtcccatggtggtgt 105
+ ||| ||||| || | || ||| ||| ||| |||||||||| || | ||| |||||| |||
+Query 0 gatttggag-tcnt-ataacg-tcaggga-atcaaactgt-cc-antcc-atggtg-tgt 51
+
+Sbjct 106 tgctgaaggaagacctgtcagacaacgtcgccttccttgctgtggaattggtcttggatg 165
+ ||||||||| ||||| |||||||| ||| | |||||||||| ||||||| |||||||||
+Query 52 -gctgaagga-gacctntcagacaa-gtcnctttccttgctggggaattgttcttggatg 108
+
+Sbjct 166 gttcctgttcattgttggatttttccttggagcaatcccttggtatgtcggattgttcat 225
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 109 gttcctgttcattgttggatttttccttggagcaatcccttggtatgtcggattgttcat 168
+
+Sbjct 226 catgatgtttggaaggagaatcgattacagggagaaaccaggatacattgcctgcactat 285
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 169 catgatgtttggaaggagaatcgattacagggagaaaccaggatacattgcctgcactat 228
+
+Sbjct 286 cgctgctattctagcaacaatcgctgtgattctgggtgtatctaaaggagcagacgactg 345
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 229 cgctgctattctagcaacaatcgctgtgattctgggtgtatctaaaggagcagacgactg 288
+
+Sbjct 346 gtgatggatcaatcatcttgtggggttactctaaaaatgtttgtataggtttctttatcg 405
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 289 gtgatggatcaatcatcttgtggggttactctaaaaatgtttgtataggtttctttatcg 348
+
+Sbjct 406 tgtgttgtattatctacttccttttttacttactctatgaagaaacaag 454
+ |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 349 tgtgttgtattatctacttccttttttacttactctatgaagaaacaag 397
+
+425 489 0 F 429 1339 12 806 16 96.25
+Sbjct 0 ggaaaacccc-gtggagct-tgg-agcttaggtgaggatcaattcca-gctggaaggag- 55
+ || ||||||| |||||||| ||| |||||| |||| |||| || || |||||||||||
+Query 12 gggaaaccccngtggagctntgggngcttagntgag-atcattttcatgctggaaggaga 70
+
+Sbjct 56 cttttgaagtgatcgatggtccct-agttgtaaataaa-gctgtgtgggattttgcctgt 112
+ |||| ||||||||||||||||||| ||||||||||||| ||||||| ||||||||| |||
+Query 71 cttt-gaagtgatcgatggtcccttagttgtaaataaaagctgtgttggattttgc-tgt 128
+
+Sbjct 113 tgggggatggtacaagtcacacctcaagctctatgcattggtatctcatgagcctctctt 172
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 129 tgggggatggtacaagtcacacctcaagctctatgcattggtatctcatgagcctctctt 188
+
+Sbjct 173 ccatagagagtttctcttttaattttgtcgaaataaaaaaggtgtgatgaagtaaataga 232
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 189 ccatagagagtttctcttttaattttgtcgaaataaaaaaggtgtgatgaagtaaataga 248
+
+Sbjct 233 ggtataataatatctatctattaagtcttgttttgttctttcatttttgtatttcttttc 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 249 ggtataataatatctatctattaagtcttgttttgttctttcatttttgtatttcttttc 308
+
+Sbjct 293 tatttaaaagacagtttattagtcttctgagctctctttttgatctttgttatagcgtat 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 309 tatttaaaagacagtttattagtcttctgagctctctttttgatctttgttatagcgtat 368
+
+Sbjct 353 catcaccctcgaaagtgtaatgttttgtacccccaaacttgtttagcattataataaagt 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 369 catcaccctcgaaagtgtaatgttttgtacccccaaacttgtttagcattataataaagt 428
+
+Sbjct 413 ctctttggaact 424
+ ||||||||||||
+Query 429 ctctttggaact 440
+
+409 522 41 F 410 1134 0 723 32 92.19
+Sbjct 41 gtttncccaaggatggtatgagtccccactcgaggac-nattatag-cgaaggagatgta 98
+ |||| ||| | ||| ||||||| | |||||| |||| | ||||| ||||||||||| |
+Query 0 gtttgcccncgnatgntatgagttcacactcg-ggacccactataggcgaaggagatgaa 58
+
+Sbjct 99 tggtgtgtttgagctactcagaactc-gggatttcgttctcgaagtcaccgcctttcgtg 157
+ || |||| |||||||| |||||||| ||||| || |||||||||||||||||||||||
+Query 59 tg-tgtgnntgagctacncagaactccgggatcncgctctcgaagtcaccgcctttcgtg 117
+
+Sbjct 158 tcaatgagtatgtgtgcccaaaaaagatttccctttcatcagcgatcttgcaggtagctt 217
+ |||||||||||||||| ||||||||||||||||| ||||||||| |||||||||||||||
+Query 118 tcaatgagtatgtgtgaccaaaaaagatttccctatcatcagcgntcttgcaggtagctt 177
+
+Sbjct 218 tccaaagttaaaattttatgtaggggtctcttaaccattctctctcttgcattggttgtc 277
+ |||||||| | | ||||||||||||||||||||||||||||||| ||||||||||||
+Query 178 tccaaagtcnnactcntatgtaggggtctcttaaccattctctctctcgcattggttgtc 237
+
+Sbjct 278 tctgttctagtagtgttttgagtgaaatttcaggttcctatgtttggatgtggataagta 337
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 238 tctgttctagtagtgttttgagtgaaatctcaggttcctatgtttggatgtggataagta 297
+
+Sbjct 338 tttgacgattataataacctctgagtgggaaactctttgtttgagtggtagctaggttca 397
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 tttgacgattataataacctctgagtgggaaactctttgtttgagtggtagctaggttca 357
+
+Sbjct 398 aaagtagagttgtatatacttttatcttcatcaggataattatgtttatttg 449
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 aaagtagagttgtatatacttttatcttcatcaggataattatgtttatttg 409
+
+406 530 14 F 398 1343 30 735 23 94.28
+Sbjct 14 cccagaaaatggcccattggggagagcccgaggacttgctttaccccgntggcagcttcg 73
+ ||||| |||||||| ||||| | ||| | | ||| ||| ||||| |||||| ||||
+Query 30 cccaggaaatggcc-nttgggnng-gccng-gn-ctt--ttttccccggtggcag-ttcg 82
+
+Sbjct 74 acccattgggtttggctcccgccccagaggcattcgctgagttgaaggtgaaggagctca 133
+ |||||||| ||||||||||| ||||| |||||||||||||||||||||||||| |||||
+Query 83 ccccattggttttggctcccgncccag-ggcattcgctgagttgaaggtgaaggngctca 141
+
+Sbjct 134 agaacggaagattggctatgttctctatgtttggattcttcgttcaagccatcgtcactg 193
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 agaacggaagattggctatgttctctatgtttggattcttcgttcaagccatcgtcactg 201
+
+Sbjct 194 gtaagggaccgatagaganccttgctgaccatttggccgatccagttaacaacaacgcat 253
+ |||||||||||||||||| |||||||||||||||||||||||||||| ||||||||||||
+Query 202 gtaagggaccgatagaganccttgctgaccatttggccgatccagttnacaacaacgcat 261
+
+Sbjct 254 gggccttcgccaccaactttgttcccggaaagtgagccaagttttatctgtattttgctt 313
+ ||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 262 gggccttcgccnccaactttgttcccggaaagtgagccaagttttatctgtattttgctt 321
+
+Sbjct 314 cagtctttgcttcgtgagtgtgagaggagaaagagagcttgtttagatgtaaaatttgca 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 322 cagtctttgcttcgtgagtgtgagaggagaaagagagcttgtttagatgtaaaatttgca 381
+
+Sbjct 374 agactttgtattttttttcattaatcaaataactcgtttttctctc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 382 agactttgtattttttttcattaatcaaataactcgtttttctctc 427
+
+422 536 58 F 414 1082 12 755 27 93.54
+Sbjct 58 cccangcaattctctgtagcctgtgcactcgagcgttggancgaactcatacaagcccag 117
+ |||| || || | | ||||| | || | | || |||| ||| | ||| ||| ||| |
+Query 12 ccca-gccat-cccngtagc-t-ngccccccggcnttgggccga-cccatncaa-ccc-g 64
+
+Sbjct 118 agattactgtagacttggaagactatgggtgcagagagaggacatttgagtctctaggag 177
+ |||| |||||| || ||||| ||||||||||||||||||| ||||||||||||||||||
+Query 65 ngattnctgtagnct-ggaagcctatgggtgcagagagaggncatttgagtctctaggag 123
+
+Sbjct 178 aagagagtggaacagtgatgtatcagacgtttgagaagcttggtaagtactgtggatcgc 237
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 124 aagagagtggaacagtgatgtntcagacgtttgagaagcttggtaagtactgtggatcgc 183
+
+Sbjct 238 ctagatctaccttgaagtgtgaatggagcagcaacaatagctgcagcagcgaggacgaga 297
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 184 ctagatctaccttgaagtgtgaatggagcagcaacaatagctgcagcagcgaggacgaga 243
+
+Sbjct 298 aggacgagggaatctagcagaatttttcttcctaataactattttcgagctttctgtttt 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 244 aggacgagggaatctagcagaatttttcttcctaataactattttcgagctttctgtttt 303
+
+Sbjct 358 tgttctttctttttaaaaaacttattaagttcttatgaataatgacttgtgaagtttgag 417
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 304 tgttctttctttttaaaaaacttattaagttcttatgaataatgacttgtgaagtttgag 363
+
+Sbjct 418 ttcgtctccttcacaagcaagttgtattggtgttttctactttatgaatatgggttttat 477
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 364 ttcgtctccttcacaagcaagttgtattggtgttttctactttatgaatatgggttttat 423
+
+Sbjct 478 at 479
+ ||
+Query 424 at 425
+
+400 542 30 F 413 1056 0 738 25 93.85
+Sbjct 30 aagcc-gacaa-ccc-tcggaattacggc-gcc-tggacttgagggaccgcgt-cggacc 83
+ ||||| ||||| ||| ||||||||||||| ||| || |||||||||| |||| | || |
+Query 0 aagcccgacaagcccntcggaattacggcagccatgatcttgagggacngcgttcngaac 59
+
+Sbjct 84 ctccggcagaaagggcaagggatnc-ggtgttt-acaagtacg-tc-gacaagtatgg-a 138
+ |||||||||||||||||||| | | ||||||| |||||||| || ||||||||||| |
+Query 60 ctccggcagaaagggcaagg-ntaccggtgttttacaagtaccntccgacaagtatggga 118
+
+Sbjct 139 gct-aacgtcgatggatac-ag-tcctatttacaacgagaacgagtggtcagcgagtggt 195
+ || ||||||||||||||| || |||||||||||||||||||||||||||||||||||||
+Query 119 ncttaacgtcgatggataccaggtcctatttacaacgagaacgagtggtcagcgagtggt 178
+
+Sbjct 196 gacgtgtacaagggaggagtcaccggattggcaatttgggcggtaactctcgccggaatt 255
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 nacgtgtacaagggaggagtcaccggattggcaatttgggcggtaactctcgccggaatt 238
+
+Sbjct 256 cttgccggaggtgctcttcttgtgtacaacacaagtgctttggctcagtaaatcttaaag 315
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 cttgccggaggtgctcttcttgtgtacaacacaagtgctttggctcagtaaatcttaaag 298
+
+Sbjct 316 ttgttagcgcatgtgtaatcatgtttctataaatgtttctgtgttgttctctttctctct 375
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 ttgttagcgcatgtgtaatcatgtttctataaatgtttctgtgttgttctctttctctct 358
+
+Sbjct 376 aatgttgtaaaactcagacatactttgaatttataagacttctagtgtttgtat 429
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 aatgttgtaaaactcagacatactttgaatttataagacttctagtgtttgtat 412
+
+477 543 3 F 476 658 126 890 21 95.59
+Sbjct 3 ctt-gtg-cgttgaatggctaggga-gttgctccttcnccgcacagtgg-ttccttgtgt 58
+ ||| ||| ||| || |||||| ||| || ||||||| ||||||||||| ||||| ||||
+Query 126 cttagtgacgt-gattggctaaggaagtgactccttctccgcacagtggattcct-gtgt 183
+
+Sbjct 59 tgattcgagttggaccncggatttgtgtcccgtgggcacggaaccactccccggtactat 118
+ |||||||||||||| | ||||||||||| ||||| ||||||||| |||||| | ||||||
+Query 184 tgattcgagttggagcacggatttgtgtaccgtgagcacggaac-actcccggatactat 242
+
+Sbjct 119 gatggncggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaa 178
+ ||||| ||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 243 gatggacggtactggacaatgtgga-gcttccattgttcggatgcaccgactccgctcaa 301
+
+Sbjct 179 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 238
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 302 gtgttgaaggaagttgaagaatgcaagaaggagtacc-tggcgccttcattaggatcatc 360
+
+Sbjct 239 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 361 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 420
+
+Sbjct 299 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 421 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 480
+
+Sbjct 359 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 481 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 540
+
+Sbjct 419 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 541 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 600
+
+Sbjct 479 c 479
+ |
+Query 601 c 601
+
+436 543 44 F 429 713 11 793 24 94.45
+Sbjct 44 agtggttccttgtgttgattcgagttggaccncggatttgtgtcccgtgggcacggaacc 103
+ || || ||| | | || ||||| ||||| || ||| ||| | ||||| |||| |||||||
+Query 11 aggggctccctnttttaattcg-gttgg-ccccggtttt-t-tcccg-gggcccggaacc 65
+
+Sbjct 104 actccccggtactatgatggncggtactggac-aatgtggaagcttccattgttcggatg 162
+ | ||||||| || || ||| ||||||||||| |||||||||||| |||| |||||||||
+Query 66 -cnccccggttctntgntggccggtactggaccaatgtggaagct-ccat-gttcggatg 122
+
+Sbjct 163 caccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgc 222
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 123 caccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtcccctggcgc 182
+
+Sbjct 223 cttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgc 282
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 183 cttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgc 242
+
+Sbjct 283 ctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgatt 342
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 243 ctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgatt 302
+
+Sbjct 343 attctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaa 402
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 303 attctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaa 362
+
+Sbjct 403 agttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattat 462
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 363 agttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattat 422
+
+Sbjct 463 agttatcatttcatttc 479
+ |||||||||||||||||
+Query 423 agttatcatttcatttc 439
+
+429 543 51 F 430 798 3 793 22 94.88
+Sbjct 51 ccttgtgttg-a-ttcgagttggaccncggatttgtgtcccgtgggcacgg-aaccactc 107
+ |||||| ||| | |||| ||||| | ||| || |||| ||||| |||||| |||| |||
+Query 3 ccttgt-ttggaattcgtnttggancacggntt-gtgttccgtgagcacggnaacc-ctc 59
+
+Sbjct 108 cccggtactatgatggncggtactggacaatgtggaagcttccattgttcggatgcaccg 167
+ || ||||||||||| ||||| |||||||||||||||||||| ||||||||||||||||
+Query 60 ccgnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcaccg 119
+
+Sbjct 168 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 227
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 179
+
+Sbjct 228 ttaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcctac 286
+ |||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 180 ttaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcctac 239
+
+Sbjct 287 aagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattc 346
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 240 aagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattc 299
+
+Sbjct 347 tggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagtt 406
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 300 tggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagtt 359
+
+Sbjct 407 gaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagtt 466
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 360 gaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagtt 419
+
+Sbjct 467 atcatttcatttc 479
+ | |||||||||||
+Query 420 accatttcatttc 432
+
+455 543 0 F 466 826 15 852 23 95.01
+Sbjct 0 tgcc-tt-gtg-cgttgaat-ggctaggga-gttgct-cc-ttcnccg-ca-ca-gtggt 49
+ |||| || ||| |||||||| ||||||||| |||||| || ||| ||| || || ||||
+Query 15 tgcccttagtgncgttgaattggctagggaagttgcttcccttctccggcaacaagtgga 74
+
+Sbjct 50 tccttgtgttga-ttcgagttggaccncggatttgtgtcccgtgggcacggaaccactcc 108
+ |||||||||||| ||||||||||| | ||||||||||| ||||| |||||||| ||||||
+Query 75 tccttgtgttgaattcgagttggagcncggatttgtgtnccgtgagcacggaaacactcc 134
+
+Sbjct 109 ccggtactatgatggncggtactggacaatgtggaagcttccattgttcggatgcaccga 168
+ | | ||||||||||| || |||||||||||||||||||||||||||||||||||||||||
+Query 135 cggatactatgatggacgatactggacaatgtggaagcttccattgttcggatgcaccga 194
+
+Sbjct 169 ctccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcat 228
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 195 ctccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcat 254
+
+Sbjct 229 taggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 288
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 255 taggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 314
+
+Sbjct 289 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctg 348
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 315 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctg 374
+
+Sbjct 349 gaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttga 408
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||
+Query 375 gaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttga 434
+
+Sbjct 409 ggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 454
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 435 ggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 480
+
+419 543 61 F 416 849 1 748 29 93.05
+Sbjct 61 attcgagttggaccncggatttgtgtc-ccgtgggcacggaaccactccccgg-tactat 118
+ |||||||||||| | |||||||||||| |||| ||||||| | |||||| || ||||||
+Query 1 attcgagttggagcacggatttgtgtcaacgtgagcacgganc-actccc-ggatactat 58
+
+Sbjct 119 gatggncggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaa 178
+ | ||| || ||||||||| |||||| ||| | ||| ||||||||||||||||||||||
+Query 59 gntggncgatactggacantgtgga-gctncnatt-nccggatgcaccgactccgctcaa 116
+
+Sbjct 179 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 238
+ |||||||||||||||||||||||| |||||| || |||||||||||||||| ||||||||
+Query 117 gtgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatc 176
+
+Sbjct 239 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 298
+ ||||||| | || |||||||||||||||||||||||||||||||||||||||||||||||
+Query 177 ggattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 236
+
+Sbjct 299 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 358
+ |||||||||||||| ||||||||| |||||||||||||||||||||||||||||||||||
+Query 237 ttcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccattt 295
+
+Sbjct 359 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 418
+ ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Query 296 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattg 355
+
+Sbjct 419 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 356 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 415
+
+Sbjct 479 c 479
+ |
+Query 416 c 416
+
+475 543 0 F 482 912 1 897 20 95.82
+Sbjct 0 tgcctt-gtgc-gttgaatggctagggag-ttgct-ccttcnccgca-ca-gtgg-ttcc 52
+ |||||| |||| ||||| |||||| |||| ||||| ||||| ||||| || |||| ||||
+Query 1 tgccttagtgccgttgattggctaaggagnttgcttccttc-ccgcaacaagtggattcc 59
+
+Sbjct 53 ttgtgttga-ttcgagttggaccncggatttgtgtcccgtgggcacggaaccactccccg 111
+ ||||||||| ||||||||||| | ||||||| ||| |||||||||||||||| ||||| |
+Query 60 ttgtgttgaattcgagttggagcacggatttntgtaccgtgggcacggaacc-ctcccgg 118
+
+Sbjct 112 gtactatgatggncggtactggacaatgtggaagcttcc-attgttcggatgcaccgact 170
+ ||||||||||| |||||||||||||||||||||||||| ||||||||||||||||||||
+Query 119 atactatgatggacggtactggacaatgtggaagcttcccattgttcggatgcaccgact 178
+
+Sbjct 171 ccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatta 230
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 ccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatta 238
+
+Sbjct 231 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 298
+
+Sbjct 291 ccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctgga 350
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 ccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctgga 358
+
+Sbjct 351 acccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagg 410
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 acccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagg 418
+
+Sbjct 411 aactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatca 470
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 aactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatca 478
+
+Sbjct 471 tttc 474
+ ||||
+Query 479 tttc 482
+
+397 543 7 F 407 988 0 633 57 85.82
+Sbjct 7 tgcgttgaat-ggctagggagttgct-ccttcnccgca--cagtggttcct-tg-tgttg 60
+ ||||| |||| ||| | |||||| || ||||| ||| | ||| || || || ||| |
+Query 0 tgcgtcgaattggcnanggagttactaccttctccgnaaacagggggncccctggtgtng 59
+
+Sbjct 61 a-ttcgagtt-ggaccncgg-at-ttgtgtcccgtgggcacggaaccactccccggtact 116
+ | |||||||| ||| | ||| || |||||| ||||| ||||||||| |||||| | ||||
+Query 60 acttcgagtttggagcacgggatcttgtgtaccgtgagcacggaac-actcccggatact 118
+
+Sbjct 117 atgatggncggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctc 176
+ | ||||| ||||||||||||||||||||||||||||||||||||||||||||||| ||||
+Query 119 acgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactctgctc 178
+
+Sbjct 177 aagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatca 236
+ |||| ||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 179 aagtattgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatca 238
+
+Sbjct 237 tcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaa 296
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 239 tcggattcgacaacacccgtcaagtccagtgcatcagtttcattgcctacaagcccccaa 298
+
+Sbjct 297 gcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctggaaccca 355
+ ||||||| || |||||| ||| ||||||||||||||| ||||| ||| | ||||||||
+Query 299 gcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-ccggaaccca 356
+
+Sbjct 356 -tttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 403
+ ||| | | ||||||||| ||||||| |||||||| ||| | | ||||
+Query 357 attt-tgtatggtcaatgtnnatttaagtaattattttgccaaagtgaaaa 406
+
+404 543 0 F 414 1049 3 677 47 88.51
+Sbjct 0 tgcc-ttg-tgc-gttgaatggctaggga-gttgct-ccttcnccgca-cagtgg-ttcc 52
+ |||| || ||| || |||| |||| ||| |||||| ||||| ||||| || ||| | ||
+Query 3 tgccnttnntgccgtcgaattgctaaggaagttgctaccttctccgcaacaatggatccc 62
+
+Sbjct 53 ttgtgttga-ttcgagttggaccncggatttgtgtcccgtgggcacggaaccactccccg 111
+ ||||||||| |||||||||| | ||||||||||| ||||| |||||||| ||||||| |
+Query 63 ttgtgttgaantcgagttggagcncggatttgtgtaccgtgagcacggaancactcccgg 122
+
+Sbjct 112 g-tactatgatggncggtactggacaatgtggaagcttccattgttcggatgcaccgact 170
+ | ||||| ||||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 123 gatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgact 182
+
+Sbjct 171 ccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatta 230
+ |||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||
+Query 183 ccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcatta 242
+
+Sbjct 231 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 243 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 302
+
+Sbjct 291 ccccaagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctgg 349
+ ||||||||||||| || |||||| ||| ||||||||||||||| ||||| ||| | ||
+Query 303 ccccaagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-ccgg 360
+
+Sbjct 350 aacccatttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 403
+ |||||| || | | ||||||||| ||||||||| |||||||| ||| | | ||||
+Query 361 aacccaattttgtatggtcaatgtaaatttaagtaattattttgccaaagtgaaaa 416
+
+447 543 33 F 444 1120 0 798 31 93.04
+Sbjct 33 cttcnccgca-cagtggttccttgtgttga-ttcgagttggaccncggatttgtgtcccg 90
+ |||| ||||| ||| ||| ||| | ||||| || | ||||| | ||| ||||| |||||
+Query 0 cttc-ccgcaacaggggtccct-gggttgaattngngttgggncccggntttgtttcccg 57
+
+Sbjct 91 tgggcacggaaccactccccggtactatgatggncggtactggacaatgtggaagcttcc 150
+ ||| | ||||||| | ||| | | ||||| ||| |||| |||| ||||||||||||| ||
+Query 58 tggncccggaacc-cncccggntnctatgntggccggtnctggccaatgtggaagct-cc 115
+
+Sbjct 151 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 210
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 116 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 175
+
+Sbjct 211 gtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 270
+ || |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 176 gtnccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 235
+
+Sbjct 271 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatat 330
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 236 cagtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaatat 294
+
+Sbjct 331 tcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatt 390
+ |||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 295 tcagcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattatt 354
+
+Sbjct 391 tgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagttt 450
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 tgccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagttt 414
+
+Sbjct 451 ctctataattatagttatcatttcatttc 479
+ |||| ||||||||||||||||||||||||
+Query 415 ctctntaattatagttatcatttcatttc 443
+
+480 543 0 F 468 1297 7 855 31 93.46
+Sbjct 0 tgcctt-gtgcgttgaatggctagggagttgctccttcnccgcacagtggttccttgtgt 58
+ |||||| | |||| || || |||| ||| ||| |||| ||||| |||| ||||| |||
+Query 7 tgccttag-gcgt-ga-tgnctagn-agt-gctncttc-ccgcanagtg-ntccttntgt 59
+
+Sbjct 59 tgattcgagttggaccncggatttgtgtcccgtgggcacggaaccactccccggtactat 118
+ ||| |||||| || | ||||||| | ||| ||| ||||| ||| |||||| ||| ||||
+Query 60 tgaatcgagt-ggngcncggatttttttcc-gtgngcacgnaac-actccc-ggtnctat 115
+
+Sbjct 119 gatggncggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaa 178
+ ||||| |||||||||| ||||||||||||||||||||||||||||||||| |||| ||||
+Query 116 gatggccggtactgga-aatgtggaagcttccattgttcggatgcaccga-tccgntcaa 173
+
+Sbjct 179 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 233
+
+Sbjct 239 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 293
+
+Sbjct 299 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 353
+
+Sbjct 359 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 413
+
+Sbjct 419 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 473
+
+Sbjct 479 c 479
+ |
+Query 474 c 474
+
+439 543 16 F 436 1327 0 782 31 92.91
+Sbjct 16 tggctagggagttg-ctccttcnccgcacagtggttccttgtgttga-ttcgagttggac 73
+ |||||||| | ||| ||||||| ||| ||| ||| ||||| | |||| |||| ||||
+Query 0 tggctagg-aattgactccttc-ccgaacantggntcctt-ttttgaattcgntttggng 56
+
+Sbjct 74 cncggatttgtgtcccgtgggcacggaaccactccccggtactatgatggncggtactgg 133
+ | ||| ||| | |||||| || || ||| ||||| |||||| |||||| |||||||||
+Query 57 cncggntttttnncccgtgngcncgnaac-actcc-nggtactntgatggncggtactgg 114
+
+Sbjct 134 acaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagtt 193
+ ||| | ||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 115 acattntggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaantt 174
+
+Sbjct 194 gaagaatgcaagaaggagtaccctggcgccttcattaggatcatcggattcgacaacacc 253
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 175 gaagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcgacaacacc 234
+
+Sbjct 254 cgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaa 313
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 cgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaa 294
+
+Sbjct 314 tcccctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgc 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 tcccctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgc 354
+
+Sbjct 374 aaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaat 433
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 aaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaat 414
+
+Sbjct 434 gttattcctatcagtttctct 454
+ |||||||||||||||||||||
+Query 415 gttattcctatcagtttctct 435
+
+436 549 0 F 448 661 68 773 37 91.63
+Sbjct 0 ccacgt-gtncctcgctaaac-tttgancgg-cg-ntggncccaata--tcta-cgnccn 52
+ |||||| || | ||||||||| ||| || || ||| || | || |||| || |
+Query 68 ccacgtagtacntcgctaaaccagtgaacgancggatggtccna-taagtctaacgaact 126
+
+Sbjct 53 cctatgntgga-cgctc-tacatttgcgctcacggaatcggggaa-ctat-cgcgtttgg 108
+ ||||| |||| ||||| |||||||||||||||||| |||||||| |||| |||||||||
+Query 127 cctatactggaacgctcatacatttgcgctcacgga-tcggggaagctattcgcgtttgg 185
+
+Sbjct 109 tgcaggcgatcagggtccagcttggaacagagcttggtaag-nccaaaaagaaaggtgtg 167
+ ||||||||||||||||| ||||||||||||||||||||||| |||||||||||||||||
+Query 186 tgcaggcgatcagggtc-agcttggaacagagcttggtaagaaccaaaaagaaaggtgtg 244
+
+Sbjct 168 tcccggaaaaagtggatatcgatctcagctagcttgctgacttatgtggtttggttggca 227
+ | |||||||||||||||||||||||||||||||| ||||||||||||||||||||||| |
+Query 245 taccggaaaaagtggatatcgatctcagctagctagctgacttatgtggtttggttggta 304
+
+Sbjct 228 agaa-ctacgtttgacatcaaggaaacaaaaacgcacgaaa-tttgcgtttgctttttat 285
+ |||| ||||||||||||||||||||||||||||||| |||| ||||||||||||||||||
+Query 305 agaaactacgtttgacatcaaggaaacaaaaacgcaagaaaatttgcgtttgctttttat 364
+
+Sbjct 286 gttcataagacttggaagcttgtacaaaaaggggaataacataaacttgtctttaacatt 345
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 365 gttcataagacttggaagcttgtacaaaaaggggaataacataaacttgtctttaacatt 424
+
+Sbjct 346 tcattgtatagggtttt-agattattctaattgttcattggttaagttttaggttatgtt 404
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 425 tcattgtatagggtttttagattattctaattgttcattggttaagttttaggttatgtt 484
+
+Sbjct 405 gttaataattatcaaataatttcattaaatc 435
+ |||||||||||||||||||||||||||||||
+Query 485 gttaataattatcaaataatttcattaaatc 515
+
+402 568 10 F 406 1793 2 739 23 94.31
+Sbjct 10 ccgttccaanatgtttatggngcctcga-ccaacaaattgggggaatcctcagattttcc 68
+ ||||| | | |||||||||| || |||| | | |||||| | ||||| ||||||||||
+Query 2 ccgtttctacatgtttatggagcttcgatcgatcaaatttgaggaatactcagattttnn 61
+
+Sbjct 69 tt-cctcattncntgtttttgccaaatctcttgattgatgattttggccatgcagatgga 127
+ || ||||||| | ||||||| ||||||||||||||||||||||||||| |||||||||||
+Query 62 tttcctcattacctgtttttnccaaatctcttgattgatgattttggc-atgcagatgga 120
+
+Sbjct 128 attgaat-ctctgtttgtgtagcctcccttctctgtttagcagtttccggtgagaaaaaa 186
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 121 attgaattctctgtttgtgtagcctcccttctctgtttagcagtttccggtgagaaaaaa 180
+
+Sbjct 187 acaaaaatcgatggttgccctttttcgacgttgattgtgttcaccggatcggagtctttg 246
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 181 acaaaaatcgatggttgccctttttcgacgttgattgtgttcaccggatcggagtctttg 240
+
+Sbjct 247 acggcaaaggatgacaggaacgtttcatcgcttctcttgcaacacgtgtcttgttatacg 306
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 241 acggcaaaggatgacaggaacgtttcatcgcttctnttgcaacacgtgtcttgttatacg 300
+
+Sbjct 307 atcgtgttttgttaaagagatatccttcctttaaagaaatgtaactaa-gtggacctttg 365
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 301 atcgtgttttgttaaagagatatccttcctttaaagaaatgtaactaaagtggacctttg 360
+
+Sbjct 366 ttgggctgtattctgtggatca-ttaataaacataatctttccagtg 411
+ |||||||||||||||||| ||| ||||||||||||||||||||||||
+Query 361 ttgggctgtattctgtggntcaattaataaacataatctttccagtg 407
+
+432 584 48 F 449 1661 0 707 58 86.83
+Sbjct 48 tggcccccntc-ttaa-cccgn-cca-gnccntca-atgcttcacaagtgccctg-ctcg 101
+ ||| ||| || |||| |||| ||| | || | |||| ||||||| |||| || |
+Query 0 tggaccc-gtccttaaacccggaccacgtcccnnanatgcnacacaagtttcctgacttg 58
+
+Sbjct 102 atccctgccccaaagc-g-tccagtacgtgcgtaacgaccgtggcaccccccatg-tgct 158
+ |||||| ||||||| | |||||||||||| ||||||||||||||||||| ||| ||||
+Query 59 ntccctgacccaaaggtggtccagtacgtgcntaacgaccgtggcaccccc-atggtgct 117
+
+Sbjct 159 agacaacaattactaccgtaacatcctagacaacaagggtttgctccttgtggaccatca 218
+ ||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 118 agacaacaattactaccgtaacatcctagncaacaagggtttgctccttgtggaccatca 177
+
+Sbjct 219 gctcgcacacgacaaacgaaccagaccaatcgttaagaagatggctaaggaccaggccta 278
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 178 gctcgcacacgacaaacgaaccagaccaatcgttaagaagatggctaaggaccaggccta 237
+
+Sbjct 279 cttcttcaaggagttcactagggcaatccagatcttatccgagaacaaccccttgactgg 338
+ ||| |||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 238 ctttttcaaggagttcactagggcaatccagatcttatccgagaacaaccccttgattgg 297
+
+Sbjct 339 ctctaagggtgagatcaggaagcaatgtaatctcgcaaacaagaacc-attgaagttgga 397
+ ||||||||||||||||||| |||||||||||| ||||||| | ||| |||| |||||||
+Query 298 ntctaagggtgagatcaggangcaatgtaatctggcaaacangnaccnattgnagttgga 357
+
+Sbjct 398 aaaagtgagaaagac-aggggctct-ggtgtgtt-gagttctct-gctt-ggtacgaacc 452
+ ||||||||||||| | ||||| | | ||||| || ||||||| | |||| |||||| ||
+Query 358 aaaagtgagaaaggccagggggtnttggtgtttttgagttctnttgctttggtacggncc 417
+
+Sbjct 453 -aagatgaataaaaaaat--cttttaag-tt 479
+ ||| || | ||||||| ||||| || ||
+Query 418 caagntggnttaaaaaatttctttttaggtt 448
+
+412 630 2 F 414 736 96 730 32 92.25
+Sbjct 2 cttc-ccg-aacatg-ggnttccttnggttggattcgnnttagggcccggatttttttnc 58
+ |||| ||| |||| | || | | || |||| ||||| |||| || ||||||| | | |
+Query 96 cttctccgcaacaagtggatccnttgtgttgaattcgagttagagcacggatttgtgtac 155
+
+Sbjct 59 ctngngcacggaaccantcccggatactacgatggncggtactggnccattttggaangt 118
+ | | |||||||| || |||||||||||||||||| ||||||||| | || | |||| |
+Query 156 cgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt-ggaagct 214
+
+Sbjct 119 tccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgcaagaa 178
+ |||||||||||||||||| || ||||||||| ||||||||||||||||||||||||||||
+Query 215 tccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaa 274
+
+Sbjct 179 ggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatg 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 275 ggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatg 334
+
+Sbjct 239 catcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaa 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 335 catcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaa 394
+
+Sbjct 299 cattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctcttt 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 395 cattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctcttt 454
+
+Sbjct 359 atgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 413
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 455 atgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 509
+
+415 630 1 F 416 846 202 729 34 91.82
+Sbjct 1 ccttc-ccgaa-ca-tgggnttccttnggttggattcgnnttagggcccggatttttttn 57
+ ||||| ||| | || ||| |||| | |||| ||||| |||| || ||||||| | |
+Query 202 ccttcaccgcancagtgg-attccctgtgttgaattcgagttagagcacggatttgtgta 260
+
+Sbjct 58 cctngngcacggaaccantcccggatactacgatggncggtactggnccattttggaang 117
+ || | |||||||| || |||||||||||||||||| ||||||||| | || | ||||
+Query 261 ccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt-ggaagc 319
+
+Sbjct 118 ttccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgcaaga 177
+ ||||||||||||||||||| || ||||||||| |||||||||||||||||||||||||||
+Query 320 ttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaaga 379
+
+Sbjct 178 aggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaat 237
+ |||| ||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 380 aggantacccgggcgcnttcattaggatcatcggattcgacaacacccgtcaagtccaat 439
+
+Sbjct 238 gcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaa 297
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 440 gcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaa 499
+
+Sbjct 298 acattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctt 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 500 acattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctt 559
+
+Sbjct 358 tatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 415
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 560 tatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 617
+
+415 630 1 F 419 902 4 732 34 91.85
+Sbjct 1 ccttcc-cg--aacatg-ggnttccttnggttggattcgnntt-agggc-ccggattttt 54
+ ||||| || |||| | || | |||| |||||| ||| || || || |||||||| |
+Query 4 ccttcnncggcaacaagtggat-ccttgtgttggaatcggatttagagcnccggatttgt 62
+
+Sbjct 55 ttncctngngcacggaaccantcccggatactacgatggncggtactggnccattttgga 114
+ | || | |||||||| || |||||||||||||||||| ||||||||| | || | |||
+Query 63 gtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt-gga 121
+
+Sbjct 115 angttccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgca 174
+ | ||||||||||||||||||| || ||||||||| ||||||||||||||||||||||||
+Query 122 agcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgca 181
+
+Sbjct 175 agaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 182 agaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 241
+
+Sbjct 235 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 294
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 242 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 301
+
+Sbjct 295 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 302 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 361
+
+Sbjct 355 ctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttata 414
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 362 ctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttata 421
+
+Sbjct 415 t 415
+ |
+Query 422 t 422
+
+416 630 0 F 420 1100 23 719 39 90.67
+Sbjct 0 cccttccc-gaacatgggnttccttnggttggattcgnnttagggcccgg-attt-tttt 56
+ |||||||| ||| | ||| || | |||| ||||| ||||||||||| |||| | |
+Query 23 cccttcccngaaaaggggnccccctgtgttgaattcgngttagggcccgggatttggtgt 82
+
+Sbjct 57 ncctngngcac-ggaaccant-cccggatactacgatggncggtactggnccattttgga 114
+ || | || | |||| || | ||||||||||||||||| ||||||||| | || | |||
+Query 83 ncccngngccccggaancactncccggatactacgatggccggtactggacaatgt-gga 141
+
+Sbjct 115 angttccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgca 174
+ ||||||||| ||||||||| || ||||||||| ||||||||||||||||||||||||
+Query 142 ngcttccattgtccggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgca 201
+
+Sbjct 175 agaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 202 agaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 261
+
+Sbjct 235 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 294
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 262 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 321
+
+Sbjct 295 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 322 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 381
+
+Sbjct 355 ctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttata 414
+ |||||||||||||||||||||||||||||||||||||||||||||||||| | |||||||
+Query 382 ctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatnttatttata 441
+
+Sbjct 415 t 415
+ |
+Query 442 t 442
+
+425 630 9 F 426 1143 1 728 41 90.36
+Sbjct 9 aacatgggnttccttnggttggattcgnnttagggccc-ggatttttttnc-ctngngca 66
+ || | ||| | ||| ||||| ||||| || | |||| |||||| | | | | | ||
+Query 1 aa-aagggntccct--ggttgaattcg-gttngngccccggatttgtgtncccgtgngcc 56
+
+Sbjct 67 c-ggaaccantcccggatactac-gatggnc-ggtactggnccattttggaang-ttcc- 122
+ | ||||||| ||| | |||| | ||||| | |||||||| ||| | ||||| | ||||
+Query 57 ccggaaccacccccnggtacttccgatggaccggtactgg-ccaatgtggaa-gnttccc 114
+
+Sbjct 123 attgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgcaagaagga 181
+ ||||||||||||||| || ||||||||| |||||||||||||||||||||||||||||||
+Query 115 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 174
+
+Sbjct 182 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 241
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 234
+
+Sbjct 242 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacat 301
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 235 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacan 294
+
+Sbjct 302 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 361
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 354
+
+Sbjct 362 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatatatccgt 421
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 355 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtnatttatatatccgt 414
+
+Sbjct 422 gcgtcttgattt 433
+ ||||||||||||
+Query 415 gcgtcttgattt 426
+
+415 630 1 F 418 1151 38 737 32 92.32
+Sbjct 1 ccttc-ccg-aacatg-ggnttccttnggttgga-ttcgnnttagggcc-cggatttttt 55
+ ||||| ||| |||| | || | |||| ||| || |||| |||| ||| ||||||| |
+Query 38 ccttctccgcaacaagtggat-ccttgtgtttgaattcgagttagagccacggatttgtg 96
+
+Sbjct 56 tncctngngcacggaaccantcccggatactacgatggncggtactggnccattttggaa 115
+ | || | |||||||| || |||||||||||||||||| ||||||||| | || | ||||
+Query 97 taccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt-ggaa 155
+
+Sbjct 116 ngttccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgcaa 175
+ ||||||||||||||||||| || ||||||||| |||||||||||||||||||||||||
+Query 156 gcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaa 215
+
+Sbjct 176 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 235
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 216 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 275
+
+Sbjct 236 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 276 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 335
+
+Sbjct 296 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 336 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 395
+
+Sbjct 356 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 415
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 396 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 455
+
+416 630 0 F 421 1230 92 732 35 91.64
+Sbjct 0 cccttccc-g-aaca--tgggnttccttnggttggattcgnnttagggcccggatttttt 55
+ || ||| | | |||| ||| | |||| |||| ||||| ||||||| ||||||| |
+Query 92 ccnttctcngcaacaaatgg-ntcccttgtgttgaattcgagttagggcncggatttgtg 150
+
+Sbjct 56 tncctngngcacggaaccantcccggatactacgatggnc-ggtactggnccattttgga 114
+ | || | || ||||| || |||||||||||||||||| | |||||||| | ||| ||||
+Query 151 tcccgtgagcccggaaacactcccggatactacgatggaccggtactggacaattgtgga 210
+
+Sbjct 115 ang-ttcc-attgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatg 172
+ | | |||| ||||||||||||||| || ||||||||| ||||||||||||||||||||||
+Query 211 a-gcttcccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatg 269
+
+Sbjct 173 caagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagt 232
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 270 caagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagt 329
+
+Sbjct 233 ccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 330 ccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 389
+
+Sbjct 293 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 390 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 449
+
+Sbjct 353 ctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattta 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 450 ctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattta 509
+
+Sbjct 413 tat 415
+ |||
+Query 510 tat 512
+
+409 630 3 F 414 1360 1 688 45 89.06
+Sbjct 3 ttcccgaa-ca--tgggnttccttng-gttggattcg-nnttagg-gcccggattttttt 56
+ |||||||| || |||| | |||| | ||| || || || || || ||||||| | |
+Query 1 ttcccgaaacaantgggatcccttggtgttnaat-cggagtttggngcacggatttgtgt 59
+
+Sbjct 57 ncctngngcacgg-aaccantcccggatactacgatggncggtactggnccattttggaa 115
+ || | |||||| ||||| ||| |||||||||||||| || |||||| | || | ||||
+Query 60 nccgtgagcacggnaaccactccnggatactacgatggacgntactggacaatgt-ggaa 118
+
+Sbjct 116 ngttccattgttcggatgcacngantccgctcaantgttgaaggaagttgaagaatgcaa 175
+ ||||||||| ||||||||| || ||||||||| | |||||||||||||| ||||||||
+Query 119 gcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgcaa 178
+
+Sbjct 176 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 235
+ ||||| ||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 179 gaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtcca 238
+
+Sbjct 236 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 295
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 298
+
+Sbjct 296 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 358
+
+Sbjct 356 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 411
+ |||||||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 359 tttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+400 652 10 F 401 825 79 711 30 92.51
+Sbjct 10 ccctggtggaaacntnaacccgnt-aactt-gcc-ccnaccccagaggccnaaggngaaa 66
+ |||||| |||| | | | |||| | ||||| ||| | || | |||| || |||| ||||
+Query 79 ccctggnggaatctttaccccgcttaactttgcctcntacgcaagag-cccaaggagaaa 137
+
+Sbjct 67 gnncctagc-aaacggggaggttgnc-gatgttaggcattc-ttaggggtttgtggttna 123
+ | |||| ||||||| |||||| | |||||| ||||||| ||| |||||||||||| |
+Query 138 nagc-tagccaaacggg-aggttggccgatgtt-ggcattcctta-gggtttgtggttca 193
+
+Sbjct 124 acacaatgtgnctggaaaaggaccatttgagaatctgttgcagcacttntctgacccatg 183
+ |||||||||| ||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 194 acacaatgtgactggaaaaggaccatttgagaatctgttgcagcacttgtctgacccatg 253
+
+Sbjct 184 gcacaacactattgtccaaaccttcaactaaagagtgaagacagacttatgatctcatac 243
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 254 gcacaacactattgtccaaaccttcaactaaagagtgaagacagacttatgatctcatac 313
+
+Sbjct 244 ctatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatcttagagttcttg 303
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 314 ctatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatcttagagttcttg 373
+
+Sbjct 304 gtttttgagcttgaattattgttgaaccgttgtagctccatgaacaaatttggaatcttc 363
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 374 gtttttgagcttgaattattgttgaaccgttgtagctccatgaacaaatttggaatcttc 433
+
+Sbjct 364 aatgtacagaggaactaagttaatcaacattgttgtactctttaat 409
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aatgtacagaggaactaagttaatcaacattgttgtactctttaat 479
+
+412 654 1 F 407 807 63 711 36 91.21
+Sbjct 1 ccaatggcccaanccccttcgttnatctnacaaaggntccccccnaggtngt-gcccaag 59
+ ||| ||| ||| ||| ||||| |||| |||| || |||| | || | || ||||| |
+Query 63 ccattggnccatgccc-ttcgtgcatct-acaa-ggatcccac-tagatggttgccca-g 117
+
+Sbjct 60 ctcct-tggaagcccaagtcct-tncccccacaaggccgcatt-tgtggganccagaaag 116
+ || || ||||||||||||| || | ||| ||||||||||||| ||||| | ||||||
+Query 118 cttctgtggaagcccaagtactgtgcccacacaaggccgcatgccctgggatc-agaaag 176
+
+Sbjct 117 agttccgtgacccttgacgctgaccaatggcgtcgtctcnaatgggttcgtatgaagtgg 176
+ |||||||||||| |||||||||| ||||||||||||||| ||||||||||||||||||||
+Query 177 agttccgtgacc-ttgacgctgaacaatggcgtcgtctcaaatgggttcgtatgaagtgg 235
+
+Sbjct 177 accctcctacaactactgtaccgaccggactaggttcccggttatgcccagctgaatgta 236
+ ||| || ||||||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 236 accatc-tacaactactgtaccgaccggactaggttcccggttatgcc-agctgaatgta 293
+
+Sbjct 237 aaagggacagagacgcataagttactactcttgagggttttaatgaatttatgctatcat 296
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 294 aaagggacagagacgcataagttactacccttgagggttttaatgaatttatgctatcat 353
+
+Sbjct 297 tattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgat 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 tattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgat 413
+
+Sbjct 357 gtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 gtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 469
+
+440 654 1 F 432 866 142 719 51 88.30
+Sbjct 1 ccaatggcccaancccctt-cgtt-natctnacaaaggntccccccnaggtng-tgccca 57
+ ||| ||| ||| | |||| |||| |||| |||| | | || | || | | | ||||
+Query 142 cca-tggnccatgcncctttcgttgcatct-acaang-atnccacatagat-gntnccca 197
+
+Sbjct 58 agctccttggaagcccaagtccttncccccacaaggccgcatttg-tggganccagaaag 116
+ |||| |||||||||| || || ||| |||||| |||||| || ||| | | |||| |
+Query 198 -gctctgtggaagccca-gtactgtcccacacaagcccgcatgtggtggaatc-agaa-g 253
+
+Sbjct 117 agttccgtgacccttgacgctgaccaatggcgtcgtctcnaatgggttcgtatgaagtgg 176
+ | | |||||||||||||||||||||| |||||||||||| ||||||| ||||||||||||
+Query 254 antnccgtgacccttgacgctgacca-tggcgtcgtctc-aatgggtccgtatgaagtgg 311
+
+Sbjct 177 accctcctacaactactgtaccgaccggactaggttcccggttatgcccagctgaatgta 236
+ || | |||||||||| |||||||||||||||||||||| ||||||| |||||||| ||
+Query 312 nccat-ntacaactactntaccgaccggactaggttcccgnttatgcc-agctgaatnta 369
+
+Sbjct 237 aaagggacagagacgcataagttactactcttgagggttttaatgaatttatgctatcat 296
+ |||||||||||||||| ||||||||||| ||||||||||||||||||||||||||||||
+Query 370 aaagggacagagacgcntaagttactaccnttgagggttttaatgaatttatgctatcat 429
+
+Sbjct 297 tattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgat 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 430 tattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgat 489
+
+Sbjct 357 gtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattagct 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 490 gtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattagct 549
+
+Sbjct 417 atgtattttcatatgttatgatct 440
+ ||||||||||||||||||||||||
+Query 550 atgtattttcatatgttatgatct 573
+
+461 654 0 F 461 1212 120 799 41 91.11
+Sbjct 0 cccaatggcccaancccctt-cg-ttnatctnacaaaggntccccccnaggtngtgccca 57
+ |||||||| |||| ||||| || | |||| ||| || |||| | || | || |||
+Query 120 cccaatggnccaatgccctttcggtgcatcttncaagggntcccncatagatggttncca 179
+
+Sbjct 58 agctcct-tggaagcccaagtcct-tncccccacaaggccgcatttg-tggganccagaa 114
+ ||| || ||||| || |||| || | ||| |||||| |||||| || ||| | | ||||
+Query 180 ngcttctgtggaancc-aagtactgtgcccacacaagnccgcatgtggtggnatc-agaa 237
+
+Sbjct 115 agagttccgtgacccttgacgctgaccaatggcgtcgtctcnaatgggttcgtatgaagt 174
+ ||||||||||| ||||||||||||| ||||||||||||||| ||||||||||||||||||
+Query 238 agagttccgtg-cccttgacgctgaacaatggcgtcgtctcaaatgggttcgtatgaagt 296
+
+Sbjct 175 ggaccctcctacaactactgtaccgaccggactaggttcccggttatgcccagctgaatg 234
+ || || || ||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 297 ggnccatc-tacaactactgtaccgaccggactaggttcccggttatgcc-agctgaatg 354
+
+Sbjct 235 taaaagggacagagacgcataagttactactcttgagggttttaatgaatttatgctatc 294
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 355 taaaagggacagagacgcataagttactactcttgngggttttaatgaatttatgctatc 414
+
+Sbjct 295 attattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatg 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 415 attattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatg 474
+
+Sbjct 355 atgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattag 414
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 475 atgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattag 534
+
+Sbjct 415 ctatgtattttcatatgttatgatctacttacaagttttattcttt 460
+ ||||||||||||||||||||||||||||||||||||||||||||||
+Query 535 ctatgtattttcatatgttatgatctacttacaagttttattcttt 580
+
+441 658 161 F 438 713 2 777 34 92.26
+Sbjct 161 ctccgc-acagtggattcctgtgttgattcgagttggagcacggatttgtgtaccgtgag 219
+ |||| | | || || | ||| | || ||||| ||||| | ||| ||| | | ||| | |
+Query 2 ctccccnaaaggggctccctnttttaattcg-gttggccc-cgg-ttt-tttcccg-ggg 56
+
+Sbjct 220 cacggaacactcccggatactatgatggacggtactggac-aatgtgga-gcttccattg 277
+ | |||||| | ||| | | || || ||| ||||||||||| |||||||| ||| |||| |
+Query 57 cccggaacccnccccggttctntgntggccggtactggaccaatgtggaagct-ccat-g 114
+
+Sbjct 278 ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtac 337
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 115 ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtcc 174
+
+Sbjct 338 c-tggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 396
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 cctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 234
+
+Sbjct 397 ttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcag 456
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 ttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcag 294
+
+Sbjct 457 cgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgcc 516
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 cgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgcc 354
+
+Sbjct 517 gacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 576
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 355 gacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 414
+
+Sbjct 577 ataattatagttatcatttcatttc 601
+ |||||||||||||||||||||||||
+Query 415 ataattatagttatcatttcatttc 439
+
+425 658 60 F 426 736 0 683 56 86.84
+Sbjct 60 cagcacgaggaggtngctgctgaggttgccccatcggaaga-gaanttgaactcttctt- 118
+ || |||| ||| | || |||||| |||||| |||||| || ||| || |||||
+Query 0 ca-cacg-ggaattncctcatgaggt-gccccaatggaagaagat-ttg-gcttttcttn 54
+
+Sbjct 119 cctcctnncttagtgacgt-gattggctaaggaagt-gactccttctccgca-ca-gtgg 173
+ || ||| ||||||| ||| || ||||||||||||| |||| |||||||||| || ||||
+Query 55 ccncctgccttagtg-cgtcgaatggctaaggaagttgactncttctccgcaacaagtgg 113
+
+Sbjct 174 attcc-t-gtgttga-ttcgagttggagcacggatttgtgtaccgtgagcacggaa-cac 229
+ || || | ||||||| |||||||| ||||||||||||||||||||||||||||||| |||
+Query 114 at-ccnttgtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaaacac 172
+
+Sbjct 230 tcccggatactatgatggacggtactggacaatgtgga-gcttccattgttcggatgcac 288
+ |||||||||||| ||||||||||||||||||||||||| |||||||||||||||||||||
+Query 173 tcccggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcac 232
+
+Sbjct 289 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacctgg-cgcctt 347
+ |||||||||||||||||||||||||||||||||||||||||||||||||| || ||||||
+Query 233 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgcctt 292
+
+Sbjct 348 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 407
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 293 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 352
+
+Sbjct 408 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga-ttat 466
+ ||||||||||||||||||||||||||||| | ||||| || |||| | || ||||
+Query 353 caagcccccaagcttcaccgaagcttaatttcttttctaaaacattc-ttat-gaattat 410
+
+Sbjct 467 -tctggaacccatttctat 484
+ |||| | |||||| ||
+Query 411 ctctg---ctcatttc-at 425
+
+428 658 174 F 433 798 0 795 22 94.89
+Sbjct 174 attcctgtgtt-g-a-ttcgagttggagcacggatttgtgtaccgtgagcacgg-aacac 229
+ || ||| |||| | | |||| ||||| ||||| || |||| |||||||||||| ||| |
+Query 0 atccct-tgtttggaattcgtnttggancacggntt-gtgttccgtgagcacggnaaccc 57
+
+Sbjct 230 tcccggatactatgatggacggtactggacaatgtgga-gcttccattgttcggatgcac 288
+ ||||| ||||||||||||||||| ||||||||||||| |||||| ||||||||||||||
+Query 58 tcccgnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcac 117
+
+Sbjct 289 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacc-tggcgcctt 347
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 118 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 177
+
+Sbjct 348 cattaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcct 406
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 178 cattaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcct 237
+
+Sbjct 407 acaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattat 466
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 acaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattat 297
+
+Sbjct 467 tctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaag 526
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 298 tctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaag 357
+
+Sbjct 527 ttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatag 586
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 ttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatag 417
+
+Sbjct 587 ttatcatttcatttc 601
+ ||| |||||||||||
+Query 418 ttaccatttcatttc 432
+
+467 658 110 F 481 826 0 867 27 94.30
+Sbjct 110 ctctt-cttcctcc-tnnc-ttagtgacgt-ga-ttggctaaggaagtgact-cc-ttct 162
+ ||||| ||||| || | | |||||| ||| || ||||||| |||||| || || ||||
+Query 0 ctctttcttccnccctgcccttagtgncgttgaattggctagggaagttgcttcccttct 59
+
+Sbjct 163 ccg-ca-ca-gtggattcct-gtgttga-ttcgagttggagcacggatttgtgtaccgtg 217
+ ||| || || |||||| ||| ||||||| ||||||||||||| ||||||||||| |||||
+Query 60 ccggcaacaagtggat-ccttgtgttgaattcgagttggagcncggatttgtgtnccgtg 118
+
+Sbjct 218 agcacggaa-cactcccggatactatgatggacggtactggacaatgtgga-gcttccat 275
+ ||||||||| |||||||||||||||||||||||| |||||||||||||||| ||||||||
+Query 119 agcacggaaacactcccggatactatgatggacgatactggacaatgtggaagcttccat 178
+
+Sbjct 276 tgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 335
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 tgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 238
+
+Sbjct 336 acc-tggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 394
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 accctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 298
+
+Sbjct 395 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 454
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 358
+
+Sbjct 455 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 514
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 418
+
+Sbjct 515 ccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 574
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccgacttaacagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 478
+
+Sbjct 575 ct 576
+ ||
+Query 479 ct 480
+
+465 658 20 F 485 846 47 737 71 85.05
+Sbjct 20 ctccntt-ttcccgt-nccccagccacac-gn-at-tctccatcacagcacgagga-g-g 72
+ |||| | ||||||| || || || | | | || || | || ||||||| ||| | |
+Query 47 ctccgtgcttcccgtcnccgcancc-cncagncatcacttcctcgcagcacggggaagag 105
+
+Sbjct 73 tngctgc-tga-ggt-t-gcc-ccatcggaagagaant-tga-actct-tctt-cctcc- 123
+ | ||| | ||| ||| | ||| |||| ||||||||| | ||| ||||| |||| |||||
+Query 106 tngctncatgaaggtgtngccaccattggaagagaagtntgagactctatcttacctccc 165
+
+Sbjct 124 tnncttagtgacgt-gattggctaaggaagt-gact-ccttctccgca-cagtggattcc 178
+ | ||||||||||| ||||||| | |||||| |||| ||||| ||||| |||||||||||
+Query 166 tgacttagtgacgtcgattggcna-ggaagttgactaccttcaccgcancagtggattcc 224
+
+Sbjct 179 -tgtgttga-ttcgagttggagcacggatttgtgtaccgtgagcacggaa-cactcccgg 235
+ |||||||| |||||||| ||||||||||||||||||||||||||||||| |||||||||
+Query 225 ctgtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaaacactcccgg 284
+
+Sbjct 236 atactatgatggacggtactggacaatgtgga-gcttccattgttcggatgcaccgactc 294
+ |||||| ||||||||||||||||||||||||| |||||||||||||||||||||||||||
+Query 285 atactacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactc 344
+
+Sbjct 295 cgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacctgg-cgccttcattag 353
+ ||||||||||||||||||||||||||||||||||||||| |||| || ||| ||||||||
+Query 345 cgctcaagtgttgaaggaagttgaagaatgcaagaaggantacccgggcgcnttcattag 404
+
+Sbjct 354 gatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 413
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 405 gatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 464
+
+Sbjct 414 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga-ttat-tctgg 471
+ ||||||||||||||||||||||| | ||||| || |||| | || |||| ||||
+Query 465 cccaagcttcaccgaagcttaatttcttttctaaaacattctta-t-gaattatctctg- 522
+
+Sbjct 472 aacccatttctat 484
+ | |||||| ||
+Query 523 --ctcatttc-at 531
+
+416 658 186 F 416 849 1 763 23 94.47
+Sbjct 186 attcgagttggagcacggatttgtgt-accgtgagcacggaacactcccggatactatga 244
+ |||||||||||||||||||||||||| | |||||||||||| |||||||||||||||||
+Query 1 attcgagttggagcacggatttgtgtcaacgtgagcacggancactcccggatactatgn 60
+
+Sbjct 245 tggacggtactggacaatgtggagcttccattgttcggatgcaccgactccgctcaagtg 304
+ ||| || ||||||||| ||||||||| | ||| |||||||||||||||||||||||||
+Query 61 tggncgatactggacantgtggagctncnatt-nccggatgcaccgactccgctcaagtg 119
+
+Sbjct 305 ttgaaggaagttgaagaatgcaagaaggagtacc-tggcgccttcattaggatcatcgga 363
+ ||||||||||||||||||||| |||||| || || ||||||||||||| |||||||||||
+Query 120 ttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatcgga 179
+
+Sbjct 364 ttcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttc 423
+ |||| | || ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 ttcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttc 239
+
+Sbjct 424 accgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttcta 483
+ ||||||||||| ||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 240 accgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccatttcta 298
+
+Sbjct 484 tgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgttt 543
+ |||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 299 tgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattgttt 358
+
+Sbjct 544 gaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 601
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 gaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 416
+
+471 658 126 F 479 912 4 896 18 96.21
+Sbjct 126 cttagtgacgt-gattggctaaggaagtgact-ccttctccgca-ca-gtggattcct-g 180
+ ||||||| ||| ||||||||||||| | || ||||| ||||| || |||||||||| |
+Query 4 cttagtgccgttgattggctaaggagnttgcttccttc-ccgcaacaagtggattccttg 62
+
+Sbjct 181 tgttga-ttcgagttggagcacggatttgtgtaccgtgagcacggaacactcccggatac 239
+ |||||| ||||||||||||||||||||| ||||||||| ||||||||| |||||||||||
+Query 63 tgttgaattcgagttggagcacggatttntgtaccgtgggcacggaaccctcccggatac 122
+
+Sbjct 240 tatgatggacggtactggacaatgtgga-gcttcc-attgttcggatgcaccgactccgc 297
+ |||||||||||||||||||||||||||| |||||| ||||||||||||||||||||||||
+Query 123 tatgatggacggtactggacaatgtggaagcttcccattgttcggatgcaccgactccgc 182
+
+Sbjct 298 tcaagtgttgaaggaagttgaagaatgcaagaaggagtacc-tggcgccttcattaggat 356
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||
+Query 183 tcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggat 242
+
+Sbjct 357 catcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccccc 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 243 catcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccccc 302
+
+Sbjct 417 aagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaaccc 476
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 303 aagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaaccc 362
+
+Sbjct 477 atttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaact 536
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 363 atttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaact 422
+
+Sbjct 537 attgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttc 596
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 423 attgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttc 482
+
+395 658 131 F 407 988 0 646 52 87.03
+Sbjct 131 tgacgt-ga-ttggctaaggaagtgact-ccttctccgca--cagtggattcc-tg-tgt 183
+ || ||| || ||||| | ||| || ||| ||||||||| | ||| || || || |||
+Query 0 tg-cgtcgaattggcnangga-gttactaccttctccgnaaacagggggncccctggtgt 57
+
+Sbjct 184 tga-ttcgagtt-ggagcacgg-at-ttgtgtaccgtgagcacggaacactcccggatac 239
+ || |||||||| ||||||||| || ||||||||||||||||||||||||||||||||||
+Query 58 ngacttcgagtttggagcacgggatcttgtgtaccgtgagcacggaacactcccggatac 117
+
+Sbjct 240 tatgatggacggtactggacaatgtgga-gcttccattgttcggatgcaccgactccgct 298
+ || ||||||||||||||||||||||||| ||||||||||||||||||||||||||| |||
+Query 118 tacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactctgct 177
+
+Sbjct 299 caagtgttgaaggaagttgaagaatgcaagaaggagtacctgg-cgccttcattaggatc 357
+ ||||| |||||||||||||||||||||||||||||||||| || ||||||||||||||||
+Query 178 caagtattgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatc 237
+
+Sbjct 358 atcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccccca 417
+ ||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 238 atcggattcgacaacacccgtcaagtccagtgcatcagtttcattgcctacaagccccca 297
+
+Sbjct 418 agcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctggaaccc 476
+ |||||||| || |||||| ||| ||||||||||||||| ||||| ||| | |||||||
+Query 298 agcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-ccggaaccc 355
+
+Sbjct 477 a-tttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 525
+ | ||| | | ||||||||| ||||||| |||||||| ||| | | ||||
+Query 356 aattt-tgtatggtcaatgtnnatttaagtaattattttgccaaagtgaaaa 406
+
+395 658 131 F 405 1049 12 677 41 89.75
+Sbjct 131 tgacgt-ga-ttggctaaggaagtgact-ccttctccgca-cagtggattcct-gtgttg 185
+ || ||| || ||| |||||||||| || ||||||||||| || ||||| ||| ||||||
+Query 12 tgccgtcgaattg-ctaaggaagttgctaccttctccgcaacaatggatcccttgtgttg 70
+
+Sbjct 186 a-ttcgagttggagcacggatttgtgtaccgtgagcacggaa-cactcccgg-atactat 242
+ | |||||||||||| |||||||||||||||||||||||||| ||||||||| ||||||
+Query 71 aantcgagttggagcncggatttgtgtaccgtgagcacggaancactcccgggatactac 130
+
+Sbjct 243 gatggacggtactggacaatgtgga-gcttccattgttcggatgcaccgactccgctcaa 301
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 131 gatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaa 190
+
+Sbjct 302 gtgttgaaggaagttgaagaatgcaagaaggagtacctgg-cgccttcattaggatcatc 360
+ ||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||
+Query 191 gtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatc 250
+
+Sbjct 361 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 251 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 310
+
+Sbjct 421 ttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctggaaccca-t 478
+ ||||| || |||||| ||| ||||||||||||||| ||||| ||| | |||||||| |
+Query 311 ttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-ccggaacccaat 368
+
+Sbjct 479 ttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 525
+ || | | ||||||||| ||||||||| |||||||| ||| | | ||||
+Query 369 tt-tgtatggtcaatgtaaatttaagtaattattttgccaaagtgaaaa 416
+
+444 658 158 F 444 1120 0 786 34 92.34
+Sbjct 158 cttctccgca-cagtggattcctgtgttga-ttcgagttggagcacggatttgtgtaccg 215
+ |||| ||||| ||| || | |||| ||||| || | ||||| | ||| ||||| | |||
+Query 0 cttc-ccgcaacag-gggtccctgggttgaattngngttgggncccggntttgtttcccg 57
+
+Sbjct 216 tgagcacggaacactcccggatactatgatggacggtactggacaatgtgga-gcttcca 274
+ || | |||||| | ||||| | ||||| ||| |||| |||| ||||||||| ||| |||
+Query 58 tggncccggaacccncccggntnctatgntggccggtnctggccaatgtggaagct-cca 116
+
+Sbjct 275 ttgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggag 334
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 117 ttgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggag 176
+
+Sbjct 335 tacc-tggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatc 393
+ | || |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 177 tnccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatc 236
+
+Sbjct 394 agtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatatt 453
+ |||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||
+Query 237 agtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaatatt 295
+
+Sbjct 454 cagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattattt 513
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 296 cagcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattattt 355
+
+Sbjct 514 gccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttc 573
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 356 gccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttc 415
+
+Sbjct 574 tctataattatagttatcatttcatttc 601
+ ||| ||||||||||||||||||||||||
+Query 416 tctntaattatagttatcatttcatttc 443
+
+397 658 88 F 416 1230 11 624 63 84.50
+Sbjct 88 cccca-tcggaa-ga-gaantt-gaac-tcttcttcctcc-tnnc-tt-agtgacgt-g- 138
+ ||||| | |||| || ||| || | | | ||||||| || | | || ||| | | |
+Query 11 ccccaattggaaagaagaantttgggccttttcttccnccctggcctttagtnccntcgg 70
+
+Sbjct 139 a-ttggctaaggaagt-gactcc-ttctccgca-ca-gtggattcct-gtgttga-ttcg 190
+ | |||||||||||||| |||||| ||||| ||| || ||| | ||| ||||||| ||||
+Query 71 aattggctaaggaagttgactccnttctcngcaacaaatggntcccttgtgttgaattcg 130
+
+Sbjct 191 agttggagcacggatttgtgtaccgtgagcacggaa-cactcccggatactatgatggac 249
+ |||| | || ||||||||||| |||||||| ||||| ||||||||||||||| |||||||
+Query 131 agttagggcncggatttgtgtcccgtgagcccggaaacactcccggatactacgatggac 190
+
+Sbjct 250 -ggtactggacaat-gtgga-gcttcc-attgttcggatgcaccgactccgctcaagtgt 305
+ ||||||||||||| ||||| |||||| ||||||||||||||||||||||||||||||||
+Query 191 cggtactggacaattgtggaagcttcccattgttcggatgcaccgactccgctcaagtgt 250
+
+Sbjct 306 tgaaggaagttgaagaatgcaagaaggagtacctgg-cgccttcattaggatcatcggat 364
+ ||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||
+Query 251 tgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggat 310
+
+Sbjct 365 tcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttca 424
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 311 tcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttca 370
+
+Sbjct 425 ccgaagcttaatcccctttctggaatattcagcgttga-ttat-tctggaacccatttct 482
+ |||||||||||| | ||||| || |||| | || |||| |||| | ||||||
+Query 371 ccgaagcttaatttcttttctaaaacattctta-t-gaattatctctg---ctcatttc- 425
+
+Sbjct 483 at 484
+ ||
+Query 426 at 426
+
+486 658 116 F 475 1297 0 853 36 92.51
+Sbjct 116 ttcctcctnncttagtgacgtgattggctaaggaagtgactccttctccgcacagtggat 175
+ |||| ||| ||||| | |||||| | ||| | | ||| || |||| ||||| |||| |
+Query 0 ttccccctgccttag-g-cgtgat-gncta-gna-gtg-ctncttc-ccgcanagtgn-t 51
+
+Sbjct 176 tcct-gtgttgattcgagttggagcacggatttgtgtaccgtgagcacggaacactcccg 234
+ ||| |||||| |||||| || || ||||||| | | ||||| ||||| ||||||||||
+Query 52 -ccttntgttgaatcgagt-ggngcncggattt-ttttccgtgngcacgnaacactcccg 108
+
+Sbjct 235 gatactatgatggacggtactggacaatgtgga-gcttccattgttcggatgcaccgact 293
+ | | ||||||||| |||||||||| |||||||| |||||||||||||||||||||||| |
+Query 109 g-tnctatgatggccggtactgga-aatgtggaagcttccattgttcggatgcaccga-t 165
+
+Sbjct 294 ccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacc-tggcgccttcatta 352
+ ||| ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 166 ccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatta 225
+
+Sbjct 353 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 226 ggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagc 285
+
+Sbjct 413 ccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctgga 472
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 286 ccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctgga 345
+
+Sbjct 473 acccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagg 532
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 346 acccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagg 405
+
+Sbjct 533 aactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatca 592
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 406 aactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatca 465
+
+Sbjct 593 tttcatttc 601
+ |||||||||
+Query 466 tttcatttc 474
+
+437 658 140 F 436 1327 0 777 32 92.67
+Sbjct 140 tggctaaggaagtgactccttctccgcacagtggattcctgtgttga-ttcgagttggag 198
+ |||||| |||| |||||||||| ||| ||| ||| | ||| | |||| |||| |||| |
+Query 0 tggcta-ggaattgactccttc-ccgaacantggnt-ccttttttgaattcgntttggng 56
+
+Sbjct 199 cacggatttgtgtaccgtgagcacggaacactcccggatactatgatggacggtactgga 258
+ | ||| ||| | ||||| || || |||||||| || |||| |||||| ||||||||||
+Query 57 cncggntttttnncccgtgngcncgnaacactccngg-tactntgatggncggtactgga 115
+
+Sbjct 259 caatgtgga-gcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttg 317
+ || | |||| |||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 116 cattntggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaanttg 175
+
+Sbjct 318 aagaatgcaagaaggagtacc-tggcgccttcattaggatcatcggattcgacaacaccc 376
+ |||||||||||||||| |||| ||||||||||||||||||||||||||||||||||||||
+Query 176 aagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcgacaacaccc 235
+
+Sbjct 377 gtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaat 436
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 gtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaat 295
+
+Sbjct 437 cccctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgca 496
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 296 cccctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgca 355
+
+Sbjct 497 aatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatg 556
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 356 aatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatg 415
+
+Sbjct 557 ttattcctatcagtttctct 576
+ ||||||||||||||||||||
+Query 416 ttattcctatcagtttctct 435
+
+415 691 0 F 433 814 49 722 42 90.09
+Sbjct 0 ggattttgg--aag-cca-gttnttt-ggaa-c-aag-ca-ccccngng-catn--t-cn 46
+ ||| ||||| ||| ||| ||| ||| |||| | ||| || |||| | | ||| | |
+Query 49 ggaatttggggaaggccaagtttttttggaaaccaaggcaaccccggtggcatngcttct 108
+
+Sbjct 47 ctcatcgcgntgntgctt-agcncc-t-cagtt-ccttcatt-gctgacc-ggctcgaaa 100
+ || |||||| || ||||| || || | ||||| |||||||| ||||||| |||||||||
+Query 109 ctnatcgcg-tggtgctttagacccnttcagtttccttcatttgctgacccggctcgaaa 167
+
+Sbjct 101 cagcagtgaagaangtcatcgctgaaggaaagtcccggacgaaagatcttggtggaacaa 160
+ ||||||||||||| ||||||||||||||||||| ||||||||||||||||||||||||||
+Query 168 cagcagtgaagaaagtcatcgctgaaggaaagtgccggacgaaagatcttggtggaacaa 227
+
+Sbjct 161 gcacgactcaagaggtcgttgatgcggtcattgcaaaactagactgactttgacaaatta 220
+ || ||||||||||||||||||||||||||||||||||||| |||||||||||||||||||
+Query 228 gcncgactcaagaggtcgttgatgcggtcattgcaaaactngactgactttgacaaatta 287
+
+Sbjct 221 cgtgttcccgctctgcataaatcatcaaattcctgatacagattttgtgttgccaaaata 280
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 288 cgtgttcccgctctgcataaatcatcaaattcctgatacagattttgtgttgccaaaata 347
+
+Sbjct 281 tggggtatgatccaagcacaacggttatctggttttgtacctcgagttttattatattct 340
+ |||||| |||||||||| |||||||||||||||||||| |||||||||||||||||||||
+Query 348 tggggtntgatccaagcncaacggttatctggttttgtncctcgagttttattatattct 407
+
+Sbjct 341 ttagccgtggaatatttcgataagaaaaaaaaacatgttccaaataattcatgttgctac 400
+ ||| ||||||||||||||| ||||||||||||||||||||||||||||||||||||||||
+Query 408 ttanccgtggaatatttcgntaagaaaaaaaaacatgttccaaataattcatgttgctac 467
+
+Sbjct 401 gtttgttggcgcct 414
+ ||||||||||||||
+Query 468 gtttgttggcgcct 481
+
+421 695 59 F 427 938 0 761 29 93.16
+Sbjct 59 cccaacttgaagncgtt-a-ggactgatctccaaagnggttntggaaagctg-acccncc 115
+ |||||||| ||| | || | |||||| | | |||| |||| |||||| || | || ||
+Query 0 cccaacttnaagacctttaaggactgntnttcaaaagggttntggaaa-ntgnaaccacc 58
+
+Sbjct 116 agng-ntagcncttactgacaactcc-attgtgg-atcaggctctcgg-aaagcatggg- 171
+ | | |||| ||||||||||| ||| ||| ||| ||||||||||||| ||||||||||
+Query 59 -gnggatagcccttactgacaantcccattntgggatcaggctctcgggaaagcatgggn 117
+
+Sbjct 172 atc-atctgcgttgaggatctcatccacgagatcatgactgttggacctcacttcaagga 229
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 118 atccatctgcgttgaggatctcatccacgagatcatgactgttggacctcacttcaagga 177
+
+Sbjct 230 agccaacaacttcctgtggccattccaattgaaggcaccactcggtggccttaagaagaa 289
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 178 agccaacaacttcctgtggccattccaattgaaggcaccactcggtggccttaagaagaa 237
+
+Sbjct 290 gagaaaccactacgtcgaaggtggtgatgctggaaacagggagaatttcatcaacgagct 349
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 gagaaacca-tacgtcgaaggtggtgatgctggaaacagggagaatttcatcaacgagct 296
+
+Sbjct 350 tgtcaggagaatgaattgatgaaagcttccttctttatctttgcaaatttcaaagatttt 409
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 297 tgtcaggagaatgaattgatgaaagcttccttctttatctttgcaaatttcaaagatttt 356
+
+Sbjct 410 gggaccgagtttttttttttttgttcaagttatcagagacttgtgatcttttatccgaga 469
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 357 gggaccgagtttttttttttttgttcaagttatcagagacttgtgatcttttatccgaga 416
+
+Sbjct 470 taggcttttt 479
+ ||||||||||
+Query 417 taggcttttt 426
+
+432 701 5 F 422 715 7 731 41 90.40
+Sbjct 5 ggnccttggaccnccagngg-tcgttcgtttccatgggantatcnccgntggctcttaca 63
+ || ||| |||| || | || ||| |||| || |||| || | ||| | ||| | ||
+Query 7 ggccct-ggacn-cc-gnggnacgt-cgtt-ccctggggttacc-ccg-t-gctnt-ac- 57
+
+Sbjct 64 gcgttccatcaggactt-cctcctccnnccctgtaactngncgcaatgganactggagta 122
+ |||| |||||||| ||| | | || |||| || || | |||| |||| |||||||||
+Query 58 gcgt-ccatcagg-cttatcnacccctcccctnta-cttgtcgca-tggagactggagta 112
+
+Sbjct 123 ttgtcc-aaggccttccgattgatgaagtatc-aaggaagaagntggatttgactgcaga 180
+ |||||| ||||||| ||||||||||||||||| |||||||||| ||||||||||||||||
+Query 113 ttgtcccaaggcctcccgattgatgaagtatccaaggaagaagatggatttgactgcaga 172
+
+Sbjct 181 ngagctcaaggaagagaaggacttggcgtactcatgcctctcttaaacccttctggagca 240
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 173 ggagctcaaggaagagaaggacttggcgtactcatgcctctcttaaacccttctggagca 232
+
+Sbjct 241 aaattttcatctataaggtgtgagatcatttaaagcctttcagggctttgtccgaataag 300
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 233 aaattttcatctataaggtgtgagatcagttaaagcctttcagggctttgtccgaataag 292
+
+Sbjct 301 aagtgtgtttgaaagatctccaaacactgttttataacctctttggtctctttgatgagt 360
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 293 aagtgtgtttgaaagatctccaaacactgttttataacctctttggtctctttgatgagt 352
+
+Sbjct 361 attgtccctggtctgtttctaaaccaggatatcgtttttttcaatgtgtctgatttggtt 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 353 attgtccctggtctgtttctaaaccaggatatcgtttttttcaatgtgtctgatttggtt 412
+
+Sbjct 421 tacccatgaaaagaag 436
+ ||||||||||||||||
+Query 413 tacccatgaaaagaag 428
+
+423 713 17 F 432 798 1 753 34 92.05
+Sbjct 17 tccctnt-ttt--aattcg-gttggccc-cgg-tt-ttttcccggggcccgg-aacccnc 68
+ ||||| | ||| |||||| |||| | ||| || | |||| | || ||| ||||| |
+Query 1 tccct-tgtttggaattcgtnttggancacggnttgtgttccgtgagcacggnaaccctc 59
+
+Sbjct 69 cccggttctntgntggccggtactggaccaatgtggaagct-ccat-gttcggatgcacc 126
+ || | || || ||| ||||| ||||| |||||||||||| || | |||||||||||||
+Query 60 ccgnntactatgatggacggtantggac-aatgtggaagcttccnttgttcggatgcacc 118
+
+Sbjct 127 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtcccctggcgccttc 186
+ |||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||
+Query 119 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttc 178
+
+Sbjct 187 attaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgccta 245
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 179 attaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgccta 238
+
+Sbjct 246 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 305
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 298
+
+Sbjct 306 ctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagt 365
+ |||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||
+Query 299 ctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagt 358
+
+Sbjct 366 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagt 425
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagt 418
+
+Sbjct 426 tatcatttcatttc 439
+ || |||||||||||
+Query 419 taccatttcatttc 432
+
+415 713 0 F 428 826 53 729 38 90.98
+Sbjct 0 ccct-c-cc--cna-aaggggctccctntttt-aattcg-gttggccc-cgg-ttt-ttt 49
+ |||| | || | | ||| || ||| | | || |||||| ||||| | ||| ||| | |
+Query 53 cccttctccggcaacaagtggatccttgtgttgaattcgagttggagcncggatttgtgt 112
+
+Sbjct 50 cccg-gggcccggaa-cccnccccggttctntgntggccggtactggaccaatgtggaag 107
+ ||| | || ||||| | | ||| | | || || ||| || |||||||| ||||||||||
+Query 113 nccgtgagcacggaaacactcccggatactatgatggacgatactggac-aatgtggaag 171
+
+Sbjct 108 ct-ccat-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaag 165
+ || |||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 172 cttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaag 231
+
+Sbjct 166 aaggagtcccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaa 225
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 232 aaggagtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaa 291
+
+Sbjct 226 tgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctgg 285
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 292 tgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctgg 351
+
+Sbjct 286 aatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaa 345
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 352 aatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaa 411
+
+Sbjct 346 ttatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatc 405
+ |||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 412 ttatttgccgacttaacagttgaggaactattgtttgaaagtgaaaatgttattcctatc 471
+
+Sbjct 406 agtttctct 414
+ |||||||||
+Query 472 agtttctct 480
+
+413 713 27 F 417 849 0 710 40 90.36
+Sbjct 27 aattcg-gttggccc-cgg-ttt-tttcc-cg-gggcccggaacccnccccggttctntg 80
+ |||||| ||||| | ||| ||| | || || | || |||| | | ||| | | || ||
+Query 0 aattcgagttggagcacggatttgtgtcaacgtgagcacggancactcccggatactatg 59
+
+Sbjct 81 ntggccggtactggaccaatgtggaagct-ccatgttc-ggatgcaccgactccgctcaa 138
+ ||| || |||||||| | |||||| ||| | || | | |||||||||||||||||||||
+Query 60 ntggncgatactggac-antgtgga-gctncnat-tnccggatgcaccgactccgctcaa 116
+
+Sbjct 139 gtgttgaaggaagttgaagaatgcaagaaggagtcccctggcgccttcattaggatcatc 198
+ |||||||||||||||||||||||| |||||| || |||||||||||||||| ||||||||
+Query 117 gtgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatc 176
+
+Sbjct 199 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 258
+ ||||||| | || |||||||||||||||||||||||||||||||||||||||||||||||
+Query 177 ggattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 236
+
+Sbjct 259 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 318
+ |||||||||||||| ||||||||| |||||||||||||||||||||||||||||||||||
+Query 237 ttcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccattt 295
+
+Sbjct 319 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 378
+ ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Query 296 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattg 355
+
+Sbjct 379 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 438
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 356 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcattt 415
+
+Sbjct 439 c 439
+ |
+Query 416 c 416
+
+435 713 0 F 446 912 37 782 33 92.51
+Sbjct 0 ccctccc-cna-aaggggctccctnt-t-tt-aattcg-gttggccc-cgg-ttt-tttc 50
+ || |||| | | ||| || | ||| | | || |||||| ||||| | ||| ||| | |
+Query 37 ccttcccgcaacaagtggattcct-tgtgttgaattcgagttggagcacggatttntgta 95
+
+Sbjct 51 ccg-gggcccggaacccnccccggttctntgntggccggtactggaccaatgtggaagct 109
+ ||| |||| |||||||| ||| | | || || ||| ||||||||||| ||||||||||||
+Query 96 ccgtgggcacggaaccctcccggatactatgatggacggtactggac-aatgtggaagct 154
+
+Sbjct 110 -cc-at-gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaaga 166
+ || || |||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 155 tcccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaaga 214
+
+Sbjct 167 aggagtcccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaat 226
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 215 aggagtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaat 274
+
+Sbjct 227 gcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctgga 286
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 275 gcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctgga 334
+
+Sbjct 287 atattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaat 346
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 335 atattcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaat 394
+
+Sbjct 347 tatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatca 406
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 395 tatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatca 454
+
+Sbjct 407 gtttctctataattatagttatcatttc 434
+ ||||||||||||||||||||||||||||
+Query 455 gtttctctataattatagttatcatttc 482
+
+437 713 3 F 442 1120 2 789 30 93.17
+Sbjct 3 tccc-cnaaaggggctccct-nttttaattcg-gttggc-cccgg-ttt-tttcccg-gg 55
+ |||| | | ||||| ||||| || |||| | ||||| ||||| ||| ||||||| ||
+Query 2 tcccgcaacagggg-tccctgggttgaattngngttgggncccggntttgtttcccgtgg 60
+
+Sbjct 56 gcccggaacccnccccggttctntgntggccggtactggaccaatgtggaagctccat-g 114
+ |||||||||| ||| | | || || |||||||| |||| |||||||||||||||||| |
+Query 61 ncccggaacccncccggntnctatgntggccggtnctgg-ccaatgtggaagctccattg 119
+
+Sbjct 115 ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtcc 174
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 120 ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtnc 179
+
+Sbjct 175 cctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 cctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagt 239
+
+Sbjct 235 ttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcag 294
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 240 ttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaatattcag 298
+
+Sbjct 295 cgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgcc 354
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 299 cgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattatttgcc 358
+
+Sbjct 355 gacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 414
+ ||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 gacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 418
+
+Sbjct 415 ataattatagttatcatttcatttc 439
+ ||||||||||||||||||||||||
+Query 419 ntaattatagttatcatttcatttc 443
+
+437 713 3 F 437 1297 38 769 35 91.99
+Sbjct 3 tccccnaaaggggctccctnt-tttaattcg-gttg-gccccggttttttcccg-gggcc 58
+ |||| | || | ||| | | || ||| || || | || | | |||||| ||| | ||
+Query 38 tcccgcanagtg-ntccttntgttgaat-cgagtggngcncggatttttttccgtgngca 95
+
+Sbjct 59 cggaacccnccccggttctntgntggccggtactggaccaatgtggaagct-ccat-gtt 116
+ || ||| | ||| ||| || || |||||||||||||| |||||||||||| |||| |||
+Query 96 cgnaacactccc-ggtnctatgatggccggtactgga--aatgtggaagcttccattgtt 152
+
+Sbjct 117 cggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtcccc 176
+ |||||||||||| |||| |||||||||||||||||||||||||||||||||||||| |||
+Query 153 cggatgcaccga-tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccc 211
+
+Sbjct 177 tggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagttt 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 212 tggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagttt 271
+
+Sbjct 237 cattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcg 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 272 cattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcg 331
+
+Sbjct 297 ttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccga 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 332 ttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccga 391
+
+Sbjct 357 cttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctat 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 392 cttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctat 451
+
+Sbjct 417 aattatagttatcatttcatttc 439
+ |||||||||||||||||||||||
+Query 452 aattatagttatcatttcatttc 474
+
+414 713 1 F 420 1327 16 723 37 91.13
+Sbjct 1 cctccccnaa-aggggctccctnttttaattcggtt-ggccc-cgg-ttttt-tcccg-g 54
+ ||| ||| || | || ||| | ||| |||||| || || | ||| ||||| |||| |
+Query 16 ccttcccgaacantggntccttttttgaattcgntttggngcncggntttttnncccgtg 75
+
+Sbjct 55 ggcccggaacccnccccggttctntgntggccggtactggaccaatgtggaagct-ccat 113
+ || || ||| | || ||| || || ||| ||||||||||| | | |||||||| ||||
+Query 76 ngcncgnaacactcc-nggtactntgatggncggtactggac-attntggaagcttccat 133
+
+Sbjct 114 -gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 172
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||| |
+Query 134 tgttcggatgcaccgactccgctcaagtgttgaaggaanttgaagaatgcaagaaggant 193
+
+Sbjct 173 cccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 232
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 194 accctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 253
+
+Sbjct 233 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 254 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 313
+
+Sbjct 293 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 314 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 373
+
+Sbjct 353 ccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 374 ccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 433
+
+Sbjct 413 ct 414
+ ||
+Query 434 ct 435
+
+382 724 29 F 433 1826 2 605 70 82.82
+Sbjct 29 aaat-tct-gct-tgn-ggaa-ct-cg-at-tg-a-ctg-ct-ca-gtncg-ca-cggt- 73
+ |||| | | ||| || |||| || || || || | ||| || || || || || ||||
+Query 2 aaatgtnttgctgtggaggaaactncggatgtggatctggctgcaagtncggcaacggtt 61
+
+Sbjct 74 gtg-nggt-gcaaaatgt-ccctgcct-ggg-ttc-ccg-cgngaca-ccaca-ctgag- 123
+ ||| ||| ||||||||| ||||| || ||| ||| ||| || |||| ||||| || ||
+Query 62 gtggaggttgcaaaatgtaccctgacttgggattctccggcgagacaaccacaactnaga 121
+
+Sbjct 124 cttttgtcttggnc-ttgcacccgcgatgaagaatcagtacgaggcttcaggggagagta 181
+ ||||||| |||| | ||||||| |||||||||||||||||||||||||||||||||||||
+Query 122 cttttgtnttgggcgttgcaccggcgatgaagaatcagtacgaggcttcaggggagagta 181
+
+Sbjct 182 acaacgctgagaacgatgcttgcaagtgtggatctgactgcaagtgtganccttgcacct 241
+ ||||||||||||||||||||||||||| ||||||||||||||||||||| ||||||||||
+Query 182 acaacgctgagaacgatgcttgcaagtttggatctgactgcaagtgtgatccttgcacct 241
+
+Sbjct 242 gcaagtgaagaagcctttttaaataagcagagataat-cgagtctcttt-aattaatt-a 298
+ |||||| |||||||||||||||||||||||||||||| ||||||| ||| |||||||| |
+Query 242 gcaagtnaagaagcctttttaaataagcagagataatncgagtctnttttaattaattta 301
+
+Sbjct 299 agttattcaa-taagtaaacc-atatat-aggat-ggt-gttttta-gg-tttgg-ttt- 350
+ |||||||||| |||||||||| |||| | ||||| ||| ||||||| || ||||| |||
+Query 302 agttattcaantaagtaaacccatattttaggattggttgtttttaagggtttgggtttn 361
+
+Sbjct 351 atgtgtaa-taa-tggc-ttcag-ctt-atctttt-ag-ccgatca-ttgtc-ttttg-- 399
+ |||||||| ||| |||| |||| ||| ||||||| || | | ||| ||| | |||||
+Query 362 atgtgtaaataantggcnttcaanctttatctttttagncngttcaattgnccttttggn 421
+
+Sbjct 400 tgtttgtttt-ga 410
+ |||||||||| ||
+Query 422 tgtttgtttttga 434
+
+510 736 0 F 525 846 91 915 40 92.27
+Sbjct 0 ca-cacggg-aa--ttncct-catga-ggtg---cc-ccaatggaagaagat-t-tg-g- 46
+ || |||||| || | || ||||| |||| || ||| ||||||| || | || |
+Query 91 cagcacggggaagagtngctncatgaaggtgtngccaccattggaaga-gaagtntgaga 149
+
+Sbjct 47 ct-tttcttnccncc-tgccttagtg-cgtcgaatggctaaggaagttgactnc-ttctc 101
+ || | |||| || || || ||||||| |||||| |||| | ||||||||||| | ||| |
+Query 150 ctctatcttacctccctgacttagtgacgtcgattggcna-ggaagttgactaccttcac 208
+
+Sbjct 102 cgcaacaagtggat-ccnttgtgttgaattcgagttagagcacggatttgtgtaccgtga 160
+ |||| || |||||| || | ||||||||||||||||||||||||||||||||||||||||
+Query 209 cgcanca-gtggattccct-gtgttgaattcgagttagagcacggatttgtgtaccgtga 266
+
+Sbjct 161 gcacggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccatt 220
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 267 gcacggaaacactcccggatactacgatggacggtactggacaatgtggaagcttccatt 326
+
+Sbjct 221 gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta 280
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 327 gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagganta 386
+
+Sbjct 281 cccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 340
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 387 cccgggcgcnttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 446
+
+Sbjct 341 tttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattct 400
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 447 tttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattct 506
+
+Sbjct 401 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgaga 460
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 507 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgaga 566
+
+Sbjct 461 caatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 509
+ |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 567 caatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 615
+
+414 736 96 F 416 902 5 800 10 97.59
+Sbjct 96 cttctccg-caacaagtggatccnttgtgttg-aattcg-agttagagcac-ggatttgt 151
+ |||| || |||||||||||||| |||||||| ||| || | ||||||| | ||||||||
+Query 5 cttcnncggcaacaagtggatcc-ttgtgttggaat-cggatttagagcnccggatttgt 62
+
+Sbjct 152 gtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgtggaa 211
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 63 gtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgtggaa 122
+
+Sbjct 212 gcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaa 271
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 123 gcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaa 182
+
+Sbjct 272 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 331
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 183 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 242
+
+Sbjct 332 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 391
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 243 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 302
+
+Sbjct 392 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 451
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 303 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 362
+
+Sbjct 452 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 509
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 363 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 420
+
+435 736 75 F 437 1100 4 782 30 93.12
+Sbjct 75 aatggctaaggaagttgactnc-ttctccgcaacaagtggatccnttgtgttgaattcga 133
+ ||||||||||||||||| || | ||| | | || ||| || || |||||||||||||
+Query 4 aatggctaaggaagttg-ctcccttcccng-aa-aaggggnccccctgtgttgaattcgn 60
+
+Sbjct 134 gttagagcacgg-atttg-tgtaccgtgagcac-ggaaacact-cccggatactacgatg 189
+ ||||| || ||| ||||| ||| || | || | |||| |||| ||||||||||||||||
+Query 61 gttagggcccgggatttggtgtncccngngccccggaancactncccggatactacgatg 120
+
+Sbjct 190 gacggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgt 249
+ | ||||||||||||||||||| ||||||||||| ||||||||||||||||||||||||||
+Query 121 gccggtactggacaatgtggangcttccattgtccggatgcaccgactccgctcaagtgt 180
+
+Sbjct 250 tgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggat 309
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 181 tgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggat 240
+
+Sbjct 310 tcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttca 369
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 241 tcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttca 300
+
+Sbjct 370 ccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcc 429
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 301 ccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcc 360
+
+Sbjct 430 tattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctga 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 361 tattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctga 420
+
+Sbjct 490 tttatgaatatgtaatttat 509
+ ||||||||||| | ||||||
+Query 421 tttatgaatatnttatttat 440
+
+406 736 104 F 407 1143 0 726 29 92.87
+Sbjct 104 caacaagtggatccnttgtgttgaattcgagttagagcac-ggatttgtgtacc-gtgag 161
+ ||| ||| || ||| | | |||||||||| ||| | || | |||||||||| || ||| |
+Query 0 caa-aag-ggntccct-g-gttgaattcg-gttngngccccggatttgtgtncccgtgng 54
+
+Sbjct 162 cac-ggaaacactcccggatactac-gatggac-ggtactggacaatgtggaagcttcc- 218
+ | | |||| ||| ||| | |||| | ||||||| |||||||| ||||||||||| ||||
+Query 55 ccccggaaccacccccnggtacttccgatggaccggtactggccaatgtggaagnttccc 114
+
+Sbjct 219 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 277
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 174
+
+Sbjct 278 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 337
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 234
+
+Sbjct 338 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacat 397
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 235 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacan 294
+
+Sbjct 398 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 457
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 354
+
+Sbjct 458 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttat 509
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||
+Query 355 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtnatttat 406
+
+452 736 58 F 454 1151 0 876 10 97.79
+Sbjct 58 cctgcc-ttagtg-cgtcgaatggctaaggaagttgactnc-ttctccgcaacaagtgga 114
+ |||||| |||||| || |||||||||| |||||||| || | ||||||||||||||||||
+Query 0 cctgccnttagtgncgccgaatggcta-ggaagttg-cttccttctccgcaacaagtgga 57
+
+Sbjct 115 tccnttgtgtt-gaattcgagttagagc-acggatttgtgtaccgtgagcacggaaacac 172
+ ||| ||||||| |||||||||||||||| |||||||||||||||||||||||||||||||
+Query 58 tcc-ttgtgtttgaattcgagttagagccacggatttgtgtaccgtgagcacggaaacac 116
+
+Sbjct 173 tcccggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcac 232
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 117 tcccggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcac 176
+
+Sbjct 233 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgcctt 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 177 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgcctt 236
+
+Sbjct 293 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 237 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 296
+
+Sbjct 353 caagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatct 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 297 caagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatct 356
+
+Sbjct 413 ctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcg 472
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 357 ctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcg 416
+
+Sbjct 473 gattgtcaaatgtctgatttatgaatatgtaatttat 509
+ |||||||||||||||||||||||||||||||||||||
+Query 417 gattgtcaaatgtctgatttatgaatatgtaatttat 453
+
+485 736 25 F 500 1230 11 898 29 94.11
+Sbjct 25 ccccaat-ggaa-gaaga--tttgg-c-ttttcttnccncc-tg-cctt-agtgcg-tcg 74
+ ||||||| |||| ||||| ||||| | ||||||| || || || |||| ||| | |||
+Query 11 ccccaattggaaagaagaantttgggccttttctt-ccnccctggcctttagtnccntcg 69
+
+Sbjct 75 -aat-ggctaaggaagttgactnc-ttctccgcaacaagtggatccnttgtgttgaattc 131
+ ||| ||||||||||||||||| | ||||| ||||||| ||| ||| |||||||||||||
+Query 70 gaattggctaaggaagttgactccnttctcngcaacaaatggntcccttgtgttgaattc 129
+
+Sbjct 132 gagttagagcacggatttgtgtaccgtgagcacggaaacactcccggatactacgatgga 191
+ ||||||| || ||||||||||| |||||||| ||||||||||||||||||||||||||||
+Query 130 gagttagggcncggatttgtgtcccgtgagcccggaaacactcccggatactacgatgga 189
+
+Sbjct 192 c-ggtactggacaat-gtggaagcttcc-attgttcggatgcaccgactccgctcaagtg 248
+ | ||||||||||||| |||||||||||| |||||||||||||||||||||||||||||||
+Query 190 ccggtactggacaattgtggaagcttcccattgttcggatgcaccgactccgctcaagtg 249
+
+Sbjct 249 ttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcgga 308
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 250 ttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcgga 309
+
+Sbjct 309 ttcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttc 368
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 310 ttcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttc 369
+
+Sbjct 369 accgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttc 428
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 370 accgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttc 429
+
+Sbjct 429 ctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctg 488
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 430 ctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctg 489
+
+Sbjct 489 atttatgaatatgtaatttat 509
+ |||||||||||||||||||||
+Query 490 atttatgaatatgtaatttat 510
+
+411 736 97 F 414 1360 1 747 26 93.70
+Sbjct 97 ttctccgcaacaagtgg-atccnttg-tgttgaattcg-agttag-agcacggatttgtg 152
+ ||| ||| ||||| ||| |||| ||| |||| ||| || |||| | |||||||||||||
+Query 1 ttc-ccgaaacaantgggatcccttggtgttnaat-cggagtttggngcacggatttgtg 58
+
+Sbjct 153 taccgtgagcacggaaac-actcccggatactacgatggacggtactggacaatgtggaa 211
+ | |||||||||||| ||| ||||| ||||||||||||||||| |||||||||||||||||
+Query 59 tnccgtgagcacggnaaccactccnggatactacgatggacgntactggacaatgtggaa 118
+
+Sbjct 212 gcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaa 271
+ ||||||||||| |||||||||||||||||||||||| |||||||||||||| ||||||||
+Query 119 gcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgcaa 178
+
+Sbjct 272 gaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcca 331
+ ||||| ||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 179 gaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtcca 238
+
+Sbjct 332 atgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 391
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttcta 298
+
+Sbjct 392 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 451
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 aaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctc 358
+
+Sbjct 452 tttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 507
+ |||||||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 359 tttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+408 798 0 F 407 826 74 755 20 95.09
+Sbjct 0 atcccttgt-ttggaattcgtnttggancacggntt-gtgttccgtgagcacggnaaccc 57
+ |||| |||| ||| |||||| ||||| | ||| || |||| |||||||||||| ||| |
+Query 74 atcc-ttgtgttg-aattcgagttggagcncggatttgtgtnccgtgagcacggaaacac 131
+
+Sbjct 58 tcccgnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcac 117
+ ||||| |||||||||||||| || |||||||||||||||||||| ||||||||||||||
+Query 132 tcccggatactatgatggacgatactggacaatgtggaagcttccattgttcggatgcac 191
+
+Sbjct 118 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 177
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 192 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 251
+
+Sbjct 178 cattaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcct 237
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 252 cattaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcct 310
+
+Sbjct 238 acaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattat 297
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 311 acaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattat 370
+
+Sbjct 298 tctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaag 357
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||| ||
+Query 371 tctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaacag 430
+
+Sbjct 358 ttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 407
+ ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 431 ttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 480
+
+420 798 13 F 417 849 0 723 38 90.92
+Sbjct 13 aattcgtnttggancacggntt-gtgt-tccgtgagcacggnaaccctcccgnntactat 70
+ |||||| ||||| ||||| || |||| ||||||||||| | | |||||| ||||||
+Query 0 aattcgagttggagcacggatttgtgtcaacgtgagcacgg-ancactcccggatactat 58
+
+Sbjct 71 gatggacggtantggacaatgtggaagcttccnttgttcggatgcaccgactccgctcaa 130
+ | ||| || || |||||| |||||| ||| | || ||||||||||||||||||||||
+Query 59 gntggncgatactggacantgtgga-gctncnatt-nccggatgcaccgactccgctcaa 116
+
+Sbjct 131 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 190
+ |||||||||||||||||||||||| |||||| || |||||||||||||||| ||||||||
+Query 117 gtgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatc 176
+
+Sbjct 191 ggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaag 250
+ ||||| || | || ||||||||||||||||||||||||||||||||||||||||||||||
+Query 177 ggatt-cgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaag 235
+
+Sbjct 251 cttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatt 310
+ ||||||||||||||| ||||||||| ||||||||||||||||||||||||||||||||||
+Query 236 cttcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccatt 294
+
+Sbjct 311 tctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagttgaggaactatt 370
+ |||||||||||||| ||||||||||||||||||||||||||||| |||||||||||||||
+Query 295 tctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactatt 354
+
+Sbjct 371 gtttgaaagtgaaaatgttattcctatcagtttctctataattatagttaccatttcatt 430
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 355 gtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatt 414
+
+Sbjct 431 tc 432
+ ||
+Query 415 tc 416
+
+428 798 0 F 428 912 55 796 20 95.33
+Sbjct 0 atcccttgt-ttggaattcgtnttggancacggntt-gtgttccgtgagcacggnaaccc 57
+ || |||||| ||| |||||| ||||| ||||| || ||| ||||| |||||| |||||
+Query 55 attccttgtgttg-aattcgagttggagcacggatttntgtaccgtgggcacgg-aaccc 112
+
+Sbjct 58 tcccgnntactatgatggacggtantggacaatgtggaagcttcc-nttgttcggatgca 116
+ ||||| ||||||||||||||||| |||||||||||||||||||| |||||||||||||
+Query 113 tcccggatactatgatggacggtactggacaatgtggaagcttcccattgttcggatgca 172
+
+Sbjct 117 ccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcct 176
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 173 ccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcct 232
+
+Sbjct 177 tcattaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcc 236
+ ||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||
+Query 233 tcattaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcc 291
+
+Sbjct 237 tacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgatta 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 292 tacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgatta 351
+
+Sbjct 297 ttctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaa 356
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 352 ttctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaa 411
+
+Sbjct 357 gttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattata 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 412 gttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattata 471
+
+Sbjct 417 gttaccatttc 427
+ |||| ||||||
+Query 472 gttatcatttc 482
+
+432 798 1 F 428 1120 16 752 36 91.63
+Sbjct 1 tcccttgtttggaattcgtnttggancacggnttgtgtt-cc-gtgagcacggnaaccct 58
+ ||||| | ||| |||| | |||| | ||| || |||| || ||| | ||| |||||
+Query 16 tccctgggttg-aattngngttgggncccggntt-tgtttcccgtggncccgg-aacccn 72
+
+Sbjct 59 cccgnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcacc 118
+ |||| | ||||| ||| |||| ||| ||||||||||||| || |||||||||||||||
+Query 73 cccggntnctatgntggccggtnctggccaatgtggaagct-ccattgttcggatgcacc 131
+
+Sbjct 119 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttc 178
+ |||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||
+Query 132 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtnccctggcgccttc 191
+
+Sbjct 179 attaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgccta 238
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 192 attaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgccta 250
+
+Sbjct 239 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 298
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 251 caagcccccaag-ttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 309
+
+Sbjct 299 ctggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagt 358
+ ||||||||| |||||||||||||||| ||||||||||||||||||||||||||| |||||
+Query 310 ctggaacccntttctatgtggtcaatgcaaatttaagaaattatttgccgacttnaaagt 369
+
+Sbjct 359 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagt 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 370 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctctntaattatagt 429
+
+Sbjct 419 taccatttcatttc 432
+ || |||||||||||
+Query 430 tatcatttcatttc 443
+
+430 798 3 F 423 1297 52 766 29 93.20
+Sbjct 3 ccttgt-ttggaattcgtnttggancacggnttgtgttccgtgagcacggnaaccctccc 61
+ |||| | ||| ||| || | || | ||| || | ||||||| ||||| ||| |||||
+Query 52 ccttntgttg-aat-cgagt-ggngcncggatttttttccgtgngcacg-naacactccc 107
+
+Sbjct 62 gnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcaccgac 121
+ | | ||||||||| ||||| |||| ||||||||||||||| |||||||||||||||||
+Query 108 g-gtnctatgatggccggtactgga-aatgtggaagcttccattgttcggatgcaccga- 165
+
+Sbjct 122 tccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatt 181
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 166 tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcatt 224
+
+Sbjct 182 aggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 241
+ |||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 225 aggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 283
+
+Sbjct 242 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctg 301
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 284 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctg 343
+
+Sbjct 302 gaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagttga 361
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 344 gaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttga 403
+
+Sbjct 362 ggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttac 421
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 404 ggaactattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttat 463
+
+Sbjct 422 catttcatttc 432
+ |||||||||||
+Query 464 catttcatttc 474
+
+405 798 3 F 402 1327 34 714 31 92.32
+Sbjct 3 ccttgtttggaattcgtnttggancacggnttgtgtt--cc-gtgagcacggnaaccctc 59
+ |||| |||| |||||| |||| | ||| || | || || ||| || || ||| |||
+Query 34 ccttttttg-aattcgntttggngcncggntt-t-ttnncccgtgngcncg-naacactc 89
+
+Sbjct 60 ccgnntactatgatggacggtantggacaatgtggaagcttccnttgttcggatgcaccg 119
+ | | |||| |||||| ||||| |||||| | ||||||||||| ||||||||||||||||
+Query 90 cng-gtactntgatggncggtactggacattntggaagcttccattgttcggatgcaccg 148
+
+Sbjct 120 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 179
+ ||||||||||||||||||||||| ||||||||||||||||||| ||||||||||||||||
+Query 149 actccgctcaagtgttgaaggaanttgaagaatgcaagaaggantaccctggcgccttca 208
+
+Sbjct 180 ttaggatcatcggatttcgacaacacccgtcaagtccaatgcatcagtttcattgcctac 239
+ |||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 209 ttaggatcatcggatt-cgacaacacccgtcaagtccaatgcatcagtttcattgcctac 267
+
+Sbjct 240 aagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattc 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 268 aagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattc 327
+
+Sbjct 300 tggaacccatttctatgtggtcaatncaaatttaagaaattatttgccgacttaaaagtt 359
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 328 tggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagtt 387
+
+Sbjct 360 gaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 407
+ ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 388 gaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 435
+
+468 807 2 F 464 866 82 800 44 90.56
+Sbjct 2 ccaccatgagctttctcagccttgggacccggtgattgtccncgagag-cggtttagaga 60
+ |||||||||||| ||||||||||| || || |||||| || |||||| || ||||||||
+Query 82 ccaccatgagct-actcagccttggaacncgatgattggccccgagaggcg-tttagaga 139
+
+Sbjct 61 gnccattggnccatgc-cctt-cgt-gcatctacaaggatcccac-tagatggttgccca 116
+ | |||| || |||||| |||| ||| |||||||||| ||| |||| |||||| | ||||
+Query 140 gnccat-ggnccatgcncctttcgttgcatctacaangatnccacatagatgntn-ccca 197
+
+Sbjct 117 gcttctgtggaagcccaagtactgtgcccacacaaggccgcatgccctgggatcagaaag 176
+ ||| ||||||||||||| ||||||| |||||||||| ||||||| ||| ||||||| |
+Query 198 gct-ctgtggaagccca-gtactgt-cccacacaagcccgcatgtggtggaatcagaa-g 253
+
+Sbjct 177 agttccgtgacc-ttgacgctgaacaatggcgtcgtctcaaatgggttcgtatgaagtgg 235
+ | | |||||||| |||||||||| || |||||||||||||| ||||| ||||||||||||
+Query 254 antnccgtgacccttgacgctgacca-tggcgtcgtctcaa-tgggtccgtatgaagtgg 311
+
+Sbjct 236 accatctacaactactgtaccgaccggactaggttcccggttatgccagctgaatgtaaa 295
+ |||| |||||||||| |||||||||||||||||||||| ||||||||||||||| ||||
+Query 312 nccatntacaactactntaccgaccggactaggttcccgnttatgccagctgaatntaaa 371
+
+Sbjct 296 agggacagagacgcataagttactacccttgagggttttaatgaatttatgctatcatta 355
+ |||||||||||||| |||||||||||| ||||||||||||||||||||||||||||||||
+Query 372 agggacagagacgcntaagttactaccnttgagggttttaatgaatttatgctatcatta 431
+
+Sbjct 356 ttatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgatgt 415
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 432 ttatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatgatgt 491
+
+Sbjct 416 ttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 469
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 492 ttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 545
+
+468 807 2 F 476 1212 57 824 40 91.53
+Sbjct 2 ccacc-atgagcttt-ctcagccttgggacccggtgattgtcc-ncgagagcggtttaga 58
+ ||||| ||| ||||| |||| |||| |||| |||| ||| || || | |||||||||
+Query 57 ccaccnatgngctttnctcacccttnggacncggttgttggcccncgggggcggtttagg 116
+
+Sbjct 59 gagnccattggncca-tgccctt-cg-tgcatcta-caagg-atcccac-tagatggttg 112
+ ||| ||| ||| ||| ||||||| || ||||||| ||||| |||| | |||||||||
+Query 117 gagcccaatggnccaatgccctttcggtgcatcttncaagggntcccncatagatggttn 176
+
+Sbjct 113 cccagcttctgtggaagcccaagtactgtgcccacacaaggccgcatgccctgggatcag 172
+ || |||||||||||| || |||||||||||||||||||| ||||||| ||| |||||
+Query 177 ccangcttctgtggaancc-aagtactgtgcccacacaagnccgcatgtggtggnatcag 235
+
+Sbjct 173 aaagagttccgtgaccttgacgctgaacaatggcgtcgtctcaaatgggttcgtatgaag 232
+ ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 aaagagttccgtgcccttgacgctgaacaatggcgtcgtctcaaatgggttcgtatgaag 295
+
+Sbjct 233 tggaccatctacaactactgtaccgaccggactaggttcccggttatgccagctgaatgt 292
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 296 tggnccatctacaactactgtaccgaccggactaggttcccggttatgccagctgaatgt 355
+
+Sbjct 293 aaaagggacagagacgcataagttactacccttgagggttttaatgaatttatgctatca 352
+ ||||||||||||||||||||||||||||| |||| |||||||||||||||||||||||||
+Query 356 aaaagggacagagacgcataagttactactcttgngggttttaatgaatttatgctatca 415
+
+Sbjct 353 ttattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatga 412
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 416 ttattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatga 475
+
+Sbjct 413 tgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 469
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 476 tgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgatt 532
+
+445 815 0 F 462 1699 0 778 43 90.52
+Sbjct 0 ggagatg-tctagccatggcccttancggataaat-ctcaacc-ntttccagaggcgtg- 56
+ ||||||| ||||||||||| ||| | || |||||| ||||||| | || |||||||||
+Query 0 ggagatggtctagccatggacctgatcg-ataaattctcaaccactgtc-agaggcgtgc 57
+
+Sbjct 57 ttccnctgttcagtaca-atacagacagtttaatagagaggttcaagg-aacgaccctcg 113
+ |||| |||||||||||| |||||||||||||||||||||||||||||| |||||||||||
+Query 58 ttcctctgttcagtacagatacagacagtttaatagagaggttcaagggaacgaccctcg 117
+
+Sbjct 114 aagcatatggttcttcagctaagtcgaggcttccgttncccccaacatcaggccagtgga 173
+ ||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||
+Query 118 aagcatatggttcttcagctaagtcgaggcttccgttgcctccaacatcaggccagtgga 177
+
+Sbjct 174 atggcatggagccaaacacactcttacgtgttttgtgttaccgtaacgacgaatctgcca 233
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 178 atggcatggagccaaacacactcttacgtgttttgtgttaccgtaacgacgaatctgcca 237
+
+Sbjct 234 cgaggtttctcaagaagacatataatctacctaagaagctttagtaaacttacgg-ctac 292
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||| ||||
+Query 238 cgaggtttctcaagaagncatataatctacctaagaagctttagtaaacttacgggctac 297
+
+Sbjct 293 tactgcaacgtataataacctcacaagatgaagagtgtgtgttccactt-gcaggaggg- 351
+ ||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 298 tactgcaacgtataataacctcacaagatgaagagtgtgtgttccactttgcaggagggn 357
+
+Sbjct 352 agcctccgag-atttgt-at-agtgagtttca--ttttttttg-tttta-tgg-tttttt 402
+ |||||||||| |||| | || ||||||||||| ||||||||| ||||| ||| ||||||
+Query 358 agcctccgagnattt-tgattagtgagtttcaanttttttttggttttaatgggtttttt 416
+
+Sbjct 403 ttctaata-ca-ttcctatacgtactat-ataattcatttatatc 444
+ |||||| | || | |||||| | || | | ||| | ||| | ||
+Query 417 ttctaaaaacaatncctatanggncttttaaaatccntttttttc 461
+
+451 819 14 F 467 975 5 810 36 92.16
+Sbjct 14 aaccgttancc--aag-cggtn-cc-ggaca-tcnccc-aaccnc-atggtnc-acgtgg 64
+ ||||||| || ||| |||| || ||| | | ||| |||| | | ||| | ||||||
+Query 5 aaccgttnccccnaagacggtngcccggaaaancgccccaaccccnaaggttccacgtgg 64
+
+Sbjct 65 ngctacaccn-cc-tggtggactt-cagcgn-gct-cca-gaacccca-ccgttgctttc 117
+ |||||||| || |||||||||| ||||| ||| ||| || ||||| |||||||||||
+Query 65 ggctacacccnccctggtggacttncagcggagcttccatga-ccccagccgttgctttc 123
+
+Sbjct 118 gg-cccnccgtcgtaagctggacgtggcccacccactgggtttactgggctggncctctt 176
+ || || |||||||||||||||||||| ||| ||||||||||||||||||||| ||||||
+Query 124 ggaccagccgtcgtaagctggacgtggaccaaccactgggtttactgggctggtcctctt 183
+
+Sbjct 177 attggtggtggactcgccggaattatctacgactttgtcttcatcgatgaaaatgcccac 236
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 184 attngtggtggactcgccggaattatctacgactttgtcttcatcgatgaaaatgcccac 243
+
+Sbjct 237 gagcaattgcctaccaccgattactgaagacgtcaaattcaacgttgttaatctgatgaa 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 244 gagcaattgcctaccaccgattactgaagacgtcaaattcaacgttgttaatctgatgaa 303
+
+Sbjct 297 tttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttggatcattt 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 304 tttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttggatcattt 363
+
+Sbjct 357 ttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgttgttggagt 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 364 ttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgttgttggagt 423
+
+Sbjct 417 tgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 464
+ ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 424 tgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 471
+
+418 819 76 F 443 1362 3 726 45 89.55
+Sbjct 76 ctggt-gg-acttcag-cg-ngctcca--gaacccc-a-ccgttgcttt-cgg-cccncc 125
+ ||||| || |||| | || | | || || |||| | ||||| |||| ||| ||| ||
+Query 3 ctggttggggcttccggcggngttncattga-ccccnagccgttncttttcggacccacc 61
+
+Sbjct 126 -gtcgtaagctggacgtgg-cccacccactgggttt-actgggc-tggn-cc-tctt-at 178
+ ||||||||||||||||| |||| ||| ||||||| ||||| | ||| || |||| ||
+Query 62 cttcgtaagctggacgtggncccanccantgggttttactggncctgggnccctctttat 121
+
+Sbjct 179 tgg-tgg-tggactc-gccggaatta-t-ctacgactttgtcttcatc-gatg-aaaatg 231
+ ||| ||| || |||| ||||| ||| | |||||||||||||||| || |||| ||||||
+Query 122 tggntgggtgnactcnnccggatttaattctacgactttgtcttcntccgatggaaaatg 181
+
+Sbjct 232 ccc-acgagcaattgcctaccaccgatt-actgaagacgtcaaattcaacgttgttaatc 289
+ ||| |||||||||||||| ||||||||| |||||||||||||||||||||||||||||||
+Query 182 ccccacgagcaattgcctcccaccgatttactgaagacgtcaaattcaacgttgttaatc 241
+
+Sbjct 290 tgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttgg 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 242 tgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttgg 301
+
+Sbjct 350 atcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgttg 409
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 302 atcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgttg 361
+
+Sbjct 410 ttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataacta 469
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 362 ttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataacta 421
+
+Sbjct 470 taattgagaaaaccagggaatgtg 493
+ |||||||||||||||||| |||||
+Query 422 taattgagaaaaccagggtatgtg 445
+
+484 819 35 F 494 1500 8 882 32 93.46
+Sbjct 35 ggaca-tcncccaaccncat-ggtnc-acgtggngctaca-ccnc-ctggtgga-cttca 88
+ ||||| || ||| | | | ||| | |||||| |||||| || | | |||||| ||||
+Query 8 ggacaatccnccantcnccttggttccacgtggggctacatccncgccggtggantttca 67
+
+Sbjct 89 gcgng-ct-cca-gaaccccaccgttgctttcgg-cccnccgtcgtaagctggacgtggc 144
+ | | | || ||| || |||||||||| ||||||| || ||||| ||| |||||||||||
+Query 68 gnggggcttccatga-ccccaccgttnctttcggaccnnccgtcttaanctggacgtggc 126
+
+Sbjct 145 ccacccactgggttt-actgggctggncctcttattggtggtggactcgccggaattatc 203
+ ||||||||||||||| |||||||||| |||||||||||||||||||||||||||||||||
+Query 127 ccacccactgggttttactgggctggncctcttattggtggtggactcgccggaattatc 186
+
+Sbjct 204 tacgactttgtcttcatcgatgaaaatgcccacgagcaattgcctaccaccgattactga 263
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 187 tacgactttgtcttcatcgatgaaaatgcccacgagcaattgcctaccaccgattactga 246
+
+Sbjct 264 agacgtcaaattcaacgttgttaatctgatgaatttttcgtgatttgcttttttaatttg 323
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 247 agacgtcaaattcaacgttgttaatctgatgaatttttcgtgatttgcttttttaatttg 306
+
+Sbjct 324 catcgtaatgggtttctggccgttggatcatttttagatgaatctttgtctattgattga 383
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 307 catcgtaatgggtttctggccgttggatcatttttagatgaatctttgtctattgattga 366
+
+Sbjct 384 tcatttatgtgtctttgggtttgttgttggagttgtaatatctctggaaggcttttgtgc 443
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 367 tcatttatgtgtctttgggtttgttgttggagttgtaatatctctggaaggcttttgtgc 426
+
+Sbjct 444 aattgtattgtacggtttaataactataattgagaaaaccagggaatgtgaattatgaaa 503
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 427 aattgtattgtacggtttaataactataattgagaaaaccagggaatgtgaattatgaaa 486
+
+Sbjct 504 atgattttttttgtt 518
+ |||| ||||||||||
+Query 487 atgaatttttttgtt 501
+
+432 825 27 F 441 1469 13 765 36 91.75
+Sbjct 27 tttgaccnag-ccc-ttttttaag-caatccngccttccnt-agggtgaa-gt-ggctcc 80
+ ||||||| || ||| |||||| || |||| | | |||| | |||||||| || | |||
+Query 13 tttgacccagncccctttttttaggcaattccgntttcccttagggtgaaagttngttcc 72
+
+Sbjct 81 c-tggnggaatctttacccc-gcttaactttgcctcntac-gcaag-ag-cccaaggag- 135
+ | ||| |||||||||||||| | ||||||| | ||| | | ||||| || |||| ||||
+Query 73 cctggtggaatctttacccccggttaacttnggctccttccgcaaggaggcccagggagg 132
+
+Sbjct 136 aaanagctagccaaacgggaggttggccgatgttggcattccttagggtttgtggttcaa 194
+ || ||||||| | |||||||||||| |||||||| |||| ||||||||||||||||||
+Query 133 aaggagctagc-anccgggaggttggc-gatgttggnattc-ttagggtttgtggttcaa 189
+
+Sbjct 195 cacaatgtgactggaaaaggaccatttgagaatctgttgcagcacttgtctgacccatgg 254
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 190 cacaatgtgactggaaaaggaccatttgagaatctgttgcagcacttgtctgacccatgg 249
+
+Sbjct 255 cacaacactattgtccaaaccttcaactaaagagtgaagacagacttatgatctcatacc 314
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 250 cacaacactattgtccaaaccttcaactaaagagtgaagacagacttatgatctcatacc 309
+
+Sbjct 315 tatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatcttagagttcttgg 374
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 310 tatctatcttccatcactttcatgtctgtctgtgagtgtgtttcatcttagagttcttgg 369
+
+Sbjct 375 tttttgagcttgaattattgttgaaccgttgtagctccatgaacaaatttggaatcttca 434
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 370 tttttgagcttgaattattgttgaaccgttgtagctccatgaacaaatttggaatcttca 429
+
+Sbjct 435 atgtacagaggaactaagttaatc 458
+ ||||||||||||||||||||||||
+Query 430 atgtacagaggaactaagttaatc 453
+
+467 826 14 F 463 912 0 873 19 95.91
+Sbjct 14 ctgcccttagtgncgttgaattggctagggaagttgcttcccttctccggcaacaagtgg 73
+ ||||| |||||| |||||| ||||||| ||| |||||||| ||| ||| ||||||||||
+Query 0 ctgcc-ttagtgccgttga-ttggctaaggagnttgcttcc-ttc-ccg-caacaagtgg 54
+
+Sbjct 74 at-ccttgtgttgaattcgagttggagcncggatttgtgtnccgtgagcacggaaacact 132
+ || ||||||||||||||||||||||||| ||||||| ||| ||||| |||||||| | ||
+Query 55 attccttgtgttgaattcgagttggagcacggatttntgtaccgtgggcacggaa-ccct 113
+
+Sbjct 133 cccggatactatgatggacgatactggacaatgtggaagcttcc-attgttcggatgcac 191
+ |||||||||||||||||||| ||||||||||||||||||||||| |||||||||||||||
+Query 114 cccggatactatgatggacggtactggacaatgtggaagcttcccattgttcggatgcac 173
+
+Sbjct 192 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 251
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 cgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcctt 233
+
+Sbjct 252 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 311
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 cattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgccta 293
+
+Sbjct 312 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 371
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 caagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattatt 353
+
+Sbjct 372 ctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagt 431
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 354 ctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagt 413
+
+Sbjct 432 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 480
+ |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 414 tgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 462
+
+409 826 12 F 407 1049 0 702 38 90.69
+Sbjct 12 ccctgcccttagtgncgttgaattggctagggaagttgcttcccttctccggcaacaagt 71
+ || |||| || || ||| |||||| ||| |||||||||| || ||||||| |||||| |
+Query 0 ccttgccnttnntgccgtcgaattg-ctaaggaagttgctacc-ttctccg-caacaa-t 55
+
+Sbjct 72 ggatcc-ttgtgttgaattcgagttggagcncggatttgtgtnccgtgagcacggaaaca 130
+ |||||| |||||||||| |||||||||||| ||||||||||| |||||||||||||| ||
+Query 56 ggatcccttgtgttgaantcgagttggagcncggatttgtgtaccgtgagcacggaanca 115
+
+Sbjct 131 ctcccgg-atactatgatggacgatactggacaatgtggaagcttccattgttcggatgc 189
+ ||||||| |||||| |||||||| ||||||||||||||||||||||||||||||||||||
+Query 116 ctcccgggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgc 175
+
+Sbjct 190 accgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgcc 249
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||
+Query 176 accgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgcc 235
+
+Sbjct 250 ttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcc 309
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 ttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcc 295
+
+Sbjct 310 tacaagcccccaagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgatt 368
+ |||||||||||||||||||| || |||||| ||| ||||||||||||||| ||||| |
+Query 296 tacaagcccccaagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgact 354
+
+Sbjct 369 attctggaacccatttctatgtggtcaatgcaaatttaagaaattattt-gcc 420
+ || | |||||||| || | | ||||||||| ||||||||| |||||||| |||
+Query 355 at-ccggaacccaattttgtatggtcaatgtaaatttaagtaattattttgcc 406
+
+426 826 55 F 419 1120 0 743 34 91.95
+Sbjct 55 cttctccggcaacaagtggatccttgtgttgaattcgagttggagcncggatttgtgtnc 114
+ |||| ||| ||||| | || ||| || |||||||| | ||||| | ||| ||||| | |
+Query 0 cttc-ccg-caaca-g-gggtccctgggttgaattngngttgggncccggntttgtttcc 55
+
+Sbjct 115 cgtgagcacggaaacactcccggatactatgatggacgatactggacaatgtggaagctt 174
+ |||| | ||||| | | ||||| | ||||| ||| || | |||| |||||||||||||
+Query 56 cgtggncccggaa-cccncccggntnctatgntggccggtnctggccaatgtggaagct- 114
+
+Sbjct 175 ccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaag 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 ccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaag 173
+
+Sbjct 235 gagtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgc 294
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 gagtnccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgc 233
+
+Sbjct 295 atcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaat 354
+ ||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 234 atcagtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaat 292
+
+Sbjct 355 attcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaatta 414
+ |||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||
+Query 293 attcagcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaatta 352
+
+Sbjct 415 tttgccgacttaacagttgaggaactattgtttgaaagtgaaaatgttattcctatcagt 474
+ ||||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||
+Query 353 tttgccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagt 412
+
+Sbjct 475 ttctct 480
+ ||||||
+Query 413 ttctct 418
+
+474 826 7 F 450 1297 0 801 41 91.13
+Sbjct 7 ttccnccctgcccttagtgncgttgaattggctagggaagttgcttcccttctccggcaa 66
+ |||| ||||||| |||| | ||| || | | |||| | || ||| | ||| ||| ||
+Query 0 ttcc-ccctgcc-ttag-g-cgt-ga-t-gnctagn-a-gt-gctnc--ttc-ccg-can 45
+
+Sbjct 67 caagtggatccttgtgttgaattcgagttggagcncggatttgtgtnccgtgagcacgga 126
+ | ||| ||||| |||||||| ||||| || || ||||||| | | ||||| ||||| |
+Query 46 -a-gtg-ntccttntgttgaat-cgagt-ggngcncggattt-ttttccgtgngcacgna 99
+
+Sbjct 127 aacactcccggatactatgatggacgatactggacaatgtggaagcttccattgttcgga 186
+ | ||||||||| | ||||||||| || ||||||| |||||||||||||||||||||||||
+Query 100 a-cactcccgg-tnctatgatggccggtactgga-aatgtggaagcttccattgttcgga 156
+
+Sbjct 187 tgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggc 246
+ |||||||| |||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 157 tgcaccga-tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggc 215
+
+Sbjct 247 gccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcatt 306
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 216 gccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcatt 275
+
+Sbjct 307 gcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga 366
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 276 gcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttga 335
+
+Sbjct 367 ttattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgactta 426
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 336 ttattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgccgactta 395
+
+Sbjct 427 acagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 480
+ | ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 396 aaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctct 449
+
+446 826 35 F 436 1327 0 774 36 91.84
+Sbjct 35 tggctagggaagttg-cttcccttctccggcaacaagtggatccttgtgttgaattcgag 93
+ |||||||| || ||| || || ||| ||| |||| ||| ||||| | |||||||||
+Query 0 tggctagg-aa-ttgact-cc-ttc-ccg--aaca-ntggntcctt-ttttgaattcgnt 50
+
+Sbjct 94 ttggagcncggatttgtgtnccgtgagcacggaaacactcccggatactatgatggacga 153
+ |||| || ||| ||| | ||||| || || || |||||| || |||| |||||| ||
+Query 51 ttggngcncggntttttnncccgtgngcncgnaa-cactccngg-tactntgatggncgg 108
+
+Sbjct 154 tactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaag 213
+ ||||||||| | ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 109 tactggacattntggaagcttccattgttcggatgcaccgactccgctcaagtgttgaag 168
+
+Sbjct 214 gaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatcggattcgac 273
+ ||| ||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 169 gaanttgaagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcgac 228
+
+Sbjct 274 aacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaa 333
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 229 aacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaa 288
+
+Sbjct 334 gcttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtggt 393
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 289 gcttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtggt 348
+
+Sbjct 394 caatgcaaatttaagaaattatttgccgacttaacagttgaggaactattgtttgaaagt 453
+ |||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||
+Query 349 caatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagt 408
+
+Sbjct 454 gaaaatgttattcctatcagtttctct 480
+ |||||||||||||||||||||||||||
+Query 409 gaaaatgttattcctatcagtttctct 435
+
+419 846 199 F 422 902 1 793 16 96.20
+Sbjct 199 ctaccttcaccg-canca-gtggattccctgtgttg-aattcg-agttagagc-acggat 253
+ || ||||| || || || |||||| || ||||||| ||| || | ||||||| |||||
+Query 1 cttccttcnncggcaacaagtggat-ccttgtgttggaat-cggatttagagcnccggat 58
+
+Sbjct 254 ttgtgtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt 313
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 59 ttgtgtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt 118
+
+Sbjct 314 ggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaat 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 ggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaat 178
+
+Sbjct 374 gcaagaaggantacccgggcgcnttcattaggatcatcggattcgacaacacccgtcaag 433
+ |||||||||| ||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 179 gcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaag 238
+
+Sbjct 434 tccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttt 493
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 tccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttt 298
+
+Sbjct 494 tctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttt 553
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 tctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttt 358
+
+Sbjct 554 tctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 613
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 tctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 418
+
+Sbjct 614 atat 617
+ ||||
+Query 419 atat 422
+
+434 846 184 F 437 1100 6 772 33 92.42
+Sbjct 184 tggcna-ggaagttgactaccttcaccgcancagtggattccctgtgttgaattcgagtt 242
+ |||| | |||||||| || ||||| || | || || |||||||||||||||| |||
+Query 6 tggctaaggaagttg-ctcccttc-ccngaaaaggggnccccctgtgttgaattcgngtt 63
+
+Sbjct 243 agagcacgg-atttg-tgtaccgtgagcac-ggaaacact-cccggatactacgatggac 298
+ || || ||| ||||| ||| || | || | |||| |||| ||||||||||||||||| |
+Query 64 agggcccgggatttggtgtncccngngccccggaancactncccggatactacgatggcc 123
+
+Sbjct 299 ggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttga 358
+ |||||||||||||||||| ||||||||||| |||||||||||||||||||||||||||||
+Query 124 ggtactggacaatgtggangcttccattgtccggatgcaccgactccgctcaagtgttga 183
+
+Sbjct 359 aggaagttgaagaatgcaagaaggantacccgggcgcnttcattaggatcatcggattcg 418
+ ||||||||||||||||||||||||| ||||||||||| ||||||||||||||||||||||
+Query 184 aggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcg 243
+
+Sbjct 419 acaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccg 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 244 acaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccg 303
+
+Sbjct 479 aagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctat 538
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 304 aagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcatttcctat 363
+
+Sbjct 539 tgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattt 598
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 364 tgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgtctgattt 423
+
+Sbjct 599 atgaatatgtaatttatat 617
+ |||||||| | ||||||||
+Query 424 atgaatatnttatttatat 442
+
+454 846 164 F 456 1151 0 859 17 96.26
+Sbjct 164 cctgac-ttagtgacgtcgattggcnaggaagttgactaccttcaccgcanca-gtggat 221
+ |||| | |||||| || ||| |||| ||||||||| || ||||| ||||| || ||||||
+Query 0 cctgccnttagtgncgccgaatggctaggaagttg-cttccttctccgcaacaagtggat 58
+
+Sbjct 222 tccctgtgtt-gaattcgagttagagc-acggatttgtgtaccgtgagcacggaaacact 279
+ || |||||| |||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 59 -ccttgtgtttgaattcgagttagagccacggatttgtgtaccgtgagcacggaaacact 117
+
+Sbjct 280 cccggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcacc 339
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 118 cccggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcacc 177
+
+Sbjct 340 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggantacccgggcgcnttc 399
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||| |||
+Query 178 gactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttc 237
+
+Sbjct 400 attaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctac 459
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 attaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctac 297
+
+Sbjct 460 aagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctc 519
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 aagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctc 357
+
+Sbjct 520 tgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcgg 579
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 tgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcgg 417
+
+Sbjct 580 attgtcaaatgtctgatttatgaatatgtaatttatat 617
+ ||||||||||||||||||||||||||||||||||||||
+Query 418 attgtcaaatgtctgatttatgaatatgtaatttatat 455
+
+503 846 115 F 511 1230 2 879 45 91.12
+Sbjct 115 gaaggtgtngccacca-ttggaa-ga-gaagtntgagactctatcttacctccctgac-t 170
+ |||| || || ||| |||||| || ||| | || | || | |||| || ||||| | |
+Query 2 gaagntg--ccccccaattggaaagaagaantttgggccttt-tctt-ccnccctggcct 57
+
+Sbjct 171 t-agtgacgtcg-a-ttggcna-ggaagttgactaccttcaccgcanca-gtggattccc 225
+ | ||| | ||| | ||||| | ||||||||||| | ||| | ||| || ||| | |||
+Query 58 ttagtnccntcggaattggctaaggaagttgactccnttctcngcaacaaatggnt-ccc 116
+
+Sbjct 226 t-gtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaaacactcccgg 284
+ | |||||||||||||||||| || ||||||||||| |||||||| |||||||||||||||
+Query 117 ttgtgttgaattcgagttagggcncggatttgtgtcccgtgagcccggaaacactcccgg 176
+
+Sbjct 285 atactacgatggac-ggtactggacaat-gtggaagcttcc-attgttcggatgcaccga 341
+ |||||||||||||| ||||||||||||| |||||||||||| ||||||||||||||||||
+Query 177 atactacgatggaccggtactggacaattgtggaagcttcccattgttcggatgcaccga 236
+
+Sbjct 342 ctccgctcaagtgttgaaggaagttgaagaatgcaagaaggantacccgggcgcnttcat 401
+ |||||||||||||||||||||||||||||||||||||||||| ||||||||||| |||||
+Query 237 ctccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcat 296
+
+Sbjct 402 taggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 461
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 297 taggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 356
+
+Sbjct 462 gcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctg 521
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 357 gcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctg 416
+
+Sbjct 522 ctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcggat 581
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 417 ctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcggat 476
+
+Sbjct 582 tgtcaaatgtctgatttatgaatatgtaatttatat 617
+ ||||||||||||||||||||||||||||||||||||
+Query 477 tgtcaaatgtctgatttatgaatatgtaatttatat 512
+
+410 846 204 F 414 1360 1 731 31 92.48
+Sbjct 204 ttcaccgcancag-tgg-attccct-g-tgttgaattcg-agttag-agcacggatttgt 257
+ ||| ||| | || ||| || |||| | |||| ||| || |||| | ||||||||||||
+Query 1 ttc-ccgaaacaantgggat-cccttggtgttnaat-cggagtttggngcacggatttgt 57
+
+Sbjct 258 gtaccgtgagcacggaaac-actcccggatactacgatggacggtactggacaatgtgga 316
+ || |||||||||||| ||| ||||| ||||||||||||||||| ||||||||||||||||
+Query 58 gtnccgtgagcacggnaaccactccnggatactacgatggacgntactggacaatgtgga 117
+
+Sbjct 317 agcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgca 376
+ |||||||||||| |||||||||||||||||||||||| |||||||||||||| |||||||
+Query 118 agcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgca 177
+
+Sbjct 377 agaaggantacccgggcgcnttcattaggatcatcggattcgacaacacccgtcaagtcc 436
+ |||||| ||||||||||| |||||| |||||||||||||||||||||||||||||||||
+Query 178 agaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtcc 237
+
+Sbjct 437 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 496
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 aatgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttct 297
+
+Sbjct 497 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 556
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 aaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttct 357
+
+Sbjct 557 ctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 613
+ ||||||||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 358 ctttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+447 848 138 F 476 1658 0 737 62 86.57
+Sbjct 138 ggaa-ccctntctgnt-cagcgatctt-ggtncnggaatcgtcnccgt-gctgcttctcc 193
+ |||| || | | || | |||| ||||| ||| | ||||||||| |||| ||||||||||
+Query 0 ggaaaccatgtntgtttcagcaatctttggtaccggaatcgtcaccgttnctgcttctcc 59
+
+Sbjct 194 g-ttctccgcca-tttcaagtcccaaaattaggntaatggaggaggattagggatggtga 251
+ | |||||||||| ||| |||| |||||||| || ||||||||||||||||||||||||||
+Query 60 ggttctccgccaatttaaagttccaaaatt-gggtaatggaggaggattagggatggtga 118
+
+Sbjct 252 tagagtgttcgtcgaggccacagaagaa-tcgacggctcatcacaggaagacgag-ccga 309
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||| ||||
+Query 119 tagagtgttcgtcgaggccacagaagaaatcgacggctcatcacaggaagacgaggccga 178
+
+Sbjct 310 agaagactcagcct-gggacattaagagaa-gcctactgtttacgctcctcttcctcctc 367
+ |||||||||||||| || |||||||||||| ||||||||||||||||||| |||||||||
+Query 179 agaagactcagccttggnacattaagagaaagcctactgtttacgctcctnttcctcctc 238
+
+Sbjct 368 ttccggcggaatggagtccgttcactctcgcttctgacgacggtggtgctgccactgctg 427
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 239 ttccggcggaatggagtccgttcactctcgcttctaacgacggtggtgctgccactgctg 298
+
+Sbjct 428 cgggagatttggtttca-ggcgctgcctagttggtatgagttatctgctgatttggttgt 486
+ |||| |||||||||||| ||||||||||||||||||| | ||||| |||||||||||||
+Query 299 cgggngatttggtttcaaggcgctgcctagttggtatnanntatctcctgatttggttgt 358
+
+Sbjct 487 aatctagtttg-agaactttt-gtt-gttgttta-ctgtg-ttttca--gtttt-ctga- 538
+ |||||||||| ||||||||| ||| |||| ||| ||||| |||| | ||||| | |
+Query 359 aatctagttttnagaactttttgttngttggttanctgtggtttttaaagtttttcntan 418
+
+Sbjct 539 -tg-ttt-gtt-gtt-gggttt-gtttg-tgtttga-ttgg-tgaa-tgaatggacc 584
+ || ||| | | ||| ||| || ||||| |||| | |||| |||| | ||||| ||
+Query 419 ntggttttgntngttngggnttngtttggcgtttaaattgggtgaaataaatgggcc 475
+
+412 849 0 F 415 912 68 746 27 93.47
+Sbjct 0 aattcgagttggagcacggatttgtgtcaacgtgagcacggancactcccggatactatg 59
+ ||||||||||||||||||||||| ||| | |||| ||||||| | |||||||||||||||
+Query 68 aattcgagttggagcacggatttntgt-accgtgggcacggaaccctcccggatactatg 126
+
+Sbjct 60 ntggncgatactggacantgtgga-gctncn-att-nccggatgcaccgactccgctcaa 116
+ ||| || ||||||||| |||||| ||| | ||| ||||||||||||||||||||||
+Query 127 atggacggtactggacaatgtggaagcttcccattgttcggatgcaccgactccgctcaa 186
+
+Sbjct 117 gtgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatc 176
+ |||||||||||||||||||||||| |||||| || |||||||||||||||| ||||||||
+Query 187 gtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatc 246
+
+Sbjct 177 ggattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 236
+ ||||||| | || |||||||||||||||||||||||||||||||||||||||||||||||
+Query 247 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 306
+
+Sbjct 237 ttcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccattt 295
+ |||||||||||||| ||||||||| |||||||||||||||||||||||||||||||||||
+Query 307 ttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 366
+
+Sbjct 296 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattg 355
+ ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||
+Query 367 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattg 426
+
+Sbjct 356 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttc 411
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 427 tttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttc 482
+
+417 849 0 F 417 1120 27 705 43 89.69
+Sbjct 0 aattcgagttggagcacggatttgtgtcaacgtgagcacggancactcccggatactatg 59
+ |||| | ||||| | ||| ||||| || |||| | |||| | | ||||| | |||||
+Query 27 aattngngttgggncccggntttgtttc-ccgtggncccggaacccncccggntnctatg 85
+
+Sbjct 60 ntggncgatactggacantgtgga-gctncnatt-nccggatgcaccgactccgctcaag 117
+ ||| || | |||| || |||||| ||| | ||| |||||||||||||||||||||||
+Query 86 ntggccggtnctggccaatgtggaagct-ccattgttcggatgcaccgactccgctcaag 144
+
+Sbjct 118 tgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatcg 177
+ ||||||||||||||||||||||| |||||| || |||||||||||||||| |||||||||
+Query 145 tgttgaaggaagttgaagaatgcaagaaggagtnccctggcgccttcattaggatcatcg 204
+
+Sbjct 178 gattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagct 237
+ |||||| | || |||||||||||||||||||||||||||||||||||||||||||||| |
+Query 205 gattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaag-t 263
+
+Sbjct 238 tcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccatttc 296
+ ||||||||||||| ||||||||| ||||||||||||||||||||||||||||||| ||||
+Query 264 tcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccntttc 323
+
+Sbjct 297 tatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattgt 356
+ |||||||||||||||||||||||||||||||||||||||| | |||||||||||||||||
+Query 324 tatgtggtcaatgcaaatttaagaaattatttgccgacttnaaagttgaggaactattgt 383
+
+Sbjct 357 ttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 416
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 384 ttgaaagtgaaaatgttattcctatcagtttctctntaattatagttatcatttcatttc 443
+
+417 849 0 F 413 1297 62 722 36 91.33
+Sbjct 0 aattcgagttggagcacggatttgtgtcaacgtgagcacggancactcccggatactatg 59
+ ||| ||||| || || ||||||| | || |||| ||||| | ||||||||| | |||||
+Query 62 aat-cgagt-ggngcncggatttttttc--cgtgngcacgnaacactcccgg-tnctatg 116
+
+Sbjct 60 ntggncgatactggacantgtgga-gctncnatt-nccggatgcaccgactccgctcaag 117
+ ||| || ||||||| | |||||| ||| | ||| |||||||||||| |||| |||||
+Query 117 atggccggtactgga-aatgtggaagcttccattgttcggatgcaccga-tccgntcaag 174
+
+Sbjct 118 tgttgaaggaagttgaagaatgcnagaaggngtnccctggcgccttcattnggatcatcg 177
+ ||||||||||||||||||||||| |||||| || |||||||||||||||| |||||||||
+Query 175 tgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatcg 234
+
+Sbjct 178 gattcgncnacncccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagct 237
+ |||||| | || ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 235 gattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagct 294
+
+Sbjct 238 tcaccgaagctta-tcccctttcnggaatattcagcgttgattattctggaacccatttc 296
+ ||||||||||||| ||||||||| ||||||||||||||||||||||||||||||||||||
+Query 295 tcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccatttc 354
+
+Sbjct 297 tatgtggtcaatgcaaatttaagaaattatttgccgacttaacagttgaggaactattgt 356
+ |||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||
+Query 355 tatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgt 414
+
+Sbjct 357 ttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 415 ttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcatttcatttc 474
+
+557 866 17 F 561 1212 0 884 78 86.05
+Sbjct 17 cgtttcttgtgacaactcccatccgacgt-caagaatgctaggatctgngatccgttccc 75
+ |||| |||||| || ||| | ||| | | || || | ||||| | || | |||| |||
+Query 0 cgtt-cttgtg-cacntcc-aaccggccttca-ga-tcctagg-tntg-ggnccgt-ccc 51
+
+Sbjct 76 catcaaccacc-atgagct--actcagcctt-ggaacncgatgattggccc-cgagaggc 130
+ ||| ||||| ||| ||| |||| |||| ||| | || | ||||||| || | |||
+Query 52 nttca-ccaccnatgngctttnctcacccttngga-cncggttgttggcccncg-ggggc 108
+
+Sbjct 131 g-tttagagagncca-tggncca-tgcncctttcgttgcatct-acaang-atnccacat 185
+ | ||||| ||| ||| ||| ||| ||| ||||||| ||||||| ||| | | || |||
+Query 109 ggtttagggagcccaatggnccaatgc-cctttcggtgcatcttncaagggntcccncat 167
+
+Sbjct 186 agatgntnccca-gct-ctgtggaagcccagtactgt-cccacacaagcccgcatgtggt 242
+ ||||| | ||| ||| |||||||| || |||||||| |||||||||| |||||||||||
+Query 168 agatggttnccangcttctgtggaanccaagtactgtgcccacacaagnccgcatgtggt 227
+
+Sbjct 243 ggaatcagaa-gantnccgtgacccttgacgctgacca-tggcgtcgtctcaa-tgggtc 299
+ || ||||||| || | ||||| ||||||||||||| || |||||||||||||| |||||
+Query 228 ggnatcagaaagagttccgtg-cccttgacgctgaacaatggcgtcgtctcaaatgggtt 286
+
+Sbjct 300 cgtatgaagtggnccatntacaactactntaccgaccggactaggttcccgnttatgcca 359
+ |||||||||||| |||| |||||||||| |||||||||||||||||||||| ||||||||
+Query 287 cgtatgaagtggnccatctacaactactgtaccgaccggactaggttcccggttatgcca 346
+
+Sbjct 360 gctgaatntaaaagggacagagacgcntaagttactaccnttgagggttttaatgaattt 419
+ ||||||| |||||||||||||||||| ||||||||||| ||| ||||||||||||||||
+Query 347 gctgaatgtaaaagggacagagacgcataagttactactcttgngggttttaatgaattt 406
+
+Sbjct 420 atgctatcattattatttgaattatgcttgttcaagagattgatatatgtattgtttgtt 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 407 atgctatcattattatttgaattatgcttgttcaagagattgatatatgtattgtttgtt 466
+
+Sbjct 480 ggcccatgatgtttatgctatatttgggcctaaaattacatgttataattcatatatgta 539
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 467 ggcccatgatgtttatgctatatttgggcctaaaattacatgttataattcatatatgta 526
+
+Sbjct 540 ttgattagctatgtattttcatatgttatgatct 573
+ ||||||||||||||||||||||||||||||||||
+Query 527 ttgattagctatgtattttcatatgttatgatct 560
+
+405 867 233 F 417 1602 0 708 38 90.75
+Sbjct 233 ccgcttggtaacttcatggatcaa-gagacgcttcc-tcaaagagaagctcgcgagtgtt 290
+ ||||||||||||||||||| |||| ||||||||||| |||||||||||||||| ||| ||
+Query 0 ccgcttggtaacttcatggntcaaagagacgcttccatcaaagagaagctcgcnagtttt 59
+
+Sbjct 291 aaggacacttcgactgaagtaa-ggagctcgatgagcaagccgccgccgtgatgagagca 349
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 60 aaggacacttcgactgaagtaaaggagctcgatgagcaagccgccgccgtgatgagagca 119
+
+Sbjct 350 gctagggctgagatcgccgccgcgcttaacaagatgaagaaggagactcaggttgaagtc 409
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 gctagggctgagatcgccgccgcgcttaacaagatgaagaaggagactcaggttgaagtc 179
+
+Sbjct 410 gaggagaagctagcggagggaaggaagaaggtggaggaagagctaaaagaagctttggcg 469
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 gaggagaagctagcggagggaaggaagaaggtggaggaagagctaaaagaagctttggcg 239
+
+Sbjct 470 agcttggagagtcagaaagaagaaaccattaaagctttggattctcagattgctgctctt 529
+ ||||| |||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 240 agcttngagagtcagaaagaaggaaccattaaagctttggattctcagattgctgctctt 299
+
+Sbjct 530 agtgaa-gacattgt-caagaaggttctt-ccttcttaaattatatttttgttaac--tg 584
+ |||||| | |||| | ||||||||| ||| ||| ||||||||| |||||| || || |
+Query 300 agtgaaagncatttttcaagaaggt-ctttcctncttaaattaaatttttttttaccncg 358
+
+Sbjct 585 tgtaattctctgtct-ctc-tatctcaaaacttatttac-aag-aaattactg-taaa 637
+ ||||||| ||| | | | || | |||||||| ||| | ||| || || ||| |||
+Query 359 ngtaattccctgnnttcccntancncaaaactttttttccaaggaanttcctgnnaaa 416
+
+421 884 0 F 427 890 8 770 26 93.87
+Sbjct 0 tacg-gnagnccctaaaccg-ggacag-tcatggttncccnaca-ggnttgcttcattnc 55
+ |||| | | || | |||| |||||| |||| ||| || || || |||||||||| |
+Query 8 tacgtgca-nccatcaacccaggacagntcatngttttcccccaaggcttgcttcatttc 66
+
+Sbjct 56 c-agatcaacgcgggaaaatcctctgcttccagcccgtgtc-actttcaacagcgctaat 113
+ | | |||||||||||||||||||||||||||| || |||| |||||||||| |||||||
+Query 67 ccanatcaacgcgggaaaatcctctgcttccancc-ttgtccactttcaacancgctaat 125
+
+Sbjct 114 cc-gggtctgcagattctcgact-cgcactctttgctaacagtcttcccactgaactcgt 171
+ || |||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 126 cccgggtctgcagattctcgacttcgcactctttgctaacagtcttcccactgaactcgt 185
+
+Sbjct 172 cgtgggtactactttccttgacgccactacagtcaagaagctaaagggtgttcttggagg 231
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 186 cgtgggtactactttccttgacgccactacagtcaagaagctaaagggtgttcttggagg 245
+
+Sbjct 232 aactggctaaaaaaagacttaggactactccttgactaaaacaccaaaacctgtttcttc 291
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 246 aactggctaaaaaaagacttaggactactccttgactaaaacaccaaaacctgtttcttc 305
+
+Sbjct 292 atctttttttctctttaattgattcttgtcttctctgttttgtgtgccttgtaattcttc 351
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 306 atctttttttctctttaattgattcttgtcttctctgttttgtgtgccttgtaattcttc 365
+
+Sbjct 352 aaaacctgtcaaaattgttacattgtatgtgagttttttcaattaagatcctgagttggt 411
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 366 aaaacctgtcaaaattgttacattgtatgtgagttttttcaattaagatcctgagttggt 425
+
+Sbjct 412 cacaccgtt 420
+ |||||||||
+Query 426 cacaccgtt 434
+
+424 892 0 F 420 1300 64 772 24 94.31
+Sbjct 0 caatccaaggctgagaag-cttagggagaanctctgtctgatcagtttgaggctaagagg 58
+ || || |||||| | ||| || |||| || |||| ||| |||| ||||||||| | ||
+Query 64 cagtcnaaggctta-aaggct--ggganaagctctttctaatcantttgaggctnanngg 120
+
+Sbjct 59 ncgaagnaccaaggcttagcccgagaaaggaagcatgctaggagagagga-cgtttagct 117
+ ||||| |||||||||||||| ||||||| | |||||||||||||||||| |||||||||
+Query 121 gcgaaggaccaaggcttagcc-gagaaagna-gcatgctaggagagaggagcgtttagct 178
+
+Sbjct 118 taagggtcccggtggagatgttgcgcctgtagctgctccagcacctgctgctacacctgc 177
+ |||| ||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 -aaggttcccgntggagatgttgcgcctgtagctgctccagcacctgctgctacacctgc 237
+
+Sbjct 178 tccaactgcagctgtaccgaagaagaagtctaagaagtgaagaggatatatagtgtgaag 237
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 tccaactgcagctgtaccgaagaagaagtctaagaagtgaagaggatatatagtgtgaag 297
+
+Sbjct 238 ctatatcgatcatcagttcacggattagactctgaagaaggttttgaatgttttatcgaa 297
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 298 ctatatcgatcatcagttcacggattagactctgaagaaggttttgaatgttttatcgaa 357
+
+Sbjct 298 tgcgtttgtggaataacttttattttcgcaaagaacataacttatgtcagttaatcttta 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 358 tgcgtttgtggaataacttttattttcgcaaagaacataacttatgtcagttaatcttta 417
+
+Sbjct 358 tgctttcagatttttagcttacagtgtttcaacagacctactttgcaagttgttcttttt 417
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 418 tgctttcagatttttagcttacagtgtttcaacagacctactttgcaagttgttcttttt 477
+
+Sbjct 418 ttggtt 423
+ ||||||
+Query 478 ttggtt 483
+
+423 902 0 F 423 1100 20 747 33 92.20
+Sbjct 0 gcttccttcnncggcaacaagtggatcc-ttgtgttggaat-cg-gatttagagcnccgg 56
+ ||| ||||| | | || ||| || || ||||||| ||| || | || || || ||||
+Query 20 gctcccttc-ccng-aa-aaggggnccccctgtgttg-aattcgng-tt-agggc-ccgg 72
+
+Sbjct 57 -atttg-tgtaccgtgagcac-ggaaacact-cccggatactacgatggacggtactgga 112
+ ||||| ||| || | || | |||| |||| ||||||||||||||||| ||||||||||
+Query 73 gatttggtgtncccngngccccggaancactncccggatactacgatggccggtactgga 132
+
+Sbjct 113 caatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttg 172
+ ||||||||| ||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 133 caatgtggangcttccattgtccggatgcaccgactccgctcaagtgttgaaggaagttg 192
+
+Sbjct 173 aagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacaccc 232
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 193 aagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacaccc 252
+
+Sbjct 233 gtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaat 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 253 gtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaat 312
+
+Sbjct 293 ttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgt 352
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 313 ttcttttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgt 372
+
+Sbjct 353 tctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatg 412
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 373 tctttttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatn 432
+
+Sbjct 413 taatttatat 422
+ | ||||||||
+Query 433 ttatttatat 442
+
+409 902 14 F 409 1143 0 728 30 92.67
+Sbjct 14 caacaagtggatccttgtgttggaat-cggatttagagcnccggatttgtgtacc-gtga 71
+ ||| ||| || ||| || |||| ||| ||| || | || |||||||||||| || |||
+Query 0 caa-aag-ggntccctg-gttg-aattcgg-tt-ngngccccggatttgtgtncccgtgn 53
+
+Sbjct 72 gcac-ggaaacactcccggatactac-gatggac-ggtactggacaatgtggaagcttcc 128
+ || | |||| ||| ||| | |||| | ||||||| |||||||| ||||||||||| ||||
+Query 54 gccccggaaccacccccnggtacttccgatggaccggtactggccaatgtggaagnttcc 113
+
+Sbjct 129 -attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagg 187
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 114 cattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagg 173
+
+Sbjct 188 agtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgca 247
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 agtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgca 233
+
+Sbjct 248 tcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaaca 307
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 234 tcagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaaca 293
+
+Sbjct 308 ttcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttat 367
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 ntcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttat 353
+
+Sbjct 368 gagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 422
+ |||||||||||||||||||||||||||||||||||||||||||||| ||||||||
+Query 354 gagacaatttctatcggattgtcaaatgtctgatttatgaatatgtnatttatat 408
+
+423 902 0 F 422 1151 34 818 9 97.87
+Sbjct 0 gcttccttcnncggcaacaagtggatccttgtgttggaat-cggatttagagcnccggat 58
+ ||||||||| || ||||||||||||||||||||| |||| || | ||||||| |||||
+Query 34 gcttccttctccg-caacaagtggatccttgtgtttgaattcg-agttagagccacggat 91
+
+Sbjct 59 ttgtgtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt 118
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 92 ttgtgtaccgtgagcacggaaacactcccggatactacgatggacggtactggacaatgt 151
+
+Sbjct 119 ggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaat 178
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 152 ggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaat 211
+
+Sbjct 179 gcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaag 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 212 gcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaag 271
+
+Sbjct 239 tccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttt 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 272 tccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttt 331
+
+Sbjct 299 tctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttt 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 332 tctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttt 391
+
+Sbjct 359 tctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 392 tctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 451
+
+Sbjct 419 atat 422
+ ||||
+Query 452 atat 455
+
+420 902 3 F 422 1230 91 785 19 95.49
+Sbjct 3 tcc-ttcnncggcaacaagtggatcc-ttgtgttggaat-cggatttagagcnccggatt 59
+ ||| ||| | ||||||| ||| ||| |||||||| ||| || | |||| || | |||||
+Query 91 tccnttc-tcngcaacaaatggntcccttgtgttg-aattcg-agttagggcnc-ggatt 146
+
+Sbjct 60 tgtgtaccgtgagcacggaaacactcccggatactacgatggac-ggtactggacaat-g 117
+ ||||| |||||||| ||||||||||||||||||||||||||||| ||||||||||||| |
+Query 147 tgtgtcccgtgagcccggaaacactcccggatactacgatggaccggtactggacaattg 206
+
+Sbjct 118 tggaagcttcc-attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaaga 176
+ ||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 207 tggaagcttcccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaaga 266
+
+Sbjct 177 atgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtca 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 267 atgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtca 326
+
+Sbjct 237 agtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttct 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 327 agtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttct 386
+
+Sbjct 297 tttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctt 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 387 tttctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctt 446
+
+Sbjct 357 tttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaat 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 447 tttctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaat 506
+
+Sbjct 417 ttatat 422
+ ||||||
+Query 507 ttatat 512
+
+404 902 15 F 407 1360 8 736 25 93.83
+Sbjct 15 aacaagtgg-atcc-ttg-tgttggaatcgga-tttagagcnccggatttgtgtaccgtg 70
+ ||||| ||| |||| ||| |||| ||||||| ||| | || | |||||||||| |||||
+Query 8 aacaantgggatcccttggtgtt-naatcggagtttggngcac-ggatttgtgtnccgtg 65
+
+Sbjct 71 agcacggaaac-actcccggatactacgatggacggtactggacaatgtggaagcttcca 129
+ ||||||| ||| ||||| ||||||||||||||||| ||||||||||||||||||||||||
+Query 66 agcacggnaaccactccnggatactacgatggacgntactggacaatgtggaagcttcca 125
+
+Sbjct 130 ttgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggag 189
+ |||| |||||||||||||||||||||||| |||||||||||||| ||||||||||||| |
+Query 126 ttgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgcaagaaggng 185
+
+Sbjct 190 tacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatc 249
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 186 tacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtccaatgcatc 245
+
+Sbjct 250 agtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacatt 309
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 246 ngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacatt 305
+
+Sbjct 310 cttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatga 369
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 306 cttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatga 365
+
+Sbjct 370 gacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 418
+ ||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 366 gacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+438 905 0 F 451 1693 83 730 53 88.08
+Sbjct 0 ccgggaagctcaa-gccgccaacggatccnaggaaacggattgtgatagacttcactgca 58
+ ||| ||||||||| |||||||||| |||| || |||| ||||||||||||||||||||||
+Query 83 ccgagaagctcaaagccgccaacgaatccaag-aaactgattgtgatagacttcactgca 141
+
+Sbjct 59 acatggtgccccaccttgccgtttcat-gccacccgtctttgctgacttagcccaagaag 117
+ ||||||||||| ||||||||||||||| || |||||||||||||||||||||| ||||||
+Query 142 acatggtgccc-accttgccgtttcattgc-acccgtctttgctgacttagcc-aagaag 198
+
+Sbjct 118 caccttgacgtagtcttcttcaaggtcgatgttgacgaattgaacactgttgctgaggag 177
+ ||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 199 cacctcgacgtagntttcttcaaggtcgatgttgacgaattgaacactgttgctgaggag 258
+
+Sbjct 178 tttaaagttcaggcaatgccaac-gtttatcttcatgaaagaaggagagatcaaggagac 236
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 259 tttaaagttcaggcaatgccaaccgtttatcttcatgaaagaaggagagatcaaggagac 318
+
+Sbjct 237 tgtggttggtgctgcgaaagaagaaatcatt-gccaa-tctcg-agaagcacaagac-ag 292
+ ||||||||||||||| ||||||| ||||||| ||||| ||||| ||||| |||| | ||
+Query 319 tgtggttggtgctgctaaagaaggaatcatttgccaaatctcggngaagcccaagnccag 378
+
+Sbjct 293 tt-gttgc-tgctgctt-gattt-gcttttc-tc-tctta-cctatttt-gctaaaat-a 343
+ || ||||| |||||||| ||||| |||||| || ||||| |||||||| ||||||| |
+Query 379 tttgttgcctgctgctttgattttgctttttntcctcttancctatttttgctaaaaana 438
+
+Sbjct 344 tg-tttggtgttttaa-taaatcc-tttgttcgcccgagtcttttcaccttaaat-gtgc 399
+ || ||||| | ||||| |||| || |||||||||||||| ||||||||| |||| || |
+Query 439 tggtttgggggtttaaataaanccctttgttcgcccgagn-ttttcacct-aaatngtcc 496
+
+Sbjct 400 tcttatg-tgtggtggtgaataaatgttgttgcaaactt 437
+ ||||||| ||| | || | | || |||||| ||||||||
+Query 497 tcttatggtgttggggggnanaa-tgttgt-gcaaactt 533
+
+403 912 9 F 407 988 0 648 54 86.67
+Sbjct 9 tgccgttga-ttggctaaggagnttgcttccttc-ccgcaa-caagtggattccttgtgt 65
+ ||| || || ||||| | |||| || || ||||| ||| || || | || ||| ||||
+Query 0 tgc-gtcgaattggcnanggag-ttactaccttctccgnaaacagggggncccctggtgt 57
+
+Sbjct 66 tgaattcgagtt-ggagcacgg-at-ttntgtaccgtgggcacggaaccctcccggatac 122
+ || |||||||| ||||||||| || || ||||||||| ||||||||| |||||||||||
+Query 58 ngacttcgagtttggagcacgggatcttgtgtaccgtgagcacggaacactcccggatac 117
+
+Sbjct 123 tatgatggacggtactggacaatgtggaagcttcccattgttcggatgcaccgactccgc 182
+ || |||||||||||||||||||||||||||||||| ||||||||||||||||||||| ||
+Query 118 tacgatggacggtactggacaatgtggaagcttcc-attgttcggatgcaccgactctgc 176
+
+Sbjct 183 tcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattaggat 242
+ |||||| ||||||||||||||||||||||||||||||||||| |||||||||||||||||
+Query 177 tcaagtattgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggat 236
+
+Sbjct 243 catcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagccccc 302
+ |||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||
+Query 237 catcggattcgacaacacccgtcaagtccagtgcatcagtttcattgcctacaagccccc 296
+
+Sbjct 303 aagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattctggaacc 361
+ ||||||||| || |||||| ||| ||||||||||||||| ||||| ||| | ||||||
+Query 297 aagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-ccggaacc 354
+
+Sbjct 362 catttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 411
+ || || | | ||||||||| ||||||| |||||||| ||| | | ||||
+Query 355 caattttgtatggtcaatgtnnatttaagtaattattttgccaaagtgaaaa 406
+
+411 912 1 F 414 1049 3 696 43 89.58
+Sbjct 1 tgcc-ttagtgccgttga-ttggctaaggagnttgcttccttc-ccgcaacaagtggatt 57
+ |||| || |||||| || ||| ||||||| ||||| ||||| ||||||||| |||||
+Query 3 tgccnttnntgccgtcgaattg-ctaaggaagttgctaccttctccgcaacaa-tggatc 60
+
+Sbjct 58 ccttgtgttgaattcgagttggagcacggatttntgtaccgtgggcacggaacc-ctccc 116
+ |||||||||||| |||||||||||| ||||||| ||||||||| |||||||| | |||||
+Query 61 ccttgtgttgaantcgagttggagcncggatttgtgtaccgtgagcacggaancactccc 120
+
+Sbjct 117 gg-atactatgatggacggtactggacaatgtggaagcttcccattgttcggatgcaccg 175
+ || |||||| |||||||||||||||||||||||||||||||| |||||||||||||||||
+Query 121 gggatactacgatggacggtactggacaatgtggaagcttcc-attgttcggatgcaccg 179
+
+Sbjct 176 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 235
+ ||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 180 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttca 239
+
+Sbjct 236 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 240 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 299
+
+Sbjct 296 agcccccaagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattc 354
+ |||||||||||||||| || |||||| ||| ||||||||||||||| ||||| ||| |
+Query 300 agcccccaagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-c 357
+
+Sbjct 355 tggaacccatttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaa 411
+ |||||||| || | | ||||||||| ||||||||| |||||||| ||| | | ||||
+Query 358 cggaacccaattttgtatggtcaatgtaaatttaagtaattattttgccaaagtgaaaa 416
+
+445 912 38 F 439 1120 0 791 31 92.99
+Sbjct 38 cttcccgcaacaagtggattccttgtgttgaattcgagttggagcacggatttntgtacc 97
+ |||||||||||| | || | ||| | |||||||| | ||||| | ||| ||| | | ||
+Query 0 cttcccgcaaca-g-gggtccct-gggttgaattngngttgggncccggntttgtttccc 56
+
+Sbjct 98 gtgggcacggaaccctcccggatactatgatggacggtactggacaatgtggaagcttcc 157
+ |||| | |||||||| ||||| | ||||| ||| |||| |||| ||||||||||||| ||
+Query 57 gtggncccggaacccncccggntnctatgntggccggtnctggccaatgtggaagct-cc 115
+
+Sbjct 158 cattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagg 217
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 116 -attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagg 174
+
+Sbjct 218 agtaccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgca 277
+ ||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 agtnccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgca 234
+
+Sbjct 278 tcagtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaata 337
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 235 tcagtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaata 293
+
+Sbjct 338 ttcagcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattat 397
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 294 ttcagcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattat 353
+
+Sbjct 398 ttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtt 457
+ |||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ttgccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtt 413
+
+Sbjct 458 tctctataattatagttatcatttc 482
+ ||||| |||||||||||||||||||
+Query 414 tctctntaattatagttatcatttc 438
+
+483 912 0 F 464 1297 6 842 35 92.61
+Sbjct 0 ctgccttagtgccgttgattggctaaggagnttgcttccttcccgcaacaagtggattcc 59
+ ||||||||| || || ||| | ||| | || | ||| | |||||||| |||| | ||
+Query 6 ctgccttag-gc-gt-gat-gncta-gnag-t-gctnc-ttcccgca--nagtgn-t-cc 53
+
+Sbjct 60 ttgtgttgaattcgagttggagcacggatttntgtaccgtgggcacggaaccctcccgga 119
+ || |||||||| ||||| || || ||||||| | | ||||| ||||| ||| |||||||
+Query 54 ttntgttgaat-cgagt-ggngcncggattt-ttttccgtgngcacgnaacactcccgg- 110
+
+Sbjct 120 tactatgatggacggtactggacaatgtggaagcttcccattgttcggatgcaccgactc 179
+ | ||||||||| |||||||||| ||||||||||||||| |||||||||||||||||| ||
+Query 111 tnctatgatggccggtactgga-aatgtggaagcttcc-attgttcggatgcaccga-tc 166
+
+Sbjct 180 cgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattag 239
+ || |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 167 cgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttcattag 226
+
+Sbjct 240 gatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 227 gatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcc 286
+
+Sbjct 300 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaa 359
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 287 cccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaa 346
+
+Sbjct 360 cccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagga 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 347 cccatttctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgagga 406
+
+Sbjct 420 actattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcat 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 407 actattgtttgaaagtgaaaatgttattcctatcagtttctctataattatagttatcat 466
+
+Sbjct 480 ttc 482
+ |||
+Query 467 ttc 469
+
+444 912 19 F 436 1327 0 778 34 92.27
+Sbjct 19 tggctaaggagnttg-cttccttcccgcaacaagtggattccttgtgttgaattcgagtt 77
+ |||||| ||| ||| || |||||||| |||| ||| | |||| | ||||||||| ||
+Query 0 tggcta-gga-attgact-ccttcccg-aaca-ntggnt-cctt-ttttgaattcgnttt 52
+
+Sbjct 78 ggagcacggatttntgtaccgtgggcacggaaccctcccggatactatgatggacggtac 137
+ || || ||| ||| | ||||| || || ||| |||| || |||| |||||| ||||||
+Query 53 ggngcncggntttttnncccgtgngcncgnaacactccngg-tactntgatggncggtac 111
+
+Sbjct 138 tggacaatgtggaagcttcccattgttcggatgcaccgactccgctcaagtgttgaagga 197
+ |||||| | ||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 112 tggacattntggaagcttcc-attgttcggatgcaccgactccgctcaagtgttgaagga 170
+
+Sbjct 198 agttgaagaatgcaagaaggagtaccctggcgccttcattaggatcatcggattcgacaa 257
+ | ||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 171 anttgaagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcgacaa 230
+
+Sbjct 258 cacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagc 317
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 231 cacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagc 290
+
+Sbjct 318 ttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtggtca 377
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 291 ttaatcccctttctggaatattcagcgttgattattctggaacccatttctatgtggtca 350
+
+Sbjct 378 atgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtga 437
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 351 atgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtga 410
+
+Sbjct 438 aaatgttattcctatcagtttctct 462
+ |||||||||||||||||||||||||
+Query 411 aaatgttattcctatcagtttctct 435
+
+396 975 76 F 417 1362 0 687 42 89.67
+Sbjct 76 cc-ctggt-gg-acttncagcggagcttccat-gacccc-agccgttgcttt-cggacc- 129
+ || ||||| || ||| | |||| | || ||| |||||| ||||||| |||| ||||||
+Query 0 ccgctggttggggcttccggcggng-ttncattgaccccnagccgttncttttcggaccc 58
+
+Sbjct 130 agccgtcgtaagctggacgtggacc-aaccactgggttt-actgggc-tggt-cc-tctt 183
+ | || ||||||||||||||||| || | ||| ||||||| ||||| | ||| || ||||
+Query 59 acccttcgtaagctggacgtggncccanccantgggttttactggncctgggnccctctt 118
+
+Sbjct 184 -attng-tgg-tggactc-gccggaatta-t-ctacgactttgtcttcatc-gatg-aaa 235
+ ||| | ||| || |||| ||||| ||| | |||||||||||||||| || |||| |||
+Query 119 tattggntgggtgnactcnnccggatttaattctacgactttgtcttcntccgatggaaa 178
+
+Sbjct 236 atgccc-acgagcaattgcctaccaccgatt-actgaagacgtcaaattcaacgttgtta 293
+ |||||| |||||||||||||| ||||||||| ||||||||||||||||||||||||||||
+Query 179 atgccccacgagcaattgcctcccaccgatttactgaagacgtcaaattcaacgttgtta 238
+
+Sbjct 294 atctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgt 353
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgt 298
+
+Sbjct 354 tggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttg 413
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 tggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttg 358
+
+Sbjct 414 ttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 471
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 ttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 416
+
+419 975 53 F 419 1500 29 781 19 95.47
+Sbjct 53 ggttccacgtggggctacacccnccctggtggacttncagcggagcttccatgaccccag 112
+ ||||||||||||||||||| || | | |||||| || ||| || |||||||||||||||
+Query 29 ggttccacgtggggctacatccncgccggtggantttcagnggggcttccatgacccca- 88
+
+Sbjct 113 ccgttgctttcggaccagccgtcgtaagctggacgtggaccaaccactgggttt-actgg 171
+ ||||| |||||||||| ||||| ||| |||||||||| ||| ||||||||||| |||||
+Query 89 ccgttnctttcggaccnnccgtcttaanctggacgtggcccacccactgggttttactgg 147
+
+Sbjct 172 gctggtcctcttattngtggtggactcgccggaattatctacgactttgtcttcatcgat 231
+ ||||| ||||||||| ||||||||||||||||||||||||||||||||||||||||||||
+Query 148 gctggncctcttattggtggtggactcgccggaattatctacgactttgtcttcatcgat 207
+
+Sbjct 232 gaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgttgt 291
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 208 gaaaatgcccacgagcaattgcctaccaccgattactgaagacgtcaaattcaacgttgt 267
+
+Sbjct 292 taatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggcc 351
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 268 taatctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggcc 327
+
+Sbjct 352 gttggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtt 411
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 328 gttggatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtt 387
+
+Sbjct 412 tgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 471
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 388 tgttgttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaat 447
+
+426 988 0 F 424 1049 12 766 28 93.41
+Sbjct 0 tgc-gtcgaattggcnangga-gttactaccttctccgnaaacagggggncccctggtgt 57
+ ||| ||||||||| | | ||| ||| |||||||||||| || || || ||| || |||
+Query 12 tgccgtcgaattg-ctaaggaagttgctaccttctccgcaa-caatggatcccttg-tgt 68
+
+Sbjct 58 ngacttcgagtttggagcacgggatcttgtgtaccgtgagcacggaa-cactcccgg-at 115
+ || ||||||| ||||| ||| || ||||||||||||||||||||| ||||||||| ||
+Query 69 tgaantcgagtt-ggagcncgg-at-ttgtgtaccgtgagcacggaancactcccgggat 125
+
+Sbjct 116 actacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactctg 175
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 126 actacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactccg 185
+
+Sbjct 176 ctcaagtattgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattagga 235
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 186 ctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattagga 245
+
+Sbjct 236 tcatcggattcgacaacacccgtcaagtccagtgcatcagtttcattgcctacaagcccc 295
+ ||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 246 tcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccc 305
+
+Sbjct 296 caagcttcactgatgcttaaatccttttctggaatattcaatgttgactatccggaaccc 355
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 306 caagcttcactgatgcttaaatccttttctggaatattcaatgttgactatccggaaccc 365
+
+Sbjct 356 aattttgtatggtcaatgtnnatttaagtaattattttgccaaagtgaaaaaactgaagg 415
+ ||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 366 aattttgtatggtcaatgtaaatttaagtaattattttgccaaagtgaaaaaactgaagg 425
+
+Sbjct 416 tttgtttttc 425
+ ||||||||||
+Query 426 tttgtttttc 435
+
+433 1049 0 F 413 1297 4 630 72 82.98
+Sbjct 0 ccttgccnttnntgccgtcgaattgctaaggaagttgctaccttctccgcaacaatggat 59
+ || |||| || || || || | ||| | | || ||| | ||| ||||| | || |
+Query 4 ccctgcc-ttag-gc-gt-ga-tgncta-gna-gt-gctnc-ttc-ccgca-nagtgn-t 51
+
+Sbjct 60 cccttgtgttgaantcgagttggagcncggatttgtgtaccgtgagcacggaancactcc 119
+ || || ||||||| |||||| || || ||||||| | | ||||| ||||| || ||||||
+Query 52 cc-ttntgttgaa-tcgagt-ggngcncggattt-ttttccgtgngcacgnaa-cactcc 106
+
+Sbjct 120 cgggatactacgatggacggtactggacaatgtggaagcttccattgttcggatgcaccg 179
+ ||| | ||| ||||| |||||||||| ||||||||||||||||||||||||||||||||
+Query 107 cgg--tnctatgatggccggtactgga-aatgtggaagcttccattgttcggatgcaccg 163
+
+Sbjct 180 actccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttca 239
+ | |||| |||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 164 a-tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctggcgccttca 222
+
+Sbjct 240 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 223 ttaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctaca 282
+
+Sbjct 300 agcccccaagcttcactgatgcttaaatcc-ttttctggaatattcaatgttgactat-c 357
+ |||||||||||||||| || |||||| ||| ||||||||||||||| ||||| ||| |
+Query 283 agcccccaagcttcaccgaagcttaa-tcccctttctggaatattcagcgttgattattc 341
+
+Sbjct 358 cggaacccaattttgtatggtcaatgtaaatttaagtaattattttgccaaagtgaaaaa 417
+ |||||||| || | | ||||||||| ||||||||| |||||||| ||| | | ||||
+Query 342 tggaacccatttctatgtggtcaatgcaaatttaagaaattattt-gccga-cttaaaag 399
+
+Sbjct 418 actgaagg---t-ttgttt 432
+ ||| || | ||||||
+Query 400 t-tga-ggaactattgttt 416
+
+409 1049 24 F 401 1327 2 615 65 83.95
+Sbjct 24 gctaaggaagttg-ctaccttctccgcaacaatggatcccttgtgttgaantcgagttgg 82
+ |||| |||| ||| || ||||| ||| |||| ||| ||| || | ||||| ||| ||||
+Query 2 gcta-ggaa-ttgact-ccttc-ccg-aacantggntcc-tt-ttttgaattcgntttgg 54
+
+Sbjct 83 agcncggatttgtgtaccgtgagcacggaancactcccgggatactacgatggacggtac 142
+ || ||| ||| | ||||| || || || |||||| || |||| ||||| ||||||
+Query 55 ngcncggntttttnncccgtgngcncgnaa-cactccngg--tactntgatggncggtac 111
+
+Sbjct 143 tggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaa 202
+ |||||| | |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 112 tggacattntggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaa 171
+
+Sbjct 203 gttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaac 262
+ ||||||||||||||||||| ||||| |||||||||||||||||||||||||||||||||
+Query 172 nttgaagaatgcaagaaggantaccctggcgccttcattaggatcatcggattcgacaac 231
+
+Sbjct 263 acccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcactgatgct 322
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||| || |||
+Query 232 acccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagct 291
+
+Sbjct 323 taaatcc-ttttctggaatattcaatgttgactat-ccggaacccaattttgtatggtca 380
+ ||| ||| ||||||||||||||| ||||| ||| | |||||||| || | | ||||||
+Query 292 taa-tcccctttctggaatattcagcgttgattattctggaacccatttctatgtggtca 350
+
+Sbjct 381 atgtaaatttaagtaattattttgccaaagtgaaaaaactgaagg---t-ttgttt 432
+ ||| ||||||||| |||||||| ||| | | |||| ||| || | ||||||
+Query 351 atgcaaatttaagaaattattt-gccga-cttaaaagt-tga-ggaactattgttt 402
+
+409 1097 23 F 417 1806 1 721 35 91.53
+Sbjct 23 ctg-ttgctggnganaaa-gggaggaaaccgntccgatca-ggggntggtaga-ccagnt 78
+ ||| |||| || || ||| | || |||| || | |||||| | || || |||| | || |
+Query 1 ctgattgcnggtgaaaaaagagaagaaaacggtgcgatcaagaggatgatagaacaagat 60
+
+Sbjct 79 aa-ggctcttcggattttttcacgtccggtgcaaatttaccgtttgtgaatcttgatgan 137
+ || |||||||||||||||||||||| ||||||||||||| ||||||| |||||||||||
+Query 61 aaaggctcttcggattttttcacgtacggtgcaaatttaacgtttgtnaatcttgatgaa 120
+
+Sbjct 138 atagatatgtatgaacttgagatcaacggagggaagccggatttcgtaaactacacgatt 197
+ |||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 121 atagatatgtatgancttgagatcaacggagggaagccggatttcgtaaactacacgatt 180
+
+Sbjct 198 catggggtcggagacaaaggtgttgttttggtttttcccaagcaaaactttgcaaggatt 257
+ ||||||||||||| ||||||||||||||||||||| ||||||||||||||||||||||||
+Query 181 catggggtcggag-caaaggtgttgttttggttttncccaagcaaaactttgcaaggatt 239
+
+Sbjct 258 gtaagtgtagtgatgcctgaagaagnccttgcaaaactcaaggaggaggtgactnatatg 317
+ |||||||||||||||||||| |||| |||||||||||||||||||||||||||| |||||
+Query 240 gtaagtgtagtgatgcctgangaagaccttgcaaaactcaaggaggaggtgactaatatg 299
+
+Sbjct 318 attatataactttgtatcttcttcttgttgttatacataaatgctgtttttt-ac-tctt 375
+ ||||||||||||||||||| |||||||||||||||||||||||||||||||| || ||||
+Query 300 attatataactttgtatctccttcttgttgttatacataaatgctgttttttnacctctt 359
+
+Sbjct 376 tgtaatttcattatcg-aattgttgggaagcctatcaataaa-ttgtttgaactgttt 431
+ |||||||||||||||| ||||||||||||||||||||||||| |||||||| ||| ||
+Query 360 tgtaatttcattatcgnaattgttgggaagcctatcaataaaattgtttgacctgntt 417
+
+410 1100 33 F 408 1143 1 725 31 92.42
+Sbjct 33 aaaaggggnccccctgtgttgaattcgngttagggcccgggatttggtgtnccc-ngngc 91
+ ||||||| ||| || |||||||||| ||| | |||| ||||||| ||| ||| | ||
+Query 1 aaaagggntccc--tg-gttgaattcg-gttngngccccggatttg-tgtncccgtgngc 55
+
+Sbjct 92 cccggaancactncccggatactac-gatgg-ccggtactggacaatgtggangcttcc- 149
+ ||||||| ||| ||| | |||| | ||||| |||||||||| ||||||||| | ||||
+Query 56 cccggaaccac-ccccnggtacttccgatggaccggtactggccaatgtggaagnttccc 114
+
+Sbjct 150 attgtccggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 208
+ ||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 115 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 174
+
+Sbjct 209 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 268
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 175 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 234
+
+Sbjct 269 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacat 328
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 235 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacan 294
+
+Sbjct 329 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 388
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 295 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 354
+
+Sbjct 389 agacaatttctatcggattgtcaaatgtctgatttatgaatatnttatttatat 442
+ ||||||||||||||||||||||||||||||||||||||||||| | ||||||||
+Query 355 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtnatttatat 408
+
+442 1100 1 F 440 1151 16 789 31 92.97
+Sbjct 1 ccaaatggctaaggaagttgctcccttcccng-aa-aaggggnccccctgtgtt-gaatt 57
+ || |||||||| |||||||||| ||||| | | || ||| || || |||||| |||||
+Query 16 ccgaatggcta-ggaagttgcttccttctccgcaacaagtggatcc-ttgtgtttgaatt 73
+
+Sbjct 58 cgngttagggcc-cgggatttggtgtncccngngccccggaancactncccggatactac 116
+ || ||||| ||| ||| ||||| ||| || | || | |||| |||| ||||||||||||
+Query 74 cgagttagagccacgg-atttg-tgtaccgtgagcac-ggaaacact-cccggatactac 129
+
+Sbjct 117 gatggccggtactggacaatgtggangcttccattgtccggatgcaccgactccgctcaa 176
+ ||||| ||||||||||||||||||| ||||||||||| ||||||||||||||||||||||
+Query 130 gatggacggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaa 189
+
+Sbjct 177 gtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatc 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 190 gtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatc 249
+
+Sbjct 237 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 250 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 309
+
+Sbjct 297 ttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcat 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 310 ttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcat 369
+
+Sbjct 357 ttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 370 ttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 429
+
+Sbjct 417 ctgatttatgaatatnttatttatat 442
+ ||||||||||||||| | ||||||||
+Query 430 ctgatttatgaatatgtaatttatat 455
+
+440 1100 3 F 442 1230 71 792 30 93.20
+Sbjct 3 aaatggctaaggaagttg-ctcccttcccng-aa-aaggggnccccctgtgttgaattcg 59
+ || ||||||||||||||| |||| ||| | | || || || ||| |||||||||||||
+Query 71 aattggctaaggaagttgactccnttctcngcaacaaatggntcccttgtgttgaattcg 130
+
+Sbjct 60 ngttagggcccgggatttggtgtncccngngccccggaancactncccggatactacgat 119
+ |||||||| ||| ||||| ||| || | |||| |||| |||| |||||||||||||||
+Query 131 agttagggcncgg-atttg-tgtcccgtgagccc-ggaaacact-cccggatactacgat 186
+
+Sbjct 120 gg-ccggtactggacaat-gtggangcttcc-attgtccggatgcaccgactccgctcaa 176
+ || ||||||||||||||| ||||| |||||| ||||| ||||||||||||||||||||||
+Query 187 ggaccggtactggacaattgtggaagcttcccattgttcggatgcaccgactccgctcaa 246
+
+Sbjct 177 gtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatc 236
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 247 gtgttgaaggaagttgaagaatgcaagaaggagtacccgggcgccttcattaggatcatc 306
+
+Sbjct 237 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 296
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 307 ggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaagcccccaagc 366
+
+Sbjct 297 ttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcat 356
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 367 ttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctgctcatttcat 426
+
+Sbjct 357 ttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 416
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 427 ttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 486
+
+Sbjct 417 ctgatttatgaatatnttatttatat 442
+ ||||||||||||||| | ||||||||
+Query 487 ctgatttatgaatatgtaatttatat 512
+
+413 1100 26 F 414 1360 1 704 41 90.08
+Sbjct 26 ttcccngaaa-a--ggggnccccctg-tgttgaattcg-ngttagg-gcccgggatttgg 79
+ ||||| |||| | ||| ||| || |||| ||| || ||| || || ||| |||||
+Query 1 ttccc-gaaacaantgggatcccttggtgttnaat-cggagtttggngcacgg-atttg- 57
+
+Sbjct 80 tgtncccngngccccggaancactncccggatactacgatggccggtactggacaatgtg 139
+ ||| || | || | | || |||| || |||||||||||||| || ||||||||||||||
+Query 58 tgtnccgtgagcacggnaaccact-ccnggatactacgatggacgntactggacaatgtg 115
+
+Sbjct 140 gangcttccattgtccggatgcaccgactccgctcaagtgttgaaggaagttgaagaatg 199
+ || ||||||||||| |||||||||||||||||||||||| |||||||||||||| |||||
+Query 116 gaagcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatg 175
+
+Sbjct 200 caagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagt 259
+ |||||||| ||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 176 caagaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagt 235
+
+Sbjct 260 ccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 319
+ |||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 ccaatgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 295
+
+Sbjct 320 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 379
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 296 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 355
+
+Sbjct 380 ctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatnttattt 438
+ ||||||||||||||||||||||||| ||||||||||||||||||||| |||| | ||||
+Query 356 ctctttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+444 1120 0 F 439 1297 36 772 37 91.62
+Sbjct 0 cttcccgcaacaggggtccctgggttgaattngngttgggncccggntttgtttcccgtg 59
+ ||||||||| || | ||| | ||||||| | || || | ||| ||| ||||| |||
+Query 36 cttcccgca-nagtgntccttntgttgaat-cgagt-ggngcncggatttttttcc-gtg 91
+
+Sbjct 60 gncccggaacccncccggntnctatgntggccggtnctggccaatgtggaagct-ccatt 118
+ | || ||| | ||||| | ||||| |||||||| |||| |||||||||||| |||||
+Query 92 ngcacgnaacactcccgg-tnctatgatggccggtactgg-aaatgtggaagcttccatt 149
+
+Sbjct 119 gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtn 178
+ ||||||||||||||| |||| ||||||||||||||||||||||||||||||||||||||
+Query 150 gttcggatgcaccga-tccgntcaagtgttgaaggaagttgaagaatgcaagaaggagta 208
+
+Sbjct 179 ccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 ccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 268
+
+Sbjct 239 tttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaatattca 297
+ |||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||
+Query 269 tttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattca 328
+
+Sbjct 298 gcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattatttgc 357
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 329 gcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttgc 388
+
+Sbjct 358 cgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctc 417
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 389 cgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttctc 448
+
+Sbjct 418 tntaattatagttatcatttcatttc 443
+ | ||||||||||||||||||||||||
+Query 449 tataattatagttatcatttcatttc 474
+
+419 1120 0 F 419 1327 17 715 41 90.21
+Sbjct 0 cttcccgcaaca-ggggtccctgggttgaattngngttgggncccggntttgtttcccgt 58
+ ||||||| |||| || ||| | ||||||| | |||| | ||| ||| | |||||
+Query 17 cttcccg-aacantggntcc-ttttttgaattcgntttggngcncggntttttnncccgt 74
+
+Sbjct 59 ggncccggaacccncccggntnctatgntggccggtnctggccaatgtggaagct-ccat 117
+ | | || ||| | || || | || || ||| |||| |||| || | |||||||| ||||
+Query 75 gngcncgnaacactccngg-tactntgatggncggtactggacattntggaagcttccat 133
+
+Sbjct 118 tgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagt 177
+ |||||||||||||||||||||||||||||||||||||| ||||||||||||||||||| |
+Query 134 tgttcggatgcaccgactccgctcaagtgttgaaggaanttgaagaatgcaagaaggant 193
+
+Sbjct 178 nccctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 237
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 194 accctggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatca 253
+
+Sbjct 238 gtttcattgcctacaagcccccaag-ttcaccgaagcttaatcccctttctggaatattc 296
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 254 gtttcattgcctacaagcccccaagcttcaccgaagcttaatcccctttctggaatattc 313
+
+Sbjct 297 agcgttgattattctggaacccntttctatgtggtcaatgcaaatttaagaaattatttg 356
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 314 agcgttgattattctggaacccatttctatgtggtcaatgcaaatttaagaaattatttg 373
+
+Sbjct 357 ccgacttnaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 416
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 374 ccgacttaaaagttgaggaactattgtttgaaagtgaaaatgttattcctatcagtttct 433
+
+Sbjct 417 ct 418
+ ||
+Query 434 ct 435
+
+409 1143 0 F 409 1151 47 734 28 93.15
+Sbjct 0 caa-aag-ggntccctg-gtt-gaattcg-gttngngccccggatttgtgtncccgtgng 54
+ ||| ||| || ||| || ||| ||||||| ||| | ||| ||||||||||| || ||| |
+Query 47 caacaagtggatccttgtgtttgaattcgagttagagccacggatttgtgtacc-gtgag 105
+
+Sbjct 55 ccccggaaccacccccnggtacttccgatggaccggtactggccaatgtggaagnttccc 114
+ | | |||| ||| ||| | |||| | ||||||| |||||||| ||||||||||| ||||
+Query 106 cac-ggaaacactcccggatactac-gatggac-ggtactggacaatgtggaagcttcc- 162
+
+Sbjct 115 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 174
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 163 attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagga 221
+
+Sbjct 175 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 234
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 222 gtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcat 281
+
+Sbjct 235 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacan 294
+ |||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 282 cagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacat 341
+
+Sbjct 295 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 354
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 342 tcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatg 401
+
+Sbjct 355 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtnatttatat 408
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||||
+Query 402 agacaatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 455
+
+407 1143 2 F 407 1230 106 742 24 94.10
+Sbjct 2 aaagggntccct-g-gttgaattcg-gttngngccccggatttgtgtncccgtgngcccc 58
+ ||| || ||||| | |||||||||| ||| | || | |||||||||| |||||| ||||
+Query 106 aaatggntcccttgtgttgaattcgagttagggcnc-ggatttgtgt-cccgtgagccc- 163
+
+Sbjct 59 ggaaccacccccnggtacttccgatggaccggtactggccaat-gtggaagnttcccatt 117
+ |||| ||| ||| | |||| | |||||||||||||||| |||| ||||||| ||||||||
+Query 164 ggaaacactcccggatactac-gatggaccggtactggacaattgtggaagcttcccatt 221
+
+Sbjct 118 gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta 177
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 222 gttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagta 281
+
+Sbjct 178 cccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 237
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 282 cccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcag 341
+
+Sbjct 238 tttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaacantct 297
+ ||||||||||||||||||||||||||||||||||||||||| |||||||||||||| |||
+Query 342 tttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattct 401
+
+Sbjct 298 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgaga 357
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 402 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgaga 461
+
+Sbjct 358 caatttctatcggattgtcaaatgtctgatttatgaatatgtnatttatat 408
+ |||||||||||||||||||||||||||||||||||||||||| ||||||||
+Query 462 caatttctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 512
+
+405 1143 0 F 405 1360 10 681 43 89.38
+Sbjct 0 caaaagggntccct-ggt-t-gaattcgg--ttng-ngccccggatttgtgtncccgtgn 53
+ ||| ||| ||||| ||| | ||| ||| || | || | |||||||||| || |||
+Query 10 caantgggatcccttggtgttnaat-cggagtttggngcac-ggatttgtgtncc-gtga 66
+
+Sbjct 54 gccccggaaccacccccnggtacttccgatggaccggtactggccaatgtggaagnttcc 113
+ || | | |||||| || | |||| | ||||||| | |||||| ||||||||||| ||||
+Query 67 gcacggnaaccactccnggatactac-gatggac-gntactggacaatgtggaagcttcc 124
+
+Sbjct 114 cattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaagg 173
+ ||||| |||||||||||||||||||||||| |||||||||||||| |||||||||||||
+Query 125 -attgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgcaagaagg 183
+
+Sbjct 174 agtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgca 233
+ ||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 184 ngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtccaatgca 243
+
+Sbjct 234 tcagtttcattgcctacaagcccccaagcttcaccgaagcttaatntcttttctaaaaca 293
+ || |||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 244 tcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaaca 303
+
+Sbjct 294 ntcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttat 353
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 304 ttcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttat 363
+
+Sbjct 354 gagacaatttctatcggattgtcaaatgtctgatttatgaatatgtnattt 404
+ ||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 364 gagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+456 1151 0 F 463 1230 50 844 25 94.56
+Sbjct 0 cctg-ccnttagtgncgccg-aat-ggcta-ggaagttg-cttccttctccgcaacaagt 54
+ |||| || ||||| | || ||| ||||| |||||||| || | ||||| ||||||| |
+Query 50 cctggcctttagtnccntcggaattggctaaggaagttgactccnttctcngcaacaaat 109
+
+Sbjct 55 ggatcc-ttgtgtttgaattcgagttagagccacggatttgtgtaccgtgagcacggaaa 113
+ || ||| ||||||| ||||||||||||| || ||||||||||| |||||||| ||||||
+Query 110 ggntcccttgtgtt-gaattcgagttagggc-ncggatttgtgtcccgtgagcccggaaa 167
+
+Sbjct 114 cactcccggatactacgatggac-ggtactggacaat-gtggaagcttcc-attgttcgg 170
+ ||||||||||||||||||||||| ||||||||||||| |||||||||||| |||||||||
+Query 168 cactcccggatactacgatggaccggtactggacaattgtggaagcttcccattgttcgg 227
+
+Sbjct 171 atgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccggg 230
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 228 atgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacccggg 287
+
+Sbjct 231 cgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcat 290
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 288 cgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcat 347
+
+Sbjct 291 tgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaa 350
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 348 tgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaa 407
+
+Sbjct 351 ttatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaattt 410
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 408 ttatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaattt 467
+
+Sbjct 411 ctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 455
+ |||||||||||||||||||||||||||||||||||||||||||||
+Query 468 ctatcggattgtcaaatgtctgatttatgaatatgtaatttatat 512
+
+412 1151 40 F 414 1360 1 742 28 93.22
+Sbjct 40 ttctccgcaacaagtgg-atcc-ttg-tgtttgaattcg-agttag-agccacggatttg 94
+ ||| ||| ||||| ||| |||| ||| |||| ||| || |||| | || |||||||||
+Query 1 ttc-ccgaaacaantgggatcccttggtgttn-aat-cggagtttggngc-acggatttg 56
+
+Sbjct 95 tgtaccgtgagcacggaaac-actcccggatactacgatggacggtactggacaatgtgg 153
+ ||| |||||||||||| ||| ||||| ||||||||||||||||| |||||||||||||||
+Query 57 tgtnccgtgagcacggnaaccactccnggatactacgatggacgntactggacaatgtgg 116
+
+Sbjct 154 aagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgc 213
+ ||||||||||||| |||||||||||||||||||||||| |||||||||||||| ||||||
+Query 117 aagcttccattgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatgc 176
+
+Sbjct 214 aagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtc 273
+ ||||||| ||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 177 aagaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagtc 236
+
+Sbjct 274 caatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttc 333
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 237 caatgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttc 296
+
+Sbjct 334 taaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttc 393
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 297 taaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttctttttc 356
+
+Sbjct 394 tctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 451
+ |||||||||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 357 tctttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+436 1210 50 F 431 1516 1 786 27 93.77
+Sbjct 50 cccnatcgcaaccggttccattgttggngccnaacatcttagctgggaggagctttctct 109
+ ||| |||| || ||||| ||||||| | ||| | |||||| ||| |||||||| | ||
+Query 1 ccccatcg-aancggtttcattgttngngccncan-tcttag-tgg-aggagctt-ccct 55
+
+Sbjct 110 gggagcctcccatgaatccccgccgtggcttt-cggaccagcggtggtgagctggacat- 168
+ | ||||||| ||||||||||||| | ||||| ||| ||| ||||| ||||||| ||||
+Query 56 tg-agcctcc-atgaatccccgccttngcttttcggnccancggtgttgagctgnacatn 113
+
+Sbjct 169 ggcccaaccactgggtctactgggccggacctctcgtcggcggtggaatcgctggactca 227
+ || ||||||||||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 114 ggaccaaccactggntctactgggccggacctctcgtcggcggtggaatcgctggactca 173
+
+Sbjct 228 tctacgaagttttcttcatcaacaccacacacgagcagctcccaaccacagactactgaa 287
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 tctacgaagttttcttcatcaacaccacacacgagcagctcccaaccacagactactgaa 233
+
+Sbjct 288 ttaatctctctttttctctcttgtgtaattttattcgactttgaatttgaattttaatgt 347
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 234 ttaatctctctttttctctcttgtgtaattttattcgactttgaatttgaattttaatgt 293
+
+Sbjct 348 ctttttaatttccgtttgtgtaatttcgaatcatcaaggggtttatgatcgttcgatctt 407
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 ctttttaatttccgtttgtgtaatttcgaatcatcaaggggtttatgatcgttcgatctt 353
+
+Sbjct 408 ttagatgaatccttgtccgttggtttcaagagtggccattgcaatttcgactatataatg 467
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 354 ttagatgaatccttgtccgttggtttcaagagtggccattgcaatttcgactatataatg 413
+
+Sbjct 468 tgaattatgtatcaatct 485
+ ||||||||||||||||||
+Query 414 tgaattatgtatcaatct 431
+
+443 1226 5 F 421 1296 26 732 44 89.81
+Sbjct 5 ggtggaaggattaagttccngaagggttttttaccgntgntgaaacccgggacccngttt 64
+ |||||| | || | ||||| || | |||| || | || ||||||| | |||| | ||
+Query 26 ggtgga-g-atna-gttcc-ga-g-nttttn-ac-g-tgttgaaacc-g-gacc--gntt 72
+
+Sbjct 65 gggggaaaagcttcgnggccattacccgggaggaccggtttnacagtatccagccncaa- 124
+ || | ||| |||||| | | || |||| |||| ||||| |||||||| || | |||
+Query 73 ggng-aaa-gcttcg-nncngt-actcggg-ggac-ggtttaacagtatc-agtctcaaa 125
+
+Sbjct 125 ctggatgccaggatgc-gtcgttgccaggtcaatggtgatccaagatgagagaggcttaa 182
+ ||| |||| || |||| |||||||| |||||||||||||| |||||||||||||||||||
+Query 126 ctg-atgcaag-atgccgtcgttgc-aggtcaatggtgatacaagatgagagaggcttaa 182
+
+Sbjct 183 tctgtgtccactcnccagtctggaagattgaatcaaagggatgcaaatctttcttaattt 242
+ |||||||| |||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 183 tctgtgtc-actcaccagtctggaagattgaatcaaagggatgcaaatctttcttaattt 241
+
+Sbjct 243 cttaatttttatcttcttgggttgctttttttttatgncaccacgattaaagctttttag 302
+ ||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||
+Query 242 cttaatttttatcttcttgggttgctttttttttatgacaccacgattaaagctttttag 301
+
+Sbjct 303 gcatataaagttgtaagagttgtgtgtttgatatcctggctaatgagcgagctgagtatg 362
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 302 gcatataaagttgtaagagttgtgtgtttgatatcctggctaatgagcgagctgagtatg 361
+
+Sbjct 363 gggatcaagagagaaaaaccgtgttggcctttggctgtgtgtagatattttgtataatct 422
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 362 gggatcaagagagaaaaaccgtgttggcctttggctgtgtgtagatattttgtataatct 421
+
+Sbjct 423 tgtgttgataaaagataatatcatc 447
+ |||||||||||||||||||||||||
+Query 422 tgtgttgataaaagataatatcatc 446
+
+414 1230 95 F 414 1360 1 735 31 92.51
+Sbjct 95 ttctcngcaacaaatggn-tcccttg-tgttgaattcg-agttagg-gcncggatttgtg 150
+ ||| | | ||||| ||| ||||||| |||| ||| || |||| || || ||||||||||
+Query 1 ttc-ccgaaacaantgggatcccttggtgttnaat-cggagtttggngcacggatttgtg 58
+
+Sbjct 151 tcccgtgagcccggaaac-actcccggatactacgatggaccggtactggacaattgtgg 209
+ | |||||||| ||| ||| ||||| |||||||||||||||| | ||||||||||| ||||
+Query 59 tnccgtgagcacggnaaccactccnggatactacgatggac-gntactggacaat-gtgg 116
+
+Sbjct 210 aagcttcccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatg 269
+ |||||||| ||||| |||||||||||||||||||||||| |||||||||||||| |||||
+Query 117 aagcttcc-attgtncggatgcaccgactccgctcaagtnttgaaggaagttgangaatg 175
+
+Sbjct 270 caagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagt 329
+ |||||||| ||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 176 caagaaggngtacccgggcgccttcattnggatcatcggattcgacaacacccgtcaagt 235
+
+Sbjct 330 ccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 389
+ |||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 236 ccaatgcatcngtttcattgcctacaagcccccaagcttcaccgaagcttaatttctttt 295
+
+Sbjct 390 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 449
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 296 ctaaaacattcttatgaattatctctgctcatttcatttcctattgtctgtgttcttttt 355
+
+Sbjct 450 ctctttatgagacaatttctatcggattgtcaaatgtctgatttatgaatatgtaattt 508
+ ||||||||||||||||||||||||| ||||||||||||||||||||| |||||| ||||
+Query 356 ctctttatgagacaatttctatcggnttgtcaaatgtctgatttatgnatatgtgattt 414
+
+404 1268 97 F 411 1627 3 746 23 94.36
+Sbjct 97 gaagagaggaactncaat-gttaatca-tcaaagnga-gtaaganaa-tngcag-ttcta 151
+ ||||| || |||| |||| |||||||| |||||| || |||||| || | |||| |||||
+Query 3 gaaga-agaaactacaatagttaatcaatcaaagagaagtaagagaaatggcagattcta 61
+
+Sbjct 152 actgtggatgtggctcntcctgcaaatgtggtgactcttgcagttgcgagaagaactaca 211
+ |||||||||||||||| |||||||||| ||||||||||||||||||||||||||||||||
+Query 62 actgtggatgtggctcctcctgcaaatntggtgactcttgcagttgcgagaagaactaca 121
+
+Sbjct 212 acaaggagtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaact 271
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 122 acaaggagtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaact 181
+
+Sbjct 272 gttgatgaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatg 331
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 182 nttgatgaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatg 241
+
+Sbjct 332 tgttttatgctaagagatgtgtgtgtgttgttggaataaagacgtgaccgttgtgttgcg 391
+ |||||||||||||||||||||||||| |||||||||||||| ||||||||||||||||||
+Query 242 tgttttatgctaagagatgtgtgtgtnttgttggaataaaggcgtgaccgttgtgttgcg 301
+
+Sbjct 392 tatcaactctcttaagctttgacttttcccagctttgtattttcctatgtatggtaatng 451
+ ||||||||||||||||||||||||||||||||||||||||||||| |||||||||||| |
+Query 302 tatcaactctcttaagctttgacttttcccagctttgtattttccnatgtatggtaatgg 361
+
+Sbjct 452 tgtgattgtgtaatg-ttttcatatgtaac-gtaaaaaaaatatttat-gtg 500
+ ||||||||| ||||| |||||||||||||| ||||||||||||||| | |||
+Query 362 tgtgattgtntaatggttttcatatgtaaccgtaaaaaaaatattttttgtg 413
+
+395 1268 101 F 405 1747 0 713 29 92.75
+Sbjct 101 agaggaactncaat-gttaatca-tcaaagnga-gtaaganaa-tngcag-ttctaactg 155
+ ||| |||| |||| |||||||| |||||| || |||||| || | |||| |||||||||
+Query 0 aga--aactacaatagttaatcaatcaaagagaagtaagagaaatggcagattctaactg 57
+
+Sbjct 156 tggatgtggctcntcctgcaaatgtggtgactcttgcagttgcgagaagaactacaacaa 215
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 58 tggatgtggctcctcctgcaaatgtggtgactcttgcagttgcgagaagaactacaacaa 117
+
+Sbjct 216 ggagtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaactgttg 275
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||
+Query 118 ggagtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaactnttg 177
+
+Sbjct 276 atgaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatgtgtt 335
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 178 atgaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatgtgtt 237
+
+Sbjct 336 ttatgctaagagatgtgtgtgtgttgttggaataaagacgtgaccgttgtgttgcgtatc 395
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 238 ttatgctaagagatgtgtgtgtgttgttggaataaagacgtgaccgttgtgttgcgtatc 297
+
+Sbjct 396 aactctcttaagctttgacttttcccagcttt-gtattttcctatg-tatgg-taatng- 452
+ |||||||||||||||||||||||||||||||| |||||| || ||| ||||| |||| |
+Query 298 aactctcttaagctttgacttttcccagcttttgtatttncccatggtatgggtaatngg 357
+
+Sbjct 453 tgtgatt-gtgtaa-tgttttcata-tgtaac-gtaaaaaaaatattt 495
+ ||||||| |||||| ||||||| | || ||| | |||||||| ||||
+Query 358 tgtgatttgtgtaanngttttcanaatggaaccgnaaaaaaaa-attt 404
+
+451 1294 10 F 463 1786 0 740 58 87.31
+Sbjct 10 ccgggn-cca-ctngcgggtnna-tcaact-tnaagcaatggcatcnatnnccatg-ccg 64
+ ||| | ||| || ||| || | |||||| | ||||||||||||| || ||||| |||
+Query 0 ccgagagccaactagcgagtagaatcaactatcaagcaatggcatcgatgaccatgaccg 59
+
+Sbjct 65 ct-ccttcttcccggcc-tcgccaaggt-ccntnagccaccgncg-ncgaaggct-tccg 119
+ || |||| ||||||||| |||||||||| || | |||||||| || |||||||| ||||
+Query 60 ctaccttnttcccggccgtcgccaaggttccctcagccaccggcggacgaaggctctccg 119
+
+Sbjct 120 tagtcag-gcctccacgagcgacaacacacccagcttagaagtcaaggaacagagcagca 178
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 tagtcagagcctccacgagcgacaacacacccagcttagaagtcaaggaacagagcagca 179
+
+Sbjct 179 ccacaatgaggagggacctcatgttcacgg-tgcagctgcagcggtttgttctttggcta 237
+ |||||||||||||||||||||||||||||| |||||||||| |||||||| |||||||||
+Query 180 ccacaatgaggagggacctcatgttcacggctgcagctgcancggtttgtnctttggcta 239
+
+Sbjct 238 aggtagccatggctgaagaagaagagcccaagcgagggacagaggcggccaagaagaaat 297
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 240 aggtagccatggctgaagaagaagagcccaagcnagggacagaggcggccaagaagaaat 299
+
+Sbjct 298 acgcacaagtttgtgtcacnaat--ntacggccaagatctgccgctactgattcaacaac 355
+ |||||||||||||| |||| ||| |||||||||||||||||| |||||||||||||||
+Query 300 acgcacaagtttgtttcac-aatgcctacggccaagatctgccggtactgattcaacaac 358
+
+Sbjct 356 ctaccttctgcatgtctatctctctctttcaa-tttcggtaaattttctcaa-ttaagtt 413
+ | ||||||| |||| ||||| || ||| || |||||||||||||| | || |||||||
+Query 359 ccaccttcttgatgtttatctnnctnttttaaatttcggtaaatttt-tnaaattaagtt 417
+
+Sbjct 414 tggtctgtaatcgtatatttgatcatcaatttaccaaaagccctttt 460
+ ||| ||| ||||| || |||| | || ||||| ||||| ||| ||||
+Query 418 tgggctgnaatcgnatntttg-tnat-aatttnccaaaggccttttt 462
+
+429 1297 21 F 436 1327 0 754 37 91.45
+Sbjct 21 tgnctagnagt-g-ctncttcccgcanagtg-ntccttntgttgaat-cgagt-ggngcn 75
+ || |||| | | | || ||||||| | | || ||||| | |||||| || | || ||
+Query 0 tggctaggaattgactccttcccgaacantggntcctt-ttttgaattcgntttggngcn 58
+
+Sbjct 76 cggatttttttcc-gtgngcacgnaacactcccggtnctatgatggccggtactggaaat 134
+ ||| ||||| || ||| || || |||||||| ||| || |||||| |||||||||| ||
+Query 59 cggntttttnncccgtgngcncgnaacactccnggtactntgatggncggtactggacat 118
+
+Sbjct 135 g-tggaagcttccattgttcggatgcaccga-tccgntcaagtgttgaaggaagttgaag 192
+ ||||||||||||||||||||||||||||| |||| |||||||||||||||| ||||||
+Query 119 tntggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaanttgaag 178
+
+Sbjct 193 aatgcaagaaggagtaccctggcgccttcattaggatcatcggattcgacaacacccgtc 252
+ ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||
+Query 179 aatgcaagaaggantaccctggcgccttcattaggatcatcggattcgacaacacccgtc 238
+
+Sbjct 253 aagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatccc 312
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 aagtccaatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatccc 298
+
+Sbjct 313 ctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaat 372
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 299 ctttctggaatattcagcgttgattattctggaacccatttctatgtggtcaatgcaaat 358
+
+Sbjct 373 ttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgtta 432
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 359 ttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtgaaaatgtta 418
+
+Sbjct 433 ttcctatcagtttctct 449
+ |||||||||||||||||
+Query 419 ttcctatcagtttctct 435
+
+445 1362 1 F 425 1500 52 732 46 89.43
+Sbjct 1 cgctggttggggcttccggcggngttncattgaccccnagccgttncttttcggacccac 60
+ ||| ||| || ||| | || || ||| |||||| | ||||| ||| ||||||| |
+Query 52 cgccggt-ggantttcagnggggcttccat-gacccc-a-ccgttnctt-tcggaccnnc 106
+
+Sbjct 61 ccttcgtaagctggacgtggncccanccantgggttttactggncctgggnccctcttta 120
+ | | | ||| |||||||||| |||| ||| ||||||||||||| | ||| || |||| |
+Query 107 cgt-cttaanctggacgtgg-cccacccactgggttttactgggc-tggn-cc-tctt-a 160
+
+Sbjct 121 ttggntgggtgnactcnnccggatttaattctacgactttgtcttcntccgatggaaaat 180
+ |||| ||| || |||| ||||| ||| | |||||||||||||||| || |||| |||||
+Query 161 ttgg-tgg-tggactc-gccggaatta-t-ctacgactttgtcttcatc-gatg-aaaat 213
+
+Sbjct 181 gccccacgagcaattgcctcccaccgatttactgaagacgtcaaattcaacgttgttaat 240
+ |||| |||||||||||||| ||||||||| ||||||||||||||||||||||||||||||
+Query 214 gccc-acgagcaattgcctaccaccgatt-actgaagacgtcaaattcaacgttgttaat 271
+
+Sbjct 241 ctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttg 300
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 272 ctgatgaatttttcgtgatttgcttttttaatttgcatcgtaatgggtttctggccgttg 331
+
+Sbjct 301 gatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgtt 360
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 332 gatcatttttagatgaatctttgtctattgattgatcatttatgtgtctttgggtttgtt 391
+
+Sbjct 361 gttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataact 420
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 392 gttggagttgtaatatctctggaaggcttttgtgcaattgtattgtacggtttaataact 451
+
+Sbjct 421 ataattgagaaaaccagggtatgtg 445
+ ||||||||||||||||||| |||||
+Query 452 ataattgagaaaaccagggaatgtg 476
+
+477 1620 0 F 478 1796 6 832 41 91.41
+Sbjct 0 agagagaccaaaaagagatcggaagagatggcttctacctccgcgatgtcattggtcaca 59
+ |||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||
+Query 6 agagagaccaaaaagagatcggaagagatggcttctacctccgcaatgtcattggtcaca 65
+
+Sbjct 60 ccacttaaccagacccgttcgtntcctttcctcaagccattacctctgaaaccatccaag 119
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 66 ccacttaaccagacccgttcgtntcctttcctcaagccattacctctgaaaccatccaag 125
+
+Sbjct 120 gctttggttgcaactggaggcagagcacagaggcttcaagttaaggccctcaagatggac 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 126 gctttggttgcaactggaggcagagcacagaggcttcaagttaaggccctcaagatggac 185
+
+Sbjct 180 aaggctttgaccggtatctccgcggctgctcttactgcttcgatggtgattccggagata 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 186 aaggctttgaccggtatctccgcggctgctcttactgcttcgatggtgattccggagata 245
+
+Sbjct 240 gctgaagctgctggttctggaatctntccttccctcaagaatttnttgctcagcattgct 299
+ ||||||||||||||||||||||||| |||||||||||||||||| |||||||||||||||
+Query 246 gctgaagctgctggttctggaatctntccttccctcaagaatttnttgctcagcattgct 305
+
+Sbjct 300 ttctggtggcctcgtcctcacttgtcatcattggtgtcgtcgtcggcgtctccaactttt 359
+ | |||||||||||||||||||| || |||||||||||||||||||| |||| |||||||
+Query 306 t-ctggtggcctcgtcctcact-gtnatcattggtgtcgtcgtcggngtcttcaacttt- 363
+
+Sbjct 360 gaccc-tgtcaagagaacctaagncctata-taatctttntttac-atnaataatgnaat 416
+ |||| ||||||||| ||||||| |||||| || ||||| ||||| || | || || ||
+Query 364 nacccctgtcaagagnacctaagacctataata-tctttttttaccatcattattggaaa 421
+
+Sbjct 417 ncng-tctncctcctg-ggaattcgnt-naaattttgcagnaatnnacttttttgggnaa 473
+ | | | ||||||| |||||||| | |||| ||| || ||| || |||| ||| ||
+Query 422 cctggnccccctcctgnggaattcggttcaaatgttgnagcaattnacctttt-gggnaa 480
+
+Sbjct 474 aag 476
+ |||
+Query 481 aag 483
+
+446 1620 20 F 439 1937 0 762 41 90.73
+Sbjct 20 ggaagagatggcttctacctccgcgatgtcattggtcacaccacttaaccagacccgttc 79
+ ||||| ||||||||| ||||||||||||||| ||| ||||||||||||||||||||||||
+Query 0 ggaagngatggcttcnacctccgcgatgtcantggncacaccacttaaccagacccgttc 59
+
+Sbjct 80 gtntcctttcctcaagccattacctctgaaaccatccaaggctttggttgcaactggagg 139
+ || ||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 gtctcctttccttaagccattacctctgaaaccatccaaggctttggttgcaactggagg 119
+
+Sbjct 140 cagagcacagaggcttcaagttaaggccctcaagatggacaaggctttgaccggtatctc 199
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 cagagcacagaggcttcaagttaaggccctcaagatggacaaggctttgaccggtatctn 179
+
+Sbjct 200 cgcggctgctcttactgcttcgatggtgattccggagatagctgaagctgctggttctgg 259
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 180 cgcggctgctcttactgnttcgatggtgattccggagatagctgaagctgctggttctgg 239
+
+Sbjct 260 aatctntccttccctcaagaatttnttgctcagcattgctttctggtggcctcgtcctca 319
+ ||||| |||||||||||||||||| |||||||||||| ||| ||||||||||| |||||
+Query 240 aatctntccttccctcaagaatttnttgctcagcattnctt-ctggtggcctcnncctca 298
+
+Sbjct 320 cttgtcatcattggtgtcgtcgtcggcgtctccaacttttgaccctgtcaagagaaccta 379
+ || |||||||||||||||||||||||||||||||||||| |||||||||||| |||||||
+Query 299 ct-gtcatcattggtgtcgtcgtcggcgtctccaacttt-gaccctgtcaagngaaccta 356
+
+Sbjct 380 agncctatataatc-tttntttacatnaataatgnaatncng-tctncctcctg-ggaat 436
+ || |||||||| || ||| || |||| | || || ||| | | ||| ||| ||| ||| |
+Query 357 agncctatata-tcntttctt-acatcattattgtaat-ctggtct-ccttctgtgga-t 411
+
+Sbjct 437 tcgntnaaattttgcagnaatnnactttt 465
+ ||| | || | ||||| ||| ||||||
+Query 412 tcgttcaa-tggtgcag-aatgaactttt 438
+
+403 1627 8 F 408 1747 0 754 19 95.31
+Sbjct 8 agaaactacaatagttaatcaatcaaagagaagtaagagaaatggcagattctaactgtg 67
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 agaaactacaatagttaatcaatcaaagagaagtaagagaaatggcagattctaactgtg 59
+
+Sbjct 68 gatgtggctcctcctgcaaatntggtgactcttgcagttgcgagaagaactacaacaagg 127
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 60 gatgtggctcctcctgcaaatgtggtgactcttgcagttgcgagaagaactacaacaagg 119
+
+Sbjct 128 agtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaactnttgat 187
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||
+Query 120 agtgcgacaactgtagctgtggatcaaactgcagctgtgggtcaaactgtaactnttgat 179
+
+Sbjct 188 gaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatgtgtttt 247
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 gaaattattatggtctaaaatcatatatatggcagaaaaattggggaaaatatgtgtttt 239
+
+Sbjct 248 atgctaagagatgtgtgtgtnttgttggaataaaggcgtgaccgttgtgttgcgtatcaa 307
+ |||||||||||||||||||| |||||||||||||| ||||||||||||||||||||||||
+Query 240 atgctaagagatgtgtgtgtgttgttggaataaagacgtgaccgttgtgttgcgtatcaa 299
+
+Sbjct 308 ctctcttaagctttgacttttcccagcttt-gtattttccnatg-tatgg-taat-ggtg 363
+ |||||||||||||||||||||||||||||| |||||| || ||| ||||| |||| ||||
+Query 300 ctctcttaagctttgacttttcccagcttttgtatttncccatggtatgggtaatnggtg 359
+
+Sbjct 364 tgatt-gtntaatggttttcata-tgtaaccgtaaaaaaaatatttttt 410
+ ||||| || ||| ||||||| | || ||||| |||||||| |||||||
+Query 360 tgatttgtgtaanngttttcanaatggaaccgnaaaaaaaa-atttttt 407
+
+415 1663 0 F 414 1893 27 700 43 89.63
+Sbjct 0 attacttcgtctctncccctgtaatggcgcttccacacgtagtctcttcaccttcttcaa 59
+ |||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||
+Query 27 attacttcgtctctncccctgtaatggcgcttccacacgtagtctcttcaccttcttcaa 86
+
+Sbjct 60 cttcattatctccttccttcaaatccaaaccaccgtttnantcccttagatcttnatnac 119
+ |||||||||||||||||||||||||||||||||||||| | ||||||||||||| || ||
+Query 87 cttcattatctccttccttcaaatccaaaccaccgtttcactcccttagatctttatcac 146
+
+Sbjct 120 cgacggttgataatcgccggcgttgtaaactcaacagttccttccgatgttcatcttctt 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 147 cgacggttgataatcgccggcgttgtaaactcaacagttccttccgatgttcatcttctt 206
+
+Sbjct 180 nattctccgagaagcatcacaacgcgaaatctccaaaatccgatgatatcgtcgagcttc 239
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 207 nattctccgagaagcatcacaacgcgaaatctccaaaatccgatgatatcgtcgagcttc 266
+
+Sbjct 240 ctctgtttccactcccactcgttctctt-ccccgggagcaatncttcctcttt-agatct 297
+ ||||||||| ||| |||||||||||||| |||||| |||||| |||||||||| ||||||
+Query 267 ctctgtttc-actnccactcgttctctttccccgg-agcaatccttcctctttcagatct 324
+
+Sbjct 298 tcggaattnc-gttaccgtatcaatgatgcacacgggtcttccaatntg-attctacggn 355
+ ||| |||| | |||||||||||| |||||||||||| || |||||| || || ||| |
+Query 325 tcg-aatttccgttaccgtatca-tgatgcacacgg-tcctccaatctgnat-ctang-n 379
+
+Sbjct 356 ttnngggcgtaggtttantccgntt-ccgtntt-t-gggntccgccgca-gaagtaaggg 411
+ || || |||| ||| |||| || ||| || | ||| || || ||| |||| ||||
+Query 380 tttcggnngtag-tttnctccgatttccggnttntngggttc-gcggcaagaaggaaggn 437
+
+Sbjct 412 ttt 414
+ |||
+Query 438 ttt 440
+
+438 1696 0 F 439 1781 23 748 43 90.19
+Sbjct 0 aaaggtttgagtgaagatgtcttcagatcggaaggttctaagttttgaagaagtttcaaa 59
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||
+Query 23 aaaggtttgagtgaagatgtcttcagatcggaaggttctaagtttngaagaagtttcaaa 82
+
+Sbjct 60 gcacaacaaaactaaggattgtnggctnatnatttccggcaaggtgtatgatgtgacncc 119
+ |||||||||||||||||||||| |||| || |||||||||||||||||||||||||| ||
+Query 83 gcacaacaaaactaaggattgtnggcttatnatttccggcaaggtgtatgatgtgactcc 142
+
+Sbjct 120 attcatggatgatcatcctggaggcgatgaagtcttgtngtcctcaacagggaaagatgc 179
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 143 attcatggatgatcatcctggaggcgatgaagtcttgttgtcctcaacagggaaagatgc 202
+
+Sbjct 180 tacaaatnattttaaagacgttggtcacagcgacactgcaagggacatgatggacaaata 239
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 203 tacaaatnattttaaagacgttggtcacagcgacactgcaagggacatgatggacaaata 262
+
+Sbjct 240 tttcattggtgagattgattcgtctagtgttccagcaactagggcatacgttgcaccnca 299
+ ||||||||||||||||||||||||||||||||||||||||||| |||||| |||||| ||
+Query 263 tttcattggtgagattgattcgtctagtgttccagcaactaggncatacgntgcaccaca 322
+
+Sbjct 300 gnaaccagccttcaaccaaggcaaggcacctg-nttcattttcaagatttttcca-gtcc 357
+ | ||||||||| |||||||||||||||||| | |||||| |||||||| ||||| || |
+Query 323 gcaaccagcctacaaccaaggcaaggcaccagaattcattatcaagattcttccaagttc 382
+
+Sbjct 358 ctttgttccgatctttntccttggg-attgggttcttt-tcggcccgnnactttttc-nt 414
+ ||| ||||||||||| || ||||| || || ||||| ||| || | ||| || |
+Query 383 ctt-gttccgatcttaatc-ttgggggtttggctctttgtcgncc-gtaactnttnccaa 439
+
+Sbjct 415 gganggnttgnaggaggcnaaag 437
+ ||| || ||| | || || ||||
+Query 440 gganggcttg-angaagccaaag 461
+
+433 1745 0 F 427 1764 1 776 28 93.49
+Sbjct 0 caaganctcaaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatca 59
+ ||||| |||||||||||||||||||||||||||||||| |||||| |||||||||||||
+Query 1 caagaactcaaacacttcataactaaaacatcctttaangcctttnnaaaaactcaatca 60
+
+Sbjct 60 tgtcaagcaactgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaa 119
+ |||||||||||| |||||||||||||||| ||||||||||||||||||||||||||||||
+Query 61 tgtcaagcaactncggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaa 120
+
+Sbjct 120 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 121 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 180
+
+Sbjct 180 acgttggtgccgaggagaacaacgcaaattgcaagtgcaagtgcggctcctcttgcagct 239
+ |||||||||||||||||||||||||||||||||||| ||||| |||||||||||||||||
+Query 181 acgttggtgccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagct 240
+
+Sbjct 240 gcgtcaactgcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgna 299
+ |||||||||||||||||||||||||||||||| ||||||||||||||||||||||||| |
+Query 241 gcgtcaactgcacttgctgccccaactaatgangcttctttaatcaaaatgtaatatgaa 300
+
+Sbjct 300 taaaagttgatgtgggctcatctattgagctcatgtctctcttattacctactctctagt 359
+ |||||||||||||||||||||||||||||||||||| ||| ||||||| |||||||||||
+Query 301 taaaagttgatgtgggctcatctattgagctcatgtntctnttattac-tactctctagt 359
+
+Sbjct 360 attggtgtgatgtaatgggttattgncccttnttttccnttnccctntaaa-cntaangg 418
+ || |||||||||||||||||||| | ||||| ||| || || |||| |||| | || ||
+Query 360 at-ggtgtgatgtaatgggttat-gacccttcttt-ccctt-ccctataaaactnaa-gg 414
+
+Sbjct 419 aaactttcaaggtt 432
+ | ||| |||||||
+Query 415 a-ncttgcaaggtt 427
+
+458 1745 0 F 455 1767 0 829 28 93.87
+Sbjct 0 caaganctcaaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatca 59
+ ||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 caaganctcaaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatca 59
+
+Sbjct 60 tgtcaagcaactgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaa 119
+ ||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 60 tgtcaagcaactgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaa 119
+
+Sbjct 120 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 179
+
+Sbjct 180 acgttggtgccgaggagaacaacgcaaattgcaagtgcaagtgcggctcctcttgcagct 239
+ |||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||
+Query 180 acgttggtgccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagct 239
+
+Sbjct 240 gcgtcaactgcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgna 299
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 240 gcgtcaactgcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaa 299
+
+Sbjct 300 taaaagttgatgtgggctcatctattgagctcatgtctctcttatt-acctactctc-ta 357
+ |||||||||||||||||||||||||||||||||||||||| ||||| || ||||||| ||
+Query 300 taaaagttgatgtgggctcatctattgagctcatgtctctnttatttac-tactctccta 358
+
+Sbjct 358 gtattggtgtgatgtaatggg-ttattgncccttnttttccnttnccctnt-aaacntaa 415
+ |||| |||||||||||||||| |||| | ||||| ||| || || |||| | |||| |||
+Query 359 gtatgggtgtgatgtaatggggttat-gacccttcttt-ccctt-ccctattaaacctaa 415
+
+Sbjct 416 nggaaactttcaaggtta-tttgnaaagggtnggtttcttttt 457
+ |||| |||||||||||| || | |||| | |||| ||||||
+Query 416 nggaa-ctttcaaggttaattng-aaag-atgggtt-cttttt 454
+
+450 1745 9 F 443 1882 0 809 28 93.73
+Sbjct 9 aaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatcatgtcaagca 68
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 0 aaacacttcataactaaa-catcctttaaagccttttcaaaaactcaatcatgtcaagca 58
+
+Sbjct 69 actgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctaca 128
+ |||||||||| ||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 59 actgcggaagttgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctaca 118
+
+Sbjct 129 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 188
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 178
+
+Sbjct 189 ccgaggagaacaacgcaaattgcaagtgcaagtgcggctcctcttgcagctgcgtcaact 248
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 179 ccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtcaact 238
+
+Sbjct 249 gcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgnataaaagttg 308
+ ||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||
+Query 239 gcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaataaaagttg 298
+
+Sbjct 309 atgtgggctcatctattgagctcatgtctctcttattacctactctctagtattggtgtg 368
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||| ||||||
+Query 299 atgtgggctcatctattgagctcatgtctctcttattac-tactctctagtat-ggtgtg 356
+
+Sbjct 369 atgtaatgggttattgncccttnttttccnttnccctntaaacntaanggaaactttcaa 428
+ |||||||||||||| | ||||| ||| || || |||| |||| ||| | | |||| |||
+Query 357 atgtaatgggttat-gacccttctttccc-tt-ccctataaaactaaag-anacttgcaa 412
+
+Sbjct 429 ggttatttgnaaagggtnggtttct-ttt-tt 458
+ || || ||| |||| | ||||||| ||| ||
+Query 413 ggataattgaaaaga-t-ggtttctntttatt 442
+
+427 1764 1 F 432 1767 0 796 21 95.11
+Sbjct 1 caagaactcaaacacttcataactaaaacatcctttaangcctttnnaaaaactcaatca 60
+ ||||| |||||||||||||||||||||||||||||||| |||||| |||||||||||||
+Query 0 caaganctcaaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatca 59
+
+Sbjct 61 tgtcaagcaactncggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaa 120
+ |||||||||||| |||||||||||||||| ||||||||||||||||||||||||||||||
+Query 60 tgtcaagcaactgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaa 119
+
+Sbjct 121 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 180
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 ccagctacaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatgg 179
+
+Sbjct 181 acgttggtgccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagct 240
+ |||||||||||||||||||||||||||||||||||| ||||| |||||||||||||||||
+Query 180 acgttggtgccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagct 239
+
+Sbjct 241 gcgtcaactgcacttgctgccccaactaatgangcttctttaatcaaaatgtaatatgaa 300
+ |||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||
+Query 240 gcgtcaactgcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaa 299
+
+Sbjct 301 taaaagttgatgtgggctcatctattgagctcatgtntctnttatt-actactctc-tag 358
+ |||||||||||||||||||||||||||||||||||| ||| ||||| ||||||||| |||
+Query 300 taaaagttgatgtgggctcatctattgagctcatgtctctnttatttactactctcctag 359
+
+Sbjct 359 tatgg-tgtgatgtaatggg-ttatgacccttctttcccttccctataaaac-tnaagga 415
+ ||||| |||||||||||||| |||||||||||||||||||||||||| |||| | | |||
+Query 360 tatgggtgtgatgtaatggggttatgacccttctttcccttccctattaaacctaangga 419
+
+Sbjct 416 ncttgcaaggtt 427
+ ||| |||||||
+Query 420 actttcaaggtt 431
+
+416 1764 10 F 415 1882 0 783 16 96.15
+Sbjct 10 aaacacttcataactaaaacatcctttaangcctttnnaaaaactcaatcatgtcaagca 69
+ |||||||||||||||||| |||||||||| |||||| ||||||||||||||||||||||
+Query 0 aaacacttcataactaaa-catcctttaaagccttttcaaaaactcaatcatgtcaagca 58
+
+Sbjct 70 actncggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaaccagctaca 129
+ ||| |||||| ||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 59 actgcggaagttgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctaca 118
+
+Sbjct 130 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 189
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 178
+
+Sbjct 190 ccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagctgcgtcaact 249
+ ||||||||||||||||||||||||||| ||||| ||||||||||||||||||||||||||
+Query 179 ccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtcaact 238
+
+Sbjct 250 gcacttgctgccccaactaatgangcttctttaatcaaaatgtaatatgaataaaagttg 309
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 239 gcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaataaaagttg 298
+
+Sbjct 310 atgtgggctcatctattgagctcatgtntctnttattactactctctagtatggtgtgat 369
+ ||||||||||||||||||||||||||| ||| ||||||||||||||||||||||||||||
+Query 299 atgtgggctcatctattgagctcatgtctctcttattactactctctagtatggtgtgat 358
+
+Sbjct 370 gtaatgggttatgacccttctttcccttccctataaaactnaaggancttgcaagg 425
+ |||||||||||||||||||||||||||||||||||||||| ||| |||||||||
+Query 359 gtaatgggttatgacccttctttcccttccctataaaactaaaganacttgcaagg 414
+
+403 1764 7 F 417 1896 0 700 40 90.24
+Sbjct 7 ctcaaacacttcataactaaaacatcctttaangcctttnnaaaaactcaatcatgtcaa 66
+ ||||||||||||||||||||| |||||||||| |||||| |||||||||||||||||||
+Query 0 ctcaaacacttcataactaaa-catcctttaaagccttttcaaaaactcaatcatgtcaa 58
+
+Sbjct 67 gcaactncggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaaccagct 126
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 59 gcaactgcggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaaccagct 118
+
+Sbjct 127 acaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttg 186
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 acaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttg 178
+
+Sbjct 187 gtgccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagctgcgtca 246
+ |||||||||||||||||||||||||||||| ||||| ||||||||||||||||||||| |
+Query 179 gtgccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagctgcgtna 238
+
+Sbjct 247 actgcacttgctgcccc-aactaatgangcttctttaatcaaaatgtaatatgaataaaa 305
+ ||||||||||||||||| ||||||||| ||||||||||||||||||||||||| |||||
+Query 239 actgcacttgctgcccccaactaatgangcttctttaatcaaaatgtaatatgnntaaaa 298
+
+Sbjct 306 gttg-atgt-ggg-ctcatc-tatt-gag-ctcatg-tntctntt-attactac-tctct 356
+ ||| |||| ||| |||||| |||| ||| |||||| | ||| || |||||||| ||||
+Query 299 gtttnatgtnggggctcatcctatttgagnctcatggtttctctttattactaccnctct 358
+
+Sbjct 357 agta-tggtg-tgatgtaatggg-ttatgaccc-ttctttcccttccctataaaa-ct 409
+ ||| ||| | |||||||||||| || | |||| |||| || | ||| ||||| ||
+Query 359 ngtaatgggggtgatgtaatggggttnttaccccntcttcccntncccnttaaaaact 416
+
+446 1767 9 F 440 1882 0 826 20 95.49
+Sbjct 9 aaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatcatgtcaagca 68
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 0 aaacacttcataactaaa-catcctttaaagccttttcaaaaactcaatcatgtcaagca 58
+
+Sbjct 69 actgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctaca 128
+ |||||||||| ||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 59 actgcggaagttgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctaca 118
+
+Sbjct 129 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 188
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 ccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtg 178
+
+Sbjct 189 ccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtcaact 248
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||
+Query 179 ccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtcaact 238
+
+Sbjct 249 gcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaataaaagttg 308
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 gcacttgctgccccaactaatgaagcttctttaatcaaaatgtaatatgaataaaagttg 298
+
+Sbjct 309 atgtgggctcatctattgagctcatgtctctnttatttactactctcctagtatgggtgt 368
+ ||||||||||||||||||||||||||||||| ||||| ||||||||| |||||||| |||
+Query 299 atgtgggctcatctattgagctcatgtctctcttatt-actactctc-tagtatgg-tgt 355
+
+Sbjct 369 gatgtaatggggttatgacccttctttcccttccctattaaacctaanggaactttcaag 428
+ ||||||||||| |||||||||||||||||||||||||| |||| ||| | |||| ||||
+Query 356 gatgtaatggg-ttatgacccttctttcccttccctataaaac-taaaganacttgcaag 413
+
+Sbjct 429 gttaattngaaa-gatgggttcttttt 454
+ | ||||| |||| ||||| |||| |||
+Query 414 gataatt-gaaaagatggtttctnttt 439
+
+405 1767 6 F 413 1896 0 710 36 91.20
+Sbjct 6 ctcaaacacttcataactaaaacatcctttaaagccttttcaaaaactcaatcatgtcaa 65
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 0 ctcaaacacttcataactaaa-catcctttaaagccttttcaaaaactcaatcatgtcaa 58
+
+Sbjct 66 gcaactgcggaagctgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagct 125
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 59 gcaactgcggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaaccagct 118
+
+Sbjct 126 acaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttg 185
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 119 acaccttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttg 178
+
+Sbjct 186 gtgccgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtca 245
+ |||||||||||||||||||||||||||||| ||||| ||||||||||||||||||||| |
+Query 179 gtgccgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagctgcgtna 238
+
+Sbjct 246 actgcacttgctgcccc-aactaatgaagcttctttaatcaaaatgtaatatgaataaaa 304
+ ||||||||||||||||| ||||||||| ||||||||||||||||||||||||| |||||
+Query 239 actgcacttgctgcccccaactaatgangcttctttaatcaaaatgtaatatgnntaaaa 298
+
+Sbjct 305 gttg-atgt-ggg-ctcatc-tatt-gag-ctcatg-tctctntt-atttactac-tctc 355
+ ||| |||| ||| |||||| |||| ||| |||||| | ||| || ||| ||||| |||
+Query 299 gtttnatgtnggggctcatcctatttgagnctcatggtttctctttatt-actaccnctc 357
+
+Sbjct 356 ctagta-tgggtgtgatgtaatggggttatgaccc-ttctttcccttccctattaaa 410
+ | ||| |||| |||||||||||||||| | |||| |||| ||| | || |||||
+Query 358 -tngtaatgggggtgatgtaatggggttnttaccccntctt-cccntncccnttaaa 412
+
+494 1788 0 F 499 1850 9 882 37 92.55
+Sbjct 0 gaaaatggcttccaagactttccttcttttgggtctctttgcatttntttncatcgtctc 59
+ |||||||||||||||||||||||||||||||||||||||||||||| ||| |||||||||
+Query 9 gaaaatggcttccaagactttccttcttttgggtctctttgcatttntttncatcgtctc 68
+
+Sbjct 60 agaaatggctgcngcgggcacggtgaagtcagagagtgaggaaactntgaaacctgaaca 119
+ |||||||||||| ||||||||||||||||||||||||||||||||| |||||||||||||
+Query 69 agaaatggctgccgcgggcacggtgaagtcagagagtgaggaaactntgaaacctgaaca 128
+
+Sbjct 120 acatggtggtggattcggtgacaatggaggaggaagataccaaggaggaggcggccatgg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 129 acatggtggtggattcggtgacaatggaggaggaagataccaaggaggaggcggccatgg 188
+
+Sbjct 180 tggccacggagggggaggataccaaggaggaggaggacgataccaaggaggcggtgggcg 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 189 tggccacggagggggaggataccaaggaggaggaggacgataccaaggaggcggtgggcg 248
+
+Sbjct 240 acaaggaggagggggaagttactnccgccacggctgctgctacaaaggttaccatggctg 299
+ ||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||
+Query 249 acaaggaggagggggaagttactgccgccacggctgctgctacaaaggttaccatggctg 308
+
+Sbjct 300 ctcaaggtgttgttcatatgccggagaagcggttcanactcagtctngtcactaaatctn 359
+ |||||||||||||||||||||||||||||||||||| ||||||||| ||||||||||||
+Query 309 ctcaaggtgttgttcatatgccggagaagcggttcanactcagtctggtcactaaatcta 368
+
+Sbjct 360 cataatttttcaanccaccatgagtgtacggtttcatttntatatacacttacgggtgta 419
+ |||||| | |||| |||||||||||||||| |||||||| |||||||||||||| |||||
+Query 369 cataatatatcaa-ccaccatgagtgtacgatttcatttatatatacacttacgtgtgta 427
+
+Sbjct 420 tgt-antattgccaataca-cttncggtt-taaatnaagtnccttaa-gttttag-gg-g 473
+ ||| | ||| | ||||||| ||| || || ||| | |||| |||||| |||| || ||
+Query 428 tgtna-tat-gacaatacaacttacgtttgtaa-tgaagtgccttaaagtttaagaggnn 484
+
+Sbjct 474 gnaacttn-cgg-attaa-gttt 493
+ | | ||| ||| | ||| ||||
+Query 485 gaancttatcgggaataaagttt 507
+
+449 1796 26 F 439 1937 0 759 43 90.32
+Sbjct 26 ggaagagatggcttctacctccgcaatgtcattggtcacaccacttaaccagacccgttc 85
+ ||||| ||||||||| |||||||| |||||| ||| ||||||||||||||||||||||||
+Query 0 ggaagngatggcttcnacctccgcgatgtcantggncacaccacttaaccagacccgttc 59
+
+Sbjct 86 gtntcctttcctcaagccattacctctgaaaccatccaaggctttggttgcaactggagg 145
+ || ||||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 gtctcctttccttaagccattacctctgaaaccatccaaggctttggttgcaactggagg 119
+
+Sbjct 146 cagagcacagaggcttcaagttaaggccctcaagatggacaaggctttgaccggtatctc 205
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 cagagcacagaggcttcaagttaaggccctcaagatggacaaggctttgaccggtatctn 179
+
+Sbjct 206 cgcggctgctcttactgcttcgatggtgattccggagatagctgaagctgctggttctgg 265
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||
+Query 180 cgcggctgctcttactgnttcgatggtgattccggagatagctgaagctgctggttctgg 239
+
+Sbjct 266 aatctntccttccctcaagaatttnttgctcagcattgcttctggtggcctcgtcctcac 325
+ ||||| |||||||||||||||||| |||||||||||| |||||||||||||| ||||||
+Query 240 aatctntccttccctcaagaatttnttgctcagcattncttctggtggcctcnncctcac 299
+
+Sbjct 326 tgtnatcattggtgtcgtcgtcggngtcttcaactttnacccctgtcaagagnacctaag 385
+ ||| |||||||||||||||||||| |||| ||||||| |||| ||||||| | |||||||
+Query 300 tgtcatcattggtgtcgtcgtcggcgtctccaactttgaccc-tgtcaagngaacctaag 358
+
+Sbjct 386 acctataatatctttttttaccatcattattggaaacctggnccccctcctgnggaattc 445
+ |||||| |||| ||| |||| |||||||||| || | ||| | || || || ||| |||
+Query 359 ncctata-tatcntttcttac-atcattattgtaatc-tggtctccttc-tgtgga-ttc 413
+
+Sbjct 446 ggttcaaatgttgnagcaattnacctttt 474
+ | ||||| || || || ||| || ||||
+Query 414 g-ttcaa-tggtgcag-aatgaac-tttt 438
+
+458 1802 3 F 471 1877 0 827 34 92.68
+Sbjct 3 attaagatgacatctactatggttctattcctccttcttcttcttgtgtttccgcatatg 62
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 attaagatgacatctactatggttctattcctccttcttcttcttgtgtttccgcatatg 59
+
+Sbjct 63 gataaagccctaggcgcacacgaggaatcccagaaacaaggtgcagaaaagacttaccat 122
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 gataaagccctaggcgcacacgaggaatcccagaaacaaggtgcagaaaagacttaccat 119
+
+Sbjct 123 gatgcacgctttactattcctattaagccaaaatatattcctaaggttatacgccctacg 182
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 120 gatgcacgctttactattcctattaagccaaaatatattcctaaggttatacgccctacg 179
+
+Sbjct 183 ccaaaagatccgcctattccggaatgtcttcgaaaaggcacatgtagtcgtcttcattta 242
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 180 ccaaaagatccgcctattccggaatgtcttcgaaaaggcacatgtagtcgtcttcattta 239
+
+Sbjct 243 tctcctcctccgccccagaggtctttcaaaggcacaaacgnacctggtcattgacctcaa 302
+ |||||||||||| ||||||||||||||||||||||||||| |||||||||||||||||||
+Query 240 tctcctcctccgncccagaggtctttcaaaggcacaaacgaacctggtcattgacctcaa 299
+
+Sbjct 303 tctagcttcgaat-gcgtgtgtgtgtgcatgtttcttaca-nngtggtttggttt-gtgg 359
+ ||||||||||||| |||||||||||||||||||||||||| |||||||||||| ||||
+Query 300 tctagcttcgaattgcgtgtgtgtgtgcatgtttcttacatttgtggtttggttttgtgg 359
+
+Sbjct 360 cntctgtcttttgtttaccc-atgc-atgtgtttgtca-aatttt-ataggtttgt--cg 413
+ | ||| || |||||||||| |||| |||||| |||| |||||| | | |||| | ||
+Query 360 cttctntcntttgtttaccnnatgcnntgtgttngtcanaattttnanaagtttttntcg 419
+
+Sbjct 414 aaccgggccgct-ataatnaaataaaa-c-tt-gnatttccctttt-gtgtt 460
+ || |||||||| | || |||||||| | || | ||||||||||| | |||
+Query 420 aa-ngggccgctnntnattaaataaaaaccttnggatttcccttttngggtt 470
+
+435 1828 6 F 446 1947 0 734 49 88.88
+Sbjct 6 gagaagaatagtttgatcatcttgtgagaaaaataatggctgcttcantnatgctatctt 65
+ ||||||||||||||||||||||||||||||||||||||||||||||| | ||||||||||
+Query 0 gagaagaatagtttgatcatcttgtgagaaaaataatggctgcttcagtnatgctatctt 59
+
+Sbjct 66 cggtgacattgaaaccagctggtttcacggtggagaagacggcggctagaggattaccgt 125
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 60 cggtgacattgaaaccagctggtttcacggtggagaagacggcggctagaggattaccgt 119
+
+Sbjct 126 cgctcacaagagctcgtccctccttcaaaattntcgccagtggcgtcaagaagatcaaga 185
+ |||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||
+Query 120 cgctcacaagagctcgtccctccttcaaaattntcgccagtggcgtcaagaagatcaaga 179
+
+Sbjct 186 ccgacaagcccttcggaattaacggcagcatggacttgagggacggcgtcgacgcttccg 245
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||||
+Query 180 ccgacaagcccttcggaattancggcagcatggacttgagggacggcgtcgacgcctccg 239
+
+Sbjct 246 gcagaaagggcaagggatacggtgtttacaagtacggtcgacaagtatggagctaac-gt 304
+ |||||||||||||||||||||||||||||||||||| ||| |||||||||||||||| ||
+Query 240 gcagaaagggcaagggatacggtgtttacaagtacg-tcggcaagtatggagctaaccgt 298
+
+Sbjct 305 cgatgg-atacagtcct-atttacaa-cggngaacgangtggtcaagcgagtnggt-gac 360
+ |||||| |||||||||| |||| ||| ||| || || || ||||| ||| | ||| |
+Query 299 cgatgggatacagtccttattttcaaacggggaccg-ngttgtcaaccga-ttggttnnc 356
+
+Sbjct 361 gtgtac-anggg-tggngtcacc-ggatttgncaattttg-gg-cgg-taa-ctnt-cgc 412
+ || | | | ||| || |||||| || || | ||||||| || ||| ||| || | |||
+Query 357 gttttccaagggnnggngtcacccggntt-ggcaattttttggncgggtaancttttcgc 415
+
+Sbjct 413 cggaatttttttcccggnnggtgc--tttt 440
+ ||| |||| |||||| | ||| | ||||
+Query 416 cggnatttntttccccgnnggtnccntttt 445
+
+399 1882 0 F 414 1896 3 705 36 91.14
+Sbjct 0 aaacacttcataactaaacatcctttaaagccttttcaaaaactcaatcatgtcaagcaa 59
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 3 aaacacttcataactaaacatcctttaaagccttttcaaaaactcaatcatgtcaagcaa 62
+
+Sbjct 60 ctgcggaagttgcgactgtnctgacaagacccagtgcgtaaagaagggaaccagctacac 119
+ ||||||||| ||||||||| ||||||||||||||||||||||||||||||||||||||||
+Query 63 ctgcggaagctgcgactgtcctgacaagacccagtgcgtaaagaagggaaccagctacac 122
+
+Sbjct 120 cttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtgc 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 123 cttcgacatcgtcgagactcaggagagctacaaggaggccatgatcatggacgttggtgc 182
+
+Sbjct 180 cgaggagaacaacgcaaattgcaagtgcaagtncggctcctcttgcagctgcgtcaactg 239
+ |||||||||||||||||||||||||| ||||| ||||||||||||||||||||| |||||
+Query 183 cgaggagaacaacgcaaattgcaagtncaagtncggctcctcttgcagctgcgtnaactg 242
+
+Sbjct 240 cacttgctgcccc-aactaatgaagcttctttaatcaaaatgtaatatgaataaaagtt- 298
+ ||||||||||||| ||||||||| ||||||||||||||||||||||||| ||||||||
+Query 243 cacttgctgcccccaactaatgangcttctttaatcaaaatgtaatatgnntaaaagttt 302
+
+Sbjct 299 gatgt-ggg-ctcatc-tatt-gag-ctcatg-tctctctt-attactac-tctctagta 349
+ |||| ||| |||||| |||| ||| |||||| | |||||| |||||||| |||| |||
+Query 303 natgtnggggctcatcctatttgagnctcatggtttctctttattactaccnctctngta 362
+
+Sbjct 350 -tggtg-tgatgtaatggg-ttatgaccc-ttctttcccttccctataaaa-ct 398
+ ||| | |||||||||||| || | |||| |||| || | ||| ||||| ||
+Query 363 atgggggtgatgtaatggggttnttaccccntcttcccntncccnttaaaaact 416
+
+414 299 0 P 420 883 20 729 35 91.61
+Sbjct 0 aaaagttttgaaactcttctatacacatacattctccggatgtggttgttactaacttca 59
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 28 aaaagttttgaaactcttctatacacatacattctccggatgtggttgttactaacttca 87
+
+Sbjct 60 aaatataaaaatttaacaaaacaattgttatcatcatttcctacgagtcattaaacccaa 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 88 aaatataaaaatttaacaaaacaattgttatcatcatttcctacgagtcattaaacccaa 147
+
+Sbjct 120 tcccactcgccgtcgccggaaaacacctcggaaaatcagccaccgaaaacgatctccagg 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 148 tcccactcgccgtcgccggaaaacacctcggaaaatcagccaccgaaaacgatctccagg 207
+
+Sbjct 180 cacaaaaacccaacgacgactgagacgaat-aaa-ttaccaaaagacccttgactcctag 237
+ ||||||||||||||||||||||||||||| ||| |||||||||||||||||||||||||
+Query 208 cacaaaaacccaacgacgactgagacgaagcaaaattaccaaaagacccttgactcctag 267
+
+Sbjct 238 gatacaacggaggaagcttcttcatctg-atgttgatgatgatgtagctgcctcggagga 296
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 268 gatacaacggaggaagcttcttcatctggatgttgatgatgatgtagctgcctcggagga 327
+
+Sbjct 297 gatccagaagtcgtcgg-nnttgatcccggcgacg-agtcacctccgg-aag-aagatcc 352
+ ||||||||||||||||| ||||| ||||||| | |||||||||||| ||| |||||
+Query 328 gatccagaagtcgtcgggacttgatnccggcgaagnagtcacctccgggaaggaagatnn 387
+
+Sbjct 353 ttctccggtcatcacaccagc-ggcaacagctnatngctagng-tcaaagcgtttctgct 410
+ ||||| || |||| || ||| || || | || | ||| | || ||| |||| || |
+Query 388 ttctcgggngatcaaacnagccggnaa-a-nncatagntagcggtccaagngttt-tgnt 444
+
+Sbjct 411 aag 413
+ ||
+Query 445 tag 447
+
diff --git a/testdata/see-ext-at1MB-400-cigar.matches b/testdata/see-ext-at1MB-400-cigar.matches
new file mode 100644
index 0000000..71ae209
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-cigar.matches
@@ -0,0 +1,230 @@
+# Options: -ii at1MB -l 400 -outfmt cigar -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, cigar
+597 1 0 F 592 4 7 898 97 83.68 34M1D1M1I96M1D4M1I19M1I3M2I59M1D2M1I81M1I5M1D46M1I2M1I4M1D1M1D89M1D54M1D2M1I24M1I2M1D4M1I2M1D3M1D16M1D5M1D3M1D4M1D1M1D9M1D5M
+538 1 9 F 523 47 0 779 94 82.28 123M1D4M1I19M1I3M2I59M1D2M1I81M1I5M1D46M1I2M1I4M1D1M1D6M1I3M1D44M1D1M1I6M1D4M1D15M1I1M2D1M1D1M1D11M1D15M1D9M2D3M1D7M1D2M2D7M1D2M1D2M1D1M1D4M1D6M1D5M1I6M
+577 2 72 F 606 3 0 916 89 84.95 56M1D2M1I374M1I4M1I5M1I10M2I10M1I15M1I4M1I4M1I8M1I5M2I4M1I2M1I15M1I6M1I3M1I5M1I5M2I3M1I5M1I8M1I2M1I4M1I4M1I1M1I1M1I6M1I5M
+626 2 34 F 656 5 0 1063 73 88.61 94M1D2M1I373M1I5M1I5M1I10M1I10M1I15M1I4M1I4M1I7M1I7M1I2M1I3M1I13M1I8M1I3M1I5M1I5M1I3M1I5M1I9M1I1M1I5M1I3M1I1M1I2M1I5M1I5M1I1M1I3M1I1M1I6M
+484 2 176 F 513 6 104 730 89 82.15 25M1I15M1D1M1I287M1I4M1I5M1I10M1I10M1I15M1I4M1I4M1I8M1I5M1I4M1I2M1I9M1I6M1I6M1I3M1I5M1I5M1I3M1I5M1I9M1I1M1I4M1I4M1I1M1I1M1I8M1I8M1I6M
+706 2 0 F 749 16 84 1269 62 91.48 504M1I5M1I5M1I10M1I10M1I15M1I4M1I4M1I7M1I7M1I2M1I3M1I13M1I8M1I3M1I5M1I5M1I3M1I5M1I9M1I1M1I5M1I3M1I1M1I2M1I5M1I5M1I1M1I3M1I1M1I7M1I3M1I3M1I2M1I3M1I4M1D2M1I2M1I4M3I3M1I1M1I2M1I3M1I12M
+660 2 0 F 687 39 0 1065 94 86.04 128M1D2M1I374M1I4M1I5M1I10M1I10M1I15M1I4M1I4M1I8M1I5M1I4M1I2M1I15M1I6M1I3M1I5M1I5M1I3M1I5M1I9M1I1M1I4M1I4M1I1M1I1M1I8M1I8M1I6M
+668 3 0 F 660 5 38 1139 63 90.51 179M1I2M1D234M1D3M1I35M1D45M1I1M1D6M1D47M1D26M1D3M1I25M1D8M1D9M1I1M2D3M1I17M2D3M1D7M
+639 3 14 F 631 6 14 1063 69 89.13 114M1I327M1D51M1D19M1I30M1D28M1D3M1I20M4D18M3D18M
+655 3 0 F 650 16 156 1047 86 86.82 56M1I2M1D357M1D3M1I35M1D45M1I1M1D6M1D47M1D26M1D3M1I25M1D8M1D7M1D7M1I17M
+653 3 0 F 643 39 72 1203 31 95.22 455M1D51M1D49M1D28M1D3M1I20M4D18M3D18M
+613 4 16 F 571 47 0 1022 54 90.88 419M1D4M1D16M1D2M1D12M1D15M1D7M1D1M1D4M1D6M1D4M1D3M1D3M1D2M1D2M1D1M1D4M1D5M1D3M1D2M1D1M1D1M1D2M1D2M1D2M1D2M1D1M1D5M1D8M1D2M1D1M1D6M1D2M1D3M1D4M2D1M1D5M3D3M1D2M1D3M
+704 5 52 F 700 6 14 1056 116 83.48 114M1I51M1I1M1D235M1I3M1D80M1D1M1I19M1I88M1D1M1I16M1D3M1D1M2D1M1D15M1D1M1I12M2D9M1I11M1I1M1I1M1I2M1D13M2D3M1D4M1I2M
+742 5 0 F 746 16 118 1323 55 92.61 94M1I2M1D594M1D6M2I2M1I1M2I41M
+756 5 0 F 750 39 34 1275 77 89.77 454M1I3M1D80M1D1M1I107M1D1M1I16M1D3M1D1M2D1M1D15M1D1M1I12M2D9M1I11M1I1M1I1M1I2M1D13M2D3M1D4M1I2M
+599 6 104 F 601 16 260 915 95 84.17 25M1D15M1I1M1D270M1D3M1I80M1I1M1D23M1D84M1I2M1D15M1I3M1I2M3I14M1D32M1D2M1D1M1D11M2I3M1I2M
+783 6 14 F 788 39 86 1400 57 92.74 114M1D393M1D236M1I7M1I4M1I14M1I2M1I6M1I3M1I2M
+467 11 135 F 449 29 138 766 50 89.08 8M1D17M1D331M1D10M1D25M2D2M1D7M1D3M1D6M1D5M1D2M1D7M1D5M1D2M1D5M1D3M1D8M1D3M
+767 16 84 F 766 39 0 1248 95 87.61 128M1D2M1I357M1I3M1D80M1D1M1I107M1D2M1I15M1D3M1D2M3D14M1I32M1I2M1I1M1I9M
+397 18 0 F 417 46 194 634 60 85.26 267M1I28M1I11M1I16M1I4M1I3M1I4M1I3M1I4M1I9M1I4M1I7M1I4M1I5M1I3M1I3M1I5M1I5M1I3M1I2M1I7M
+458 34 157 F 442 1317 0 789 37 91.78 3M1D4M1D3M1D3M1D2M1D2M1D9M1D3M1D6M1D1M1I1M1D5M1D17M1D2M1D12M1D22M1D255M1D10M1D81M
+399 35 140 F 402 72 145 717 28 93.01 3M1I4M1I10M1I4M1I11M1I3M1D3M3I7M1D273M1D66M1D7M1D3M
+430 61 134 F 438 65 137 787 27 93.78 8M2D6M1I4M1I201M1D92M1D29M1I43M1I13M1I9M1I5M2I6M2I2M1I3M1I5M
+517 64 0 F 517 65 0 1034 0 100.00 517M
+461 78 86 F 459 80 149 800 40 91.30 4M1D1M1D202M1D94M1D23M1D54M2I1M1I77M
+542 78 223 F 540 1488 8 995 29 94.64 5M1I8M1D5M1I4M1D3M1D2M1D1M1I6M1I20M1D12M1I8M1D1M1I5M1D8M1D3M1I5M1D437M
+568 79 56 F 568 1495 0 1022 38 93.31 2M1D5M1D34M1D22M1I6M1D23M1I7M1D4M1I29M1I12M1I8M1I5M1D5M1I14M1D385M
+417 223 0 F 414 271 2 801 10 97.59 3M2D378M1D33M
+418 229 0 F 419 270 0 828 3 99.28 409M1I9M
+418 318 13 F 428 1693 142 621 75 82.27 4M1I9M1I4M1I13M1I2M1I18M1I14M1I7M1D15M1D22M1D12M1D10M1D3M1I67M1I5M1I6M1I12M1I4M1I5M1I8M1I5M1I7M1I2M1I5M1I8M1I8M1I3M1I13M1I7M1I15M1D9M1D4M1I11M1I3M1I5M1D6M1D6M1D8M1I1M1D7M1D2M1D3M1D8M1D2M1D7M1D2M1D3M
+405 336 36 F 419 1703 0 734 30 92.72 3M1I313M1I4M1I7M1I6M1I5M1I8M1I7M1I5M1I6M1I6M1I5M1I11M1I4M1I15M
+439 376 0 F 450 1694 81 703 62 86.05 3M1I4M1I6M1I10M1I5M1I4M1I14M1I16M1I26M1I13M1I15M1I7M1I143M1I42M1I16M1I25M1D6M1I19M1D4M1I10M1D12M1D2M1D7M1I6M1D4M1D13M
+400 380 1 F 408 451 26 766 14 96.53 8M1I5M1I5M1I3M1I20M1I4M1I3M1I5M1I347M
+403 380 0 F 406 630 10 722 29 92.83 19M1I31M1I49M1I4M1I1M1D298M
+401 380 0 F 404 736 106 784 7 98.26 12M1I11M1I26M1I352M
+400 380 3 F 403 846 215 773 10 97.51 6M1I14M1I26M1I354M
+403 380 0 F 407 902 16 783 9 97.78 20M1I5M1I11M1I13M1I354M
+401 380 2 F 408 1100 35 740 23 94.31 8M1I13M1I15M1I5M1I3M1I10M1I9M1I338M
+401 380 2 F 407 1143 2 721 29 92.82 13M1D6M1I3M1D7M1I13M1I3M1I7M1I12M1I2M1D6M1I7M1I25M1I294M
+403 380 0 F 407 1151 49 786 8 98.02 19M1I4M1I12M1I14M1I354M
+403 380 0 F 409 1230 104 773 13 96.80 10M1I13M1I26M1I35M1I13M1I12M1I294M
+399 380 0 F 406 1360 9 730 25 93.79 5M1I5M1I4M1I10M1I3M1I22M1I13M1I337M
+475 404 165 F 466 819 35 809 44 90.65 2M1D3M1D14M1D2M1D6M1D7M1D3M1D1M1D4M1I6M1D7M1D8M1D3M1I4M1D13M1D30M1I51M1I298M
+418 404 186 F 420 975 52 760 26 93.79 10M1D7M1D10M1I18M1I58M1I51M1I262M
+420 404 213 F 444 1362 2 699 55 87.27 2M1I2M1I8M1I13M1I7M1I7M1I9M1I29M1I1M1I9M1I7M1I4M1I2M1I4M1I5M1I3M1I8M1I16M3I12M1I4M1I9M1I24M1I235M
+453 404 187 F 455 1500 29 806 34 92.51 9M1D7M1D4M1I24M1I13M1D44M1I9M1I42M1I298M
+434 406 8 F 430 542 0 771 31 92.82 15M1D2M1D16M1D7M1D11M1D5M1D24M1I4M1I344M
+402 406 40 F 413 1056 0 713 34 91.66 15M1I9M1D7M1I3M1D1M1I16M2I2M1I22M1D3M1I7M1I9M1I2M1I11M1I4M1I15M1I2M1I271M
+430 412 83 F 436 1525 0 755 37 91.45 3M1I14M1I1M1I6M1I2M1I18M1I20M1I3M1I1M1D5M1I3M1I2M1D5M1D7M1I1M1I7M1D4M1D6M1I30M1D20M1D265M
+434 426 27 F 429 795 0 722 47 89.11 12M1D4M1D9M1D5M1D13M1I3M1D2M1D8M1D5M1D4M1I9M1D1M1I19M1D6M1I4M1D3M1I19M1I5M1D1M1D37M1I29M1I223M
+409 432 9 F 410 652 0 735 28 93.16 9M1I15M1I5M1D3M1D8M2D15M1I13M1I11M1I8M1D6M1I311M
+422 432 0 F 423 825 61 791 18 95.74 2M1I1M1D5M1I8M1D33M1I1M1D32M1I29M1I9M1D298M
+397 432 0 F 403 1469 51 728 24 94.00 9M2I5M1I25M1I9M1I4M1D5M1I5M1I9M1I6M1I22M1D22M1D273M
+423 449 0 F 421 868 143 802 14 96.68 15M1D4M1I10M1D4M1D31M1D13M1I2M1I36M1D303M
+434 451 0 F 427 736 83 825 12 97.21 14M1D10M1D8M1D11M1D24M1D7M1D6M1D347M
+434 451 0 F 427 846 189 816 15 96.52 25M1D2M1D11M1D5M1D24M1D7M1D6M1D347M
+424 451 10 F 420 902 1 787 19 95.50 11M1I4M1D8M1D4M1D10M1D2M1I10M1I5M1D10M1D6M1D347M
+434 451 0 F 429 1100 12 764 33 92.35 9M1D12M1D2M2D3M1D14M1D19M1I15M1D17M1I336M
+434 451 0 F 428 1151 26 823 13 96.98 9M1D15M1D8M1D5M1D22M1I8M1D7M1D6M1D347M
+434 451 0 F 431 1230 80 805 20 95.38 12M1D2M1I10M1D8M1D11M1D24M1D4M1D10M1D29M1I13M1I12M1I292M
+417 451 15 F 414 1360 1 726 35 91.58 3M1D6M1D5M1I14M1D4M1D2M1I3M1I15M1D7M1D6M1D8M1I337M
+415 452 0 F 413 882 3 750 26 93.72 2M1I4M1D8M1I13M1D25M1D6M1I4M1D6M1I3M1D38M1D12M1D24M1I263M
+424 454 70 F 432 1837 0 793 21 95.09 2M1D81M1D4M1I246M1I33M1I2M1I3M1I14M1I24M1I2M1I3M1I2M1I6M
+453 460 27 F 452 1351 0 821 28 93.81 5M1D1M1D4M1I3M1I15M1D2M1I28M1D3M1I1M1I92M1D39M1D254M
+492 474 48 F 480 543 0 903 23 95.27 4M1D2M1D3M1D7M1D5M1D10M1D11M1D2M1D5M1D13M1D15M1D33M1I2M1D42M1D325M
+540 474 0 F 522 658 80 975 29 94.54 2M1D10M1D1M1D22M1D8M1D4M1D10M1D2M1D14M1D1M1I2M1D11M1D2M1D10M1D7M1D15M1D26M1D40M1D10M1D61M1D263M
+454 474 86 F 440 713 0 786 36 91.95 5M1D2M1D3M1D11M1D6M1D6M1D3M1D1M1D7M1D2M1D8M1D10M1I4M1D5M1D23M1I12M1D4M1D1M1D325M
+423 474 0 F 408 736 18 693 46 88.93 2M1D3M1D2M1D7M1D5M1I2M1D5M1D2M1D7M1I2M1D7M1D6M1D7M1D15M1I4M1D47M1D78M1D179M1D3M1D2M1I4M1I4M3D8M1D2M
+435 474 105 F 433 798 0 811 19 95.62 29M1D6M1D17M1I4M1D50M1D89M1I236M
+480 474 35 F 479 826 2 914 15 96.87 53M1I7M1I14M1D25M1D78M1D300M
+423 474 0 F 418 846 114 685 52 87.63 7M1I1M1I6M1D14M1I4M1I9M1I10M1D13M1D7M1D8M1I17M1D6M1I4M1D23M1D78M1D179M1D3M1D2M1I4M1I4M3D8M1D2M
+422 474 118 F 417 849 0 758 27 93.56 17M1D10M1I16M1D40M1D11M2D156M1D166M
+488 474 47 F 483 912 0 932 13 97.32 5M1D13M1D11M1D1M1I11M1D43M1D27M1D46M1I4M1D320M
+407 474 57 F 407 988 0 664 50 87.71 2M1D17M1D17M1I31M1I14M1I22M1D51M1D159M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+419 474 45 F 417 1049 0 722 38 90.91 24M1D31M1D33M1D35M1I43M1D159M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+453 474 87 F 444 1120 0 798 33 92.64 4M1D7M1D5M1D4M1D19M1D1M1I1M1D18M1D1M1I9M1D43M1D6M1D143M1D181M
+422 474 1 F 425 1230 2 679 56 86.78 3M1D4M1I11M1I3M1I5M1I6M1D1M1I13M1I14M1I20M1I2M1D2M1I40M1I2M1D4M1D49M1I13M1I12M1I4M1D179M1D3M1D2M1I4M1I4M3D8M1D2M
+500 474 40 F 475 1297 0 852 41 91.59 4M1D7M1D4M1D1M1D2M1D2M1D1M1D5M1D1M1D4M1D3M1D6M1D4M1D1M1D4M1D3M1D12M1D5M1D6M1D7M1D19M1D9M1D22M1D19M1D14M1D310M
+447 474 68 F 436 1327 0 775 36 91.85 5M1D5M1D11M1D3M1D3M1D7M1D4M1D20M1D27M1D9M1D42M1D300M
+409 480 46 F 398 926 0 744 21 94.80 9M1D1M1D9M1D7M1D10M1D2M1D5M1D6M1D3M1D9M1D14M1D323M
+425 489 0 F 429 1339 12 806 16 96.25 10M1I8M1I1M1I13M1D11M1I11M1I4M1D19M1I13M1I17M1D315M
+409 522 41 F 410 1134 0 723 32 92.19 32M1D3M1I8M1I16M1D23M1I325M
+406 530 14 F 398 1343 30 735 23 94.28 12M1D11M1D1M1D3M1D6M2D16M1D31M1D318M
+422 536 58 F 414 1082 12 755 27 93.54 4M1D4M1D9M1D11M1D11M1D10M1D3M1D15M1D347M
+400 542 30 F 413 1056 0 738 25 93.85 3M1I7M1I3M1I13M1I3M1I2M1D1M1I15M1I27M1D3M1I7M1I9M1I2M1I11M1I4M1I15M1I2M1I271M
+477 543 3 F 476 658 126 890 21 95.59 3M1I3M1I2M1D9M1I6M1D2M1I19M1I5M1D48M1D6M1D2M1I31M1D71M1D263M
+436 543 44 F 429 713 11 793 24 94.45 22M1D8M1D3M1D3M1D7M1D12M1D31M1I12M1D4M1D326M
+429 543 51 F 430 798 3 793 22 94.88 10M1I19M1D19M1I4M1D2M1D4M1I132M1I236M
+455 543 0 F 466 826 15 852 23 95.01 2M1I4M1I3M1I7M1I10M1I6M1I2M1I7M1I2M1I2M1I17M1I48M1D2M1I342M
+419 543 61 F 416 849 1 748 29 93.05 28M1I14M1D6M1D2M1I31M1D11M1D156M1D166M
+475 543 0 F 482 912 1 897 20 95.82 6M1I3M1I18M1I4M1I6M1D4M1I2M1I5M1I13M1I42M1D5M1D2M1I38M1I324M
+397 543 7 F 407 988 0 633 57 85.82 9M1I16M1I9M2I4M1I4M1I13M1I6M1I9M1I4M1I21M1D4M1D5M1I201M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+404 543 0 F 414 1049 3 677 47 88.51 4M1I3M1I2M1I12M1I11M1I10M1I7M1I14M1I50M1I201M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+447 543 33 F 444 1120 0 798 31 93.04 4M1D4M1I7M1D11M1I9M1I5M1D28M1D1M1D6M1I35M1D149M1D181M
+480 543 0 F 468 1297 7 855 31 93.46 11M1D2M1D7M1D4M1D9M1D9M1D20M1D14M1D18M1D4M1D27M1D33M1D310M
+439 543 16 F 436 1327 0 782 31 92.91 6M1D7M1I7M1D17M1D5M1I41M1D4M1D347M
+436 549 0 F 448 661 68 773 37 91.63 6M1I13M1I9M1I2M1I5M1D6M1I1M1I3M1I17M1I6M1I18M1D8M1I4M1I26M1D24M1I81M1I36M1I95M1I73M
+402 568 10 F 406 1793 2 739 23 94.31 32M1I29M1I45M1D18M1I220M1I33M1I24M
+432 584 48 F 449 1661 0 707 58 86.83 4M1D5M1I3M1I5M1I5M1I8M1I19M1I18M1I1M1I34M1D3M1I231M1I27M1I9M1I8M1I9M1I4M1I10M1I17M2I8M1I2M
+412 630 2 F 414 736 96 730 32 92.25 4M1I3M1I17M1I34M1I1M1D49M1D4M1D1M1I296M
+415 630 1 F 416 846 202 729 34 91.82 5M1I5M1I49M1I1M1D49M1D4M1D1M1I298M
+415 630 1 F 419 902 4 732 34 91.85 6M1I1M1I1M1I26M1I10M1I15M1I1M1D49M1D4M1D1M1I298M
+416 630 0 F 420 1100 23 719 39 90.67 8M1I41M1I7M1I12M1I9M1I34M1D4M1D1M1I298M
+425 630 9 F 426 1143 1 728 41 90.36 4M1D4M1D5M1D12M1D4M1I11M1I7M1I1M1D3M1I15M1I2M1D3M1I8M1I10M1D11M1D1M1I2M1I314M
+415 630 1 F 418 1151 38 737 32 92.32 5M1I3M1I18M1I19M1I14M1I1M1D49M1D4M1D1M1I298M
+416 630 0 F 421 1230 92 732 35 91.64 8M1I1M1I3M2I2M1D45M1I1M1D34M1I20M1D1M1I4M1I294M
+409 630 3 F 414 1360 1 688 45 89.06 6M1I3M1I1M1I13M1I3M1D5M1I8M1I17M1I1M1D8M1I41M1D4M1D1M1I294M
+400 652 10 F 401 825 79 711 30 92.51 23M1I4M1I5M1I11M1D13M1D7M1I5M1D8M1I9M1D6M1I4M1D300M
+412 654 1 F 407 807 63 711 36 91.21 10M1D17M1D2M1D6M1D12M1I5M1D7M1I16M1I22M1I7M1D18M1D53M1D41M1D187M
+440 654 1 F 432 866 142 719 51 88.30 2M1D14M1I7M1I4M1D2M1D17M1D1M1I5M1D4M1D2M1I10M1D5M1I1M1D20M1I7M1D4M1D27M1D12M1D26M1D41M1D39M1D1M1I174M
+461 654 0 F 461 1212 120 799 41 91.11 18M1I3M1I44M1I5M1D10M1I19M1I8M1D17M1D56M1D41M1D235M
+441 658 161 F 438 713 2 777 34 92.26 6M1I24M1D5M1D6M1D3M1D7M1D13M1I6M1D23M1I8M1I3M1D4M1D62M1I263M
+425 658 60 F 426 736 0 683 56 86.84 2M1D4M1D17M1D6M1I2M1D5M1I2M1D5M1D9M1I15M1D3M1I16M1I15M1I2M1I6M1D2M1I1M1I7M1I40M1I41M1I74M1I114M1D3M1D2M1I4M1I4M3D8M1D2M
+428 658 174 F 433 798 0 795 22 94.89 5M1I7M1I18M1D20M1I43M1I71M1I27M1I236M
+467 658 110 F 481 826 0 867 27 94.30 3M1I8M1I5M1I10M1I2M1I14M1I2M1D1M1I1M1I8M1I2M1I2M1I6M1D3M1I7M1I41M1I41M1I71M1I238M
+465 658 20 F 485 846 47 737 71 85.05 7M1I11M1I2M1I11M1I2M1I3M1D13M1I2M1I8M1I2M1I4M1I1M1I3M1I16M1I3M1I5M1I4M1I3M1I16M1I9M1D6M1I4M1I11M1I11M1I8M1I40M1I41M1I74M1I114M1D3M1D2M1I4M1I4M3D8M1D2M
+416 658 186 F 416 849 1 763 23 94.47 26M1I67M1D59M1I96M1D166M
+471 658 126 F 479 912 4 896 18 96.21 10M1I14M1D1M1I1M1I1M1D2M1I5M1D5M1I2M1I10M1I7M1I81M1I6M1I65M1I258M
+395 658 131 F 407 988 0 646 52 87.03 2M1D3M1I1M1I11M1D7M1I9M2I4M1I10M1I7M1I6M1I11M1I2M1I62M1I74M1I94M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+395 658 131 F 405 1049 12 677 41 89.75 6M1I1M1I3M1D11M1I1M1D2M1I11M1I12M1I8M1I39M1I9M1I32M1I74M1I94M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+444 658 158 F 444 1120 0 786 34 92.34 4M1D4M1I7M1D11M1I11M1D1M1I19M1D1M1I47M1I3M1D68M1I81M1D181M
+397 658 88 F 416 1230 11 624 63 84.50 4M1I5M1I3M1I5M1I2M1I13M1I4M1I3M1I10M2I1M1I15M1I6M1I9M1I3M1I9M1I7M1I8M1I2M1D29M1I23M1I13M1I5M1I6M1I68M1I114M1D3M1D2M1I4M1I4M3D8M1D2M
+486 658 116 F 475 1297 0 853 36 92.51 15M1D1M1D5M1D5M1D1M1D6M1D7M1D9M1D1M1D4M1I14M1D14M1D27M1D22M1D8M1I24M1D46M1I263M
+437 658 140 F 436 1327 0 777 32 92.67 5M1D16M1D13M1D10M1I49M1D31M1I71M1I238M
+415 691 0 F 433 814 49 722 42 90.09 2M1I5M1I4M1I3M1I2M1I8M1I2M1I3M1I2M1I5M3I2M3I3M1D1M1D12M1D6M1I4M1I1M1D2M2I4M1I10M1I7M1I323M
+421 695 59 F 427 938 0 761 29 93.16 13M1I4M1I10M1I7M1D11M1D3M1I7M1I2M1D22M1I7M1I13M1I10M1I3M1I125M1D180M
+432 701 5 F 422 715 7 731 41 90.40 5M1D4M1D4M1D5M1I2M1D3M1D13M1D5M1D1M1D3M1D4M1D3M1D9M1D1M1I1M1I6M1D10M1D9M1D21M1I25M1I283M
+423 713 17 F 432 798 1 753 34 92.05 4M1I6M1I7M1I7M1I3M1I2M1I4M1D3M1I8M1I5M1D5M1I23M1D13M1I4M1I90M1I236M
+415 713 0 F 428 826 53 729 38 90.98 3M1I2M1I2M2I3M1I17M1I6M1I5M1I6M1I3M1I7M1I8M1I5M1D6M1I22M1D13M1I4M1I301M
+413 713 27 F 417 849 0 710 40 90.36 6M1I8M1I7M1I1M1I3M1I2M1I13M1D6M1I22M1D8M1D4M1I4M1D1M1I157M1D166M
+435 713 0 F 446 912 37 782 33 92.51 7M1I3M1I7M1I10M1I6M1I5M1I6M1I3M1I7M1I13M1D6M1I23M1D12M1I2M1I2M1I321M
+437 713 3 F 442 1120 2 789 30 93.17 8M1I5M1D10M1I6M1I3M1I8M1I3M1I7M1I17M1D4M1I19M1D18M1I144M1D181M
+437 713 3 F 437 1297 38 769 35 91.99 4M1I1M1D3M1D20M1I1M1D3M1I6M1I10M1I13M1D28M2D12M1I4M1I15M1D310M
+414 713 1 F 420 1327 16 723 37 91.13 10M1I7M1D8M1I6M1I5M1I6M1I5M1I5M1I13M1D29M1D12M1I4M1I301M
+382 724 29 F 433 1826 2 605 70 82.82 4M1I2M1I4M1I1M1I4M1I4M1I1M1I3M1I1M1I2M1I2M1I3M1I1M1I5M1I2M1I4M1I3M1I4M1I10M1I8M1I3M1I3M1I3M1I7M1I5M1I5M1I14M1I142M1I11M1I8M1I11M1I10M1I6M1I5M1I3M1I7M1I2M1I5M1I3M1I8M1I3M1I4M1I5M1I3M1I7M1I4M1I5M1I5M1I5M2I10M1I2M
+510 736 0 F 525 846 91 915 40 92.27 2M1I3M1I3M1I1M1I7M1I4M1I1M1I1M1I2M1I3M1I7M1I1M1I5M1D4M1I1M1I2M1I9M1I13M1I11M1D15M1I12M1D6M1I4M1D389M
+414 736 96 F 416 902 5 800 10 97.59 7M1I15M1D8M1I3M1D2M1I11M1I366M
+435 736 75 F 437 1100 4 782 30 93.12 17M1D4M1I3M1D2M1I1M1D2M1D38M1I5M1I14M1I9M1I336M
+406 736 104 F 407 1143 0 726 29 92.87 3M1D3M1D7M1D2M1D10M1D10M1I13M1I8M1I12M1I2M1D6M1I7M1I25M1I292M
+452 736 58 F 454 1151 0 876 10 97.79 6M1I6M1I13M1D8M1D4M1I21M1D7M1I16M1I368M
+485 736 25 F 500 1230 11 898 29 94.11 6M1I3M1I6M1I1M1I3M1I2M1I8M1D2M1I4M1I3M1I5M1I5M1I3M1I20M1I96M1I13M1I12M1I292M
+411 736 97 F 414 1360 1 747 26 93.70 3M1D11M1I9M1I8M1D2M1I3M1I36M1I337M
+408 798 0 F 407 826 74 755 20 95.09 2M1D29M1I164M1D211M
+420 798 13 F 417 849 0 723 38 90.92 20M1I5M1D2M2I11M1D43M1D11M1D87M1D69M1D166M
+428 798 0 F 428 912 55 796 20 95.33 32M1I20M1D51M1I92M1D231M
+432 798 1 F 428 1120 16 752 36 91.63 10M1D20M1I5M1D2M1I5M1D1M1I5M1D47M1D95M1D54M1D181M
+430 798 3 F 423 1297 52 766 29 93.20 12M1D5M1D28M1D12M1D23M1D33M1D74M1D236M
+405 798 3 F 402 1327 34 714 31 92.32 8M1D21M1I17M1D12M1D132M1D211M
+468 807 2 F 464 866 82 800 44 90.56 13M1D34M1I2M1D14M1D9M1I4M1I3M1I19M1I9M1D7M1D13M1D7M1D32M1D13M1I13M1D14M1D252M
+468 807 2 F 476 1212 57 824 40 91.53 5M1I9M1I18M1I2M1D2M1I34M1I6M1I3M1I7M1I5M1I9M1I9M1D4M1I15M1D337M
+445 815 0 F 462 1699 0 778 43 90.52 6M1I21M1D6M1I10M1I2M1D9M1I17M1I30M1I186M1I53M1I9M1I10M1I4M1D1M1I2M1I11M2I9M1I5M1I3M1I14M1I4M1I14M1I16M
+451 819 14 F 467 975 5 810 36 92.16 9M1I2M1I3M1I5M2I4M1I5M1I10M1I4M1I16M1I2M1I13M1I6M1I3M1I3M1I2M1D5M1I17M1I341M
+418 819 76 F 443 1362 3 726 45 89.55 4M1I1M1I6M1I4M1I10M1I5M1I1M1I7M1I6M1I3M1I21M1I16M1I7M1I4M1I2M1I4M1I5M1I3M1I8M1I9M1I1M1I19M1I4M1I9M1I24M1I235M
+484 819 35 F 494 1500 8 882 32 93.46 4M1I12M1I5M1I16M1I4M1I8M1I6M1I5M1I4M1I1M1D23M1I36M1I359M
+432 825 27 F 441 1469 13 765 36 91.75 10M2I3M1I12M1I3M1D5M1I10M1I3M1I5M1I21M1I19M1I5M1I2M1I13M1I7M1D15M1D13M1D282M
+467 826 14 F 463 912 0 873 19 95.91 3M1D14M1D11M1D2M1I6M1D5M1D2M1D13M1I54M1D46M1I304M
+409 826 12 F 407 1049 0 702 38 90.69 24M1D18M1D7M1D6M1D7M1I60M1I202M1I4M1D28M1D8M1I3M1D32M1I3M
+426 826 55 F 419 1120 0 743 34 91.95 4M1D2M1D5M1D5M1D23M1D1M1I19M1D1M1I5M1D47M1D149M1D101M1I2M1D52M
+474 826 7 F 450 1297 0 801 41 91.13 4M1D5M1D6M1D1M1D2M1D2M1D1M1D6M2D4M1D3M1D1M1D5M1D2M1D2M1D1M1D4M1D15M1D5M1D14M1D14M1D13M1D22M1D33M1D285M
+446 826 35 F 436 1327 0 774 36 91.84 6M1D4M1D6M1D5M1D2M1D1M1D3M1D11M1D43M1D13M1D342M
+419 846 199 F 422 902 1 793 16 96.20 11M1I5M1I6M1D10M1I3M1D2M1I10M1I370M
+434 846 184 F 437 1100 6 772 33 92.42 5M1I9M1D14M1D38M1I5M1I14M1I9M1I338M
+454 846 164 F 456 1151 0 859 17 96.26 6M1I28M1D16M1I6M1D8M1I18M1I370M
+503 846 115 F 511 1230 2 879 45 91.12 12M1D7M1I3M1I14M1D6M1D7M1I3M1I11M1I1M1I6M1I13M1D2M1I13M1I5M1D4M1I72M1I13M1I12M1I294M
+410 846 204 F 414 1360 1 731 31 92.48 3M1D7M1I3M1I3M1D4M1I1M1I8M1D2M1I3M1I36M1I337M
+447 848 138 F 476 1658 0 737 62 86.57 2M1I12M1I9M1I21M1I13M1I10M1I20M1D54M1I26M1I21M1I12M1I106M1I53M1I9M1I3M1I8M1I5M1I6M2I5M1I1M1I1M1D1M2I2M1I3M1I3M1I3M1I6M1I5M1I7M1I4M1I4M1I10M
+412 849 0 F 415 912 68 746 27 93.47 27M1D56M1I6M1I5M1I156M1I161M
+417 849 0 F 417 1120 27 705 43 89.69 29M1D4M1D1M1I47M1I4M1D5M1I143M1D14M1I86M1I2M1D77M
+417 849 0 F 413 1297 62 722 36 91.33 2M1D5M1D19M2D22M1D22M1D7M1I10M1I14M1D143M1I166M
+557 866 17 F 561 1212 0 884 78 86.05 2M1D8M1D1M1D10M1I6M1D2M1D8M1D4M1D6M1D8M1D6M1I6M2I11M1I2M1D4M1I4M1D7M1I2M1D5M1I13M1I7M1I4M1D14M1I5M1I23M1I2M1I21M1I32M1I10M1D16M1I14M1I104M1I1M1D174M
+405 867 233 F 417 1602 0 708 38 90.75 24M1I11M1I45M1I223M1I8M1I9M1D3M1I27M2I16M1I3M1I19M1I3M1I9M1I4M
+421 884 0 F 427 890 8 770 26 93.87 4M1I4M1D7M1I9M1I4M1I1M1I9M1D17M1I34M1D4M1I20M1I20M1I285M
+424 892 0 F 420 1300 64 772 24 94.31 19M1D1M1D58M1D9M1D18M1I9M1D305M
+423 902 0 F 423 1100 20 747 33 92.20 10M1D3M1D2M1D8M1I9M1D3M1I2M1D10M1D2M1I6M1I12M1I12M1I338M
+409 902 14 F 409 1143 0 728 30 92.67 3M1D3M1D9M1D3M1D3M1I4M2D23M1I8M1I12M1I2M1D6M1I7M1I25M1I294M
+423 902 0 F 422 1151 34 818 9 97.87 12M1D27M1I2M1D9M1D1M1I369M
+420 902 3 F 422 1230 91 785 19 95.49 3M1I4M1D15M1I10M1D3M1I2M1D11M1D49M1I13M1I12M1I294M
+404 902 15 F 407 1360 8 736 25 93.83 7M1I4M1I4M1I6M1D7M1I8M1D29M1I337M
+438 905 0 F 451 1693 83 730 53 88.08 11M1I20M1D38M1D15M1I2M1D22M1D19M1I1M1D68M1I67M1I5M1I6M1I12M1I4M1I5M1I8M1I5M1I7M1I2M1I5M1I8M1I8M1I3M1I13M1I7M1I15M1D9M1D4M1I11M1I15M1D6M1D8M
+403 912 9 F 407 988 0 648 54 86.67 2M1D5M1I13M1D11M1I3M1I31M1I11M1I2M1I69M1D163M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+411 912 1 F 414 1049 3 696 43 89.58 4M1I12M1I3M1D7M1I2M1D11M1I9M1D60M1I7M1I39M1D163M1I4M1D28M1D8M1I3M1D32M1I5M1I7M
+445 912 38 F 439 1120 0 791 31 92.99 14M1D2M1D7M1D16M1D1M1I73M1D2M1D147M1D176M
+483 912 0 F 464 1297 6 842 35 92.61 9M1D1M1D2M1D3M1D5M1D5M2D3M1D10M1D1M1D4M1D1M1D14M1D5M1D14M1D27M1D22M1D15M1D18M1D305M
+444 912 19 F 436 1327 0 778 34 92.27 5M1D5M1D14M1D3M1D5M1D6M1D56M1D38M1D304M
+396 975 76 F 417 1362 0 687 42 89.67 2M1I4M1I1M1I15M1D5M1I7M1I9M1I7M1I29M1I11M1I7M1I4M1I2M1I4M1I5M1I3M1I8M1I9M1I1M1I19M1I4M1I9M1I24M1I206M
+419 975 53 F 419 1500 29 781 19 95.47 24M1I2M1D32M1D54M1I305M
+426 988 0 F 424 1049 12 766 28 93.41 2M1I10M1D7M1I19M1D14M1D15M1D9M1D2M1D21M1I9M1I312M
+433 1049 0 F 413 1297 4 630 72 82.98 7M1D4M1D1M1D3M1D1M1D1M1D2M1I2M1D1M1D4M1D4M1D5M1D4M1D5M1D3M1D12M1D5M1D14M1D18M1D7M1D2M1D22M1D33M1D144M1D4M1I28M1I8M1D3M1I32M1D5M1D7M1D5M1D2M3I1M1I6M
+409 1049 24 F 401 1327 2 615 65 83.95 3M1D5M1D3M1I2M1D5M1D3M1D10M1D4M1D47M1D4M1D5M1D201M1D4M1I28M1I8M1D3M1I32M1D5M1D7M1D5M1D2M3I1M1I6M
+409 1097 23 F 417 1806 1 721 35 91.53 3M1I9M1I25M1I12M1I7M1I132M1D158M1I2M1I20M1I25M1I15M
+410 1100 33 F 408 1143 1 725 31 92.42 4M1D5M1D5M1D10M1D18M1D8M1I16M1D3M1I2M1D6M1I5M1I27M1I294M
+442 1100 1 F 440 1151 16 789 31 92.97 10M1D17M1I2M1D1M1I2M1I11M1D6M1I17M1I3M1D5M1D14M1D9M1D338M
+440 1100 3 F 442 1230 71 792 30 93.20 18M1I12M1I2M1I38M1D5M1D3M1D4M1I6M1D9M1D17M1I15M1I12M1I294M
+413 1100 26 F 414 1360 1 704 41 90.08 9M1I3M1I10M1I8M1D2M1I8M1I4M1D6M1D12M1D5M1I7M1D334M
+444 1120 0 F 439 1297 36 772 37 91.62 8M1D20M1D5M1D3M1I1M1D9M1D9M1I1M1D16M1D21M1D13M1I20M1D128M1I181M
+419 1120 0 F 419 1327 17 715 41 90.21 7M1D31M1I1M1D9M1D2M1I7M1I1M1D16M1D34M1I150M1I156M
+409 1143 0 F 409 1151 47 734 28 93.15 3M1I3M1I9M1I1M1I9M1I24M1D8M1D12M1D2M1I6M1D7M1D25M1D294M
+407 1143 2 F 407 1230 106 742 24 94.10 11M1I2M1I10M1I10M1D10M1D11M1D12M1D2M1I6M1D21M1I307M
+405 1143 0 F 405 1360 10 681 43 89.38 13M1I1M1I1M1I6M1D2M1I1M1I1M1I6M1D16M1D8M1D2M1I10M1D2M1I6M1D7M1D25M1D290M
+456 1151 0 F 463 1230 50 844 25 94.56 3M1I15M1I3M1I5M1I9M1I1M1D3M1I19M1I7M1D19M1D50M1I13M1I12M1I294M
+412 1151 40 F 414 1360 1 742 28 93.22 3M1D11M1I4M1I4M1I3M1D5M1D2M1I3M1I6M1D30M1I337M
+436 1210 50 F 431 1516 1 786 27 93.77 8M1D22M2D3M1I6M1D1M1D12M1D4M1D7M1D21M1I26M1I318M
+443 1226 5 F 421 1296 26 732 44 89.81 5M1D1M1D2M1D8M1D1M1D1M2D8M1D2M1D8M1D2M1D3M1D2M1D4M1D4M1D8M2D14M1D3M1D14M1D7M1I4M1D4M1D7M1I8M1D43M1D256M
+414 1230 95 F 414 1360 1 735 31 92.51 5M1D9M1I9M1I8M1D2M1I8M1I31M1I22M1D13M1D12M1D290M
+404 1268 97 F 411 1627 3 746 23 94.36 5M1D12M1I7M1I9M1I7M1I9M1I320M1I14M1I17M1I3M
+395 1268 101 F 405 1747 0 713 29 92.75 3M2D9M1I7M1I9M1I7M1I9M1I281M1I13M1I5M1I6M1I7M1I7M1I9M1I6M1I10M1D4M
+451 1294 10 F 463 1786 0 740 58 87.31 3M1I1M1I16M1I7M1I25M1I5M1I14M1I10M1I17M1I8M1I11M1I82M1I108M1D4M2I43M1I1M1D21M1I14M1D4M1I28M1D4M1D20M
+429 1297 21 F 436 1327 0 754 37 91.45 6M1I6M1I16M1I7M1D7M1I3M1I18M1I51M1I29M1I285M
+445 1362 1 F 425 1500 52 732 46 89.43 6M1D1M1D15M1I5M1D7M1D1M1D7M1D7M1D24M1D24M1D4M1D2M1D4M1D5M1D3M1D8M1D9M1D1M1D19M1D4M1D9M1D24M1D235M
+477 1620 0 F 478 1796 6 832 41 91.41 301M1D20M1D37M1D4M1I24M1I2M1D11M1I19M1I10M1I11M1I24M1D9M
+446 1620 20 F 439 1937 0 762 41 90.73 281M1D20M1D36M1D31M1D2M1I6M1D16M1D3M1I3M1D7M1I3M1D9M1D8M1D11M
+403 1627 8 F 408 1747 0 754 19 95.31 330M1I13M1I5M1I4M1I9M1I17M1I17M1D7M
+415 1663 0 F 414 1893 27 700 43 89.63 249M1D18M1I6M1D17M1I9M1D6M1I12M1D12M1D12M1I2M1D10M1D8M1D12M1I7M1I1M1I6M1D6M1I13M
+438 1696 0 F 439 1781 23 748 43 90.19 333M1I21M1I7M1D15M1D6M1I11M1I6M1D11M1I12M1D12M
+433 1745 0 F 427 1764 1 776 28 93.49 348M1D13M1D20M1D14M1D2M1D18M1D12M
+458 1745 0 F 455 1767 0 829 28 93.87 346M1I2M1D7M1I23M1I4M1D14M1D2M1D6M1I13M1D21M1D7M1D6M
+450 1745 9 F 443 1882 0 809 28 93.73 18M1D320M1D13M1D20M1D14M1D2M1D9M1I1M1D5M1D24M1D2M1D7M1I3M1I2M
+427 1764 1 F 432 1767 0 796 21 95.11 346M1I9M1I8M1I14M1I31M1I19M
+416 1764 10 F 415 1882 0 783 16 96.15 18M1D397M
+403 1764 7 F 417 1896 0 700 40 90.24 21M1D235M1I46M1I4M1I3M1I6M1I4M1I3M1I6M1I8M1I9M1I8M1I5M1I12M1I9M1I21M1I2M
+446 1767 9 F 440 1882 0 826 20 95.49 18M1D318M1D9M1D8M1D14M1D31M1D5M1D1M1I16M1D4M1I14M
+405 1767 6 F 413 1896 0 710 36 91.20 21M1D235M1I46M1I4M1I3M1I6M1I4M1I3M1I6M1I8M1I3M1D6M1I3M1D5M1I28M1I5M1D15M
+494 1788 0 F 499 1850 9 882 37 92.55 373M1D49M1I1M1D3M1D9M1I9M1I3M1D13M1I7M1I2M1I8M1I4M1I5M1I4M
+449 1796 26 F 439 1937 0 759 43 90.32 342M1D24M1D13M1D15M1D11M1D6M1D4M1D5M1D8M1D7M1D4M
+458 1802 3 F 471 1877 0 827 34 92.68 313M1I28M1I12M1I24M1I5M1I11M1I6M1I10M2I5M1D9M1I13M1I1M1I2M1I13M1I5M
+435 1828 6 F 446 1947 0 734 49 88.88 276M1D20M1I8M1I10M1I8M1I10M1D14M1D5M1I7M1I6M1I9M1I7M1D8M1I2M1I3M1I3M1I4M1I27M2I4M
+399 1882 0 F 414 1896 3 705 36 91.14 253M1I46M1I4M1I3M1I6M1I4M1I3M1I6M1I8M1I9M1I8M1I5M1I12M1I9M1I21M1I2M
+414 299 0 P 420 883 20 729 35 91.61 210M1I3M1I53M1I50M1I15M1I12M1I3M1I28M1I5M1D2M1I1M2D10M1I11M1D7M
diff --git a/testdata/see-ext-at1MB-400-cigarX.matches b/testdata/see-ext-at1MB-400-cigarX.matches
new file mode 100644
index 0000000..f6bdffa
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-cigarX.matches
@@ -0,0 +1,231 @@
+# Options: -ii at1MB -l 400 -outfmt cigarX -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, cigarX
+597 1 0 F 592 4 7 898 97 83.68 3=1X1=1X1=1X3=1X9=1X9=1X2=1D1=1I2=1X5=1X20=1X6=1X8=1X11=1X6=1X17=2X12=1D1=1X1=1X1I15=1X1=1X1=1I3=2I8=1X11=1X17=1X11=1X8=1D2=1I21=1X3=1X13=1X17=1X14=1X6=2X1I3=1X1=1D4=2X4=1X10=1X8=1X5=1X9=1I2=1I4=1D1=1D3=2X3=1X35=1X3=1X4=2X2=1X1=1X9=1X13=3X1=1X1=1D9=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1D2=1I24=1I2=1D4=1I2=1D3=1D6=3X7=1D5=1D1=1X1=1D1=1X2=1D1=1D2=1X2=1X3=1D2=1X2=
+538 1 9 F 523 47 0 779 94 82.28 2=1X9=1X9=1X2=2X2=1X5=1X20=1X6=1X8=1X11=1X6=1X17=2X12=1D1=1X1=1X1I15=1X1=1X1=1I3=2I8=1X11=1X17=1X11=1X8=1D2=1I21=1X3=1X13=1X17=2X13=1X6=2X1I3=1X1=1D4=2X1=1X2=1X10=1X8=1X5=1X9=1I2=1I4=1D1=1D3=2X1=1I3=1D34=1X3=1X5=1D1=1I1=1X1=1X2=1D4=1D1=1X13=1I1=2D1=1D1=1D3=1X4=2X1=1D1=1X4=1X8=1D5=1X1=1X1=2D3=1D7=1D2=2D2=1X4=1D2=1D2=1D1=1D4=1D6=1D2=1X2=1I1X5=
+577 2 72 F 606 3 0 916 89 84.95 11=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1D2=1I24=1X3=1X3=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X20=1X62=1X33=1X19=3X3=1X5=1X28=1X21=1X7=1X47=2X2=1X5=1X1=1X5=1I2=1X1=1I5=1I10=2I3=1X3=1X2=1I7=1X5=1X1=1I4=1I4=1I2=1X2=1X2=1I1=1X2=1X2I3=1X1I2=1I5=1X5=1X1=1X1=1I6=1I3=1I3=1X1=1I5=2I3=1I5=1I8=1I1X1=1I2=1X1=1I1=1X2=1I1=1I1=1I1X5=1I2=1X2=
+626 2 34 F 656 5 0 1063 73 88.61 5=1X2=1X1=1X9=1X13=3X12=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1D2=1I24=1X7=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X21=1X178=1X55=1X1=1X14=1I3=1X1=1I5=1I10=1I7=1X2=1I7=1X5=1X1=1I4=1I4=1I7=1I7=1I2=1I3=1I5=1X7=1I8=1I3=1I3=1X1=1I5=1I3=1I5=1I8=1X1I1=1I5=1I3=1I1=1I2=1I5=1I2=1X2=1I1=1I3=1I1=1I6=
+484 2 176 F 513 6 104 730 89 82.15 6=1X8=1X5=1X2=1X1I1=1X2=2X3=1X1=2X2=1D1=1I2=3X1=1X1=1X3=2X10=2X7=1X62=1X33=1X19=3X3=1X5=1X28=1X21=1X7=1X47=2X2=1X5=1X1=1X5=1I2=1X1=1I5=1I10=1I3=1X3=1X2=1I7=1X5=1X1=1I4=1I3=1X1I2=1X2=1X2=1I1=1X2=1X1I3=1X1I2=1I9=1I2=1X1=1X1=1I6=1I3=1I3=1X1=1I5=1I3=1I5=1I8=1X1I1=1I2=1X1=1I2=1X1=1I1=1I1=1I1X5=1X1=1I1X2=1X1=1X2=1I2=1X3=
+706 2 0 F 749 16 84 1269 62 91.48 4=1X316=1X165=1X1=1X14=1I3=1X1=1I5=1I10=1I10=1I7=1X5=1X1=1I4=1I4=1I7=1I7=1I2=1I3=1I13=1I8=1I3=1I3=1X1=1I5=1I3=1I5=1I8=1X1I1=1I5=1I3=1I1=1I2=1I5=1I2=1X2=1I1=1I3=1I1=1I6=1X1I2=1X1I1=1X1=1I2=1I2=1X1I1=1X2=1D2=1I2=1I4=3I3=1I1=1I2=1I3=1I5=1X3=1X2=
+660 2 0 F 687 39 0 1065 94 86.04 4=1X63=3X12=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1D2=1I24=1X7=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X83=1X11=1X4=1X36=3X3=1X34=1X21=1X7=1X47=2X2=1X5=1X1=1X5=1I2=1X1=1I5=1I10=1I3=1X3=1X2=1I7=1X5=1X1=1I4=1I3=1X1I2=1X2=1X2=1I1=1X2=1X1I3=1X1I2=1I5=1X5=1X1=1X1=1I6=1I3=1I3=1X1=1I5=1I3=1I5=1I8=1X1I1=1I2=1X1=1I2=1X1=1I1=1I1=1I1X5=1X1=1I1X2=1X1=1X2=1I2=1X3=
+668 3 0 F 660 5 38 1139 63 90.51 87=1X91=1I2=1D60=1X33=1X19=3X3=1X5=1X28=1X29=1X48=1D1=1X1=1I5=1X1=1X4=1X22=1D4=1X6=1X28=1X2=1X1=1I1=1D1=1X2=2X1D4=1X8=1X5=1X3=1X23=1D3=1X20=1X1=1D3=1I5=2X5=1X9=1X1=1X1D4=1X3=1D1=1X1=1X1=1X1=2X1I1=2D3=1I7=2X2=1X3=1X1=2D3=1D4=1X2=
+639 3 14 F 631 6 14 1063 69 89.13 5=3X4=2X1=1X2=1X5=2X2=2X2=1X3=1X7=4X5=4X6=1X9=1X5=1X1=1X3=4X7=1X8=1X8=1I2=1X2=1X11=1X2=3X1=1X1=1X4=1X10=2X7=1X275=1D36=1X14=1D15=1X3=1I30=1D3=1X24=1D3=1I4=1X5=2X8=4D12=1X2=2X1=3D2=1X8=1X2=1X3=
+655 3 0 F 650 16 156 1047 86 86.82 11=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1I2=1D24=1X3=1X3=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X20=1X62=1X6=1X26=1X19=3X3=1X5=1X28=1X21=1X7=1X48=1D1=1X1=1I5=1X1=1X4=1X22=1D4=1X3=1X2=1X28=1X2=1X1=1I1=1D1=1X2=2X1D4=1X8=1X5=1X3=1X23=1D3=1X20=1X1=1D3=1I5=2X5=1X9=1X1=1X1D1=1X2=1X3=1D1=1X1=1X1=1X1=1D4X3=1I1X6=2X2=1X5=
+653 3 0 F 643 39 72 1203 31 95.22 20=1X66=1X91=1X74=1X4=1X16=1X31=1X146=1D36=1X14=1D15=1X33=1D3=1X24=1D3=1I4=1X5=2X8=4D12=1X2=2X1=3D2=1X8=1X2=1X3=
+613 4 16 F 571 47 0 1022 54 90.88 273=1X35=1X53=1X46=1X1=1X6=1D4=1D16=1D2=1D4=1X4=1X2=1D1=1X4=1X8=1D7=1D1=1D4=1D6=1D4=1D3=1D3=1D2=1D2=1D1=1D4=1D5=1D1=1X1=1D2=1D1=1D1=1D2=1D2=1D2=1D2=1D1=1D5=1D6=1X1=1D2=1D1=1D2=1X3=1D2=1D3=1D4=2D1=1D5=3D3=1D2=1D3=
+704 5 52 F 700 6 14 1056 116 83.48 5=3X4=2X1=1X2=1X5=2X2=2X2=1X3=1X7=4X5=4X6=1X15=1X1=1X3=4X7=1X8=1X8=1I2=1X2=1X11=1X2=3X1=1X1=1X4=1X10=2X7=1I1=1D61=1X33=1X19=3X3=1X5=1X28=1X29=1X48=1I1=1X1=1D5=1X1=1X4=1X26=1X6=1X24=1X3=1X2=1X1=1D1=1I1=1X2=2X4=1X8=1I6=1X3=1X47=1X1=1X2=1X5=1X7=1X9=1X1D1=1I8=1X2=1X2=1X1=1D3=1D1=2D1=1D3=1X8=1X1=1X1D1=1I12=2D3=2X1=2X1=1I3=2X2=1X3=1I1=1I1=1I2=1D1X6=1X2=1X2=2D1=1X1=1D4=1I2=
+742 5 0 F 746 16 118 1323 55 92.61 5=1X2=1X1=1X9=1X13=3X12=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1I2=1D24=1X7=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X21=1X68=1X109=1X103=1X57=1X89=1X13=1X1=1X5=1X14=1X1=1X2=1D3=1X2=2I2=1I1=2I5=1X4=1X5=1X11=1X2=1X6=1X2=
+756 5 0 F 750 39 34 1275 77 89.77 5=1X2=1X1=1X9=1X37=1X159=1X61=1X11=1X4=1X36=3X3=1X34=1X29=1X48=1I1=1X1=1D5=1X1=1X4=1X26=1X6=1X24=1X3=1X2=1X1=1D1=1I1=1X2=2X4=1X14=1X3=1X47=1X1=1X2=1X5=1X7=1X9=1X1D1=1I8=1X2=1X2=1X1=1D3=1D1=2D1=1D3=1X8=1X1=1X1D1=1I12=2D3=2X1=2X1=1I3=2X2=1X3=1I1=1I1=1I2=1D1X6=1X2=1X2=2D1=1X1=1D4=1I2=
+599 6 104 F 601 16 260 915 95 84.17 6=1X8=1X5=1X2=1X1D1=1X2=2X3=1X1=2X2=1I1=1D2=3X1=1X1=1X3=2X10=2X7=1X62=1X6=1X26=1X19=3X3=1X5=1X28=1X21=1X7=1X48=1D1=1X1=1I5=1X1=1X4=1X26=1X3=1X2=1X24=1X3=1X2=1X1=1I1=1D1=1X2=2X4=1X12=1D2=1X3=1X47=1X1=1X2=1X5=1X7=1X9=1X1I1=1X1D7=1X2=1X2=1X1=1I3=1I2=3I3=1X7=3X1D1=1X3=1X2=2X1=1X1=1X11=2X1=1X3=1D2=1D1=1D1X3=1X4=1X1=2I3=1I2=
+783 6 14 F 788 39 86 1400 57 92.74 5=3X4=2X1=1X2=1X5=2X2=2X2=1X3=1X7=4X5=4X6=1X15=1X1=1X3=4X7=1X8=1X8=1D2=1X2=1X11=1X2=3X1=1X1=1X4=1X10=2X7=1X74=1X4=1X16=1X31=1X212=1D178=1X57=1I7=1I4=1I3=1X10=1I2=1I6=1I3=1I2=
+467 11 135 F 449 29 138 766 50 89.08 8=1D2=3X1=3X4=1X1=1X1=1D87=1X63=1X1=1X2=1X56=1X51=1X5=1X1=1X24=1X2=1X1=1X2=1X9=1X11=1X2=1D10=1D7=3X3=1X2=1X2=1X3=1X1=2D2=1D3=1X3=1D3=1D6=1D5=1D2=1D7=1D5=1D2=1D5=1D1=1X1=1D1X7=1D3=
+767 16 84 F 766 39 0 1248 95 87.61 68=3X12=1X3=1X4=1X8=1X5=1X3=2X10=1X3=1X1D2=1I24=1X7=2X8=1X1=1X21=1X2=1X5=1X3=1X1=2X2=1X13=1X83=1X6=1X4=1X4=1X36=3X3=1X34=1X21=1X7=1X48=1I1=1X1=1D5=1X1=1X4=1X26=1X3=1X2=1X24=1X3=1X2=1X1=1D1=1I1=1X2=2X4=1X8=1X5=1X3=1X47=1X1=1X2=1X5=1X7=1X9=1X1D1=1X1I7=1X2=1X2=1X1=1D3=1D2=3D3=1X7=3X1I1=1X3=1X2=2X1=1X1=1X11=2X1=1X3=1I2=1I1=1I1X3=1X4=
+397 18 0 F 417 46 194 634 60 85.26 19=1X37=1X26=1X68=1X3=1X30=1X6=1X5=1X10=1X3=1X11=1X6=1X5=1X6=1X2=1X9=1X2=1X2=1I2=1X1=1X4=1X5=1X10=1X1=1I6=1X4=1I11=1X1=1X1=1X1I2=1X1=1I3=1I2=2X1I1=1X1=1I1=1X2=1I5=1X1=1X1=1I1=1X2=1I7=1I4=1I1=1X1=1X1=1I1=1X1=1I3=1I5=1I1=1X1=1X1=1I1X2=1I2=1I7=
+458 34 157 F 442 1317 0 789 37 91.78 3=1D3=1X1D2=1X1D3=1D2=1D2=1D1=1X2=1X4=1D1=1X1=1D6=1D1=1I1=1D5=1D3=2X12=1D2=1D5=1X6=1D5=1X16=1D30=1X116=1X107=1D8=1X1=1D37=1X5=1X12=1X5=1X4=1X3=1X1=1X7=
+399 35 140 F 402 72 145 717 28 93.01 3=1I3=1X1I3=2X5=1I1X3=1I4=1X1=1X1=1X2=1I1X2=1D3=3I1=4X2=1D220=1X52=1D31=1X21=1X12=1D7=1D3=
+430 61 134 F 438 65 137 787 27 93.78 3=2X3=2D5=1X1I2=1X1=1I201=1D2=1X68=1X20=1D29=1I12=1X17=1X2=1X9=1I8=1X4=1I6=1X2=1I5=2I6=2I2=1I3=1I5=
+517 64 0 F 517 65 0 1034 0 100.00 517=
+461 78 86 F 459 80 149 800 40 91.30 4=1D1=1D2=1X23=1X14=1X22=1X13=1X11=1X23=1X31=1X25=1X16=1X4=1X7=1D7=1X1=1X37=2X18=1X7=1X9=1X8=1D8=2X13=1D8=1X3=1X1=1X18=1X12=1X4=1X1=1X2I1=1I12=1X14=1X16=1X7=1X18=1X5=
+542 78 223 F 540 1488 8 995 29 94.64 3=1X1=1I4=1X3=1D5=1I4=1D1=1X1=1D2=1D1=1I1X5=1I1X3=1X2=1X8=1X3=1D6=1X5=1I8=1D1=1I2=1X2=1D8=1D3=1I5=1D10=1X9=1X13=1X402=
+568 79 56 F 568 1495 0 1022 38 93.31 2=1D5=1D10=2X12=1X1=1X3=1X3=1D1=1X4=1X1=1X3=1X1=2X3=1X2=1I4=2X1D12=1X1=1X8=1I7=1D4=1I4=1X9=1X4=2X6=1X1=1I6=1X2=1X2=1I6=1X1=1I5=1D5=1I14=1D385=
+417 223 0 F 414 271 2 801 10 97.59 3=2D47=1X33=1X10=1X235=1X24=1X24=1D4=1X2=1X25=
+418 229 0 F 419 270 0 828 3 99.28 392=1X16=1I5=1X3=
+418 318 13 F 428 1693 142 621 75 82.27 4=1I2=1X3=1X2=1I4=1I9=1X3=1I2=1I6=1X11=1I2=1X11=1I1=1X5=1D15=1D12=1X9=1D12=1D10=1D3=1I59=1X7=1I5=1I5=1X1I5=1X4=1X1=1I4=1I5=1I8=1I5=1I6=1X1I2=1I5=1I8=1I7=1X1I3=1I5=1X1=1X5=1I4=1X2=1I14=1X1D9=1D4=1I2=1X8=1I3=1I2=1X2=1D1=1X1=1X2=1D6=1D8=1I1=1D2=1X1=2X1=1D2=1D3=1D2X4=1X1=1D2=1D1X1=1X4=1D2=1D3=
+405 336 36 F 419 1703 0 734 30 92.72 3=1I7=1X37=1X26=1X221=1X16=1X1=1I4=1I2=1X4=1I6=1I3=1X1=1I4=1X3=1I5=1X1=1I5=1I5=1X1I5=1X1I5=1I2=1X3=1X4=1I1=1X2=1I5=1X3=1X5=
+439 376 0 F 450 1694 81 703 62 86.05 3=1I1=1X2=1I6=1I2=1X6=1X1I5=1I4=1I1=1X9=1X2=1I1X3=1X11=1I26=1I4=1X8=1I15=1I7=1I34=1X66=1X25=1X15=1I40=1X1=1I4=2X1=1X8=1I9=1X6=2X3=1X1=1X1=1D1=1X2=1X1=1I6=1X5=2X5=1D2=1X1=1I6=2X1=1X1D1=1X3=1X4=1X1=1D2=1D4=2X1=1I6=1D2=1X1=1D3=1X3=1X5=
+400 380 1 F 408 451 26 766 14 96.53 4=1X3=1I3=2X1I4=1X1I3=1I12=1X7=1I4=1I3=1I5=1I85=1X261=
+403 380 0 F 406 630 10 722 29 92.83 3=1X3=2X5=2X3=1I2=1X3=2X4=1X2=1X7=1X1=1X1=1X3=1I1=1X8=1X2=1X18=1X9=1X1=1X2=1X1=1I4=1I1=1D19=1X2=1X9=1X1=1X263=
+401 380 0 F 404 736 106 784 7 98.26 5=1X6=1I11=1I11=1X11=1X2=1I90=1X261=
+400 380 3 F 403 846 215 773 10 97.51 2=1X3=1I3=1X10=1I11=1X11=1X2=1I90=1X29=1X11=1X221=
+403 380 0 F 407 902 16 783 9 97.78 5=1X14=1I5=1I1=1X7=1X1=1I10=1X2=1I90=1X263=
+401 380 2 F 408 1100 35 740 23 94.31 6=2X1I2=1X10=1I2=1X5=1X2=1X3=1I5=1I3=1I3=1X1=1X2=1X1=1I4=1X4=1I17=1X19=1X11=1X24=1X252=1X1=1X8=
+401 380 2 F 407 1143 2 721 29 92.82 2=1X3=1X3=1X2=1D6=1I3=1D3=1X1=1X1=1I1=1X11=1I3=1I2=1X2=1X1=1I4=1X3=1X3=1I2=1D4=1X1=1I7=1I8=1X11=1X4=1I30=1X133=1X14=1X105=1X8=
+403 380 0 F 407 1151 49 786 8 98.02 5=1X13=1I4=1I11=1X1I11=1X2=1I90=1X263=
+403 380 0 F 409 1230 104 773 13 96.80 4=2X2=1X1=1I13=1I8=1X2=1X14=1I5=1X29=1I13=1I12=1I30=1X263=
+399 380 0 F 406 1360 9 730 25 93.79 4=1X1I5=1I4=1I5=1X4=1I3=1I2=1X1=1X2=1X11=1X2=1I9=1X3=1I5=1X17=1X28=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+475 404 165 F 466 819 35 809 44 90.65 2=1D3=1D2=2X1=1X2=1X1=1X3=1D2=1D1=1X4=1D3=1X3=1D3=1D1=1D3X1=1I6=1D1X6=1D1=1X1=1X1=1X2=1D3=1I4=1D6=1X6=1D2=2X20=1X3=1X1=1I15=1X3=1X18=1X12=1I12=1X123=1X3=1X32=1X19=1X104=
+418 404 186 F 420 975 52 760 26 93.79 5=1X4=1D3=1X3=1D3=1X1=4X1=1I6=1X2=1X8=1I2=1X5=1X11=1X37=1I15=1X13=1X8=1X12=1I12=1X123=1X3=1X32=1X19=1X68=
+420 404 213 F 444 1362 2 699 55 87.27 2=1I2=1I3=1X1=1X2=1I1=1X4=1X3=1X2=1I3=1X3=1I7=1I2X7=1I3=1X2=1X17=1X2=1X1=1I1=1I1=1X7=1I5=2X1I3=1X1I2=1I4=1I5=1I3=1I2=1X1=1X2=1X1I5=1X3=1X1=1X1=1X2=3I5=1X3=1X2=1I4=1I9=1I14=1X9=1I80=1X3=1X32=1X19=1X91=1X5=
+453 404 187 F 455 1500 29 806 34 92.51 4=1X4=1D3=1X3=1D4=1I1=2X1=1X7=1X6=1X2=1X1=1I2=1X5=1X4=1D5=2X9=2X5=1X3=1X10=1X3=1X1=1I9=1I6=1X3=1X18=1X12=1I12=1X123=1X3=1X32=1X19=1X104=
+434 406 8 F 430 542 0 771 31 92.82 7=1X1=1X1=3X1=1D2=1D1=1X6=1X1=2X4=1D7=1D2=1X8=1D5=1D2=1X14=1X4=1X1=1I3=1X1I21=1X38=1X33=1X6=1X31=1X114=1X19=1X11=1X1=1X61=
+402 406 40 F 413 1056 0 713 34 91.66 3=1X10=1X1I9=1D7=1I3=1D1=1I10=1X4=1X2I2=1I2=1X18=1X1D3=1I7=1I8=1X1I2=1I11=1I1=1X2=1I4=1X10=1I2=1I21=1X6=1X8=1X22=1X114=1X19=1X11=1X1=1X61=
+430 412 83 F 436 1525 0 755 37 91.45 3=1I1=1X1=1X4=1X5=1I1=1I6=1I2=1I2=1X3=1X2=1X4=1X3=1I3=1X3=1X7=1X4=1I3=1I1=1D1=1X3=1I3=1I1X1=1D5=1D3=1X3=1I1=1I7=1D4=1D2=1X3=1I30=1D20=1D26=1X159=1X53=1X24=
+434 426 27 F 429 795 0 722 47 89.11 4=1X1=1X5=1D4=1D9=1D2=1X2=1D4=1X3=1X2=1X1=1I3=1D2=1D1=1X1=1X4=1D5=1D4=1I6=1X2=1D1=1I4=1X2=1X1=1X3=1X5=1D6=1I4=1D3=1I19=1I1=1X3=1D1=1D6=1X6=1X4=1X18=1I29=1I41=1X17=1X6=1X13=2X2=1X55=1X69=2X11=
+409 432 9 F 410 652 0 735 28 93.16 2=1X3=1X2=1I11=1X1=1X1=1I5=1D1=1X1=1D6=1X1=2D2=1X2=1X1=1X7=1I4=1X5=2X1=1I11=1I6=1X1=1D6=1I13=1X9=1X11=1X37=1X237=
+422 432 0 F 423 825 61 791 18 95.74 2=1I1=1D5=1I2=1X1=1X1=1X1=1D6=1X8=1X14=1X2=1I1=1D1=1X10=1X11=1X7=1I29=1I9=1D298=
+397 432 0 F 403 1469 51 728 24 94.00 3=1X5=2I2=1X2=1I1=1X1=1X15=1X5=1I1=1X7=1I4=1D3=1X1=1I5=1I5=1X3=1I2=1X3=1I8=2X12=1D8=1X13=1D273=
+423 449 0 F 421 868 143 802 14 96.68 6=1X7=1X1D4=1I1=1X8=1D2=1X1=1D24=1X6=1D13=1I2=1I16=1X19=1D303=
+434 451 0 F 427 736 83 825 12 97.21 12=1X1=1D10=1D8=1D3=3X4=1X1D24=1D7=1D6=1D347=
+434 451 0 F 427 846 189 816 15 96.52 18=1X5=1X1D2=1D5=1X3=2X1D4=1X1D24=1D7=1D6=1D115=1X11=1X219=
+424 451 10 F 420 902 1 787 19 95.50 2=1X5=2X1=1I4=1D8=1D3=1X1D1X4=2X3=1D2=1I2=1X7=1I1X4=1D10=1D6=1D347=
+434 451 0 F 429 1100 12 764 33 92.35 9=1D2=1X5=1X1=1X1=1D2=2D3=1D2=3X2=3X4=1D1X7=1X5=1X2=1X1=1I6=1X4=1X3=1D1X1=1X3=1X5=1X4=1I17=1X19=1X11=1X277=1X1=1X6=
+434 451 0 F 428 1151 26 823 13 96.98 9=1D2=1X12=1D8=1D3=2X1D4=2X16=1I8=1D7=1D6=1D347=
+434 451 0 F 431 1230 80 805 20 95.38 12=1D2=1I5=1X4=1D3=1X3=1X1D3=3X4=1X1D13=1X2=1X7=1D4=1D10=1D29=1I13=1I12=1I292=
+417 451 15 F 414 1360 1 726 35 91.58 3=1D3=1X2=1D3=1X1=1I3=2X2=3X4=1D2X2=1D2=1I3=1I2=1X1=1X10=1D4=1X2=1D6=1D4=1X3=1I5=1X17=1X28=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+415 452 0 F 413 882 3 750 26 93.72 2=1I4=1D5=1X2=1I1=1X2=1X2=1X4=1X1D17=2X3=1X2=1D6=1I4=1D6=1I2=1X1D4=2X4=1X5=1X21=1D12=1D6=1X17=1I263=
+424 454 70 F 432 1837 0 793 21 95.09 2=1D1=1X79=1D1=1X2=1I9=1X11=1X51=1X39=1X84=1X47=1I33=1I2=1I3=1I11=1X2=1I15=1X8=1I2=1I3=1I2=1I6=
+453 460 27 F 452 1351 0 821 28 93.81 5=1D1=1D4=1I3=1I3=2X1=1X3=1X4=1D2=1I6=2X7=1X12=1D3=1I1=1I4=1X2=1X3=1X8=1X3=1X54=2X11=1D10=1X6=1X21=1D137=1X116=
+492 474 48 F 480 543 0 903 23 95.27 4=1D2=1D3=1D7=1D5=1D3=1X6=1D6=1X4=1D2=1D5=1D1=1X11=1D11=1X1=1X1=1D5=1X4=1X5=1X16=1I2=1D11=1X30=1D325=
+540 474 0 F 522 658 80 975 29 94.54 2=1D10=1D1=1D11=1X3=2X1=1X3=1D8=1D1=2X1=1D6=1X3=1D2=1D14=1D1=1I2=1D11=1D2=1D6=1X3=1D7=1D15=1D5=1X20=1D40=1D10=1D61=1D263=
+454 474 86 F 440 713 0 786 36 91.95 2=1X2=1D2=1D1=1X1=1D3=1X2=1X4=1D1=1X1=1X2=1D6=1D3=1D1=1D2=1X4=1D2=1D1X1=1X1=1X3=1D1=1X2=1X5=1I2=1X1=1D5=1D1=1X2=1X2=1X3=1X11=1I12=1D4=1D1=1D58=1X266=
+423 474 0 F 408 736 18 693 46 88.93 2=1D3=1D2=1D7=1D5=1I2=1D1=1X3=1D2=1D1X6=1I2=1D1X6=1D6=1D3=1X3=1D15=1I2=1X1=1D21=1X18=1X6=1D5=1X19=1X15=1X36=1D62=1X97=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+435 474 105 F 433 798 0 811 19 95.62 9=1X1=1X7=2X5=1X2=1D3=1X2=1D4=1X12=1I4=1D6=2X17=1X20=1X3=1D89=1I128=1X95=1X11=
+480 474 35 F 479 826 2 914 15 96.87 9=1X7=1X6=1X14=1X13=1I7=1I14=1D23=1X1=1D5=1X4=1X14=1X24=1X27=1D247=1X52=
+423 474 0 F 418 846 114 685 52 87.63 7=1I1=1I3=1X2=1D2=1X11=1I2=1X1=1I1=1X2=1X4=1I8=1X1=1D6=1X3=1X2=1D5=1X1=1D8=1I2=1X5=1X5=1X2=1D6=1I4=1D16=1X6=1D5=1X19=1X15=1X36=1D56=1X5=1X5=1X91=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+422 474 118 F 417 849 0 758 27 93.56 17=1D5=1X4=1I1=1X12=1X1=1D16=1X3=1X2=1X9=1X6=1D3=1X1=1X3=2X2D46=1X6=1X2=1X16=1X15=1X1=1X2=1X61=1D9=1X78=1X77=
+488 474 47 F 483 912 0 932 13 97.32 5=1D13=1D11=1D1=1I11=1D15=1X27=1D5=2X9=1X10=1D46=1I4=1D320=
+407 474 57 F 407 988 0 664 50 87.71 2=1D3=1X8=1X1=1X2=1D4=1X2=1X9=1I1X4=1X1=1X2=2X4=1X4=1X2=1X6=1I9=1X4=1I1=1X20=1D14=1X36=1D17=1X8=1X35=1X47=1X38=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=3X7=1X8=1I3=1X1=1I1X1=1X4=
+419 474 45 F 417 1049 0 722 38 90.91 2=1X4=1X2=2X6=1X5=1D15=1X15=1D18=1X12=1X1=1D5=1X19=1X9=1I6=1X36=1D62=1X86=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=1X9=1X8=1I3=1X1=1I1X1=1X4=
+453 474 87 F 444 1120 0 798 33 92.64 4=1D7=1D2=1X2=1D4=1D2=1X8=1X1=1X5=1D1=1I1=1D4=1X2=1X2=1X1=1X5=1D1=1I1=1X7=1D1=1X5=1X1=1X5=1X3=1X4=1X4=1X13=1D6=1D58=1X84=1D56=1X44=1X54=1X24=
+422 474 1 F 425 1230 2 679 56 86.78 3=1D1=1X2=1I8=1X2=1I3=1I4=1X1I3=1X2=1D1=1I8=1X4=1I3=1X5=1X2=1X1=1I1X19=1I2=1D2=1I5=1X7=1X3=1X22=1I2=1D2=1X1=1D5=1X4=1X8=1X5=1X15=1X7=1I13=1I12=1I4=1D62=1X97=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+500 474 40 F 475 1297 0 852 41 91.59 4=1D7=1D4=1D1=1D2=1D2=1D1=1D2=1X2=1D1=1D1=1X2=1D3=1D1=1X4=1D4=1D1=1D1X3=1D1=1X1=1D4=1X7=1D5=1D3=1X2=1D1X6=1D1X1=1X1=1X5=1X5=1X2=1D9=1D1=1X9=1X10=1D19=1D14=1D4=1X305=
+447 474 68 F 436 1327 0 775 36 91.85 5=1D5=1D3=2X6=1D3=1D3=1D1=1X3=1X1=1D4=1D1=1X9=2X4=1X2=1D1X3=1X2=2X1=3X5=1X2=1X2=1X2=1D6=1X2=1D4=1X6=1X12=1X1=1X15=1D36=1X19=1X243=
+409 480 46 F 398 926 0 744 21 94.80 3=1X5=1D1=1D1=1X3=1X3=1D3=1X3=1D10=1D2=1D1=1X3=1D6=1D3=1D9=1D5=1X8=1D3=1X1=1X10=1X7=1X298=
+425 489 0 F 429 1339 12 806 16 96.25 2=1X7=1I8=1I1=1I2=1X6=1X3=1D5=1X2=1X2=1I11=1I4=1D19=1I13=1I7=1X9=1D315=
+409 522 41 F 410 1134 0 723 32 92.19 4=1X3=2X1=1X3=1X7=1X1=1X6=1D3=1I1=1X1=1X4=1I12=1X3=1D4=2X8=1X8=1I5=2X2=1X39=1X17=1X9=1X23=3X1=1X1=2X31=1X40=1X143=
+406 530 14 F 398 1343 30 735 23 94.28 5=1X6=1D2=1X5=2X1=1D1=1D2=1X1D2=1X3=2D3=1X5=1X6=1D4=1X8=1X11=1X5=1D26=1X83=1X28=1X23=1X154=
+422 536 58 F 414 1082 12 755 27 93.54 4=1D2=1X1=1D2=1X1=1X4=1D2=3X1=1X1=1X2=1D2=1X4=2X2=1D2=1X3=1X3=1D3=1D1=1X4=1X6=1X1=1D6=1X19=1X39=1X280=
+400 542 30 F 413 1056 0 738 25 93.85 3=1I7=1I3=1I13=1I3=1I2=1D1=1I10=1X4=1I1=1X2=1X21=1X1D1=1X1=1I7=1I8=1X1I2=1I11=1I1=1X2=1I15=1I2=1I37=1X233=
+477 543 3 F 476 658 126 890 21 95.59 3=1I3=1I2=1D3=1X5=1I3=1X2=1D2=1I7=1X11=1I5=1D18=1X1=1X11=1X5=1X9=1D6=1D2=1I11=1X19=1D71=1D263=
+436 543 44 F 429 713 11 793 24 94.45 2=1X2=1X3=1X1=1X1=1X2=1X5=1D5=1X2=1D3=1D3=1D1=1X5=1D4=1X7=1D1=1X7=1X2=1X2=1X3=1X11=1I12=1D4=1D59=1X266=
+429 543 51 F 430 798 3 793 22 94.88 6=1X1=1X1=1I5=2X5=1X1=1X3=1X1D6=1X5=1X6=1I4=1D2=1D4=1I1X11=1X5=1X20=1X92=1I128=1X95=1X11=
+455 543 0 F 466 826 15 852 23 95.01 2=1I4=1I3=1I7=1I10=1I6=1I2=1I3=1X3=1I2=1I2=1I4=1X12=1I11=1X1=1X11=1X5=1X8=1X7=1D2=1I11=1X2=1X274=1X52=
+419 543 61 F 416 849 1 748 29 93.05 12=1X1=1X12=1X1I4=1X7=1X1=1D6=1D2=1I7=1X3=1X2=1X9=1X6=1D3=1X1=1X3=2X1D46=1X6=1X2=1X16=1X15=1X1=1X2=1X61=1D9=1X78=1X77=
+475 543 0 F 482 912 1 897 20 95.82 6=1I3=1I6=1X6=1X4=1I4=1I6=1D4=1I2=1I5=1I13=1I11=1X1=1X7=1X3=1X16=1D5=1D2=1I11=1X26=1I324=
+397 543 7 F 407 988 0 633 57 85.82 5=1X3=1I4=1X1=1X6=1X2=1I5=1X3=2I1X3=1I1=1X2=1I2X3=1X4=1X2=1I6=1I5=1X1=1X1=1I4=1I6=1X5=1X8=1D4=1D5=1I5=1X5=1X47=1X8=1X35=1X47=1X38=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=3X7=1X8=1I3=1X1=1I1X1=1X4=
+404 543 0 F 414 1049 3 677 47 88.51 4=1I2=1X1I2=1I3=1X4=1X3=1I3=1X7=1I5=1X4=1I3=1X3=1I1=1X11=1X1I10=1X1=1X11=1X5=1X8=1X7=1X2=1I5=1X5=1X92=1X86=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=1X9=1X8=1I3=1X1=1I1X1=1X4=
+447 543 33 F 444 1120 0 798 31 93.04 4=1D4=1I4=1X2=1D3=1X2=1X4=1I3=1X1=1X3=1I2=1X2=1D3=1X5=1X8=1X1=1X7=1D1=1D1X5=1I1=1X5=1X3=1X4=1X4=1X13=1D64=1X84=1D56=1X44=1X54=1X24=
+480 543 0 F 468 1297 7 855 31 93.46 6=2X3=1D2=1D3=1X3=1D1=1X2=1D4=1X4=1D5=1X3=1D1=1X5=1X6=1X5=1D3=2X1=1X7=1D1=1X1=1X5=1X5=1X2=1D4=1D6=1X9=1X10=1D33=1D4=1X305=
+439 543 16 F 436 1327 0 782 31 92.91 6=1D3=1X3=1I7=1D3=1X3=1X3=1X5=1D1=1X3=1I5=2X4=2X1=1X3=1X3=1X1=2X6=1X2=1X2=1X2=1D4=1D2=1X6=1X6=1X12=1X1=1X51=1X19=1X243=
+436 549 0 F 448 661 68 773 37 91.63 6=1I2=1X1=1X8=1I1=2X3=1X2=1I1X1=1I1=1X3=1D1X2=1X2=1I1=1I3=1I3=2X1=1X5=2X3=1I6=1I18=1D8=1I4=1I26=1D23=1X1I18=1X32=1X23=1X5=1I31=1X4=1I95=1I73=
+402 568 10 F 406 1793 2 739 23 94.31 5=1X1=1X1=1X10=1X2=1X4=1X1=1X1=1I6=1X1=1X5=1X10=2X2=1I7=1X1=1X7=1X27=1D18=1I147=1X72=1I29=1X3=1I24=
+432 584 48 F 449 1661 0 707 58 86.83 3=1X1D3=1X1=1I3=1I5=1I1=1X3=1I1=1X2=3X1=1I4=2X7=2X4=1I2=1X1=1X6=1X6=1I1=1I1X13=1X19=1D3=1I33=1X93=1X52=1X3=1X19=1X12=1X7=1X1=1X3=1I4=1X20=1X1=1I5=1X1=1X1=1I5=1X2=1I7=1X1=1I4=1I6=2X2=1I3=1X2=2X1=1X7=2I5=1X2=1I2=
+412 630 2 F 414 736 96 730 32 92.25 4=1I3=1I4=1X1=1X1=2X3=1X1=1X1=1I4=1X5=2X4=1X2=1X7=1X1=1X1=1X2=1I1=1D1=1X8=1X2=1X18=1X9=1X1=1X2=1X1=1D4=1D1=1I19=1X2=1X9=1X263=
+415 630 1 F 416 846 202 729 34 91.82 5=1I3=1X1=1I2=2X2=1X4=1X1=2X4=1X5=2X4=1X2=1X7=1X1=1X1=1X2=1I1=1D1=1X8=1X2=1X18=1X9=1X1=1X2=1X1=1D4=1D1=1I19=1X2=1X9=1X31=1X11=1X221=
+415 630 1 F 419 902 4 732 34 91.85 5=1X1I1=1I1=1I4=1X1=1X1=2X5=2X6=1X2=1I1=2X4=1X2=1I8=1X1=1X1=1X2=1I1=1D1=1X8=1X2=1X18=1X9=1X1=1X2=1X1=1D4=1D1=1I19=1X2=1X9=1X265=
+416 630 0 F 420 1100 23 719 39 90.67 8=1I3=1X1=1X3=3X2=1X1=2X4=1X5=2X11=1I4=2X1=1I1=1X2=2X1=1X2=1X1=1I4=1X2=1X1=1I17=1X9=1X1=1X2=1X1=1D3=1X1D1=1I9=1X9=1X2=1X9=1X254=1X1=1X8=
+425 630 9 F 426 1143 1 728 41 90.36 2=1X1=1D3=1X1D3=1X1=1D5=1X5=1X1D2=1X1=1I1=1X9=1I1=1X1=2X2=1I1=1D1=1X1=1I1=1X8=2X3=1I2=1D3=1I1=1X6=1I1X9=1D3=1X1=1X5=1D1=1I2=1I17=1X2=1X9=1X135=1X14=1X105=1X26=
+415 630 1 F 418 1151 38 737 32 92.32 5=1I3=1I4=1X1=1X1=2X5=2X1=1I3=1X5=2X4=1X3=1I7=1X1=1X1=1X2=1I1=1D1=1X8=1X2=1X18=1X9=1X1=1X2=1X1=1D4=1D1=1I19=1X2=1X9=1X265=
+416 630 0 F 421 1230 92 732 35 91.64 2=1X3=1X1=1I1=1I3=2I2=1D2=1X1=1X4=2X4=1X5=2X7=1X7=1X1=1X1=1X2=1I1=1D1=1X2=1X5=1X2=1X18=1X1=1I8=1X1=1X3=1X5=1D1=1I4=1I15=1X2=1X9=1X265=
+409 630 3 F 414 1360 1 688 45 89.06 6=1I3=1I1=1I4=1X1=1X4=1X1=1I3=1D1X1=1X2=1I1=2X2=1X2=1I2=1X7=1X1=1X1=1X2=1I1=1D1=1X6=1I5=1X3=1X14=1X2=1X6=1X1=1X2=1X1=1D4=1D1=1I9=1X9=1X2=1X9=1X1=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+400 652 10 F 401 825 79 711 30 92.51 6=1X4=1X1=1X1=1X1=1X4=1X1I4=1I5=1I1=2X2=1X1=1X3=1D3=1X4=1X4=1D3X4=1I5=1D8=1I1=1X7=1D6=1I4=1D12=1X11=1X37=1X237=
+412 654 1 F 407 807 63 711 36 91.21 3=1X3=1X2=1D1=2X8=2X4=1D2=1D4=1X1=1D3=1X1=1X2=1X1=1X1=1I5=1D4=1X2=1I13=1X2=1I1=1X3=1X13=3X1I5=1X1=1D18=1D10=1X15=1X23=1X2=1D41=1D39=1X147=
+440 654 1 F 432 866 142 719 51 88.30 2=1D4=1X3=2X1=1X2=1I6=1X1I4=1D2=1D2=1X1=1X1=1X2=1X1=2X2=1X1=1D1=1I1=1X3=1D4=1D2=1I10=1D2=1X2=1I1=1D3=1X6=1X6=1X2=1I3=1X1=1X1=1D4=1D2=1X1=1X22=1D12=1D7=1X12=1X2=1X1=1X1D10=1X22=1X7=1D8=1X18=1X11=1D1=1I174=
+461 654 0 F 461 1212 120 799 41 91.11 8=1X4=2X3=1I3=1I2=2X4=2X3=1X2=1X4=1X1=2X2=1X1=1X2=2X3=1X3=1X2=1I5=1D1X6=1X2=1I1=1X3=1X6=1X6=1I1=1X4=1X1=1D1X16=1D13=1X15=1X20=1X2=1X2=1D41=1D44=1X190=
+441 658 161 F 438 713 2 777 34 92.26 4=1X1=1I1=1X2=1X2=1X1=1X3=1X1=1X2=1X5=1D5=1D1X1=1X3=1D3=1D1=1X1=1X3=1D1=1X2=1X6=1X1=1I1X5=1D1=1X2=1X2=1X3=1X11=1I8=1I3=1D4=1D59=1X2=1I263=
+425 658 60 F 426 736 0 683 56 86.84 2=1D4=1D3=2X1=2X2=2X5=1D6=1I2=1D5=1I2=1D1=1X3=1D1X2=1X5=1I2=1X3=2X7=1D3=1I2=1X13=1I4=1X10=1I2=1I6=1D2=1I1=1I7=1I8=1X31=1I15=1X25=1I71=1X2=1I95=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+428 658 174 F 433 798 0 795 22 94.89 2=1X2=1I3=1X1=1X1=1I5=2X5=1X5=1D1X6=1X12=1I3=1X6=2X17=1X13=1I6=1X64=1I27=1I128=1X95=1X11=
+467 658 110 F 481 826 0 867 27 94.30 3=1I7=1X1I3=2X1I7=1X2=1I2=1I8=1X5=1I2=1D1=1I1=1I8=1I2=1I2=1I6=1D3=1I7=1I14=1X11=1X14=1I24=1X16=1I71=1I185=1X52=
+465 658 20 F 485 846 47 737 71 85.05 4=1X1=1X1I7=2X2=1I2=1I1X2=1X2=3X2=1I1X1=1I3=1D2=1X7=1X2=1I2=1I2=1X3=1X1=1I2=1I4=1I1=1I3=1I4=1X9=1X1=1I3=1I5=1I4=1I3=1I3=2X11=1I7=1X1=1D6=1I4=1I5=1X5=1I11=1I8=1I8=1X31=1I15=1X25=1I66=1X4=1X2=1I3=1X91=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+416 658 186 F 416 849 1 763 23 94.47 26=1I1=1X12=1X17=1X3=1X2=1X9=1X9=1X1=1X3=2X1D46=1X6=1X2=1X2=1I13=1X15=1X1=1X2=1X61=1D9=1X78=1X77=
+471 658 126 F 479 912 4 896 18 96.21 7=1X2=1I14=1D1=1I1=1I1=1D2=1I5=1D5=1I2=1I10=1I7=1I21=1X9=1X9=1X39=1I6=1I65=1I258=
+395 658 131 F 407 988 0 646 52 87.03 2=1D3=1I1=1I6=1X1=1X2=1D3=1X3=1I9=2I1X3=1I1=1X2=3X3=1I4=1X2=1I6=1I11=1I2=1I36=1X25=1I27=1X8=1X34=1X2=1I45=1X38=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=3X7=1X8=1I3=1X1=1I1X1=1X4=
+395 658 131 F 405 1049 12 677 41 89.75 2=1X3=1I1=1I3=1D11=1I1=1D2=1I11=1I2=1X5=1X3=1I7=1X1I12=1X26=1I9=1I6=1X25=1I71=1X2=1I84=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=1X9=1X8=1I3=1X1=1I1X1=1X4=
+444 658 158 F 444 1120 0 786 34 92.34 4=1D4=1I4=1X2=1D1=1X4=1X4=1I3=1X1=1X5=1D1=1I1=1X3=1X5=1X1=1X5=1D1=1I1=1X6=1X1=1X5=1X1=1X5=1X3=1X4=1X4=1X8=1I3=1D65=1X2=1I81=1D56=1X44=1X54=1X24=
+397 658 88 F 416 1230 11 624 63 84.50 4=1I2=1X2=1I3=1I4=1X1I2=1I1=2X2=1X7=1I1X3=1I2X1=1I5=2X1=1X1=2I1=1I15=1I6=1I5=1X3=1I2=1X1I3=1X1=1X3=1I7=1I8=1I2=1D2=1X11=1X8=1X5=1I15=1X7=1I13=1I5=1I6=1I65=1X2=1I95=2X1=1X5=2X2=1X4=1X1D2X1=1D2=1I4=1I4=3D1=1X6=1D2=
+486 658 116 F 475 1297 0 853 36 92.51 4=1X3=2X5=1D1=1D5=1D2=1X2=1D1=1D1=1X4=1D2=1X4=1D5=1X3=1D1=1D1X3=1I1=1X6=1X5=1D3=1X2=1X7=1D1=1X1=1X5=1X5=1X11=1D1=1X9=1X10=1D8=1I24=1D4=1X41=1I263=
+437 658 140 F 436 1327 0 777 32 92.67 5=1D5=1X10=1D3=1X3=1X3=1X1=1D3=1X1=1X4=1I4=2X4=1X2=1X3=1X3=1X1=3X5=1X2=1X2=1X8=1X2=1D4=1X6=1X12=1X1=1X4=1I46=1X19=1X4=1I238=
+415 691 0 F 433 814 49 722 42 90.09 2=1I4=1X1I4=1I3=1I2=1I2=1X5=1I2=1I3=1I2=1I5=3I1X1=3I1X2=1D1=1D2=1X2=1X6=1D2=1X3=1I4=1I1=1D2=2I4=1I10=1I7=1I22=1X19=1X28=1X37=1X85=1X10=1X20=1X24=1X15=1X54=
+421 695 59 F 427 938 0 761 29 93.16 8=1X3=1X1I1=1X2=1I7=1X1=1X1I2=1X4=1D4=1X6=1D1X2=1I1=1X2=1X2=1I1X1=1D1=1X4=1X11=1X3=1I3=1X3=1I13=1I10=1I3=1I125=1D180=
+432 701 5 F 422 715 7 731 41 90.40 2=1X2=1D4=1D1=1X2=1D1=1X2=1X1I2=1D3=1D4=1X4=2X2=1D1=1X3=1D1=1D3=1D1X3=1D3=1D9=1D1=1I1=1I2=2X2=1D2=2X4=1X1=1D3=1X1=1X3=1D5=1X15=1I7=1X17=1I10=1X16=1X87=1X167=
+423 713 17 F 432 798 1 753 34 92.05 4=1I1=1X3=1X1I6=1X1I4=2X1=1I3=1I2=1I1=1X2=1D3=1I1=1X2=1X3=1I5=1D1X4=1I1X1=1X2=1X2=1X3=1X5=1X4=1D13=1I2=1X1=1I59=1X30=1I128=1X95=1X11=
+415 713 0 F 428 826 53 729 38 90.98 3=1I2=1I2=2I1=1X1=1I3=1X2=1X3=1X1=1X1=1X2=1I6=1I5=1I1X1=1X3=1I3=1I1=1X1=1X3=1I1=1X2=1X3=1I3=1X1=1D1X5=1I1=1X2=1X2=1X3=1X2=1X7=1D13=1I4=1I59=1X188=1X52=
+413 713 27 F 417 849 0 710 40 90.36 6=1I5=2X1=1I3=1X3=1I1=1I2=1X1I2=1I1=1X2=1X4=1X1=1X1=1D1X5=1I1=1X2=1X2=1X3=1X2=1X7=1D2=1X5=1D4=1I1=1X2=1D1=1I1X46=1X6=1X2=1X16=1X15=1X1=1X2=1X61=1D9=1X78=1X77=
+435 713 0 F 446 912 37 782 33 92.51 2=1X4=1I1=1X1=1I3=1X2=1X1I3=1X1=1X1=1X2=1I6=1I5=1I1X1=1X3=1I3=1I1=1X1=1X3=1I4=1X8=1D1X5=1I1=1X2=1X2=1X3=1X11=1D12=1I2=1I2=1I59=1X261=
+437 713 3 F 442 1120 2 789 30 93.17 4=2X2=1I5=1D5=3X2=1I4=1X1=1I3=1I2=1X5=1I3=1I7=1I2=1X10=1X3=1D2=1X1=1I2=1X2=1X8=1X4=1D18=1I59=1X84=1D56=1X44=1X54=1X24=
+437 713 3 F 437 1297 38 769 35 91.99 4=1I1=1D1=1X1=1D1=1X1=1X3=1X1=1X1=1X2=1X1=1X3=1I1=1D3=1I1X1=1X3=1I6=1X3=1I1=1X2=1X2=1X3=1X1=1D1X6=1X2=1X2=1X14=2D12=1I4=1I15=1D4=1X38=1X266=
+414 713 1 F 420 1327 16 723 37 91.13 3=1X3=1X2=1I1=2X2=1X1=1D3=1X4=1I6=1I1X4=1I1X1=1X3=1I5=1I1X4=1I1=1X2=1X2=1X3=1X1=1D1X2=1X3=1X2=1X2=1X3=1X11=1D1=1X1=1X8=1I4=1I37=1X19=1X1=1X241=
+382 724 29 F 433 1826 2 605 70 82.82 4=1I1=1X1I4=1I1=1I1=1X2=1I4=1I1=1I3=1I1=1I2=1I2=1I3=1I1=1I3=1X1=1I2=1I4=1I3=1I1=1X2=1I10=1I5=1X2=1I3=1I3=1I3=1I2=1X4=1I5=1I2=1X2=1I7=1X4=1X1=1I7=1X64=1X21=1X16=1X30=1I7=1X3=1I8=1I11=1I10=1I4=1X1=1I5=1I3=1I7=1I2=1I5=1I3=1I8=1I3=1I4=1I4=1X1I3=1I7=1I2=1X1=1I1=1X3=1I3=1X1=1I5=2I10=1I2=
+510 736 0 F 525 846 91 915 40 92.27 2=1I3=1I3=1I1=1I1=1X1=2X2=1I4=1I1=1I1=1I2=1I3=1I3=1X3=1I1=1I5=1D1=1X2=1I1=1I2=1I1=1X4=1X2=1I1X4=1X7=1I6=1X4=1D1X12=1X1=1I3=1X5=1X2=1D6=1I2=1X1=1D157=1X11=1X219=
+414 736 96 F 416 902 5 800 10 97.59 4=2X1=1I15=1D8=1I3=1D2=1I1=1X7=1X1=1I366=
+435 736 75 F 437 1100 4 782 30 93.12 17=1D2=1X1=1I3=1D2=1I1=1D2=1D3=1X2=2X2=2X13=1X5=1X2=1X3=1I5=1I3=1X2=2X1=1X2=1X1=1I4=1X4=1I17=1X19=1X11=1X277=1X1=1X6=
+406 736 104 F 407 1143 0 726 29 92.87 3=1D3=1D2=1X3=1X1D2=1D10=1D3=1X1=1X2=1X1=1I10=1X2=1I3=1X2=1X1=1I4=1X3=1X3=1I2=1D4=1X1=1I7=1I8=1X11=1X4=1I164=1X14=1X105=1X6=
+452 736 58 F 454 1151 0 876 10 97.79 6=1I6=1I2=1X10=1D8=1D2=1X1=1I21=1D7=1I16=1I368=
+485 736 25 F 500 1230 11 898 29 94.11 6=1I3=1I6=1I1=1I3=1I2=1I8=1D2=1I1X3=1I3=1I5=1I1X1=1X2=1I3=1I18=1X1=1I5=1X7=1X3=1X3=1X20=1X2=1X11=1X8=1X29=1I13=1I12=1I292=
+411 736 97 F 414 1360 1 747 26 93.70 3=1D3=1X5=1X1=1I6=1X2=1I5=1X2=1D2=1I3=1I2=1X1=1X14=1X12=1X3=1I5=1X17=1X28=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+408 798 0 F 407 826 74 755 20 95.09 2=1D6=1X1=1X7=2X5=1X1=1X3=1I1X6=1X12=1X3=1X6=2X14=1X2=1X20=1X92=1D128=1X29=1X52=
+420 798 13 F 417 849 0 723 38 90.92 6=2X5=1X5=1X1I5=1D2=2I11=1D1=1X1=1X6=2X7=1X3=1X2=1X2=1X6=1X6=1D3=1X1=2X2=2X1D46=1X6=1X2=1X16=1X13=1D2=1X1=1X2=1X61=1D9=1X48=1X29=1X65=1X11=
+428 798 0 F 428 912 55 796 20 95.33 2=1X6=1X1=1X7=2X5=1X5=1I1X2=1X3=1X5=1X6=1D10=2X17=1X20=1X1I92=1D128=1X95=1X6=
+432 798 1 F 428 1120 16 752 36 91.63 5=1X1=1X2=1D5=1X1=2X4=2X1=1X3=1I1X4=1D2=1I5=1D1=1I1=1X3=1D5=1X4=2X1=1X5=1X3=1X4=2X3=1X13=1D2=1X61=1X30=1D54=1D56=1X16=1X27=1X54=1X12=1X11=
+430 798 3 F 423 1297 52 766 29 93.20 4=1X1=1X1=1X3=1D3=2X1D3=2X1=1X3=1X2=1X1=1X7=1X4=1D1=1X3=1X6=1D1X1=1X9=1X5=1X4=1D15=1X17=1D4=1X69=1D128=1X95=1X11=
+405 798 3 F 402 1327 34 714 31 92.32 4=1X3=1D7=2X4=2X1=1X3=1X1I2=1X1=3X5=1X2=1X1=1D1=1X3=1X4=1X1=1D1X4=1X6=1X5=1X6=1X1=1X11=1X39=1X19=1X32=1D128=1X82=
+468 807 2 F 464 866 82 800 44 90.56 12=1X1D11=1X2=1X2=1X6=1X2=1X6=1I2=1D9=1X4=1D2=1X6=1I4=1I3=1I10=1X3=1X4=1I6=1X1=1X1D7=1D13=1D7=1D10=1X7=3X3=1X7=1D2=1X1=1X8=1I10=1X2=1D14=1D5=1X12=1X4=1X10=1X22=1X15=1X18=1X12=1X146=
+468 807 2 F 476 1212 57 824 40 91.53 5=1I3=1X5=1I4=1X4=1X4=1X3=1I2=1D2=1I1=1X2=1X2=1X1=1X9=1X3=1X3=1X3=1X2=1I6=1I3=1I7=1I1=1X3=1I2=1X4=1X1=1I9=1D1X3=1I12=1X2=1D20=1X7=3X3=1X18=1X49=1X85=1X4=1X142=
+445 815 0 F 462 1699 0 778 43 90.52 6=1I12=1X3=1X1=1X2=1D6=1I7=2X1=1I2=1D9=1I4=1X12=1I30=1I48=1X2=1X96=1X37=1I53=1I9=1I10=1I4=1D1=1I2=1I11=2I9=1I5=1I3=1I12=1X1=1I2=1X1=1I6=1X1=2X2=1X1=1I1=1X3=1X1=1X3=1X1=1X2=
+451 819 14 F 467 975 5 810 36 92.16 7=2X1I2=1I3=1I4=1X2I4=1I1=1X1=1X1=1I1X7=1X1=1I1=1X2=1I1=1X7=1X6=1I2=1I1X12=1I5=1X1I3=1I3=1I2=1D5=1I13=1X2=1X1I20=1X3=1X21=1X9=1X284=
+418 819 76 F 443 1362 3 726 45 89.55 4=1I1=1I2=1X3=1I1=1X2=1I1=1X1=1X1=1X2=2X1I5=1I1=1I5=1X1=1I6=1I3=1I1X2=1X17=1I4=1X3=1X7=1I5=1X1=1I3=1X1I2=1I4=1I5=1I3=1I2=1X4=1X1I5=1X3=1I1=1I16=1X2=1I4=1I9=1I14=1X9=1I229=1X5=
+484 819 35 F 494 1500 8 882 32 93.46 4=1I3=2X3=2X1=1X1I1=1X3=1I1=1X7=1X6=1I2=1X1=1I1=1X6=1I1X5=1I1X1=1X2=1I4=1I1=1D11=1X7=1X2=1X1I5=1X3=1X26=1I10=1X337=1X10=
+432 825 27 F 441 1469 13 765 36 91.75 7=1X2=2I3=1I7=1X4=1I3=1D1=2X2=1I2=1X7=1I3=1I1=1X1=1X1=1I6=1X14=1I1=1X7=1X1=1X3=1X1=1X1=1I5=1I2=1I4=1X4=1X2=1X1I7=1D1=2X12=1D8=1X4=1D282=
+467 826 14 F 463 912 0 873 19 95.91 3=1D8=1X5=1D8=1X2=1D2=1I6=1D5=1D2=1D13=1I25=1X7=1X3=1X5=1X8=1X1=1D22=1X23=1I251=1X52=
+409 826 12 F 407 1049 0 702 38 90.69 2=1X4=1X2=2X2=1X3=1X5=1D4=1X10=1X2=1D7=1D6=1D7=1I10=1X12=1X11=1X14=1X9=1I6=1X8=1X89=1X86=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=1X9=1X8=1I3=
+426 826 55 F 419 1120 0 743 34 91.95 4=1D2=1D5=1D2=1X2=1D3=1X2=1X8=1X1=1X5=1D1=1I1=1X3=1X5=1X1=1X5=1D1=1I1=1X3=1D3=1X1=1X5=1X1=1X5=1X3=1X2=1X1=1X4=1X13=1D64=1X84=1D56=1X44=1I2=1D52=
+474 826 7 F 450 1297 0 801 41 91.13 4=1D5=1D6=1D1=1D2=1D2=1D1=1D2=1X3=2D1=1X2=1D3=1D1=1D1X4=1D2=1D2=1D1=1D1X3=1D1=1X5=1X7=1D5=1D3=1X2=1X7=1D1=1X1=1X5=1X4=1D1=1X11=1D1=1X9=1X2=1X7=1D33=1D4=1X227=1X52=
+446 826 35 F 436 1327 0 774 36 91.84 6=1D4=1D3=2X1=1D5=1D2=1D1=1D3=1D1=1X3=1X5=1D1=1X9=2X4=1X2=1X3=1X3=1X1=3X5=1X2=1X1=1D1=1X8=1X2=1D4=1X6=1X2=1X9=1X1=1X51=1X19=1X190=1X52=
+419 846 199 F 422 902 1 793 16 96.20 2=1X5=2X1=1I3=1X1=1I6=1D3=1X6=1I3=1D2=1I2=1X7=1I1X135=1X11=1X221=
+434 846 184 F 437 1100 6 772 33 92.42 4=1X1I9=1D2=1X5=1X1=1X1=1X1=1D1X2=1X2=3X16=1X5=1X2=1X3=1I5=1I3=1X2=2X1=1X2=1X1=1I4=1X4=1I17=1X19=1X11=1X54=1X11=1X210=1X1=1X8=
+454 846 164 F 456 1151 0 859 17 96.26 4=1X1=1I6=1X2=1X3=1X4=1X9=1D2=1X5=1X5=1X1=1I6=1D3=1X4=1I18=1I136=1X11=1X221=
+503 846 115 F 511 1230 2 879 45 91.12 4=1X2=3X2=1D1=1X5=1I3=1I4=1X1=1X2=1X1=1X2=1D1=1X4=1D2=1X4=1I1=1X1=1I5=2X1=1X2=1I1=1I6=1I1X12=1D2=1I3=1X1=1X3=1X2=1X1I3=1X1=1D4=1I18=1X2=1X11=1X8=1X29=1I13=1I12=1I60=1X11=1X221=
+410 846 204 F 414 1360 1 731 31 92.48 3=1D3=1X1=1X1=1I1=1X1=1I3=1D4=1I1=1I5=1X2=1D2=1I3=1I2=1X1=1X14=1X12=1X3=1I5=1X17=1X28=1X24=1X14=1X13=2X11=1X6=1X41=1X134=1X21=1X6=1X4=
+447 848 138 F 476 1658 0 737 62 86.57 2=1I4=1X1=1X1=1X2=1X1I5=1X3=1I5=1X1=1X9=1X3=1I1=1X11=1I10=1I3=1X4=1X8=1X2=1D54=1I26=1I18=1X2=1I12=1I19=1X44=1X28=1X12=1I19=1X1=2X5=1X23=1X1I9=1I3=1I4=1X3=1I5=1I4=1X1=2I5=1I1=1I1=1D1=2I2=1I3=1I1=1X1=1I3=1I3=1X2=1I5=1I1X4=1X1=1I4=1I4=1I1=1X5=1X2=
+412 849 0 F 415 912 68 746 27 93.47 23=1X3=1D1=1X4=1X7=1X1=1X15=1X3=1X2=1X9=1X6=1I3=1X1=1X1I3=2X1I46=1X6=1X2=1X16=1X15=1X1=1X2=1X61=1I9=1X78=1X72=
+417 849 0 F 417 1120 27 705 43 89.69 4=1X1=1X5=2X1=1X3=1X5=1X2=1X1D4=1D1=1I1=1X4=1X1=1X1=1X5=1X1=1X5=1X3=1X2=1X1=1X4=1X2=1X5=1I4=1D1=1X3=1I2X46=1X6=1X2=1X16=1X15=1X1=1X2=1X46=1D14=1I9=1X31=1X44=1I2=1D52=1X24=
+417 849 0 F 413 1297 62 722 36 91.33 2=1D5=1D3=1X2=1X7=1X1=1X2=2D4=1X5=1X1=1X9=1D1=1X5=1X3=1X2=1X7=1D1=1X5=1I4=1X1=1X3=1I2X12=1D4=1X28=1X6=1X2=1X16=1X15=1X1=1X2=1X61=1I9=1X78=1X77=
+557 866 17 F 561 1212 0 884 78 86.05 2=1D8=1D1=1D2=2X3=1X2=1I1=1X1=1X2=1D2=1D2=1X5=1D1=1X2=1D1=2X3=1D4=2X2=1D6=1I3=1X2=2I1=1X4=1X4=1I2=1D2=1X1=1I1=1X2=1D7=1I2=1D1=1X3=1I6=1X3=1X2=1I4=1X2=1I4=1D7=1X6=1I1=1X3=1I1X1=1X1=1X2=1X8=1X1=2X3=1I2=1I9=1X2=1X8=1I10=1X13=1X7=1I2=1X1=1X5=1D13=1X2=1I14=1I5=1X12=1X4=1X10=1X22=1X15=1X18=1X11=1I1=1D3=1X170=
+405 867 233 F 417 1602 0 708 38 90.75 19=1X4=1I11=1I16=1X3=1X24=1I162=1X16=1X43=1I1=1X4=1X1=1I9=1D3=1I3=1X9=1X6=1X2=1X2=1X2I1=1X7=1X3=2X1=1I1=1X1=1I2=1X1=1X8=1X3=1X1=1I3=1I2=1X2=1X3=1I1X3=
+421 884 0 F 427 890 8 770 26 93.87 4=1I1=1X1=1X1D2=1X1=1X2=1I2=1X6=1I4=1I1=1I1X2=1X3=1X1=1D3=1X10=1X2=1I1=1X28=1X2=1X1D4=1I10=1X9=1I20=1I285=
+424 892 0 F 420 1300 64 772 24 94.31 2=1X2=1X6=1X1=1X1=1X2=1D1=1D4=1X2=1X4=1X3=1X4=1X9=1X1=2X2=1X5=1X14=1D7=1X1=1D18=1I9=1D4=1X5=1X294=
+423 902 0 F 423 1100 20 747 33 92.20 3=1X5=1X1D1=1X1=1D2=1D3=1X2=2X1I2=1X6=1D3=1I2=1D1=2X4=1X2=1D2=1I6=1I4=1X2=2X1=1X1=1I1=1X5=1X4=1I17=1X19=1X11=1X277=1X1=1X8=
+409 902 14 F 409 1143 0 728 30 92.67 3=1D3=1D2=1X3=1X2=1D3=1D3=1I4=2D2=1X1=1X2=1X12=1X2=1I3=1X2=1X1=1I4=1X3=1X3=1I2=1D4=1X1=1I7=1I8=1X11=1X4=1I164=1X14=1X105=1X8=
+423 902 0 F 422 1151 34 818 9 97.87 9=2X1=1D22=1X4=1I2=1D1=1X7=1D1=1I369=
+420 902 3 F 422 1230 91 785 19 95.49 3=1I3=1X1D1=1X7=1X3=1X1=1I10=1D3=1I2=1D1=1X4=1X2=1X1=1D10=1X8=1X29=1I13=1I12=1I294=
+404 902 15 F 407 1360 8 736 25 93.83 5=1X1=1I4=1I4=1I5=1X1D7=1I3=1X1=1X2=1D1X11=1X12=1X3=1I5=1X17=1X28=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+438 905 0 F 451 1693 83 730 53 88.08 3=1X7=1I12=1X4=1X2=1D4=1X33=1D15=1I2=1D22=1D11=1X7=1I1=1D68=1I51=1X7=1X7=1I5=1I5=1X1I5=1X4=1X1=1I4=1I5=1I8=1I5=1I6=1X1I2=1I5=1I8=1I7=1X1I3=1I5=1X1=1X5=1I4=1X2=1I14=1X1D9=1D4=1I2=1X8=1I3=1X1=1X2=1X1=1X1=1X2=1D6=1D8=
+403 912 9 F 407 988 0 648 54 86.67 2=1D3=1X1=1I6=1X1=1X4=1D2=1X2=1X5=1I3=1I1X4=1X1=1X2=3X3=1X4=1X2=1X6=1I11=1I2=1I2=1X9=1X9=1X13=1X32=1D21=1X8=1X35=1X47=1X38=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=3X7=1X8=1I3=1X1=1I1X1=1X4=
+411 912 1 F 414 1049 3 696 43 89.58 4=1I2=2X6=1X1=1I3=1D7=1I2=1D5=1X5=1I9=1D5=1X12=1X12=1X7=1X9=1X8=1X1=1I7=1I6=1X32=1D66=1X86=1X2=1X6=1I3=1X1D15=2X5=1X3=1X1=1D8=1I3=1D1=1X1=1X9=1X9=1X8=1I3=1X1=1I1X1=1X4=
+445 912 38 F 439 1120 0 791 31 92.99 12=1X1=1D2=1D1=1X3=1X1=1D8=1X1=1X5=1D1=1I1=1X3=1X3=1X1=1X1=1X6=1X1=1X8=1X5=1X1=1X5=1X3=1X4=1X4=1X13=1D2=1D62=1X84=1D56=1X44=1X54=1X19=
+483 912 0 F 464 1297 6 842 35 92.61 9=1D1=1D2=1D3=1D2=1X2=1D2=1X2=2D3=1D1=1X8=1D1=1D1X3=1D1=1D1X5=1X7=1D5=1D3=1X2=1X7=1D1=1X1=1X5=1X5=1X3=1X7=1D1=1X9=1X10=1D15=1D18=1D4=1X300=
+444 912 19 F 436 1327 0 778 34 92.27 5=1D4=1X1D3=2X9=1D3=1D1=1X3=1D1X5=1D1=1X9=2X4=1X2=1X3=1X3=1X1=3X5=1X2=1X2=1X3=1X4=1X2=1D4=1X6=1X12=1X1=1X11=1D40=1X19=1X243=
+396 975 76 F 417 1362 0 687 42 89.67 2=1I4=1I1=1I2=1X3=1X1=1X4=1X1=1D2=1X2=1I7=1I7=1X1=1I7=1I3=1X2=1X17=1X2=1X1=1I3=1X7=1I5=1X1=1I3=1X1I2=1I4=1I3=1X1=1I3=1I2=1X4=1X1I5=1X3=1I1=1I16=1X2=1I4=1I9=1I14=1X9=1I206=
+419 975 53 F 419 1500 29 781 19 95.47 19=1X2=1X1=1I2=1D6=1X2=1X3=1X2=1X15=1D5=1X10=2X5=1X3=1X10=1X3=1X11=1I10=1X9=1X284=
+426 988 0 F 424 1049 12 766 28 93.41 2=1I10=1D1=1X1=1X3=1I3=1X12=1X2=1D2=2X2=2X3=1X2=1D3=1X2=2X7=1D5=1X3=1D2=1D21=1I9=1I60=1X8=1X83=1X107=2X49=
+433 1049 0 F 413 1297 4 630 72 82.98 2=1X4=1D2=2X1D1=1D3=1D1=1D1=1D2=1I2=1D1=1D1=1X2=1D4=1D1X4=1D4=1D1=1X1=1X1=1D1=1X1=1D4=1X7=1D5=1D3=1X2=1X7=1D1=1X1=1X5=1X5=1X2=1D7=1D2=1D1=1X3=1X5=1X10=1D33=1D4=1X42=1X86=1X2=1X6=1D3=1X1I15=2X5=1X3=1X1=1I8=1D3=1I1=1X1=1X9=1X9=1X8=1D3=1X1=1D1X1=1X4=1D2X3=1D2=3I1=1I6=
+409 1049 24 F 401 1327 2 615 65 83.95 3=1D5=1D3=1I2=1D5=1D3=1D4=1X3=1X1=1D4=1D1=1X5=1X3=2X4=1X2=1X3=1X3=1X1=3X5=1X2=1X2=1X2=1D4=1D2=1X2=1D4=2X5=1X12=1X1=1X51=1X19=1X5=1X86=1X2=1X6=1D3=1X1I15=2X5=1X3=1X1=1I8=1D3=1I1=1X1=1X9=1X9=1X8=1D3=1X1=1D1X1=1X4=1D2X3=1D2=3I1=1I6=
+409 1097 23 F 417 1806 1 721 35 91.53 3=1I4=1X2=1X1=1I1=1X4=1X2=1X4=1X2=1X1=1X5=1I2=1X2=1X2=1X3=1I2=1X2=1X1=1I24=1X13=1X7=1X11=1X14=1X58=1D21=1X44=1X4=1X28=1X24=1X32=1I2=1I20=1I25=1I8=1X3=1X2=
+410 1100 33 F 408 1143 1 725 31 92.42 4=1D3=2X1D5=1D10=1D3=1X1=1X4=1X7=1D3=1X3=1X1I1=1X9=1X3=1X1D3=1I2=1D4=1X1=1I5=1I10=1X9=1X1=1X4=1I5=1X158=1X14=1X103=1X1=1X8=
+442 1100 1 F 440 1151 16 789 31 92.97 2=1X7=1D11=1X5=1I2=1D1=1I2=1I3=1X2=2X2=1X1D6=1I7=1X5=1X3=1I3=1D5=1D3=1X2=2X1=1X2=1X1=1D4=1X4=1D17=1X19=1X11=1X277=1X1=1X8=
+440 1100 3 F 442 1230 71 792 30 93.20 2=1X15=1I4=1X3=1X1=1X1=1I2=1I2=2X2=2X3=1X13=1X8=1X3=1D5=1D3=1D3=1X1I1=1X4=1D4=1X4=1D17=1I15=1I5=1X6=1I5=1X277=1X1=1X8=
+413 1100 26 F 414 1360 1 704 41 90.08 5=2X2=1I2=1X1I3=2X3=1X1=1I5=1X2=1D2=1I1=1X3=1X2=1I2=1X1=1D6=1D4=1X2=2X1=1X1=1D1=1X3=1I2=1X4=1D2=1X14=1X2=1X16=1X11=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X4=1X1=1X4=
+444 1120 0 F 439 1297 36 772 37 91.62 8=1D1=1X2=1X1=1X3=1X1=2X6=1D1=1X1=1X1=1D3=1I1=1D1=1X3=1X3=1D3=1X5=1I1=1D1=1X2=1X3=1X1=1X5=1D1=1X5=1X8=1X4=1D1X12=1I20=1D4=1X38=1X84=1I56=1X44=1X54=1X24=
+419 1120 0 F 419 1327 17 715 41 90.21 7=1D4=2X2=2X3=3X7=1X1=2X4=1I1=1D1=1X3=1X3=1D2=1I1X6=1I1=1D1=1X2=1X3=1X1=1X2=1X2=1D1=1X2=1X2=1X3=1X4=1X4=1X2=1X1=1X7=1I43=1X19=1X1=1X84=1I56=1X44=1X54=
+409 1143 0 F 409 1151 47 734 28 93.15 3=1I3=1I2=1X3=1X2=1I1=1I9=1I3=1X1=1X3=1X11=1X2=1D3=1X2=1X1=1D4=1X3=1X3=1D2=1I4=1X1=1D7=1D8=1X11=1X4=1D164=1X14=1X105=1X8=
+407 1143 2 F 407 1230 106 742 24 94.10 3=1X2=1X4=1I2=1I10=1I3=1X1=1X2=1X1=1D10=1D6=1X4=1D4=1X3=1X3=1D2=1I4=1X1=1D16=1X4=1I7=1X169=1X14=1X105=1X8=
+405 1143 0 F 405 1360 10 681 43 89.38 3=2X3=1X4=1I1=1I1=1I3=1X2=1D2=1I1=1I1=1I2=1X1=1X1=1D1=1X11=1X2=1D3=1X2=1X1=1D2=1I6=1X2=1X1D2=1I4=1X1=1D7=1D1=1X6=1X11=1X4=1D5=1X24=1X14=1X13=1X19=1X41=1X42=1X14=1X76=1X21=1X6=1X4=
+456 1151 0 F 463 1230 50 844 25 94.56 3=1I3=1X5=2X1=2X1=1I3=1I5=1I9=1I1=1D3=1I5=1X7=1X3=1X1=1I7=1D15=1X2=1X1D11=1X8=1X29=1I13=1I12=1I294=
+412 1151 40 F 414 1360 1 742 28 93.22 3=1D3=1X5=1X1=1I4=1I4=1I3=1D2=1X2=1D2=1I3=1I2=1X1=1X1=1D13=1X12=1X3=1I5=1X17=1X28=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+436 1210 50 F 431 1516 1 786 27 93.77 3=1X4=1D2=1X5=1X7=1X1=1X3=2D1X2=1I6=1D1=1D10=1X1=1D2=1X1=1D7=1D13=1X1=1X5=1I3=1X3=1X5=1X7=1X4=1I2=1X11=1X303=
+443 1226 5 F 421 1296 26 732 44 89.81 5=1D1=1D2=1D1=1X6=1D1=1D1=2D1=1X4=1X1=1D2=1D2=1X5=1D2=1D3=1D2=1D1=1X2=1D2=1X1=1D8=2D1=2X1=2X3=1X4=1D3=1D6=1X7=1D3=1X1=1X1=1I4=1D4=1D2=1X4=1I8=1D15=1X27=1D4=1X83=1X167=
+414 1230 95 F 414 1360 1 735 31 92.51 3=1X1=1D1=1X5=1X1=1I2=1X6=1I5=1X2=1D2=1I5=1X2=1I2=1X11=1X8=1X3=1X3=1I5=1X16=1D1=1X11=1D12=1D5=1X24=1X14=1X13=1X19=1X41=1X134=1X21=1X6=1X4=
+404 1268 97 F 411 1627 3 746 23 94.36 5=1D2=1X4=1X4=1I7=1I7=1X1=1I7=1I1X3=1X4=1I21=1X10=1X92=1X85=1X14=1X63=1X12=1X10=1X5=1I14=1I15=1X1=1I3=
+395 1268 101 F 405 1747 0 713 29 92.75 3=2D4=1X4=1I7=1I7=1X1=1I7=1I1X3=1X4=1I21=1X103=1X155=1I6=1X2=1X3=1I5=1I4=1X1=1I7=1I6=1X1I7=1X1=1I2=1X3=1I1=1X8=1D4=
+451 1294 10 F 463 1786 0 740 58 87.31 3=1I1=1I1=1X1=1X3=1X3=1X2=2X1I7=1I1=1X13=1X2=2X5=1I5=1I4=1X9=1I10=1I2=1X1=1X8=1X2=1X1I8=1I11=1I82=1I10=1X8=1X42=1X40=1X4=1D3=1X2I18=1X16=1X7=1I1=1D4=1X5=2X2=1X3=1X2=1I14=1D1=1X2=1I10=1X3=1X5=1X2=1X4=1D1=1X2=1D5=1X5=1X3=1X4=
+429 1297 21 F 436 1327 0 754 37 91.45 2=1X3=1I1=1X1=1X2=1I2=1X7=1X1=1X1=1X1=1I1=1X5=1D1=1X5=1I3=1I2X3=1X2=1X3=1X5=1I2X5=1X2=1X2=1X8=1X3=1X2=1X6=1X10=1X2=1X1I29=1I4=1X16=1X19=1X243=
+445 1362 1 F 425 1500 52 732 46 89.43 3=1X2=1D1=1D2=2X2=1X1=1X1=1X2=1X1=1I2=1X2=1D7=1D1=1D5=1X1=1D7=1D2=2X2=1X2=1X3=1X10=1D4=1X3=1X13=1X1=1D3=1X1D2=1D4=1D5=1D3=1D2=1X4=1X1D5=1X3=1D1=1D16=1X2=1D4=1D9=1D14=1X9=1D229=1X5=
+477 1620 0 F 478 1796 6 832 41 91.41 44=1X37=1X182=1X18=1X16=1D20=1D2=1X20=1X4=1X7=1X1D4=1I9=1X7=1X6=1I2=1D5=1X5=1I2=1X1=1X2=1X2=1X2=2X1=1X1=1X1I1=2X7=1I8=1X1=1X1I4=1X3=1X2=1X3=2X2=1X4=1D3=1X5=
+446 1620 20 F 439 1937 0 762 41 90.73 5=1X9=1X15=1X3=1X26=1X9=1X106=1X17=1X47=1X18=1X12=1X3=1D11=2X7=1D36=1D12=1X9=1X8=1D2=1I3=1X2=1D4=1X1=1X2=1X2=1X3=1D1=1X1=1I3=1D3=1X3=1I3=1D4=1X1=1X2=1D1=2X5=1D3=2X6=
+403 1627 8 F 408 1747 0 754 19 95.31 81=1X92=1X85=1X14=1X54=1I6=1X2=1X3=1I5=1I4=1I9=1I2=1X3=2X7=1X1=1I2=1X5=1X8=1D7=
+415 1663 0 F 414 1893 27 700 43 89.63 14=1X83=1X1=1X13=1X2=1X62=1X68=1D3=1X14=1I6=1D6=1X10=1I9=1D4=1X1=1I12=1D12=1D2=1X6=1X2=1I2=1D3=1X1=2X2=1X1D2=2X4=1D3=2X4=1X2=1I3=2X2=1I1=1I3=1X2=1D2=1X3=1I4=1X4=1X3=
+438 1696 0 F 439 1781 23 748 43 90.19 45=1X36=1X4=1X2=1X26=1X40=1X28=1X95=1X6=1X6=1X3=1X9=1X18=1X1=1X1I6=1X8=1X5=1I2=1X4=1D11=2X2=1D5=1X1I2=1X2=1X5=1I3=1X2=1D1=2X3=1X2=1X1=1I2X3=1X2=1X3=1D1=1X2=1X2=1X4=
+433 1745 0 F 427 1764 1 776 28 93.49 5=1X32=1X6=2X25=1X16=1X126=1X5=1X49=1X25=1X37=1X3=1X7=1D13=1D20=1D1=1X5=1X3=1X2=1D2=1D4=1X4=2X1=1X1=1X3=1D1X3=1X7=
+458 1745 0 F 455 1767 0 829 28 93.87 5=1X83=1X132=1X75=1X41=1X5=1I2=1D7=1I6=1X16=1I4=1D1=1X5=1X3=1X2=1D2=1D4=1X1=1I4=1X3=1X4=1D12=1X2=2X4=1D1X1=1X4=1D6=
+450 1745 9 F 443 1882 0 809 28 93.73 18=1D51=1X9=1X132=1X75=1X49=1D13=1D20=1D1=1X5=1X3=1X2=1D2=1D4=1X4=1I1=1D3=1X1=1D1=1X4=1X5=1X2=1X3=1X4=1D1X1=1D7=1I3=1I2=
+427 1764 1 F 432 1767 0 796 21 95.11 5=1X32=1X6=2X25=1X16=1X126=1X5=1X49=1X63=1X3=1X5=1I9=1I8=1I14=1I26=1X4=1I1=1X1=1X3=1X3=1X7=
+416 1764 10 F 415 1882 0 783 16 96.15 18=1D10=1X6=2X25=1X6=1X9=1X126=1X5=1X49=1X63=1X3=1X68=1X3=3X9=
+403 1764 7 F 417 1896 0 700 40 90.24 21=1D10=1X6=2X25=1X143=1X5=1X21=1X18=1I9=1X25=2X8=1X1I4=1I3=1I6=1I4=1I3=1I6=1I1=1X3=1X2=1I8=1X1I4=1X3=1I3=1X1=1I12=1I2=1X1=1X4=1I1X4=1X2=1X1=1X3=2X5=1I2=
+446 1767 9 F 440 1882 0 826 20 95.49 18=1D51=1X9=1X132=1X117=1X5=1D9=1D8=1D14=1D26=1X4=1D3=1X1=1D1=1I4=1X5=1X5=1D4=1I5=1X4=1X3=
+405 1767 6 F 413 1896 0 710 36 91.20 21=1D61=1X126=1X5=1X21=1X18=1I9=1X25=2X8=1X1I4=1I3=1I6=1I4=1I3=1I6=1I1=1X3=1X2=1I3=1D5=1X1I3=1D1=1X3=1I4=1X16=1X1=1X4=1I1X4=1D3=1X1=1X2=2X5=
+494 1788 0 F 499 1850 9 882 37 92.55 46=1X3=1X21=1X33=1X156=1X72=1X9=1X12=1X6=1X1=1X4=1D16=1X8=1X14=1X8=1I1=1D3=1D1=1X7=1I3=1X2=1X2=1I3=1D1=1X4=1X6=1I4=1X2=1I2=1I1X1=1X1=1X3=1I1X3=1I1=1X3=1I4=
+449 1796 26 F 439 1937 0 759 43 90.32 5=1X9=1X8=1X6=1X3=1X26=1X9=1X106=1X17=1X47=1X18=1X12=1X14=2X9=1X20=1X4=1X7=1X4=1D7=1X1=1X7=1X6=1D4=1X3=1X4=1D10=1X2=1X1=1D3=1X1=1X2=1X2=1D2=1X3=1D4=1D5=1D2=1X2=1X2=1D3=2X2=1D4=
+458 1802 3 F 471 1877 0 827 34 92.68 252=1X27=1X32=1I26=2X1I12=1I5=1X3=1X2=1X10=1X1I4=1X1I6=1X4=1I6=1I1=1X1=1X4=1X1=2I4=1X1D8=1X1I1=1X2=1X8=1I1=1I2=1I1=1X11=1I1=1X3=
+435 1828 6 F 446 1947 0 734 49 88.88 47=1X1=1X102=1X48=1X33=1X40=1D3=1X16=1I8=1I10=1I4=1X3=1I3=1X2=1X2=1X1D2=1X5=1X3=1X1=1D3=2X1I3=1X1=1X1=1I1=1X3=1X1I2=1X6=1I2=1X2=1X1=1D7=1X1I2=1I3=1I3=1I2=1X1=1I6=1X4=1X6=1X1=2X3=1X1=2I4=
+399 1882 0 F 414 1896 3 705 36 91.14 69=1X9=1X126=1X5=1X21=1X18=1I9=1X25=2X8=1X1I4=1I3=1I6=1I4=1I3=1I6=1I1=1X6=1I8=1X1I4=1X3=1I3=1X1=1I12=1I2=1X1=1X4=1I1X4=1X2=1X1=1X3=2X5=1I2=
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, cigarX
+414 299 0 P 420 883 20 729 35 91.61 209=1X1I3=1I53=1I48=2X1I5=1X7=1X1=1I12=1I3=1I5=2X5=1X2=2X4=1X2=1X3=1I2=1X2=1D1=1X1I1=2D2=1X1=1X3=1X1=1I2=1X3=1X4=1D2=1X1=1X2=
diff --git a/testdata/see-ext-at1MB-400-dtrace.matches b/testdata/see-ext-at1MB-400-dtrace.matches
new file mode 100644
index 0000000..232d9bd
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-dtrace.matches
@@ -0,0 +1,230 @@
+# Options: -ii at1MB -l 400 -outfmt trace=50 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, trace
+597 1 0 F 592 4 7 898 97 83.68 0,0,0,-3,0,0,0,0,0,1,1,9
+538 1 9 F 523 47 0 779 94 82.28 0,0,-1,-2,0,0,-2,2,5,8,17
+577 2 72 F 606 3 0 916 89 84.95 0,0,0,0,0,0,0,0,-3,-9,-10,16
+626 2 34 F 656 5 0 1063 73 88.61 0,0,0,0,0,0,0,0,0,-4,-8,-10,16
+484 2 176 F 513 6 104 730 89 82.15 -1,0,0,0,0,0,-4,-7,-9,8
+706 2 0 F 749 16 84 1269 62 91.48 0,0,0,0,0,0,0,0,0,0,-6,-8,-13,-16,44
+660 2 0 F 687 39 0 1065 94 86.04 0,0,0,0,0,0,0,0,0,0,-6,-8,-12,39
+668 3 0 F 660 5 38 1139 63 90.51 0,0,0,0,0,0,0,0,0,1,1,1,2,35
+639 3 14 F 631 6 14 1063 69 89.13 0,0,-1,0,0,0,0,0,1,1,0,4,14
+655 3 0 F 650 16 156 1047 86 86.82 0,0,0,0,0,0,0,0,0,1,1,1,2,45
+653 3 0 F 643 39 72 1203 31 95.22 0,0,0,0,0,0,0,0,0,1,1,1,7,47
+613 4 16 F 571 47 0 1022 54 90.88 0,0,0,0,0,0,0,0,4,6,15,12,42
+704 5 52 F 700 6 14 1056 116 83.48 0,0,-1,0,0,0,0,0,0,0,-1,0,5,2,45
+742 5 0 F 746 16 118 1323 55 92.61 0,0,0,0,0,0,0,0,0,0,0,0,0,-1,5
+756 5 0 F 750 39 34 1275 77 89.77 0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,43
+599 6 104 F 601 16 260 915 95 84.17 1,0,0,0,0,0,0,0,1,0,-4,1
+783 6 14 F 788 39 86 1400 57 92.74 0,0,1,0,0,0,0,0,0,0,1,0,0,0,-1,11
+467 11 135 F 449 29 138 766 50 89.08 2,0,0,0,0,0,0,5,8,36
+767 16 84 F 766 39 0 1248 95 87.61 0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,30
+397 18 0 F 417 46 194 634 60 85.26 0,0,0,0,0,-2,-8,-7
+458 34 157 F 442 1317 0 789 37 91.78 9,4,1,0,0,0,0,2,0,42
+399 35 140 F 402 72 145 717 28 93.01 -6,0,0,0,0,0,1,3
+430 61 134 F 438 65 137 787 27 93.78 0,0,0,0,1,0,0,-1,12
+517 64 0 F 517 65 0 1034 0 100.00 0,0,0,0,0,0,0,0,0,0,33
+461 78 86 F 459 80 149 800 40 91.30 2,0,0,0,1,0,2,-3,0,39
+542 78 223 F 540 1488 8 995 29 94.64 0,1,1,0,0,0,0,0,0,0,8
+568 79 56 F 568 1495 0 1022 38 93.31 3,-1,-2,0,0,0,0,0,0,0,0,32
+417 223 0 F 414 271 2 801 10 97.59 2,0,0,0,0,0,0,1,33
+418 229 0 F 419 270 0 828 3 99.28 0,0,0,0,0,0,0,0,31
+418 318 13 F 428 1693 142 621 75 82.27 -5,0,2,0,-7,-8,-2,6,36
+405 336 36 F 419 1703 0 734 30 92.72 -1,0,0,0,0,0,-6,-7,45
+439 376 0 F 450 1694 81 703 62 86.05 -7,-2,-3,0,0,-1,-1,0,14
+400 380 1 F 408 451 26 766 14 96.53 -7,-1,0,0,0,0,0,0
+403 380 0 F 406 630 10 722 29 92.83 -1,-2,0,0,0,0,0,0,47
+401 380 0 F 404 736 106 784 7 98.26 -3,0,0,0,0,0,0,0,49
+400 380 3 F 403 846 215 773 10 97.51 -3,0,0,0,0,0,0,0
+403 380 0 F 407 902 16 783 9 97.78 -4,0,0,0,0,0,0,0,47
+401 380 2 F 408 1100 35 740 23 94.31 -5,-2,0,0,0,0,0,0,49
+401 380 2 F 407 1143 2 721 29 92.82 -2,-3,-1,0,0,0,0,0,49
+403 380 0 F 407 1151 49 786 8 98.02 -4,0,0,0,0,0,0,0,47
+403 380 0 F 409 1230 104 773 13 96.80 -3,-2,-1,0,0,0,0,0,47
+399 380 0 F 406 1360 9 730 25 93.79 -6,-1,0,0,0,0,0,1
+475 404 165 F 466 819 35 809 44 90.65 8,3,-1,-1,0,0,0,0,0,25
+418 404 186 F 420 975 52 760 26 93.79 0,0,-1,-1,0,0,0,0,32
+420 404 213 F 444 1362 2 699 55 87.27 -7,-5,-9,-3,0,0,0,0,30
+453 404 187 F 455 1500 29 806 34 92.51 0,1,-2,-1,0,0,0,0,0,47
+434 406 8 F 430 542 0 771 31 92.82 4,0,0,0,0,0,0,0,16
+402 406 40 F 413 1056 0 713 34 91.66 -1,-6,-4,0,0,0,0,0,48
+430 412 83 F 436 1525 0 755 37 91.45 -6,-3,2,1,0,0,0,0,20
+434 426 27 F 429 795 0 722 47 89.11 3,3,1,-1,-1,0,0,0,16
+409 432 9 F 410 652 0 735 28 93.16 2,-3,0,0,0,0,0,0,41
+422 432 0 F 423 825 61 791 18 95.74 0,-1,0,0,0,0,0,0,28
+397 432 0 F 403 1469 51 728 24 94.00 -5,-3,2,0,0,0,0,3
+423 449 0 F 421 868 143 802 14 96.68 2,-1,1,0,0,0,0,0,27
+434 451 0 F 427 736 83 825 12 97.21 4,3,0,0,0,0,0,0,16
+434 451 0 F 427 846 189 816 15 96.52 4,3,0,0,0,0,0,0,16
+424 451 10 F 420 902 1 787 19 95.50 2,2,0,0,0,0,0,0,26
+434 451 0 F 429 1100 12 764 33 92.35 6,-1,0,0,0,0,0,0,16
+434 451 0 F 428 1151 26 823 13 96.98 4,2,0,0,0,0,0,0,16
+434 451 0 F 431 1230 80 805 20 95.38 3,3,-3,0,0,0,0,0,16
+417 451 15 F 414 1360 1 726 35 91.58 1,2,0,0,0,0,0,0,33
+415 452 0 F 413 882 3 750 26 93.72 0,1,2,-1,0,0,0,0,35
+424 454 70 F 432 1837 0 793 21 95.09 1,0,0,0,0,0,-1,-4,22
+453 460 27 F 452 1351 0 821 28 93.81 0,-1,0,2,0,0,0,0,0,47
+492 474 48 F 480 543 0 903 23 95.27 7,4,0,1,0,0,0,0,0,8
+540 474 0 F 522 658 80 975 29 94.54 5,5,4,1,2,1,0,0,0,0,10
+454 474 86 F 440 713 0 786 36 91.95 8,4,2,0,0,0,0,0,0,46
+423 474 0 F 408 736 18 693 46 88.93 6,3,1,0,1,0,0,2,29
+435 474 105 F 433 798 0 811 19 95.62 2,0,1,-1,0,0,0,0,15
+480 474 35 F 479 826 2 914 15 96.87 0,-1,1,1,0,0,0,0,0,20
+423 474 0 F 418 846 114 685 52 87.63 -4,2,2,0,1,0,0,2,29
+422 474 118 F 417 849 0 758 27 93.56 1,3,0,0,0,1,0,0,28
+488 474 47 F 483 912 0 932 13 97.32 3,1,1,0,0,0,0,0,0,12
+407 474 57 F 407 988 0 664 50 87.71 1,-2,1,1,0,0,0,0,42
+419 474 45 F 417 1049 0 722 38 90.91 1,2,-1,1,0,0,0,1,29
+453 474 87 F 444 1120 0 798 33 92.64 5,1,2,0,0,1,0,0,0,47
+422 474 1 F 425 1230 2 679 56 86.78 -4,-2,1,-2,0,0,0,2,30
+500 474 40 F 475 1297 0 852 41 91.59 11,8,3,3,0,0,0,0,0,0
+447 474 68 F 436 1327 0 775 36 91.85 7,2,2,0,0,0,0,0,3
+409 480 46 F 398 926 0 744 21 94.80 7,4,0,0,0,0,0,0,41
+425 489 0 F 429 1339 12 806 16 96.25 -3,-2,1,0,0,0,0,0,25
+409 522 41 F 410 1134 0 723 32 92.19 -1,0,0,0,0,0,0,0,41
+406 530 14 F 398 1343 30 735 23 94.28 6,2,0,0,0,0,0,0,44
+422 536 58 F 414 1082 12 755 27 93.54 5,3,0,0,0,0,0,0,28
+400 542 30 F 413 1056 0 738 25 93.85 -6,-3,-4,0,0,0,0,0
+477 543 3 F 476 658 126 890 21 95.59 -3,1,2,0,1,0,0,0,0,23
+436 543 44 F 429 713 11 793 24 94.45 5,0,2,0,0,0,0,0,14
+429 543 51 F 430 798 3 793 22 94.88 -1,1,0,-1,0,0,0,0,21
+455 543 0 F 466 826 15 852 23 95.01 -10,-1,0,0,0,0,0,0,0,45
+419 543 61 F 416 849 1 748 29 93.05 1,1,0,0,0,1,0,0,31
+475 543 0 F 482 912 1 897 20 95.82 -6,-1,1,-1,0,0,0,0,0,25
+397 543 7 F 407 988 0 633 57 85.82 -6,-3,0,0,0,0,0,2
+404 543 0 F 414 1049 3 677 47 88.51 -7,-1,-1,0,0,0,1,-2,46
+447 543 33 F 444 1120 0 798 31 93.04 0,1,1,0,0,1,0,0,3
+480 543 0 F 468 1297 7 855 31 93.46 6,2,3,1,0,0,0,0,0,20
+439 543 16 F 436 1327 0 782 31 92.91 1,2,0,0,0,0,0,0,11
+436 549 0 F 448 661 68 773 37 91.63 -6,-2,0,-1,-1,-1,0,-1,14
+402 568 10 F 406 1793 2 739 23 94.31 -1,-1,0,0,0,0,-1,-1,48
+432 584 48 F 449 1661 0 707 58 86.83 -4,-3,0,0,0,0,-1,-5,14
+412 630 2 F 414 736 96 730 32 92.25 -3,0,1,0,0,0,0,0,38
+415 630 1 F 416 846 202 729 34 91.82 -2,0,1,0,0,0,0,0,35
+415 630 1 F 419 902 4 732 34 91.85 -5,0,1,0,0,0,0,0,35
+416 630 0 F 420 1100 23 719 39 90.67 -2,-3,1,0,0,0,0,0,34
+425 630 9 F 426 1143 1 728 41 90.36 2,-2,-1,0,0,0,0,0,25
+415 630 1 F 418 1151 38 737 32 92.32 -4,0,1,0,0,0,0,0,35
+416 630 0 F 421 1230 92 732 35 91.64 -3,-1,-1,0,0,0,0,0,34
+409 630 3 F 414 1360 1 688 45 89.06 -5,-1,1,0,0,0,0,0,41
+400 652 10 F 401 825 79 711 30 92.51 -2,1,0,0,0,0,0,0
+412 654 1 F 407 807 63 711 36 91.21 4,-2,1,1,1,0,0,0,38
+440 654 1 F 432 866 142 719 51 88.30 2,1,2,2,1,0,0,0,10
+461 654 0 F 461 1212 120 799 41 91.11 -2,-1,1,1,1,0,0,0,0,39
+441 658 161 F 438 713 2 777 34 92.26 3,0,1,-1,0,0,0,0,9
+425 658 60 F 426 736 0 683 56 86.84 4,-2,-4,-1,-1,-1,0,1,28
+428 658 174 F 433 798 0 795 22 94.89 -1,-2,0,-2,0,0,0,0,22
+467 658 110 F 481 826 0 867 27 94.30 -7,-4,-1,-1,-1,0,0,0,0,33
+465 658 20 F 485 846 47 737 71 85.05 -4,-11,-4,-2,-2,0,-1,0,0,39
+416 658 186 F 416 849 1 763 23 94.47 -1,1,0,-1,1,0,0,0,34
+471 658 126 F 479 912 4 896 18 96.21 -3,-2,-2,0,-1,0,0,0,0,29
+395 658 131 F 407 988 0 646 52 87.03 -5,-4,-1,0,-1,0,0,4
+395 658 131 F 405 1049 12 677 41 89.75 -4,-2,-2,0,-1,0,0,4
+444 658 158 F 444 1120 0 786 34 92.34 0,0,0,-1,0,1,0,0,6
+397 658 88 F 416 1230 11 624 63 84.50 -10,-7,-1,-4,0,-1,0,7
+486 658 116 F 475 1297 0 853 36 92.51 7,3,2,0,-1,0,0,0,0,14
+437 658 140 F 436 1327 0 777 32 92.67 2,1,-1,-1,0,0,0,0,13
+415 691 0 F 433 814 49 722 42 90.09 -13,-5,0,0,0,0,0,0,35
+421 695 59 F 427 938 0 761 29 93.16 -1,-3,-3,0,1,0,0,0,29
+432 701 5 F 422 715 7 731 41 90.40 7,4,-1,0,0,0,0,0,18
+423 713 17 F 432 798 1 753 34 92.05 -7,-1,0,-1,0,0,0,0,27
+415 713 0 F 428 826 53 729 38 90.98 -10,-1,-2,0,0,0,0,0,35
+413 713 27 F 417 849 0 710 40 90.36 -6,1,0,0,1,0,0,0,37
+435 713 0 F 446 912 37 782 33 92.51 -8,0,-3,0,0,0,0,0,15
+437 713 3 F 442 1120 2 789 30 93.17 -5,0,-1,0,0,1,0,0,13
+437 713 3 F 437 1297 38 769 35 91.99 -1,2,-1,0,0,0,0,0,13
+414 713 1 F 420 1327 16 723 37 91.13 -5,1,-2,0,0,0,0,0,36
+382 724 29 F 433 1826 2 605 70 82.82 -17,-9,-1,0,0,-6,-11,11
+510 736 0 F 525 846 91 915 40 92.27 -14,-2,1,0,0,0,0,0,0,0,40
+414 736 96 F 416 902 5 800 10 97.59 -2,0,0,0,0,0,0,0,36
+435 736 75 F 437 1100 4 782 30 93.12 2,-4,0,0,0,0,0,0,15
+406 736 104 F 407 1143 0 726 29 92.87 4,-4,-1,0,0,0,0,0,44
+452 736 58 F 454 1151 0 876 10 97.79 -1,-1,0,0,0,0,0,0,0,48
+485 736 25 F 500 1230 11 898 29 94.11 -10,-2,0,-3,0,0,0,0,0,15
+411 736 97 F 414 1360 1 747 26 93.70 -2,-1,0,0,0,0,0,0,39
+408 798 0 F 407 826 74 755 20 95.09 0,0,0,1,0,0,0,0,42
+420 798 13 F 417 849 0 723 38 90.92 -1,2,0,1,0,1,0,0,30
+428 798 0 F 428 912 55 796 20 95.33 -1,1,-1,1,0,0,0,0,22
+432 798 1 F 428 1120 16 752 36 91.63 0,2,0,1,0,1,0,0,18
+430 798 3 F 423 1297 52 766 29 93.20 3,2,1,1,0,0,0,0,20
+405 798 3 F 402 1327 34 714 31 92.32 1,1,0,1,0,0,0,0,45
+468 807 2 F 464 866 82 800 44 90.56 0,-1,3,0,2,0,0,0,0,32
+468 807 2 F 476 1212 57 824 40 91.53 -3,-5,0,0,0,0,0,0,0,32
+445 815 0 F 462 1699 0 778 43 90.52 -1,-2,-1,0,0,-1,-1,-8,2
+451 819 14 F 467 975 5 810 36 92.16 -9,-6,-1,0,0,0,0,0,0,49
+418 819 76 F 443 1362 3 726 45 89.55 -10,-5,-7,-3,0,0,0,0,32
+484 819 35 F 494 1500 8 882 32 93.46 -6,-3,-1,0,0,0,0,0,0,16
+432 825 27 F 441 1469 13 765 36 91.75 -6,-5,2,0,0,0,0,0,18
+467 826 14 F 463 912 0 873 19 95.91 5,-1,1,-1,0,0,0,0,0,33
+409 826 12 F 407 1049 0 702 38 90.69 2,1,-1,0,0,0,0,1,40
+426 826 55 F 419 1120 0 743 34 91.95 4,1,1,0,0,1,0,0,24
+474 826 7 F 450 1297 0 801 41 91.13 12,7,3,2,0,0,0,0,0,26
+446 826 35 F 436 1327 0 774 36 91.84 8,1,1,0,0,0,0,0,4
+419 846 199 F 422 902 1 793 16 96.20 -3,0,0,0,0,0,0,0,31
+434 846 184 F 437 1100 6 772 33 92.42 1,-4,0,0,0,0,0,0,16
+454 846 164 F 456 1151 0 859 17 96.26 0,-2,0,0,0,0,0,0,0,46
+503 846 115 F 511 1230 2 879 45 91.12 1,-5,-1,-2,-1,0,0,0,0,0,47
+410 846 204 F 414 1360 1 731 31 92.48 -3,-1,0,0,0,0,0,0,40
+447 848 138 F 476 1658 0 737 62 86.57 -4,-1,-1,-2,-1,0,-1,-8,-8
+412 849 0 F 415 912 68 746 27 93.47 1,-3,0,0,0,-1,0,0,38
+417 849 0 F 417 1120 27 705 43 89.69 1,-1,0,0,1,-1,0,0,33
+417 849 0 F 413 1297 62 722 36 91.33 4,0,1,0,0,-1,0,0,33
+557 866 17 F 561 1212 0 884 78 86.05 6,-1,-2,-4,-1,-2,0,0,0,0,0,43
+405 867 233 F 417 1602 0 708 38 90.75 -2,-1,0,0,0,0,-2,-6,44
+421 884 0 F 427 890 8 770 26 93.87 -3,-1,-2,0,0,0,0,0,29
+424 892 0 F 420 1300 64 772 24 94.31 2,2,0,0,0,0,0,0,26
+423 902 0 F 423 1100 20 747 33 92.20 3,-3,0,0,0,0,0,0,27
+409 902 14 F 409 1143 0 728 30 92.67 5,-4,-1,0,0,0,0,0,41
+423 902 0 F 422 1151 34 818 9 97.87 1,0,0,0,0,0,0,0,27
+420 902 3 F 422 1230 91 785 19 95.49 0,1,-3,0,0,0,0,0,30
+404 902 15 F 407 1360 8 736 25 93.83 -2,-1,0,0,0,0,0,0,46
+438 905 0 F 451 1693 83 730 53 88.08 0,1,1,0,-1,-5,-9,-1,13
+403 912 9 F 407 988 0 648 54 86.67 -1,-3,1,0,0,0,1,-2,47
+411 912 1 F 414 1049 3 696 43 89.58 -2,1,-2,1,0,0,0,0,38
+445 912 38 F 439 1120 0 791 31 92.99 3,0,2,0,0,1,0,0,5
+483 912 0 F 464 1297 6 842 35 92.61 10,5,2,2,0,0,0,0,0,17
+444 912 19 F 436 1327 0 778 34 92.27 6,0,2,0,0,0,0,0,6
+396 975 76 F 417 1362 0 687 42 89.67 -5,-4,-8,-4,0,0,0,4
+419 975 53 F 419 1500 29 781 19 95.47 0,1,-1,0,0,0,0,0,31
+426 988 0 F 424 1049 12 766 28 93.41 0,4,-2,0,0,0,0,0,24
+433 1049 0 F 413 1297 4 630 72 82.98 10,6,4,1,0,0,0,-1,17
+409 1049 24 F 401 1327 2 615 65 83.95 6,2,1,0,0,0,-1,4,37
+409 1097 23 F 417 1806 1 721 35 91.53 -4,-1,0,1,0,0,-2,-2,41
+410 1100 33 F 408 1143 1 725 31 92.42 5,-2,-1,0,0,0,0,0,40
+442 1100 1 F 440 1151 16 789 31 92.97 0,1,1,0,0,0,0,0,8
+440 1100 3 F 442 1230 71 792 30 93.20 -3,3,-2,0,0,0,0,0,10
+413 1100 26 F 414 1360 1 704 41 90.08 -3,2,0,0,0,0,0,0,37
+444 1120 0 F 439 1297 36 772 37 91.62 3,2,1,0,0,-1,0,0,6
+419 1120 0 F 419 1327 17 715 41 90.21 1,1,-1,0,0,-1,0,0,31
+409 1143 0 F 409 1151 47 734 28 93.15 -4,3,1,0,0,0,0,0,41
+407 1143 2 F 407 1230 106 742 24 94.10 -1,2,-1,0,0,0,0,0,43
+405 1143 0 F 405 1360 10 681 43 89.38 -3,2,1,0,0,0,0,0,45
+456 1151 0 F 463 1230 50 844 25 94.56 -5,1,-1,-2,0,0,0,0,0,44
+412 1151 40 F 414 1360 1 742 28 93.22 -1,-1,0,0,0,0,0,0,38
+436 1210 50 F 431 1516 1 786 27 93.77 4,2,-1,0,0,0,0,0,14
+443 1226 5 F 421 1296 26 732 44 89.81 11,8,2,1,0,0,0,0,7
+414 1230 95 F 414 1360 1 735 31 92.51 -2,0,2,0,0,0,0,0,36
+404 1268 97 F 411 1627 3 746 23 94.36 -3,-1,0,0,0,0,0,-2,45
+395 1268 101 F 405 1747 0 713 29 92.75 -3,0,0,0,0,0,-3,1
+451 1294 10 F 463 1786 0 740 58 87.31 -4,-5,-2,-1,0,0,-1,-1,2,49
+429 1297 21 F 436 1327 0 754 37 91.45 -4,-1,-2,0,0,0,0,0,21
+445 1362 1 F 425 1500 52 732 46 89.43 5,2,9,3,1,0,0,0,5
+477 1620 0 F 478 1796 6 832 41 91.41 0,0,0,0,0,0,2,0,-4,24
+446 1620 20 F 439 1937 0 762 41 90.73 0,0,0,0,0,1,2,2,6
+403 1627 8 F 408 1747 0 754 19 95.31 0,0,0,0,0,0,-3,-2,47
+415 1663 0 F 414 1893 27 700 43 89.63 0,0,0,0,1,-1,2,0,34
+438 1696 0 F 439 1781 23 748 43 90.19 0,0,0,0,0,0,-1,-1,13
+433 1745 0 F 427 1764 1 776 28 93.49 0,0,0,0,0,0,1,3,19
+458 1745 0 F 455 1767 0 829 28 93.87 0,0,0,0,0,0,0,0,2,43
+450 1745 9 F 443 1882 0 809 28 93.73 1,0,0,0,0,0,1,4,1
+427 1764 1 F 432 1767 0 796 21 95.11 0,0,0,0,0,0,-1,-3,22
+416 1764 10 F 415 1882 0 783 16 96.15 1,0,0,0,0,0,0,0,34
+403 1764 7 F 417 1896 0 700 40 90.24 1,0,0,0,0,-1,-9,-4,46
+446 1767 9 F 440 1882 0 826 20 95.49 1,0,0,0,0,0,2,2,5
+405 1767 6 F 413 1896 0 710 36 91.20 1,0,0,0,0,-1,-8,0,45
+494 1788 0 F 499 1850 9 882 37 92.55 0,0,0,0,0,0,0,1,-1,1
+449 1796 26 F 439 1937 0 759 43 90.32 0,0,0,0,0,0,1,3,7
+458 1802 3 F 471 1877 0 827 34 92.68 0,0,0,0,0,0,-2,-5,-5,41
+435 1828 6 F 446 1947 0 734 49 88.88 0,0,0,0,0,0,-1,-6,11
+399 1882 0 F 414 1896 3 705 36 91.14 0,0,0,0,0,-2,-8,-4
+414 299 0 P 420 883 20 729 35 91.61 0,0,0,0,-2,-1,-4,0,37
diff --git a/testdata/see-ext-at1MB-400-evalue-bitscore.matches b/testdata/see-ext-at1MB-400-evalue-bitscore.matches
new file mode 100644
index 0000000..c12d0d7
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-evalue-bitscore.matches
@@ -0,0 +1,228 @@
+597 1 0 F 592 4 7 898 97 83.68 3e-154 538.9
+538 1 9 F 523 47 0 779 94 82.28 2e-128 453.1
+577 2 72 F 606 3 0 916 89 84.95 3e-168 585.3
+626 2 34 F 656 5 0 1063 73 88.61 8e-219 753.5
+484 2 176 F 513 6 104 730 89 82.15 1e-119 423.9
+706 2 0 F 749 16 84 1269 62 91.48 7e-284 969.8
+660 2 0 F 687 39 0 1065 94 86.04 3e-202 698.6
+668 3 0 F 660 5 38 1139 63 90.51 2e-241 829.1
+639 3 14 F 631 6 14 1063 69 89.13 3e-217 748.4
+655 3 0 F 650 16 156 1047 86 86.82 4e-199 688.3
+653 3 0 F 643 39 72 1203 31 95.22 2e-282 964.7
+613 4 16 F 571 47 0 1022 54 90.88 1e-225 775.8
+704 5 52 F 700 6 14 1056 116 83.48 5e-180 624.8
+742 5 0 F 746 16 118 1323 55 92.61 1e-293 1002.5
+756 5 0 F 750 39 34 1275 77 89.77 3e-266 911.5
+599 6 104 F 601 16 260 915 95 84.17 8e-159 554.4
+783 6 14 F 788 39 86 1400 57 92.74 3e-312 1064.3
+467 11 135 F 449 29 138 766 50 89.08 2e-156 545.8
+767 16 84 F 766 39 0 1248 95 87.61 4e-244 837.6
+397 18 0 F 417 46 194 634 60 85.26 5e-115 408.4
+458 34 157 F 442 1317 0 789 37 91.78 5e-172 597.3
+399 35 140 F 402 72 145 717 28 93.01 2e-159 556.1
+430 61 134 F 438 65 137 787 27 93.78 4e-179 621.3
+517 64 0 F 517 65 0 1034 0 100.00 9e-260 889.1
+461 78 86 F 459 80 149 800 40 91.30 3e-170 592.1
+542 78 223 F 540 1488 8 995 29 94.64 2e-230 791.3
+568 79 56 F 568 1495 0 1022 38 93.31 7e-231 793.0
+417 223 0 F 414 271 2 801 10 97.59 1e-192 666.0
+418 229 0 F 419 270 0 828 3 99.28 1e-204 705.4
+418 318 13 F 428 1693 142 621 75 82.27 9e-106 377.5
+405 336 36 F 419 1703 0 734 30 92.72 9e-163 566.4
+439 376 0 F 450 1694 81 703 62 86.05 1e-132 466.8
+400 380 1 F 408 451 26 766 14 96.53 7e-182 629.9
+403 380 0 F 406 630 10 722 29 92.83 1e-157 549.2
+401 380 0 F 404 736 106 784 7 98.26 1e-190 659.1
+400 380 3 F 403 846 215 773 10 97.51 2e-185 641.9
+403 380 0 F 407 902 16 783 9 97.78 4e-189 653.9
+401 380 2 F 408 1100 35 740 23 94.31 7e-168 583.6
+401 380 2 F 407 1143 2 721 29 92.82 4e-159 554.4
+403 380 0 F 407 1151 49 786 8 98.02 1e-190 659.1
+403 380 0 F 409 1230 104 773 13 96.80 7e-184 636.8
+399 380 0 F 406 1360 9 730 25 93.79 8e-164 569.8
+475 404 165 F 466 819 35 809 44 90.65 2e-171 595.6
+418 404 186 F 420 975 52 760 26 93.79 2e-170 592.1
+420 404 213 F 444 1362 2 699 55 87.27 7e-137 480.5
+453 404 187 F 455 1500 29 806 34 92.51 1e-176 612.7
+434 406 8 F 430 542 0 771 31 92.82 5e-170 590.4
+402 406 40 F 413 1056 0 713 34 91.66 2e-154 538.9
+430 412 83 F 436 1525 0 755 37 91.45 9e-163 566.4
+434 426 27 F 429 795 0 722 47 89.11 9e-148 516.6
+409 432 9 F 410 652 0 735 28 93.16 8e-164 569.8
+422 432 0 F 423 825 61 791 18 95.74 2e-184 638.5
+397 432 0 F 403 1469 51 728 24 94.00 3e-165 575.0
+423 449 0 F 421 868 143 802 14 96.68 5e-191 660.8
+434 451 0 F 427 736 83 825 12 97.21 2e-198 684.8
+434 451 0 F 427 846 189 816 15 96.52 1e-193 669.4
+424 451 10 F 420 902 1 787 19 95.50 6e-184 636.8
+434 451 0 F 429 1100 12 764 33 92.35 7e-167 580.1
+434 451 0 F 428 1151 26 823 13 96.98 2e-197 681.4
+434 451 0 F 431 1230 80 805 20 95.38 2e-187 648.8
+417 451 15 F 414 1360 1 726 35 91.58 5e-156 544.1
+415 452 0 F 413 882 3 750 26 93.72 2e-169 588.7
+424 454 70 F 432 1837 0 793 21 95.09 2e-184 638.5
+453 460 27 F 452 1351 0 821 28 93.81 5e-186 643.6
+492 474 48 F 480 543 0 903 23 95.27 3e-211 727.8
+540 474 0 F 522 658 80 975 29 94.54 1e-226 779.3
+454 474 86 F 440 713 0 786 36 91.95 1e-172 599.0
+423 474 0 F 408 736 18 693 46 88.93 5e-142 497.7
+435 474 105 F 433 798 0 811 19 95.62 4e-189 653.9
+480 474 35 F 479 826 2 914 15 96.87 2e-218 751.8
+423 474 0 F 418 846 114 685 52 87.63 3e-135 475.4
+422 474 118 F 417 849 0 758 27 93.56 2e-169 588.7
+488 474 47 F 483 912 0 932 13 97.32 3e-225 774.1
+407 474 57 F 407 988 0 664 50 87.71 1e-128 453.1
+419 474 45 F 417 1049 0 722 38 90.91 2e-152 532.0
+453 474 87 F 444 1120 0 798 33 92.64 1e-175 609.3
+422 474 1 F 425 1230 2 679 56 86.78 4e-130 458.2
+500 474 40 F 475 1297 0 852 41 91.59 2e-187 648.8
+447 474 68 F 436 1327 0 775 36 91.85 6e-168 583.6
+409 480 46 F 398 926 0 744 21 94.80 2e-171 595.6
+425 489 0 F 429 1339 12 806 16 96.25 4e-191 660.8
+409 522 41 F 410 1134 0 723 32 92.19 5e-156 544.1
+406 530 14 F 398 1343 30 735 23 94.28 7e-167 580.1
+422 536 58 F 414 1082 12 755 27 93.54 6e-169 587.0
+400 542 30 F 413 1056 0 738 25 93.85 6e-168 583.6
+477 543 3 F 476 658 126 890 21 95.59 4e-209 720.9
+436 543 44 F 429 713 11 793 24 94.45 2e-181 628.2
+429 543 51 F 430 798 3 793 22 94.88 2e-182 631.6
+455 543 0 F 466 826 15 852 23 95.01 7e-198 683.1
+419 543 61 F 416 849 1 748 29 93.05 8e-165 573.3
+475 543 0 F 482 912 1 897 20 95.82 8e-212 729.5
+397 543 7 F 407 988 0 633 57 85.82 9e-117 413.6
+404 543 0 F 414 1049 3 677 47 88.51 8e-135 473.7
+447 543 33 F 444 1120 0 798 31 93.04 1e-177 616.2
+480 543 0 F 468 1297 7 855 31 93.46 1e-192 666.0
+439 543 16 F 436 1327 0 782 31 92.91 1e-172 599.0
+436 549 0 F 448 661 68 773 37 91.63 2e-168 585.3
+402 568 10 F 406 1793 2 739 23 94.31 2e-167 581.8
+432 584 48 F 449 1661 0 707 58 86.83 7e-136 477.1
+412 630 2 F 414 736 96 730 32 92.25 2e-157 549.2
+415 630 1 F 416 846 202 729 34 91.82 2e-155 542.4
+415 630 1 F 419 902 4 732 34 91.85 4e-157 547.5
+416 630 0 F 420 1100 23 719 39 90.67 8e-150 523.5
+425 630 9 F 426 1143 1 728 41 90.36 7e-152 530.3
+415 630 1 F 418 1151 38 737 32 92.32 1e-159 556.1
+416 630 0 F 421 1230 92 732 35 91.64 2e-156 545.8
+409 630 3 F 414 1360 1 688 45 89.06 6e-138 484.0
+400 652 10 F 401 825 79 711 30 92.51 6e-156 544.1
+412 654 1 F 407 807 63 711 36 91.21 7e-152 530.3
+440 654 1 F 432 866 142 719 51 88.30 5e-143 501.1
+461 654 0 F 461 1212 120 799 41 91.11 7e-170 590.4
+441 658 161 F 438 713 2 777 34 92.26 2e-170 592.1
+425 658 60 F 426 736 0 683 56 86.84 1e-132 466.8
+428 658 174 F 433 798 0 795 22 94.89 7e-183 633.3
+467 658 110 F 481 826 0 867 27 94.30 6e-200 690.0
+465 658 20 F 485 846 47 737 71 85.05 3e-137 482.3
+416 658 186 F 416 849 1 763 23 94.47 4e-173 600.7
+471 658 126 F 479 912 4 896 18 96.21 8e-213 732.9
+395 658 131 F 407 988 0 646 52 87.03 2e-124 439.3
+395 658 131 F 405 1049 12 677 41 89.75 6e-140 490.8
+444 658 158 F 444 1120 0 786 34 92.34 2e-171 595.6
+397 658 88 F 416 1230 11 624 63 84.50 5e-113 401.6
+486 658 116 F 475 1297 0 853 36 92.51 1e-189 655.7
+437 658 140 F 436 1327 0 777 32 92.67 2e-170 592.1
+415 691 0 F 433 814 49 722 42 90.09 7e-153 533.8
+421 695 59 F 427 938 0 761 29 93.16 5e-170 590.4
+432 701 5 F 422 715 7 731 41 90.40 2e-154 538.9
+423 713 17 F 432 798 1 753 34 92.05 3e-164 571.5
+415 713 0 F 428 826 53 729 38 90.98 5e-156 544.1
+413 713 27 F 417 849 0 710 40 90.36 3e-148 518.3
+435 713 0 F 446 912 37 782 33 92.51 5e-173 600.7
+437 713 3 F 442 1120 2 789 30 93.17 4e-176 611.0
+437 713 3 F 437 1297 38 769 35 91.99 8e-167 580.1
+414 713 1 F 420 1327 16 723 37 91.13 6e-154 537.2
+382 724 29 F 433 1826 2 605 70 82.82 6e-108 384.4
+510 736 0 F 525 846 91 915 40 92.27 6e-204 703.7
+414 736 96 F 416 902 5 800 10 97.59 3e-193 667.7
+435 736 75 F 437 1100 4 782 30 93.12 1e-173 602.4
+406 736 104 F 407 1143 0 726 29 92.87 1e-160 559.5
+452 736 58 F 454 1151 0 876 10 97.79 2e-213 734.6
+485 736 25 F 500 1230 11 898 29 94.11 4e-206 710.6
+411 736 97 F 414 1360 1 747 26 93.70 2e-167 581.8
+408 798 0 F 407 826 74 755 20 95.09 5e-173 600.7
+420 798 13 F 417 849 0 723 38 90.92 2e-152 532.0
+428 798 0 F 428 912 55 796 20 95.33 7e-184 636.8
+432 798 1 F 428 1120 16 752 36 91.63 1e-160 559.5
+430 798 3 F 423 1297 52 766 29 93.20 6e-170 590.4
+405 798 3 F 402 1327 34 714 31 92.32 2e-154 538.9
+468 807 2 F 464 866 82 800 44 90.56 2e-169 588.7
+468 807 2 F 476 1212 57 824 40 91.53 1e-177 616.2
+445 815 0 F 462 1699 0 778 43 90.52 8e-166 576.7
+451 819 14 F 467 975 5 810 36 92.16 1e-178 619.6
+418 819 76 F 443 1362 3 726 45 89.55 7e-152 530.3
+484 819 35 F 494 1500 8 882 32 93.46 2e-198 684.8
+432 825 27 F 441 1469 13 765 36 91.75 7e-167 580.1
+467 826 14 F 463 912 0 873 19 95.91 4e-206 710.6
+409 826 12 F 407 1049 0 702 38 90.69 3e-147 514.9
+426 826 55 F 419 1120 0 743 34 91.95 4e-160 557.8
+474 826 7 F 450 1297 0 801 41 91.13 4e-174 604.2
+446 826 35 F 436 1327 0 774 36 91.84 2e-167 581.8
+419 846 199 F 422 902 1 793 16 96.20 5e-187 647.1
+434 846 184 F 437 1100 6 772 33 92.42 2e-168 585.3
+454 846 164 F 456 1151 0 859 17 96.26 5e-203 700.3
+503 846 115 F 511 1230 2 879 45 91.12 5e-189 653.9
+410 846 204 F 414 1360 1 731 31 92.48 3e-160 557.8
+447 848 138 F 476 1658 0 737 62 86.57 4e-143 501.1
+412 849 0 F 415 912 68 746 27 93.47 8e-166 576.7
+417 849 0 F 417 1120 27 705 43 89.69 4e-143 501.1
+417 849 0 F 413 1297 62 722 36 91.33 6e-154 537.2
+557 866 17 F 561 1212 0 884 78 86.05 3e-168 585.3
+405 867 233 F 417 1602 0 708 38 90.75 8e-150 523.5
+421 884 0 F 427 890 8 770 26 93.87 1e-174 605.9
+424 892 0 F 420 1300 64 772 24 94.31 4e-175 607.6
+423 902 0 F 423 1100 20 747 33 92.20 1e-162 566.4
+409 902 14 F 409 1143 0 728 30 92.67 1e-160 559.5
+423 902 0 F 422 1151 34 818 9 97.87 7e-198 683.1
+420 902 3 F 422 1230 91 785 19 95.49 2e-183 635.1
+404 902 15 F 407 1360 8 736 25 93.83 2e-165 575.0
+438 905 0 F 451 1693 83 730 53 88.08 1e-147 516.6
+403 912 9 F 407 988 0 648 54 86.67 6e-122 430.8
+411 912 1 F 414 1049 3 696 43 89.58 4e-143 501.1
+445 912 38 F 439 1120 0 791 31 92.99 1e-174 605.9
+483 912 0 F 464 1297 6 842 35 92.61 5e-188 650.5
+444 912 19 F 436 1327 0 778 34 92.27 2e-169 588.7
+396 975 76 F 417 1362 0 687 42 89.67 1e-143 502.9
+419 975 53 F 419 1500 29 781 19 95.47 3e-180 624.8
+426 988 0 F 424 1049 12 766 28 93.41 2e-171 595.6
+433 1049 0 F 413 1297 4 630 72 82.98 6e-108 384.4
+409 1049 24 F 401 1327 2 615 65 83.95 2e-106 379.3
+409 1097 23 F 417 1806 1 721 35 91.53 2e-154 538.9
+410 1100 33 F 408 1143 1 725 31 92.42 1e-158 552.7
+442 1100 1 F 440 1151 16 789 31 92.97 4e-175 607.6
+440 1100 3 F 442 1230 71 792 30 93.20 1e-176 612.7
+413 1100 26 F 414 1360 1 704 41 90.08 1e-145 509.7
+444 1120 0 F 439 1297 36 772 37 91.62 8e-166 576.7
+419 1120 0 F 419 1327 17 715 41 90.21 1e-146 513.2
+409 1143 0 F 409 1151 47 734 28 93.15 3e-163 568.1
+407 1143 2 F 407 1230 106 742 24 94.10 8e-168 583.6
+405 1143 0 F 405 1360 10 681 43 89.38 2e-138 485.7
+456 1151 0 F 463 1230 50 844 25 94.56 3e-194 671.1
+412 1151 40 F 414 1360 1 742 28 93.22 2e-165 575.0
+436 1210 50 F 431 1516 1 786 27 93.77 3e-177 614.5
+443 1226 5 F 421 1296 26 732 44 89.81 2e-154 538.9
+414 1230 95 F 414 1360 1 735 31 92.51 3e-161 561.2
+404 1268 97 F 411 1627 3 746 23 94.36 5e-170 590.4
+395 1268 101 F 405 1747 0 713 29 92.75 1e-158 552.7
+451 1294 10 F 463 1786 0 740 58 87.31 4e-144 504.6
+429 1297 21 F 436 1327 0 754 37 91.45 3e-161 561.2
+445 1362 1 F 425 1500 52 732 46 89.43 8e-152 530.3
+477 1620 0 F 478 1796 6 832 41 91.41 1e-178 619.6
+446 1620 20 F 439 1937 0 762 41 90.73 3e-161 561.2
+403 1627 8 F 408 1747 0 754 19 95.31 1e-174 605.9
+415 1663 0 F 414 1893 27 700 43 89.63 1e-144 506.3
+438 1696 0 F 439 1781 23 748 43 90.19 6e-155 540.6
+433 1745 0 F 427 1764 1 776 28 93.49 4e-173 600.7
+458 1745 0 F 455 1767 0 829 28 93.87 5e-188 650.5
+450 1745 9 F 443 1882 0 809 28 93.73 7e-183 633.3
+427 1764 1 F 432 1767 0 796 21 95.11 2e-183 635.1
+416 1764 10 F 415 1882 0 783 16 96.15 7e-183 633.3
+403 1764 7 F 417 1896 0 700 40 90.24 9e-147 513.2
+446 1767 9 F 440 1882 0 826 20 95.49 1e-192 666.0
+405 1767 6 F 413 1896 0 710 36 91.20 2e-152 532.0
+494 1788 0 F 499 1850 9 882 37 92.55 1e-194 672.8
+449 1796 26 F 439 1937 0 759 43 90.32 4e-158 550.9
+458 1802 3 F 471 1877 0 827 34 92.68 7e-184 636.8
+435 1828 6 F 446 1947 0 734 49 88.88 3e-149 521.7
+399 1882 0 F 414 1896 3 705 36 91.14 7e-151 526.9
+414 299 0 P 420 883 20 729 35 91.61 5e-157 547.5
diff --git a/testdata/see-ext-at1MB-400-seqdesc.matches b/testdata/see-ext-at1MB-400-seqdesc.matches
new file mode 100644
index 0000000..a239c95
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-seqdesc.matches
@@ -0,0 +1,230 @@
+# Options: -ii at1MB -l 400 -outfmt subjectid queryid -minidentity 80 -history 60
+# Fields: s. len, subject id, s. start, strand, q. len, query id, q. start, score, editdist, % identity
+597 gi|4714049|dbj|C99932.1|C99932 0 F 592 gi|4714046|dbj|C99929.1|C99929 7 898 97 83.68
+538 gi|4714049|dbj|C99932.1|C99932 9 F 523 gi|4714003|dbj|C99879.1|C99879 0 779 94 82.28
+577 gi|4714048|dbj|C99931.1|C99931 72 F 606 gi|4714047|dbj|C99930.1|C99930 0 916 89 84.95
+626 gi|4714048|dbj|C99931.1|C99931 34 F 656 gi|4714045|dbj|C99928.1|C99928 0 1063 73 88.61
+484 gi|4714048|dbj|C99931.1|C99931 176 F 513 gi|4714044|dbj|C99927.1|C99927 104 730 89 82.15
+706 gi|4714048|dbj|C99931.1|C99931 0 F 749 gi|4714034|dbj|C99916.1|C99916 84 1269 62 91.48
+660 gi|4714048|dbj|C99931.1|C99931 0 F 687 gi|4714011|dbj|C99887.1|C99887 0 1065 94 86.04
+668 gi|4714047|dbj|C99930.1|C99930 0 F 660 gi|4714045|dbj|C99928.1|C99928 38 1139 63 90.51
+639 gi|4714047|dbj|C99930.1|C99930 14 F 631 gi|4714044|dbj|C99927.1|C99927 14 1063 69 89.13
+655 gi|4714047|dbj|C99930.1|C99930 0 F 650 gi|4714034|dbj|C99916.1|C99916 156 1047 86 86.82
+653 gi|4714047|dbj|C99930.1|C99930 0 F 643 gi|4714011|dbj|C99887.1|C99887 72 1203 31 95.22
+613 gi|4714046|dbj|C99929.1|C99929 16 F 571 gi|4714003|dbj|C99879.1|C99879 0 1022 54 90.88
+704 gi|4714045|dbj|C99928.1|C99928 52 F 700 gi|4714044|dbj|C99927.1|C99927 14 1056 116 83.48
+742 gi|4714045|dbj|C99928.1|C99928 0 F 746 gi|4714034|dbj|C99916.1|C99916 118 1323 55 92.61
+756 gi|4714045|dbj|C99928.1|C99928 0 F 750 gi|4714011|dbj|C99887.1|C99887 34 1275 77 89.77
+599 gi|4714044|dbj|C99927.1|C99927 104 F 601 gi|4714034|dbj|C99916.1|C99916 260 915 95 84.17
+783 gi|4714044|dbj|C99927.1|C99927 14 F 788 gi|4714011|dbj|C99887.1|C99887 86 1400 57 92.74
+467 gi|4714039|dbj|C99921.1|C99921 135 F 449 gi|4714021|dbj|C99899.1|C99899 138 766 50 89.08
+767 gi|4714034|dbj|C99916.1|C99916 84 F 766 gi|4714011|dbj|C99887.1|C99887 0 1248 95 87.61
+397 gi|4714032|dbj|C99913.1|C99913 0 F 417 gi|4714004|dbj|C99880.1|C99880 194 634 60 85.26
+458 gi|4714016|dbj|C99892.1|C99892 157 F 442 gi|3449622|gb|AI099883.1|AI099883 0 789 37 91.78
+399 gi|4714015|dbj|C99891.1|C99891 140 F 402 gi|4713978|dbj|C99852.1|C99852 145 717 28 93.01
+430 gi|4713989|dbj|C99864.1|C99864 134 F 438 gi|4713985|dbj|C99860.1|C99860 137 787 27 93.78
+517 gi|4713986|dbj|C99861.1|C99861 0 F 517 gi|4713985|dbj|C99860.1|C99860 0 1034 0 100.00
+461 gi|4239693|emb|AJ132746.1|AJ132746 86 F 459 gi|4239689|emb|AJ132743.1|AJ132743 149 800 40 91.30
+542 gi|4239693|emb|AJ132746.1|AJ132746 223 F 540 gi|3449451|gb|AI099712.1|AI099712 8 995 29 94.64
+568 gi|4239690|emb|AJ132744.1|AJ132744 56 F 568 gi|3449444|gb|AI099705.1|AI099705 0 1022 38 93.31
+417 gi|3719174|dbj|C99817.1|C99817 0 F 414 gi|3719126|dbj|C99769.1|C99769 2 801 10 97.59
+418 gi|3719168|dbj|C99811.1|C99811 0 F 419 gi|3719127|dbj|C99770.1|C99770 0 828 3 99.28
+418 gi|3450621|gb|AI100660.1|AI100660 13 F 428 gi|2764257|gb|R65162.1|R65162 142 621 75 82.27
+405 gi|3450603|gb|AI100642.1|AI100642 36 F 419 gi|2764247|gb|R65127.1|R65127 0 734 30 92.72
+439 gi|3450563|gb|AI100602.1|AI100602 0 F 450 gi|2764256|gb|R65161.1|R65161 81 703 62 86.05
+400 gi|3450559|gb|AI100598.1|AI100598 1 F 408 gi|3450488|gb|AI100527.1|AI100527 26 766 14 96.53
+403 gi|3450559|gb|AI100598.1|AI100598 0 F 406 gi|3450309|gb|AI100348.1|AI100348 10 722 29 92.83
+401 gi|3450559|gb|AI100598.1|AI100598 0 F 404 gi|3450203|gb|AI100242.1|AI100242 106 784 7 98.26
+400 gi|3450559|gb|AI100598.1|AI100598 3 F 403 gi|3450093|gb|AI100132.1|AI100132 215 773 10 97.51
+403 gi|3450559|gb|AI100598.1|AI100598 0 F 407 gi|3450037|gb|AI100754.1|AI100754 16 783 9 97.78
+401 gi|3450559|gb|AI100598.1|AI100598 2 F 408 gi|3449839|gb|AI099527.1|AI099527 35 740 23 94.31
+401 gi|3450559|gb|AI100598.1|AI100598 2 F 407 gi|3449796|gb|AI100057.1|AI100057 2 721 29 92.82
+403 gi|3450559|gb|AI100598.1|AI100598 0 F 407 gi|3449788|gb|AI100049.1|AI100049 49 786 8 98.02
+403 gi|3450559|gb|AI100598.1|AI100598 0 F 409 gi|3449709|gb|AI099970.1|AI099970 104 773 13 96.80
+399 gi|3450559|gb|AI100598.1|AI100598 0 F 406 gi|3449579|gb|AI099840.1|AI099840 9 730 25 93.79
+475 gi|3450535|gb|AI100574.1|AI100574 165 F 466 gi|3450120|gb|AI100159.1|AI100159 35 809 44 90.65
+418 gi|3450535|gb|AI100574.1|AI100574 186 F 420 gi|3449964|gb|AI099652.1|AI099652 52 760 26 93.79
+420 gi|3450535|gb|AI100574.1|AI100574 213 F 444 gi|3449577|gb|AI099838.1|AI099838 2 699 55 87.27
+453 gi|3450535|gb|AI100574.1|AI100574 187 F 455 gi|3449439|gb|AI099700.1|AI099700 29 806 34 92.51
+434 gi|3450533|gb|AI100572.1|AI100572 8 F 430 gi|3450397|gb|AI100436.1|AI100436 0 771 31 92.82
+402 gi|3450533|gb|AI100572.1|AI100572 40 F 413 gi|3449883|gb|AI099571.1|AI099571 0 713 34 91.66
+430 gi|3450527|gb|AI100566.1|AI100566 83 F 436 gi|3449414|gb|AI099675.1|AI099675 0 755 37 91.45
+434 gi|3450513|gb|AI100552.1|AI100552 27 F 429 gi|3450144|gb|AI100183.1|AI100183 0 722 47 89.11
+409 gi|3450507|gb|AI100546.1|AI100546 9 F 410 gi|3450287|gb|AI100326.1|AI100326 0 735 28 93.16
+422 gi|3450507|gb|AI100546.1|AI100546 0 F 423 gi|3450114|gb|AI100153.1|AI100153 61 791 18 95.74
+397 gi|3450507|gb|AI100546.1|AI100546 0 F 403 gi|3449470|gb|AI099731.1|AI099731 51 728 24 94.00
+423 gi|3450490|gb|AI100529.1|AI100529 0 F 421 gi|3450071|gb|AI100110.1|AI100110 143 802 14 96.68
+434 gi|3450488|gb|AI100527.1|AI100527 0 F 427 gi|3450203|gb|AI100242.1|AI100242 83 825 12 97.21
+434 gi|3450488|gb|AI100527.1|AI100527 0 F 427 gi|3450093|gb|AI100132.1|AI100132 189 816 15 96.52
+424 gi|3450488|gb|AI100527.1|AI100527 10 F 420 gi|3450037|gb|AI100754.1|AI100754 1 787 19 95.50
+434 gi|3450488|gb|AI100527.1|AI100527 0 F 429 gi|3449839|gb|AI099527.1|AI099527 12 764 33 92.35
+434 gi|3450488|gb|AI100527.1|AI100527 0 F 428 gi|3449788|gb|AI100049.1|AI100049 26 823 13 96.98
+434 gi|3450488|gb|AI100527.1|AI100527 0 F 431 gi|3449709|gb|AI099970.1|AI099970 80 805 20 95.38
+417 gi|3450488|gb|AI100527.1|AI100527 15 F 414 gi|3449579|gb|AI099840.1|AI099840 1 726 35 91.58
+415 gi|3450487|gb|AI100526.1|AI100526 0 F 413 gi|3450057|gb|AI100096.1|AI100096 3 750 26 93.72
+424 gi|3450485|gb|AI100524.1|AI100524 70 F 432 gi|2764113|gb|R30496.1|R30496 0 793 21 95.09
+453 gi|3450479|gb|AI100518.1|AI100518 27 F 452 gi|3449588|gb|AI099849.1|AI099849 0 821 28 93.81
+492 gi|3450465|gb|AI100504.1|AI100504 48 F 480 gi|3450396|gb|AI100435.1|AI100435 0 903 23 95.27
+540 gi|3450465|gb|AI100504.1|AI100504 0 F 522 gi|3450281|gb|AI100320.1|AI100320 80 975 29 94.54
+454 gi|3450465|gb|AI100504.1|AI100504 86 F 440 gi|3450226|gb|AI100265.1|AI100265 0 786 36 91.95
+423 gi|3450465|gb|AI100504.1|AI100504 0 F 408 gi|3450203|gb|AI100242.1|AI100242 18 693 46 88.93
+435 gi|3450465|gb|AI100504.1|AI100504 105 F 433 gi|3450141|gb|AI100180.1|AI100180 0 811 19 95.62
+480 gi|3450465|gb|AI100504.1|AI100504 35 F 479 gi|3450113|gb|AI100152.1|AI100152 2 914 15 96.87
+423 gi|3450465|gb|AI100504.1|AI100504 0 F 418 gi|3450093|gb|AI100132.1|AI100132 114 685 52 87.63
+422 gi|3450465|gb|AI100504.1|AI100504 118 F 417 gi|3450090|gb|AI100129.1|AI100129 0 758 27 93.56
+488 gi|3450465|gb|AI100504.1|AI100504 47 F 483 gi|3450027|gb|AI100744.1|AI100744 0 932 13 97.32
+407 gi|3450465|gb|AI100504.1|AI100504 57 F 407 gi|3449951|gb|AI099639.1|AI099639 0 664 50 87.71
+419 gi|3450465|gb|AI100504.1|AI100504 45 F 417 gi|3449890|gb|AI099578.1|AI099578 0 722 38 90.91
+453 gi|3450465|gb|AI100504.1|AI100504 87 F 444 gi|3449819|gb|AI100080.1|AI100080 0 798 33 92.64
+422 gi|3450465|gb|AI100504.1|AI100504 1 F 425 gi|3449709|gb|AI099970.1|AI099970 2 679 56 86.78
+500 gi|3450465|gb|AI100504.1|AI100504 40 F 475 gi|3449642|gb|AI099903.1|AI099903 0 852 41 91.59
+447 gi|3450465|gb|AI100504.1|AI100504 68 F 436 gi|3449612|gb|AI099873.1|AI099873 0 775 36 91.85
+409 gi|3450459|gb|AI100498.1|AI100498 46 F 398 gi|3450013|gb|AI100730.1|AI100730 0 744 21 94.80
+425 gi|3450450|gb|AI100489.1|AI100489 0 F 429 gi|3449600|gb|AI099861.1|AI099861 12 806 16 96.25
+409 gi|3450417|gb|AI100456.1|AI100456 41 F 410 gi|3449805|gb|AI100066.1|AI100066 0 723 32 92.19
+406 gi|3450409|gb|AI100448.1|AI100448 14 F 398 gi|3449596|gb|AI099857.1|AI099857 30 735 23 94.28
+422 gi|3450403|gb|AI100442.1|AI100442 58 F 414 gi|3449857|gb|AI099545.1|AI099545 12 755 27 93.54
+400 gi|3450397|gb|AI100436.1|AI100436 30 F 413 gi|3449883|gb|AI099571.1|AI099571 0 738 25 93.85
+477 gi|3450396|gb|AI100435.1|AI100435 3 F 476 gi|3450281|gb|AI100320.1|AI100320 126 890 21 95.59
+436 gi|3450396|gb|AI100435.1|AI100435 44 F 429 gi|3450226|gb|AI100265.1|AI100265 11 793 24 94.45
+429 gi|3450396|gb|AI100435.1|AI100435 51 F 430 gi|3450141|gb|AI100180.1|AI100180 3 793 22 94.88
+455 gi|3450396|gb|AI100435.1|AI100435 0 F 466 gi|3450113|gb|AI100152.1|AI100152 15 852 23 95.01
+419 gi|3450396|gb|AI100435.1|AI100435 61 F 416 gi|3450090|gb|AI100129.1|AI100129 1 748 29 93.05
+475 gi|3450396|gb|AI100435.1|AI100435 0 F 482 gi|3450027|gb|AI100744.1|AI100744 1 897 20 95.82
+397 gi|3450396|gb|AI100435.1|AI100435 7 F 407 gi|3449951|gb|AI099639.1|AI099639 0 633 57 85.82
+404 gi|3450396|gb|AI100435.1|AI100435 0 F 414 gi|3449890|gb|AI099578.1|AI099578 3 677 47 88.51
+447 gi|3450396|gb|AI100435.1|AI100435 33 F 444 gi|3449819|gb|AI100080.1|AI100080 0 798 31 93.04
+480 gi|3450396|gb|AI100435.1|AI100435 0 F 468 gi|3449642|gb|AI099903.1|AI099903 7 855 31 93.46
+439 gi|3450396|gb|AI100435.1|AI100435 16 F 436 gi|3449612|gb|AI099873.1|AI099873 0 782 31 92.91
+436 gi|3450390|gb|AI100429.1|AI100429 0 F 448 gi|3450278|gb|AI100317.1|AI100317 68 773 37 91.63
+402 gi|3450371|gb|AI100410.1|AI100410 10 F 406 gi|2764157|gb|R64802.1|R64802 2 739 23 94.31
+432 gi|3450355|gb|AI100394.1|AI100394 48 F 449 gi|2764289|gb|R65285.1|R65285 0 707 58 86.83
+412 gi|3450309|gb|AI100348.1|AI100348 2 F 414 gi|3450203|gb|AI100242.1|AI100242 96 730 32 92.25
+415 gi|3450309|gb|AI100348.1|AI100348 1 F 416 gi|3450093|gb|AI100132.1|AI100132 202 729 34 91.82
+415 gi|3450309|gb|AI100348.1|AI100348 1 F 419 gi|3450037|gb|AI100754.1|AI100754 4 732 34 91.85
+416 gi|3450309|gb|AI100348.1|AI100348 0 F 420 gi|3449839|gb|AI099527.1|AI099527 23 719 39 90.67
+425 gi|3450309|gb|AI100348.1|AI100348 9 F 426 gi|3449796|gb|AI100057.1|AI100057 1 728 41 90.36
+415 gi|3450309|gb|AI100348.1|AI100348 1 F 418 gi|3449788|gb|AI100049.1|AI100049 38 737 32 92.32
+416 gi|3450309|gb|AI100348.1|AI100348 0 F 421 gi|3449709|gb|AI099970.1|AI099970 92 732 35 91.64
+409 gi|3450309|gb|AI100348.1|AI100348 3 F 414 gi|3449579|gb|AI099840.1|AI099840 1 688 45 89.06
+400 gi|3450287|gb|AI100326.1|AI100326 10 F 401 gi|3450114|gb|AI100153.1|AI100153 79 711 30 92.51
+412 gi|3450285|gb|AI100324.1|AI100324 1 F 407 gi|3450132|gb|AI100171.1|AI100171 63 711 36 91.21
+440 gi|3450285|gb|AI100324.1|AI100324 1 F 432 gi|3450073|gb|AI100112.1|AI100112 142 719 51 88.30
+461 gi|3450285|gb|AI100324.1|AI100324 0 F 461 gi|3449727|gb|AI099988.1|AI099988 120 799 41 91.11
+441 gi|3450281|gb|AI100320.1|AI100320 161 F 438 gi|3450226|gb|AI100265.1|AI100265 2 777 34 92.26
+425 gi|3450281|gb|AI100320.1|AI100320 60 F 426 gi|3450203|gb|AI100242.1|AI100242 0 683 56 86.84
+428 gi|3450281|gb|AI100320.1|AI100320 174 F 433 gi|3450141|gb|AI100180.1|AI100180 0 795 22 94.89
+467 gi|3450281|gb|AI100320.1|AI100320 110 F 481 gi|3450113|gb|AI100152.1|AI100152 0 867 27 94.30
+465 gi|3450281|gb|AI100320.1|AI100320 20 F 485 gi|3450093|gb|AI100132.1|AI100132 47 737 71 85.05
+416 gi|3450281|gb|AI100320.1|AI100320 186 F 416 gi|3450090|gb|AI100129.1|AI100129 1 763 23 94.47
+471 gi|3450281|gb|AI100320.1|AI100320 126 F 479 gi|3450027|gb|AI100744.1|AI100744 4 896 18 96.21
+395 gi|3450281|gb|AI100320.1|AI100320 131 F 407 gi|3449951|gb|AI099639.1|AI099639 0 646 52 87.03
+395 gi|3450281|gb|AI100320.1|AI100320 131 F 405 gi|3449890|gb|AI099578.1|AI099578 12 677 41 89.75
+444 gi|3450281|gb|AI100320.1|AI100320 158 F 444 gi|3449819|gb|AI100080.1|AI100080 0 786 34 92.34
+397 gi|3450281|gb|AI100320.1|AI100320 88 F 416 gi|3449709|gb|AI099970.1|AI099970 11 624 63 84.50
+486 gi|3450281|gb|AI100320.1|AI100320 116 F 475 gi|3449642|gb|AI099903.1|AI099903 0 853 36 92.51
+437 gi|3450281|gb|AI100320.1|AI100320 140 F 436 gi|3449612|gb|AI099873.1|AI099873 0 777 32 92.67
+415 gi|3450248|gb|AI100287.1|AI100287 0 F 433 gi|3450125|gb|AI100164.1|AI100164 49 722 42 90.09
+421 gi|3450244|gb|AI100283.1|AI100283 59 F 427 gi|3450001|gb|AI100718.1|AI100718 0 761 29 93.16
+432 gi|3450238|gb|AI100277.1|AI100277 5 F 422 gi|3450224|gb|AI100263.1|AI100263 7 731 41 90.40
+423 gi|3450226|gb|AI100265.1|AI100265 17 F 432 gi|3450141|gb|AI100180.1|AI100180 1 753 34 92.05
+415 gi|3450226|gb|AI100265.1|AI100265 0 F 428 gi|3450113|gb|AI100152.1|AI100152 53 729 38 90.98
+413 gi|3450226|gb|AI100265.1|AI100265 27 F 417 gi|3450090|gb|AI100129.1|AI100129 0 710 40 90.36
+435 gi|3450226|gb|AI100265.1|AI100265 0 F 446 gi|3450027|gb|AI100744.1|AI100744 37 782 33 92.51
+437 gi|3450226|gb|AI100265.1|AI100265 3 F 442 gi|3449819|gb|AI100080.1|AI100080 2 789 30 93.17
+437 gi|3450226|gb|AI100265.1|AI100265 3 F 437 gi|3449642|gb|AI099903.1|AI099903 38 769 35 91.99
+414 gi|3450226|gb|AI100265.1|AI100265 1 F 420 gi|3449612|gb|AI099873.1|AI099873 16 723 37 91.13
+382 gi|3450215|gb|AI100254.1|AI100254 29 F 433 gi|2764124|gb|R30550.1|R30550 2 605 70 82.82
+510 gi|3450203|gb|AI100242.1|AI100242 0 F 525 gi|3450093|gb|AI100132.1|AI100132 91 915 40 92.27
+414 gi|3450203|gb|AI100242.1|AI100242 96 F 416 gi|3450037|gb|AI100754.1|AI100754 5 800 10 97.59
+435 gi|3450203|gb|AI100242.1|AI100242 75 F 437 gi|3449839|gb|AI099527.1|AI099527 4 782 30 93.12
+406 gi|3450203|gb|AI100242.1|AI100242 104 F 407 gi|3449796|gb|AI100057.1|AI100057 0 726 29 92.87
+452 gi|3450203|gb|AI100242.1|AI100242 58 F 454 gi|3449788|gb|AI100049.1|AI100049 0 876 10 97.79
+485 gi|3450203|gb|AI100242.1|AI100242 25 F 500 gi|3449709|gb|AI099970.1|AI099970 11 898 29 94.11
+411 gi|3450203|gb|AI100242.1|AI100242 97 F 414 gi|3449579|gb|AI099840.1|AI099840 1 747 26 93.70
+408 gi|3450141|gb|AI100180.1|AI100180 0 F 407 gi|3450113|gb|AI100152.1|AI100152 74 755 20 95.09
+420 gi|3450141|gb|AI100180.1|AI100180 13 F 417 gi|3450090|gb|AI100129.1|AI100129 0 723 38 90.92
+428 gi|3450141|gb|AI100180.1|AI100180 0 F 428 gi|3450027|gb|AI100744.1|AI100744 55 796 20 95.33
+432 gi|3450141|gb|AI100180.1|AI100180 1 F 428 gi|3449819|gb|AI100080.1|AI100080 16 752 36 91.63
+430 gi|3450141|gb|AI100180.1|AI100180 3 F 423 gi|3449642|gb|AI099903.1|AI099903 52 766 29 93.20
+405 gi|3450141|gb|AI100180.1|AI100180 3 F 402 gi|3449612|gb|AI099873.1|AI099873 34 714 31 92.32
+468 gi|3450132|gb|AI100171.1|AI100171 2 F 464 gi|3450073|gb|AI100112.1|AI100112 82 800 44 90.56
+468 gi|3450132|gb|AI100171.1|AI100171 2 F 476 gi|3449727|gb|AI099988.1|AI099988 57 824 40 91.53
+445 gi|3450124|gb|AI100163.1|AI100163 0 F 462 gi|2764251|gb|R65142.1|R65142 0 778 43 90.52
+451 gi|3450120|gb|AI100159.1|AI100159 14 F 467 gi|3449964|gb|AI099652.1|AI099652 5 810 36 92.16
+418 gi|3450120|gb|AI100159.1|AI100159 76 F 443 gi|3449577|gb|AI099838.1|AI099838 3 726 45 89.55
+484 gi|3450120|gb|AI100159.1|AI100159 35 F 494 gi|3449439|gb|AI099700.1|AI099700 8 882 32 93.46
+432 gi|3450114|gb|AI100153.1|AI100153 27 F 441 gi|3449470|gb|AI099731.1|AI099731 13 765 36 91.75
+467 gi|3450113|gb|AI100152.1|AI100152 14 F 463 gi|3450027|gb|AI100744.1|AI100744 0 873 19 95.91
+409 gi|3450113|gb|AI100152.1|AI100152 12 F 407 gi|3449890|gb|AI099578.1|AI099578 0 702 38 90.69
+426 gi|3450113|gb|AI100152.1|AI100152 55 F 419 gi|3449819|gb|AI100080.1|AI100080 0 743 34 91.95
+474 gi|3450113|gb|AI100152.1|AI100152 7 F 450 gi|3449642|gb|AI099903.1|AI099903 0 801 41 91.13
+446 gi|3450113|gb|AI100152.1|AI100152 35 F 436 gi|3449612|gb|AI099873.1|AI099873 0 774 36 91.84
+419 gi|3450093|gb|AI100132.1|AI100132 199 F 422 gi|3450037|gb|AI100754.1|AI100754 1 793 16 96.20
+434 gi|3450093|gb|AI100132.1|AI100132 184 F 437 gi|3449839|gb|AI099527.1|AI099527 6 772 33 92.42
+454 gi|3450093|gb|AI100132.1|AI100132 164 F 456 gi|3449788|gb|AI100049.1|AI100049 0 859 17 96.26
+503 gi|3450093|gb|AI100132.1|AI100132 115 F 511 gi|3449709|gb|AI099970.1|AI099970 2 879 45 91.12
+410 gi|3450093|gb|AI100132.1|AI100132 204 F 414 gi|3449579|gb|AI099840.1|AI099840 1 731 31 92.48
+447 gi|3450091|gb|AI100130.1|AI100130 138 F 476 gi|2764292|gb|R65289.1|R65289 0 737 62 86.57
+412 gi|3450090|gb|AI100129.1|AI100129 0 F 415 gi|3450027|gb|AI100744.1|AI100744 68 746 27 93.47
+417 gi|3450090|gb|AI100129.1|AI100129 0 F 417 gi|3449819|gb|AI100080.1|AI100080 27 705 43 89.69
+417 gi|3450090|gb|AI100129.1|AI100129 0 F 413 gi|3449642|gb|AI099903.1|AI099903 62 722 36 91.33
+557 gi|3450073|gb|AI100112.1|AI100112 17 F 561 gi|3449727|gb|AI099988.1|AI099988 0 884 78 86.05
+405 gi|3450072|gb|AI100111.1|AI100111 233 F 417 gi|2764348|gb|R65515.1|R65515 0 708 38 90.75
+421 gi|3450055|gb|AI100094.1|AI100094 0 F 427 gi|3450049|gb|AI100088.1|AI100088 8 770 26 93.87
+424 gi|3450047|gb|AI100764.1|AI100764 0 F 420 gi|3449639|gb|AI099900.1|AI099900 64 772 24 94.31
+423 gi|3450037|gb|AI100754.1|AI100754 0 F 423 gi|3449839|gb|AI099527.1|AI099527 20 747 33 92.20
+409 gi|3450037|gb|AI100754.1|AI100754 14 F 409 gi|3449796|gb|AI100057.1|AI100057 0 728 30 92.67
+423 gi|3450037|gb|AI100754.1|AI100754 0 F 422 gi|3449788|gb|AI100049.1|AI100049 34 818 9 97.87
+420 gi|3450037|gb|AI100754.1|AI100754 3 F 422 gi|3449709|gb|AI099970.1|AI099970 91 785 19 95.49
+404 gi|3450037|gb|AI100754.1|AI100754 15 F 407 gi|3449579|gb|AI099840.1|AI099840 8 736 25 93.83
+438 gi|3450034|gb|AI100751.1|AI100751 0 F 451 gi|2764257|gb|R65162.1|R65162 83 730 53 88.08
+403 gi|3450027|gb|AI100744.1|AI100744 9 F 407 gi|3449951|gb|AI099639.1|AI099639 0 648 54 86.67
+411 gi|3450027|gb|AI100744.1|AI100744 1 F 414 gi|3449890|gb|AI099578.1|AI099578 3 696 43 89.58
+445 gi|3450027|gb|AI100744.1|AI100744 38 F 439 gi|3449819|gb|AI100080.1|AI100080 0 791 31 92.99
+483 gi|3450027|gb|AI100744.1|AI100744 0 F 464 gi|3449642|gb|AI099903.1|AI099903 6 842 35 92.61
+444 gi|3450027|gb|AI100744.1|AI100744 19 F 436 gi|3449612|gb|AI099873.1|AI099873 0 778 34 92.27
+396 gi|3449964|gb|AI099652.1|AI099652 76 F 417 gi|3449577|gb|AI099838.1|AI099838 0 687 42 89.67
+419 gi|3449964|gb|AI099652.1|AI099652 53 F 419 gi|3449439|gb|AI099700.1|AI099700 29 781 19 95.47
+426 gi|3449951|gb|AI099639.1|AI099639 0 F 424 gi|3449890|gb|AI099578.1|AI099578 12 766 28 93.41
+433 gi|3449890|gb|AI099578.1|AI099578 0 F 413 gi|3449642|gb|AI099903.1|AI099903 4 630 72 82.98
+409 gi|3449890|gb|AI099578.1|AI099578 24 F 401 gi|3449612|gb|AI099873.1|AI099873 2 615 65 83.95
+409 gi|3449842|gb|AI099530.1|AI099530 23 F 417 gi|2764144|gb|R64742.1|R64742 1 721 35 91.53
+410 gi|3449839|gb|AI099527.1|AI099527 33 F 408 gi|3449796|gb|AI100057.1|AI100057 1 725 31 92.42
+442 gi|3449839|gb|AI099527.1|AI099527 1 F 440 gi|3449788|gb|AI100049.1|AI100049 16 789 31 92.97
+440 gi|3449839|gb|AI099527.1|AI099527 3 F 442 gi|3449709|gb|AI099970.1|AI099970 71 792 30 93.20
+413 gi|3449839|gb|AI099527.1|AI099527 26 F 414 gi|3449579|gb|AI099840.1|AI099840 1 704 41 90.08
+444 gi|3449819|gb|AI100080.1|AI100080 0 F 439 gi|3449642|gb|AI099903.1|AI099903 36 772 37 91.62
+419 gi|3449819|gb|AI100080.1|AI100080 0 F 419 gi|3449612|gb|AI099873.1|AI099873 17 715 41 90.21
+409 gi|3449796|gb|AI100057.1|AI100057 0 F 409 gi|3449788|gb|AI100049.1|AI100049 47 734 28 93.15
+407 gi|3449796|gb|AI100057.1|AI100057 2 F 407 gi|3449709|gb|AI099970.1|AI099970 106 742 24 94.10
+405 gi|3449796|gb|AI100057.1|AI100057 0 F 405 gi|3449579|gb|AI099840.1|AI099840 10 681 43 89.38
+456 gi|3449788|gb|AI100049.1|AI100049 0 F 463 gi|3449709|gb|AI099970.1|AI099970 50 844 25 94.56
+412 gi|3449788|gb|AI100049.1|AI100049 40 F 414 gi|3449579|gb|AI099840.1|AI099840 1 742 28 93.22
+436 gi|3449729|gb|AI099990.1|AI099990 50 F 431 gi|3449423|gb|AI099684.1|AI099684 1 786 27 93.77
+443 gi|3449713|gb|AI099974.1|AI099974 5 F 421 gi|3449643|gb|AI099904.1|AI099904 26 732 44 89.81
+414 gi|3449709|gb|AI099970.1|AI099970 95 F 414 gi|3449579|gb|AI099840.1|AI099840 1 735 31 92.51
+404 gi|3449671|gb|AI099932.1|AI099932 97 F 411 gi|2764323|gb|R65397.1|R65397 3 746 23 94.36
+395 gi|3449671|gb|AI099932.1|AI099932 101 F 405 gi|2764203|gb|R64930.1|R64930 0 713 29 92.75
+451 gi|3449645|gb|AI099906.1|AI099906 10 F 463 gi|2764164|gb|R64829.1|R64829 0 740 58 87.31
+429 gi|3449642|gb|AI099903.1|AI099903 21 F 436 gi|3449612|gb|AI099873.1|AI099873 0 754 37 91.45
+445 gi|3449577|gb|AI099838.1|AI099838 1 F 425 gi|3449439|gb|AI099700.1|AI099700 52 732 46 89.43
+477 gi|2764330|gb|R65444.1|R65444 0 F 478 gi|2764154|gb|R64784.1|R64784 6 832 41 91.41
+446 gi|2764330|gb|R65444.1|R65444 20 F 439 gi|2764013|gb|R30104.1|R30104 0 762 41 90.73
+403 gi|2764323|gb|R65397.1|R65397 8 F 408 gi|2764203|gb|R64930.1|R64930 0 754 19 95.31
+415 gi|2764287|gb|R65283.1|R65283 0 F 414 gi|2764057|gb|R30273.1|R30273 27 700 43 89.63
+438 gi|2764254|gb|R65153.1|R65153 0 F 439 gi|2764169|gb|R64845.1|R64845 23 748 43 90.19
+433 gi|2764205|gb|R64942.1|R64942 0 F 427 gi|2764186|gb|R64887.1|R64887 1 776 28 93.49
+458 gi|2764205|gb|R64942.1|R64942 0 F 455 gi|2764183|gb|R64880.1|R64880 0 829 28 93.87
+450 gi|2764205|gb|R64942.1|R64942 9 F 443 gi|2764068|gb|R30324.1|R30324 0 809 28 93.73
+427 gi|2764186|gb|R64887.1|R64887 1 F 432 gi|2764183|gb|R64880.1|R64880 0 796 21 95.11
+416 gi|2764186|gb|R64887.1|R64887 10 F 415 gi|2764068|gb|R30324.1|R30324 0 783 16 96.15
+403 gi|2764186|gb|R64887.1|R64887 7 F 417 gi|2764054|gb|R30268.1|R30268 0 700 40 90.24
+446 gi|2764183|gb|R64880.1|R64880 9 F 440 gi|2764068|gb|R30324.1|R30324 0 826 20 95.49
+405 gi|2764183|gb|R64880.1|R64880 6 F 413 gi|2764054|gb|R30268.1|R30268 0 710 36 91.20
+494 gi|2764162|gb|R64814.1|R64814 0 F 499 gi|2764100|gb|R30437.1|R30437 9 882 37 92.55
+449 gi|2764154|gb|R64784.1|R64784 26 F 439 gi|2764013|gb|R30104.1|R30104 0 759 43 90.32
+458 gi|2764148|gb|R64752.1|R64752 3 F 471 gi|2764073|gb|R30334.1|R30334 0 827 34 92.68
+435 gi|2764122|gb|R30547.1|R30547 6 F 446 gi|2764003|gb|R30056.1|R30056 0 734 49 88.88
+399 gi|2764068|gb|R30324.1|R30324 0 F 414 gi|2764054|gb|R30268.1|R30268 3 705 36 91.14
+414 gi|3719089|dbj|C99741.1|C99741 0 P 420 gi|3450056|gb|AI100095.1|AI100095 20 729 35 91.61
diff --git a/testdata/see-ext-at1MB-400-seqlength.matches b/testdata/see-ext-at1MB-400-seqlength.matches
new file mode 100644
index 0000000..4c24435
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-seqlength.matches
@@ -0,0 +1,228 @@
+597 1 0 F 592 4 7 898 97 83.68 852 668
+538 1 9 F 523 47 0 779 94 82.28 852 738
+577 2 72 F 606 3 0 916 89 84.95 719 746
+626 2 34 F 656 5 0 1063 73 88.61 719 800
+484 2 176 F 513 6 104 730 89 82.15 719 797
+706 2 0 F 749 16 84 1269 62 91.48 719 865
+660 2 0 F 687 39 0 1065 94 86.04 719 874
+668 3 0 F 660 5 38 1139 63 90.51 746 800
+639 3 14 F 631 6 14 1063 69 89.13 746 797
+655 3 0 F 650 16 156 1047 86 86.82 746 865
+653 3 0 F 643 39 72 1203 31 95.22 746 874
+613 4 16 F 571 47 0 1022 54 90.88 668 738
+704 5 52 F 700 6 14 1056 116 83.48 800 797
+742 5 0 F 746 16 118 1323 55 92.61 800 865
+756 5 0 F 750 39 34 1275 77 89.77 800 874
+599 6 104 F 601 16 260 915 95 84.17 797 865
+783 6 14 F 788 39 86 1400 57 92.74 797 874
+467 11 135 F 449 29 138 766 50 89.08 602 685
+767 16 84 F 766 39 0 1248 95 87.61 865 874
+397 18 0 F 417 46 194 634 60 85.26 497 613
+458 34 157 F 442 1317 0 789 37 91.78 650 442
+399 35 140 F 402 72 145 717 28 93.01 627 547
+430 61 134 F 438 65 137 787 27 93.78 584 594
+517 64 0 F 517 65 0 1034 0 100.00 517 594
+461 78 86 F 459 80 149 800 40 91.30 765 793
+542 78 223 F 540 1488 8 995 29 94.64 765 548
+568 79 56 F 568 1495 0 1022 38 93.31 624 568
+417 223 0 F 414 271 2 801 10 97.59 447 416
+418 229 0 F 419 270 0 828 3 99.28 418 419
+418 318 13 F 428 1693 142 621 75 82.27 431 570
+405 336 36 F 419 1703 0 734 30 92.72 441 424
+439 376 0 F 450 1694 81 703 62 86.05 441 533
+400 380 1 F 408 451 26 766 14 96.53 403 434
+403 380 0 F 406 630 10 722 29 92.83 403 434
+401 380 0 F 404 736 106 784 7 98.26 403 510
+400 380 3 F 403 846 215 773 10 97.51 403 618
+403 380 0 F 407 902 16 783 9 97.78 403 423
+401 380 2 F 408 1100 35 740 23 94.31 403 443
+401 380 2 F 407 1143 2 721 29 92.82 403 427
+403 380 0 F 407 1151 49 786 8 98.02 403 456
+403 380 0 F 409 1230 104 773 13 96.80 403 513
+399 380 0 F 406 1360 9 730 25 93.79 403 415
+475 404 165 F 466 819 35 809 44 90.65 640 519
+418 404 186 F 420 975 52 760 26 93.79 640 472
+420 404 213 F 444 1362 2 699 55 87.27 640 450
+453 404 187 F 455 1500 29 806 34 92.51 640 502
+434 406 8 F 430 542 0 771 31 92.82 442 430
+402 406 40 F 413 1056 0 713 34 91.66 442 413
+430 412 83 F 436 1525 0 755 37 91.45 513 436
+434 426 27 F 429 795 0 722 47 89.11 547 429
+409 432 9 F 410 652 0 735 28 93.16 422 410
+422 432 0 F 423 825 61 791 18 95.74 422 509
+397 432 0 F 403 1469 51 728 24 94.00 422 454
+423 449 0 F 421 868 143 802 14 96.68 423 604
+434 451 0 F 427 736 83 825 12 97.21 434 510
+434 451 0 F 427 846 189 816 15 96.52 434 618
+424 451 10 F 420 902 1 787 19 95.50 434 423
+434 451 0 F 429 1100 12 764 33 92.35 434 443
+434 451 0 F 428 1151 26 823 13 96.98 434 456
+434 451 0 F 431 1230 80 805 20 95.38 434 513
+417 451 15 F 414 1360 1 726 35 91.58 434 415
+415 452 0 F 413 882 3 750 26 93.72 415 421
+424 454 70 F 432 1837 0 793 21 95.09 523 432
+453 460 27 F 452 1351 0 821 28 93.81 481 452
+492 474 48 F 480 543 0 903 23 95.27 540 480
+540 474 0 F 522 658 80 975 29 94.54 540 602
+454 474 86 F 440 713 0 786 36 91.95 540 440
+423 474 0 F 408 736 18 693 46 88.93 540 510
+435 474 105 F 433 798 0 811 19 95.62 540 433
+480 474 35 F 479 826 2 914 15 96.87 540 481
+423 474 0 F 418 846 114 685 52 87.63 540 618
+422 474 118 F 417 849 0 758 27 93.56 540 417
+488 474 47 F 483 912 0 932 13 97.32 540 483
+407 474 57 F 407 988 0 664 50 87.71 540 426
+419 474 45 F 417 1049 0 722 38 90.91 540 470
+453 474 87 F 444 1120 0 798 33 92.64 540 444
+422 474 1 F 425 1230 2 679 56 86.78 540 513
+500 474 40 F 475 1297 0 852 41 91.59 540 475
+447 474 68 F 436 1327 0 775 36 91.85 540 436
+409 480 46 F 398 926 0 744 21 94.80 455 461
+425 489 0 F 429 1339 12 806 16 96.25 425 441
+409 522 41 F 410 1134 0 723 32 92.19 488 410
+406 530 14 F 398 1343 30 735 23 94.28 420 428
+422 536 58 F 414 1082 12 755 27 93.54 480 426
+400 542 30 F 413 1056 0 738 25 93.85 430 413
+477 543 3 F 476 658 126 890 21 95.59 480 602
+436 543 44 F 429 713 11 793 24 94.45 480 440
+429 543 51 F 430 798 3 793 22 94.88 480 433
+455 543 0 F 466 826 15 852 23 95.01 480 481
+419 543 61 F 416 849 1 748 29 93.05 480 417
+475 543 0 F 482 912 1 897 20 95.82 480 483
+397 543 7 F 407 988 0 633 57 85.82 480 426
+404 543 0 F 414 1049 3 677 47 88.51 480 470
+447 543 33 F 444 1120 0 798 31 93.04 480 444
+480 543 0 F 468 1297 7 855 31 93.46 480 475
+439 543 16 F 436 1327 0 782 31 92.91 480 436
+436 549 0 F 448 661 68 773 37 91.63 436 529
+402 568 10 F 406 1793 2 739 23 94.31 412 409
+432 584 48 F 449 1661 0 707 58 86.83 480 457
+412 630 2 F 414 736 96 730 32 92.25 434 510
+415 630 1 F 416 846 202 729 34 91.82 434 618
+415 630 1 F 419 902 4 732 34 91.85 434 423
+416 630 0 F 420 1100 23 719 39 90.67 434 443
+425 630 9 F 426 1143 1 728 41 90.36 434 427
+415 630 1 F 418 1151 38 737 32 92.32 434 456
+416 630 0 F 421 1230 92 732 35 91.64 434 513
+409 630 3 F 414 1360 1 688 45 89.06 434 415
+400 652 10 F 401 825 79 711 30 92.51 410 509
+412 654 1 F 407 807 63 711 36 91.21 469 470
+440 654 1 F 432 866 142 719 51 88.30 469 574
+461 654 0 F 461 1212 120 799 41 91.11 469 581
+441 658 161 F 438 713 2 777 34 92.26 602 440
+425 658 60 F 426 736 0 683 56 86.84 602 510
+428 658 174 F 433 798 0 795 22 94.89 602 433
+467 658 110 F 481 826 0 867 27 94.30 602 481
+465 658 20 F 485 846 47 737 71 85.05 602 618
+416 658 186 F 416 849 1 763 23 94.47 602 417
+471 658 126 F 479 912 4 896 18 96.21 602 483
+395 658 131 F 407 988 0 646 52 87.03 602 426
+395 658 131 F 405 1049 12 677 41 89.75 602 470
+444 658 158 F 444 1120 0 786 34 92.34 602 444
+397 658 88 F 416 1230 11 624 63 84.50 602 513
+486 658 116 F 475 1297 0 853 36 92.51 602 475
+437 658 140 F 436 1327 0 777 32 92.67 602 436
+415 691 0 F 433 814 49 722 42 90.09 483 482
+421 695 59 F 427 938 0 761 29 93.16 502 433
+432 701 5 F 422 715 7 731 41 90.40 437 438
+423 713 17 F 432 798 1 753 34 92.05 440 433
+415 713 0 F 428 826 53 729 38 90.98 440 481
+413 713 27 F 417 849 0 710 40 90.36 440 417
+435 713 0 F 446 912 37 782 33 92.51 440 483
+437 713 3 F 442 1120 2 789 30 93.17 440 444
+437 713 3 F 437 1297 38 769 35 91.99 440 475
+414 713 1 F 420 1327 16 723 37 91.13 440 436
+382 724 29 F 433 1826 2 605 70 82.82 498 435
+510 736 0 F 525 846 91 915 40 92.27 510 618
+414 736 96 F 416 902 5 800 10 97.59 510 423
+435 736 75 F 437 1100 4 782 30 93.12 510 443
+406 736 104 F 407 1143 0 726 29 92.87 510 427
+452 736 58 F 454 1151 0 876 10 97.79 510 456
+485 736 25 F 500 1230 11 898 29 94.11 510 513
+411 736 97 F 414 1360 1 747 26 93.70 510 415
+408 798 0 F 407 826 74 755 20 95.09 433 481
+420 798 13 F 417 849 0 723 38 90.92 433 417
+428 798 0 F 428 912 55 796 20 95.33 433 483
+432 798 1 F 428 1120 16 752 36 91.63 433 444
+430 798 3 F 423 1297 52 766 29 93.20 433 475
+405 798 3 F 402 1327 34 714 31 92.32 433 436
+468 807 2 F 464 866 82 800 44 90.56 470 574
+468 807 2 F 476 1212 57 824 40 91.53 470 581
+445 815 0 F 462 1699 0 778 43 90.52 445 462
+451 819 14 F 467 975 5 810 36 92.16 519 472
+418 819 76 F 443 1362 3 726 45 89.55 519 450
+484 819 35 F 494 1500 8 882 32 93.46 519 502
+432 825 27 F 441 1469 13 765 36 91.75 509 454
+467 826 14 F 463 912 0 873 19 95.91 481 483
+409 826 12 F 407 1049 0 702 38 90.69 481 470
+426 826 55 F 419 1120 0 743 34 91.95 481 444
+474 826 7 F 450 1297 0 801 41 91.13 481 475
+446 826 35 F 436 1327 0 774 36 91.84 481 436
+419 846 199 F 422 902 1 793 16 96.20 618 423
+434 846 184 F 437 1100 6 772 33 92.42 618 443
+454 846 164 F 456 1151 0 859 17 96.26 618 456
+503 846 115 F 511 1230 2 879 45 91.12 618 513
+410 846 204 F 414 1360 1 731 31 92.48 618 415
+447 848 138 F 476 1658 0 737 62 86.57 620 476
+412 849 0 F 415 912 68 746 27 93.47 417 483
+417 849 0 F 417 1120 27 705 43 89.69 417 444
+417 849 0 F 413 1297 62 722 36 91.33 417 475
+557 866 17 F 561 1212 0 884 78 86.05 574 581
+405 867 233 F 417 1602 0 708 38 90.75 640 418
+421 884 0 F 427 890 8 770 26 93.87 421 435
+424 892 0 F 420 1300 64 772 24 94.31 425 485
+423 902 0 F 423 1100 20 747 33 92.20 423 443
+409 902 14 F 409 1143 0 728 30 92.67 423 427
+423 902 0 F 422 1151 34 818 9 97.87 423 456
+420 902 3 F 422 1230 91 785 19 95.49 423 513
+404 902 15 F 407 1360 8 736 25 93.83 423 415
+438 905 0 F 451 1693 83 730 53 88.08 446 570
+403 912 9 F 407 988 0 648 54 86.67 483 426
+411 912 1 F 414 1049 3 696 43 89.58 483 470
+445 912 38 F 439 1120 0 791 31 92.99 483 444
+483 912 0 F 464 1297 6 842 35 92.61 483 475
+444 912 19 F 436 1327 0 778 34 92.27 483 436
+396 975 76 F 417 1362 0 687 42 89.67 472 450
+419 975 53 F 419 1500 29 781 19 95.47 472 502
+426 988 0 F 424 1049 12 766 28 93.41 426 470
+433 1049 0 F 413 1297 4 630 72 82.98 470 475
+409 1049 24 F 401 1327 2 615 65 83.95 470 436
+409 1097 23 F 417 1806 1 721 35 91.53 432 422
+410 1100 33 F 408 1143 1 725 31 92.42 443 427
+442 1100 1 F 440 1151 16 789 31 92.97 443 456
+440 1100 3 F 442 1230 71 792 30 93.20 443 513
+413 1100 26 F 414 1360 1 704 41 90.08 443 415
+444 1120 0 F 439 1297 36 772 37 91.62 444 475
+419 1120 0 F 419 1327 17 715 41 90.21 444 436
+409 1143 0 F 409 1151 47 734 28 93.15 427 456
+407 1143 2 F 407 1230 106 742 24 94.10 427 513
+405 1143 0 F 405 1360 10 681 43 89.38 427 415
+456 1151 0 F 463 1230 50 844 25 94.56 456 513
+412 1151 40 F 414 1360 1 742 28 93.22 456 415
+436 1210 50 F 431 1516 1 786 27 93.77 500 432
+443 1226 5 F 421 1296 26 732 44 89.81 448 463
+414 1230 95 F 414 1360 1 735 31 92.51 513 415
+404 1268 97 F 411 1627 3 746 23 94.36 503 414
+395 1268 101 F 405 1747 0 713 29 92.75 503 416
+451 1294 10 F 463 1786 0 740 58 87.31 464 465
+429 1297 21 F 436 1327 0 754 37 91.45 475 436
+445 1362 1 F 425 1500 52 732 46 89.43 450 502
+477 1620 0 F 478 1796 6 832 41 91.41 479 510
+446 1620 20 F 439 1937 0 762 41 90.73 479 450
+403 1627 8 F 408 1747 0 754 19 95.31 414 416
+415 1663 0 F 414 1893 27 700 43 89.63 415 475
+438 1696 0 F 439 1781 23 748 43 90.19 438 527
+433 1745 0 F 427 1764 1 776 28 93.49 459 428
+458 1745 0 F 455 1767 0 829 28 93.87 459 455
+450 1745 9 F 443 1882 0 809 28 93.73 459 455
+427 1764 1 F 432 1767 0 796 21 95.11 428 455
+416 1764 10 F 415 1882 0 783 16 96.15 428 455
+403 1764 7 F 417 1896 0 700 40 90.24 428 417
+446 1767 9 F 440 1882 0 826 20 95.49 455 455
+405 1767 6 F 413 1896 0 710 36 91.20 455 417
+494 1788 0 F 499 1850 9 882 37 92.55 512 521
+449 1796 26 F 439 1937 0 759 43 90.32 510 450
+458 1802 3 F 471 1877 0 827 34 92.68 461 491
+435 1828 6 F 446 1947 0 734 49 88.88 475 450
+399 1882 0 F 414 1896 3 705 36 91.14 455 417
+414 299 0 P 420 883 20 729 35 91.61 420 468
diff --git a/testdata/see-ext-at1MB-400-trace.matches b/testdata/see-ext-at1MB-400-trace.matches
new file mode 100644
index 0000000..4f5dd87
--- /dev/null
+++ b/testdata/see-ext-at1MB-400-trace.matches
@@ -0,0 +1,230 @@
+# Options: -ii at1MB -outfmt trace=50 -l 400 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, trace
+597 1 0 F 592 4 7 898 97 83.68 50,50,50,53,50,50,50,50,50,49,49,41
+538 1 9 F 523 47 0 779 94 82.28 50,50,51,52,50,50,52,48,45,42,33
+577 2 72 F 606 3 0 916 89 84.95 50,50,50,50,50,50,50,50,53,59,60,34
+626 2 34 F 656 5 0 1063 73 88.61 50,50,50,50,50,50,50,50,50,54,58,60,34
+484 2 176 F 513 6 104 730 89 82.15 51,50,50,50,50,50,54,57,59,42
+706 2 0 F 749 16 84 1269 62 91.48 50,50,50,50,50,50,50,50,50,50,56,58,63,66,6
+660 2 0 F 687 39 0 1065 94 86.04 50,50,50,50,50,50,50,50,50,50,56,58,62,11
+668 3 0 F 660 5 38 1139 63 90.51 50,50,50,50,50,50,50,50,50,49,49,49,48,15
+639 3 14 F 631 6 14 1063 69 89.13 50,50,51,50,50,50,50,50,49,49,50,46,36
+655 3 0 F 650 16 156 1047 86 86.82 50,50,50,50,50,50,50,50,50,49,49,49,48,5
+653 3 0 F 643 39 72 1203 31 95.22 50,50,50,50,50,50,50,50,50,49,49,49,43,3
+613 4 16 F 571 47 0 1022 54 90.88 50,50,50,50,50,50,50,50,46,44,35,38,8
+704 5 52 F 700 6 14 1056 116 83.48 50,50,51,50,50,50,50,50,50,50,51,50,45,48,5
+742 5 0 F 746 16 118 1323 55 92.61 50,50,50,50,50,50,50,50,50,50,50,50,50,51,45
+756 5 0 F 750 39 34 1275 77 89.77 50,50,50,50,50,50,50,50,50,50,50,50,50,45,48,7
+599 6 104 F 601 16 260 915 95 84.17 49,50,50,50,50,50,50,50,49,50,54,49
+783 6 14 F 788 39 86 1400 57 92.74 50,50,49,50,50,50,50,50,50,50,49,50,50,50,51,39
+467 11 135 F 449 29 138 766 50 89.08 48,50,50,50,50,50,50,45,42,14
+767 16 84 F 766 39 0 1248 95 87.61 50,50,50,50,50,50,50,50,50,50,50,50,50,49,47,20
+397 18 0 F 417 46 194 634 60 85.26 50,50,50,50,50,52,58,57
+458 34 157 F 442 1317 0 789 37 91.78 41,46,49,50,50,50,50,48,50,8
+399 35 140 F 402 72 145 717 28 93.01 56,50,50,50,50,50,49,47
+430 61 134 F 438 65 137 787 27 93.78 50,50,50,50,49,50,50,51,38
+517 64 0 F 517 65 0 1034 0 100.00 50,50,50,50,50,50,50,50,50,50,17
+461 78 86 F 459 80 149 800 40 91.30 48,50,50,50,49,50,48,53,50,11
+542 78 223 F 540 1488 8 995 29 94.64 50,49,49,50,50,50,50,50,50,50,42
+568 79 56 F 568 1495 0 1022 38 93.31 47,51,52,50,50,50,50,50,50,50,50,18
+417 223 0 F 414 271 2 801 10 97.59 48,50,50,50,50,50,50,49,17
+418 229 0 F 419 270 0 828 3 99.28 50,50,50,50,50,50,50,50,19
+418 318 13 F 428 1693 142 621 75 82.27 55,50,48,50,57,58,52,44,14
+405 336 36 F 419 1703 0 734 30 92.72 51,50,50,50,50,50,56,57,5
+439 376 0 F 450 1694 81 703 62 86.05 57,52,53,50,50,51,51,50,36
+400 380 1 F 408 451 26 766 14 96.53 57,51,50,50,50,50,50,50
+403 380 0 F 406 630 10 722 29 92.83 51,52,50,50,50,50,50,50,3
+401 380 0 F 404 736 106 784 7 98.26 53,50,50,50,50,50,50,50,1
+400 380 3 F 403 846 215 773 10 97.51 53,50,50,50,50,50,50,50
+403 380 0 F 407 902 16 783 9 97.78 54,50,50,50,50,50,50,50,3
+401 380 2 F 408 1100 35 740 23 94.31 55,52,50,50,50,50,50,50,1
+401 380 2 F 407 1143 2 721 29 92.82 52,53,51,50,50,50,50,50,1
+403 380 0 F 407 1151 49 786 8 98.02 54,50,50,50,50,50,50,50,3
+403 380 0 F 409 1230 104 773 13 96.80 53,52,51,50,50,50,50,50,3
+399 380 0 F 406 1360 9 730 25 93.79 56,51,50,50,50,50,50,49
+475 404 165 F 466 819 35 809 44 90.65 42,47,51,51,50,50,50,50,50,25
+418 404 186 F 420 975 52 760 26 93.79 50,50,51,51,50,50,50,50,18
+420 404 213 F 444 1362 2 699 55 87.27 57,55,59,53,50,50,50,50,20
+453 404 187 F 455 1500 29 806 34 92.51 50,49,52,51,50,50,50,50,50,3
+434 406 8 F 430 542 0 771 31 92.82 46,50,50,50,50,50,50,50,34
+402 406 40 F 413 1056 0 713 34 91.66 51,56,54,50,50,50,50,50,2
+430 412 83 F 436 1525 0 755 37 91.45 56,53,48,49,50,50,50,50,30
+434 426 27 F 429 795 0 722 47 89.11 47,47,49,51,51,50,50,50,34
+409 432 9 F 410 652 0 735 28 93.16 48,53,50,50,50,50,50,50,9
+422 432 0 F 423 825 61 791 18 95.74 50,51,50,50,50,50,50,50,22
+397 432 0 F 403 1469 51 728 24 94.00 55,53,48,50,50,50,50,47
+423 449 0 F 421 868 143 802 14 96.68 48,51,49,50,50,50,50,50,23
+434 451 0 F 427 736 83 825 12 97.21 46,47,50,50,50,50,50,50,34
+434 451 0 F 427 846 189 816 15 96.52 46,47,50,50,50,50,50,50,34
+424 451 10 F 420 902 1 787 19 95.50 48,48,50,50,50,50,50,50,24
+434 451 0 F 429 1100 12 764 33 92.35 44,51,50,50,50,50,50,50,34
+434 451 0 F 428 1151 26 823 13 96.98 46,48,50,50,50,50,50,50,34
+434 451 0 F 431 1230 80 805 20 95.38 47,47,53,50,50,50,50,50,34
+417 451 15 F 414 1360 1 726 35 91.58 49,48,50,50,50,50,50,50,17
+415 452 0 F 413 882 3 750 26 93.72 50,49,48,51,50,50,50,50,15
+424 454 70 F 432 1837 0 793 21 95.09 49,50,50,50,50,50,51,54,28
+453 460 27 F 452 1351 0 821 28 93.81 50,51,50,48,50,50,50,50,50,3
+492 474 48 F 480 543 0 903 23 95.27 43,46,50,49,50,50,50,50,50,42
+540 474 0 F 522 658 80 975 29 94.54 45,45,46,49,48,49,50,50,50,50,40
+454 474 86 F 440 713 0 786 36 91.95 42,46,48,50,50,50,50,50,50,4
+423 474 0 F 408 736 18 693 46 88.93 44,47,49,50,49,50,50,48,21
+435 474 105 F 433 798 0 811 19 95.62 48,50,49,51,50,50,50,50,35
+480 474 35 F 479 826 2 914 15 96.87 50,51,49,49,50,50,50,50,50,30
+423 474 0 F 418 846 114 685 52 87.63 54,48,48,50,49,50,50,48,21
+422 474 118 F 417 849 0 758 27 93.56 49,47,50,50,50,49,50,50,22
+488 474 47 F 483 912 0 932 13 97.32 47,49,49,50,50,50,50,50,50,38
+407 474 57 F 407 988 0 664 50 87.71 49,52,49,49,50,50,50,50,8
+419 474 45 F 417 1049 0 722 38 90.91 49,48,51,49,50,50,50,49,21
+453 474 87 F 444 1120 0 798 33 92.64 45,49,48,50,50,49,50,50,50,3
+422 474 1 F 425 1230 2 679 56 86.78 54,52,49,52,50,50,50,48,20
+500 474 40 F 475 1297 0 852 41 91.59 39,42,47,47,50,50,50,50,50,50
+447 474 68 F 436 1327 0 775 36 91.85 43,48,48,50,50,50,50,50,47
+409 480 46 F 398 926 0 744 21 94.80 43,46,50,50,50,50,50,50,9
+425 489 0 F 429 1339 12 806 16 96.25 53,52,49,50,50,50,50,50,25
+409 522 41 F 410 1134 0 723 32 92.19 51,50,50,50,50,50,50,50,9
+406 530 14 F 398 1343 30 735 23 94.28 44,48,50,50,50,50,50,50,6
+422 536 58 F 414 1082 12 755 27 93.54 45,47,50,50,50,50,50,50,22
+400 542 30 F 413 1056 0 738 25 93.85 56,53,54,50,50,50,50,50
+477 543 3 F 476 658 126 890 21 95.59 53,49,48,50,49,50,50,50,50,27
+436 543 44 F 429 713 11 793 24 94.45 45,50,48,50,50,50,50,50,36
+429 543 51 F 430 798 3 793 22 94.88 51,49,50,51,50,50,50,50,29
+455 543 0 F 466 826 15 852 23 95.01 60,51,50,50,50,50,50,50,50,5
+419 543 61 F 416 849 1 748 29 93.05 49,49,50,50,50,49,50,50,19
+475 543 0 F 482 912 1 897 20 95.82 56,51,49,51,50,50,50,50,50,25
+397 543 7 F 407 988 0 633 57 85.82 56,53,50,50,50,50,50,48
+404 543 0 F 414 1049 3 677 47 88.51 57,51,51,50,50,50,49,52,4
+447 543 33 F 444 1120 0 798 31 93.04 50,49,49,50,50,49,50,50,47
+480 543 0 F 468 1297 7 855 31 93.46 44,48,47,49,50,50,50,50,50,30
+439 543 16 F 436 1327 0 782 31 92.91 49,48,50,50,50,50,50,50,39
+436 549 0 F 448 661 68 773 37 91.63 56,52,50,51,51,51,50,51,36
+402 568 10 F 406 1793 2 739 23 94.31 51,51,50,50,50,50,51,51,2
+432 584 48 F 449 1661 0 707 58 86.83 54,53,50,50,50,50,51,55,36
+412 630 2 F 414 736 96 730 32 92.25 53,50,49,50,50,50,50,50,12
+415 630 1 F 416 846 202 729 34 91.82 52,50,49,50,50,50,50,50,15
+415 630 1 F 419 902 4 732 34 91.85 55,50,49,50,50,50,50,50,15
+416 630 0 F 420 1100 23 719 39 90.67 52,53,49,50,50,50,50,50,16
+425 630 9 F 426 1143 1 728 41 90.36 48,52,51,50,50,50,50,50,25
+415 630 1 F 418 1151 38 737 32 92.32 54,50,49,50,50,50,50,50,15
+416 630 0 F 421 1230 92 732 35 91.64 53,51,51,50,50,50,50,50,16
+409 630 3 F 414 1360 1 688 45 89.06 55,51,49,50,50,50,50,50,9
+400 652 10 F 401 825 79 711 30 92.51 52,49,50,50,50,50,50,50
+412 654 1 F 407 807 63 711 36 91.21 46,52,49,49,49,50,50,50,12
+440 654 1 F 432 866 142 719 51 88.30 48,49,48,48,49,50,50,50,40
+461 654 0 F 461 1212 120 799 41 91.11 52,51,49,49,49,50,50,50,50,11
+441 658 161 F 438 713 2 777 34 92.26 47,50,49,51,50,50,50,50,41
+425 658 60 F 426 736 0 683 56 86.84 46,52,54,51,51,51,50,49,22
+428 658 174 F 433 798 0 795 22 94.89 51,52,50,52,50,50,50,50,28
+467 658 110 F 481 826 0 867 27 94.30 57,54,51,51,51,50,50,50,50,17
+465 658 20 F 485 846 47 737 71 85.05 54,61,54,52,52,50,51,50,50,11
+416 658 186 F 416 849 1 763 23 94.47 51,49,50,51,49,50,50,50,16
+471 658 126 F 479 912 4 896 18 96.21 53,52,52,50,51,50,50,50,50,21
+395 658 131 F 407 988 0 646 52 87.03 55,54,51,50,51,50,50,46
+395 658 131 F 405 1049 12 677 41 89.75 54,52,52,50,51,50,50,46
+444 658 158 F 444 1120 0 786 34 92.34 50,50,50,51,50,49,50,50,44
+397 658 88 F 416 1230 11 624 63 84.50 60,57,51,54,50,51,50,43
+486 658 116 F 475 1297 0 853 36 92.51 43,47,48,50,51,50,50,50,50,36
+437 658 140 F 436 1327 0 777 32 92.67 48,49,51,51,50,50,50,50,37
+415 691 0 F 433 814 49 722 42 90.09 63,55,50,50,50,50,50,50,15
+421 695 59 F 427 938 0 761 29 93.16 51,53,53,50,49,50,50,50,21
+432 701 5 F 422 715 7 731 41 90.40 43,46,51,50,50,50,50,50,32
+423 713 17 F 432 798 1 753 34 92.05 57,51,50,51,50,50,50,50,23
+415 713 0 F 428 826 53 729 38 90.98 60,51,52,50,50,50,50,50,15
+413 713 27 F 417 849 0 710 40 90.36 56,49,50,50,49,50,50,50,13
+435 713 0 F 446 912 37 782 33 92.51 58,50,53,50,50,50,50,50,35
+437 713 3 F 442 1120 2 789 30 93.17 55,50,51,50,50,49,50,50,37
+437 713 3 F 437 1297 38 769 35 91.99 51,48,51,50,50,50,50,50,37
+414 713 1 F 420 1327 16 723 37 91.13 55,49,52,50,50,50,50,50,14
+382 724 29 F 433 1826 2 605 70 82.82 67,59,51,50,50,56,61,39
+510 736 0 F 525 846 91 915 40 92.27 64,52,49,50,50,50,50,50,50,50,10
+414 736 96 F 416 902 5 800 10 97.59 52,50,50,50,50,50,50,50,14
+435 736 75 F 437 1100 4 782 30 93.12 48,54,50,50,50,50,50,50,35
+406 736 104 F 407 1143 0 726 29 92.87 46,54,51,50,50,50,50,50,6
+452 736 58 F 454 1151 0 876 10 97.79 51,51,50,50,50,50,50,50,50,2
+485 736 25 F 500 1230 11 898 29 94.11 60,52,50,53,50,50,50,50,50,35
+411 736 97 F 414 1360 1 747 26 93.70 52,51,50,50,50,50,50,50,11
+408 798 0 F 407 826 74 755 20 95.09 50,50,50,49,50,50,50,50,8
+420 798 13 F 417 849 0 723 38 90.92 51,48,50,49,50,49,50,50,20
+428 798 0 F 428 912 55 796 20 95.33 51,49,51,49,50,50,50,50,28
+432 798 1 F 428 1120 16 752 36 91.63 50,48,50,49,50,49,50,50,32
+430 798 3 F 423 1297 52 766 29 93.20 47,48,49,49,50,50,50,50,30
+405 798 3 F 402 1327 34 714 31 92.32 49,49,50,49,50,50,50,50,5
+468 807 2 F 464 866 82 800 44 90.56 50,51,47,50,48,50,50,50,50,18
+468 807 2 F 476 1212 57 824 40 91.53 53,55,50,50,50,50,50,50,50,18
+445 815 0 F 462 1699 0 778 43 90.52 51,52,51,50,50,51,51,58,48
+451 819 14 F 467 975 5 810 36 92.16 59,56,51,50,50,50,50,50,50,1
+418 819 76 F 443 1362 3 726 45 89.55 60,55,57,53,50,50,50,50,18
+484 819 35 F 494 1500 8 882 32 93.46 56,53,51,50,50,50,50,50,50,34
+432 825 27 F 441 1469 13 765 36 91.75 56,55,48,50,50,50,50,50,32
+467 826 14 F 463 912 0 873 19 95.91 45,51,49,51,50,50,50,50,50,17
+409 826 12 F 407 1049 0 702 38 90.69 48,49,51,50,50,50,50,49,10
+426 826 55 F 419 1120 0 743 34 91.95 46,49,49,50,50,49,50,50,26
+474 826 7 F 450 1297 0 801 41 91.13 38,43,47,48,50,50,50,50,50,24
+446 826 35 F 436 1327 0 774 36 91.84 42,49,49,50,50,50,50,50,46
+419 846 199 F 422 902 1 793 16 96.20 53,50,50,50,50,50,50,50,19
+434 846 184 F 437 1100 6 772 33 92.42 49,54,50,50,50,50,50,50,34
+454 846 164 F 456 1151 0 859 17 96.26 50,52,50,50,50,50,50,50,50,4
+503 846 115 F 511 1230 2 879 45 91.12 49,55,51,52,51,50,50,50,50,50,3
+410 846 204 F 414 1360 1 731 31 92.48 53,51,50,50,50,50,50,50,10
+447 848 138 F 476 1658 0 737 62 86.57 54,51,51,52,51,50,51,58,58
+412 849 0 F 415 912 68 746 27 93.47 49,53,50,50,50,51,50,50,12
+417 849 0 F 417 1120 27 705 43 89.69 49,51,50,50,49,51,50,50,17
+417 849 0 F 413 1297 62 722 36 91.33 46,50,49,50,50,51,50,50,17
+557 866 17 F 561 1212 0 884 78 86.05 44,51,52,54,51,52,50,50,50,50,50,7
+405 867 233 F 417 1602 0 708 38 90.75 52,51,50,50,50,50,52,56,6
+421 884 0 F 427 890 8 770 26 93.87 53,51,52,50,50,50,50,50,21
+424 892 0 F 420 1300 64 772 24 94.31 48,48,50,50,50,50,50,50,24
+423 902 0 F 423 1100 20 747 33 92.20 47,53,50,50,50,50,50,50,23
+409 902 14 F 409 1143 0 728 30 92.67 45,54,51,50,50,50,50,50,9
+423 902 0 F 422 1151 34 818 9 97.87 49,50,50,50,50,50,50,50,23
+420 902 3 F 422 1230 91 785 19 95.49 50,49,53,50,50,50,50,50,20
+404 902 15 F 407 1360 8 736 25 93.83 52,51,50,50,50,50,50,50,4
+438 905 0 F 451 1693 83 730 53 88.08 50,49,49,50,51,55,59,51,37
+403 912 9 F 407 988 0 648 54 86.67 51,53,49,50,50,50,49,52,3
+411 912 1 F 414 1049 3 696 43 89.58 52,49,52,49,50,50,50,50,12
+445 912 38 F 439 1120 0 791 31 92.99 47,50,48,50,50,49,50,50,45
+483 912 0 F 464 1297 6 842 35 92.61 40,45,48,48,50,50,50,50,50,33
+444 912 19 F 436 1327 0 778 34 92.27 44,50,48,50,50,50,50,50,44
+396 975 76 F 417 1362 0 687 42 89.67 55,54,58,54,50,50,50,46
+419 975 53 F 419 1500 29 781 19 95.47 50,49,51,50,50,50,50,50,19
+426 988 0 F 424 1049 12 766 28 93.41 50,46,52,50,50,50,50,50,26
+433 1049 0 F 413 1297 4 630 72 82.98 40,44,46,49,50,50,50,51,33
+409 1049 24 F 401 1327 2 615 65 83.95 44,48,49,50,50,50,51,46,13
+409 1097 23 F 417 1806 1 721 35 91.53 54,51,50,49,50,50,52,52,9
+410 1100 33 F 408 1143 1 725 31 92.42 45,52,51,50,50,50,50,50,10
+442 1100 1 F 440 1151 16 789 31 92.97 50,49,49,50,50,50,50,50,42
+440 1100 3 F 442 1230 71 792 30 93.20 53,47,52,50,50,50,50,50,40
+413 1100 26 F 414 1360 1 704 41 90.08 53,48,50,50,50,50,50,50,13
+444 1120 0 F 439 1297 36 772 37 91.62 47,48,49,50,50,51,50,50,44
+419 1120 0 F 419 1327 17 715 41 90.21 49,49,51,50,50,51,50,50,19
+409 1143 0 F 409 1151 47 734 28 93.15 54,47,49,50,50,50,50,50,9
+407 1143 2 F 407 1230 106 742 24 94.10 51,48,51,50,50,50,50,50,7
+405 1143 0 F 405 1360 10 681 43 89.38 53,48,49,50,50,50,50,50,5
+456 1151 0 F 463 1230 50 844 25 94.56 55,49,51,52,50,50,50,50,50,6
+412 1151 40 F 414 1360 1 742 28 93.22 51,51,50,50,50,50,50,50,12
+436 1210 50 F 431 1516 1 786 27 93.77 46,48,51,50,50,50,50,50,36
+443 1226 5 F 421 1296 26 732 44 89.81 39,42,48,49,50,50,50,50,43
+414 1230 95 F 414 1360 1 735 31 92.51 52,50,48,50,50,50,50,50,14
+404 1268 97 F 411 1627 3 746 23 94.36 53,51,50,50,50,50,50,52,5
+395 1268 101 F 405 1747 0 713 29 92.75 53,50,50,50,50,50,53,49
+451 1294 10 F 463 1786 0 740 58 87.31 54,55,52,51,50,50,51,51,48,1
+429 1297 21 F 436 1327 0 754 37 91.45 54,51,52,50,50,50,50,50,29
+445 1362 1 F 425 1500 52 732 46 89.43 45,48,41,47,49,50,50,50,45
+477 1620 0 F 478 1796 6 832 41 91.41 50,50,50,50,50,50,48,50,54,26
+446 1620 20 F 439 1937 0 762 41 90.73 50,50,50,50,50,49,48,48,44
+403 1627 8 F 408 1747 0 754 19 95.31 50,50,50,50,50,50,53,52,3
+415 1663 0 F 414 1893 27 700 43 89.63 50,50,50,50,49,51,48,50,16
+438 1696 0 F 439 1781 23 748 43 90.19 50,50,50,50,50,50,51,51,37
+433 1745 0 F 427 1764 1 776 28 93.49 50,50,50,50,50,50,49,47,31
+458 1745 0 F 455 1767 0 829 28 93.87 50,50,50,50,50,50,50,50,48,7
+450 1745 9 F 443 1882 0 809 28 93.73 49,50,50,50,50,50,49,46,49
+427 1764 1 F 432 1767 0 796 21 95.11 50,50,50,50,50,50,51,53,28
+416 1764 10 F 415 1882 0 783 16 96.15 49,50,50,50,50,50,50,50,16
+403 1764 7 F 417 1896 0 700 40 90.24 49,50,50,50,50,51,59,54,4
+446 1767 9 F 440 1882 0 826 20 95.49 49,50,50,50,50,50,48,48,45
+405 1767 6 F 413 1896 0 710 36 91.20 49,50,50,50,50,51,58,50,5
+494 1788 0 F 499 1850 9 882 37 92.55 50,50,50,50,50,50,50,49,51,49
+449 1796 26 F 439 1937 0 759 43 90.32 50,50,50,50,50,50,49,47,43
+458 1802 3 F 471 1877 0 827 34 92.68 50,50,50,50,50,50,52,55,55,9
+435 1828 6 F 446 1947 0 734 49 88.88 50,50,50,50,50,50,51,56,39
+399 1882 0 F 414 1896 3 705 36 91.14 50,50,50,50,50,52,58,54
+414 299 0 P 420 883 20 729 35 91.61 50,50,50,50,52,51,54,50,13
diff --git a/testdata/see-ext-at1MB-500-al.matches b/testdata/see-ext-at1MB-500-al.matches
new file mode 100644
index 0000000..0a1b9a8
--- /dev/null
+++ b/testdata/see-ext-at1MB-500-al.matches
@@ -0,0 +1,947 @@
+# Options: -ii at1MB -l 500 -outfmt alignment=70 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+597 1 0 F 592 4 7 898 97 83.68
+Sbjct 0 atgnanantcaaaaatggagtntaggtttcatatct-ctcgcttttctcttcatcacttcctcttcagct 68
+ ||| | | ||| ||||||||| ||||||||| || | || ||||| |||||||||||||||||||| |||
+Query 7 atggatagtcacaaatggagtctaggtttcacat-tacttgctttcctcttcatcacttcctcttccgct 75
+
+Sbjct 69 gagttcatcattcaacaggtcacaaagggcanaggaatagagtacaacagttcttacagtctcgagga-g 137
+ ||| |||||||| ||||||||||| |||||| ||||||||||||||||| |||||||||||| | | |
+Query 76 gagctcatcattaaacaggtcacacagggcagaggaatagagtacaacaactcttacagtctc-acgtcg 144
+
+Sbjct 138 aatcttggagtgacnaga-gag--ttgagagaagagcgaccatcgagtaagatagtgacaataacaagct 204
+ |||||||||||||| | | ||| |||||||| ||||||||||| ||||||||||||||||| |||||||
+Query 145 aatcttggagtgacgacaagagagttgagagacgagcgaccatcaagtaagatagtgacaatcacaagct 214
+
+Sbjct 205 tctcagtgattaaagg-cagaggagaaccctatgaatcctctgtttttgaggctgctggttacaaatgga 273
+ |||| |||||||| || ||||||||||||||||||||| ||| ||||||||||||| |||||||||||||
+Query 215 tctctgtgattaa-ggacagaggagaaccctatgaatcatctatttttgaggctgccggttacaaatgga 283
+
+Sbjct 274 gattggttttgtacgtgaatggtaataa-aaacgacggtggaaatgatcatatttccctttacgcaagga 342
+ |||| |||||||||||||| |||||| ||| | |||| |||| |||||||||| |||||||| ||||
+Query 284 gattagttttgtacgtgaagggtaatccgaaagg-cggtataaataatcatatttcactttacgcgagga 352
+
+Sbjct 343 tcgaagagaca-aa-ctctcttccattaggttgggaagtgaatgttgatctcaaactctttgtccataat 410
+ | ||||||||| || |||| | ||| ||| ||||||||||||||||||||||||||||||||||| |||
+Query 353 tagaagagacagaaactct-t-ccaagagggtgggaagtgaatgttgatctcaaactctttgtccacaat 420
+
+Sbjct 411 gggaagctacacaaatatttgactgttacagatggcttanttgaagcgatataacaatgcnaaaaaagaa 480
+ |||| || | ||||||||| ||||||||||||| | | ||||||||| ||| |||| ||||||||
+Query 421 cggaanttaaagaaatatttgtctgttacagatggaacagt-gaagcgatacaacgatgcaaaaaaagag 489
+
+Sbjct 481 tggggtttcggacaattgattcctcnatc-aacattctacaacgcgaacgaagg-ttacctt-tgaccaa 547
+ ||||| ||| |||||||||| ||| || |||||||||||||||||||||||| || |||| || |||
+Query 490 tggggattcncacaattgatttctct-tccaacattctacaacgcgaacgaagggtt-ccttgtg-cca- 556
+
+Sbjct 548 ggacactggttccttttgggtggcnggaaaancctttattgtttaaacc 596
+ |||||| ||||||| ||||| | | | || | || || ||| || ||
+Query 557 ggacacancttccttt-gggtg-ctg-anaa-c-ttcatcgtt-aaccc 598
+
+538 1 9 F 523 47 0 779 94 82.28
+Sbjct 9 caaaaatggagtntaggtttcatatctctcgcttttctcttcatcacttcctcttcagctgagttcatca 78
+ || ||||||||| ||||||||| || || ||||| |||||||||||||||||||| |||||| ||||||
+Query 0 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgctgagctcatca 69
+
+Sbjct 79 ttcaacaggtcacaaagggcanaggaatagagtacaacagttcttacagtctcgagga-gaatcttggag 147
+ || ||||||||||| |||||| ||||||||||||||||| |||||||||||| | | |||||||||||
+Query 70 ttaaacaggtcacacagggcagaggaatagagtacaacaactcttacagtctc-acgtcgaatcttggag 138
+
+Sbjct 148 tgacnaga-gag--ttgagagaagagcgaccatcgagtaagatagtgacaataacaagcttctcagtgat 214
+ |||| | | ||| |||||||| ||||||||||| ||||||||||||||||| ||||||||||| |||||
+Query 139 tgacgacaagagagttgagagacgagcgaccatcaagtaagatagtgacaatcacaagcttctctgtgat 208
+
+Sbjct 215 taaagg-cagaggagaaccctatgaatcctctgtttttgaggctgctggttacaaatggagattggtttt 283
+ ||| || ||||||||||||||||||||| ||| ||||||||||||| ||||||||||||||||| ||||
+Query 209 taa-ggacagaggagaaccctatgaatcatctatttttgaggctgccggttacaaatggagattantttt 277
+
+Sbjct 284 gtacgtgaatggtaataa-aaacgacggtggaaatgatcatatttccctttacgcaaggatcgaagagac 352
+ ||||||||| |||||| ||| | |||| | || |||||||||| |||||||| ||||| ||||||||
+Query 278 gtacgtgaagggtaatccgaaagg-cggtatanataatcatatttcactttacgcgaggatagaagagac 346
+
+Sbjct 353 a-aa-ctctcttccatta-ggttgggaagtgaatgttgatctcaaactctttgtccataatgggaagct- 419
+ | || |||| | ||| | ||| |||||||||||||||||||||||||||||||||| ||| ||||| |
+Query 347 agaaactct-t-ccaagaaggt-gggaagtgaatgttgatctcaaactctttgtccacaatcggaag-tn 412
+
+Sbjct 420 acacaaatatttgactgttacagatgg-cttanttgaagcgatataacaatgcnaaaaaagaatggggtt 487
+ | | || |||| | ||||||||||||| | | | ||| |||| | | |||| |||||||| ||||| |
+Query 413 aaagaa-tatt-gtctgttacagatggac--a-t-gaancgatcca-cnatgcnaaaaaaga-tggggat 474
+
+Sbjct 488 tcggacaattgattcctcnatcaacattctacaacgcgaacgaaggttacctt-tgacca 546
+ | ||| ||||||| || || |||| || || | |||| |||||| || || |||||
+Query 475 cc--aca-ttgattc-tc--tccacat-ct-ca-c-cgaa-gaaggt-actttcagacca 522
+
+577 2 72 F 606 3 0 916 89 84.95
+Sbjct 72 gtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc-aacattctac 140
+ ||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| || ||||||||||
+Query 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctct-tccaacattctac 68
+
+Sbjct 141 aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg 210
+ |||||||||||||| ||| ||| |||||||| | ||||||||||||||||||||| || ||||| |||
+Query 69 aacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccga 138
+
+Sbjct 211 ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg 280
+ | || ||||||||||||| |||||||||||||||||||| |||||||||||||||||||||||||||||
+Query 139 cagaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcg 208
+
+Sbjct 281 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 350
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+
+Sbjct 351 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 420
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+
+Sbjct 421 ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaanttc 490
+ |||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+
+Sbjct 491 taaccatagacaat-atnt-ctgca-cttggtaccc--attggaaacg-ttatggtntgggant-aaca- 553
+ ||||| | ||||| || | ||||| |||||||||| ||| ||| || ||||||| ||||| | ||||
+Query 419 caaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaa 488
+
+Sbjct 554 tatc-tactgttg-ctgat--taac-ga-gcatccaaaggattt-tggtga-tga-gccnt-atctt--g 610
+ |||| || || || | || ||| || ||||| ||||| | | |||||| ||| ||| | ||||| |
+Query 489 tatcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttg 558
+
+Sbjct 611 aa-ctgaa-tggttaag-nc-ctat-acca-c-t-ctctcc-ctnaa 648
+ || ||||| |||||||| | || | | || | | ||||| || ||
+Query 559 aaactgaaatggttaaggtctctgtgaacaacatantctccncttaa 605
+
+626 2 34 F 656 5 0 1063 73 88.61
+Sbjct 34 ggaagctacacaaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatg 103
+ ||||| || | ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||
+Query 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtg 69
+
+Sbjct 104 gggtttcggacaattgattcctcgatc-aacattctacaacgcgaacgaaggttaccttgaccaggacac 172
+ ||| ||| |||||||||| ||| || |||||||||||||||||||||||| ||||||| ||||||||
+Query 70 gggattcacacaattgatttctct-tccaacattctacaacgcgaacgaagggtaccttgtgcaggacac 138
+
+Sbjct 173 tggttcttttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatca 242
+ | ||||||||||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||
+Query 139 agcttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatca 208
+
+Sbjct 243 aaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattact 312
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 aaccctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattact 278
+
+Sbjct 313 ccgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaag 382
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 279 ccgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaag 348
+
+Sbjct 383 accacatgcacttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttgg 452
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 349 accacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgg 418
+
+Sbjct 453 ggagcggttaatctgcggttaaagaatcaacgaanttctaaccatagacaa-tatnt-ctgca-cttggt 519
+ |||||||||||||||||||||||||||||||||| | |||||||||||||| ||| | ||||| ||||||
+Query 419 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggt 488
+
+Sbjct 520 accc-attggaaacg-ttatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatc 580
+ |||| ||||||| || ||||||| ||||| | |||| |||| ||||||| ||||||| || ||| |||||
+Query 489 acccgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatc 558
+
+Sbjct 581 caaaggat-tttggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaagn-c-ctata-cca-c-tc 638
+ ||||||| |||||||| ||| ||| | ||||| ||| ||||| |||||||| | ||||| ||| | ||
+Query 559 aaaaggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatc 628
+
+Sbjct 639 -tctcc-ctnaa-t-tct-c-cttctt 659
+ ||||| || || | ||| | ||||||
+Query 629 gtctccgcttaaatatctgcacttctt 655
+
+706 2 0 F 749 16 84 1269 62 91.48
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatcaacattcta 223
+
+Sbjct 140 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 caacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccg 293
+
+Sbjct 210 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 gctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttc 363
+
+Sbjct 280 gtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagact 349
+ ||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||
+Query 364 gtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagact 433
+
+Sbjct 350 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 434 aggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaantt 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagta 573
+
+Sbjct 490 ctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca- 553
+ |||||||||||||| ||| | ||||| |||||||||| |||||||||| ||||||| ||||| | ||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaacaa 643
+
+Sbjct 554 tatc-tactgtt-gctgatt-aa-cga-gcatccaaaggat-tttggtga-tga-gccnt-atctt-gaa 612
+ |||| ||||||| ||||||| || ||| ||||||||||||| |||||||| ||| ||| | ||||| |||
+Query 644 tatcatactgttagctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaa 713
+
+Sbjct 613 -ctgaa-tggttaagn-c-ctata-cca-c-tc-tctcc-ctnaa-t-tct-c-cttcttn-tcn-cna- 667
+ ||||| |||||||| | ||||| ||| | || ||||| || || | ||| | |||||| || | |
+Query 714 gctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttctttgtctacnan 783
+
+Sbjct 668 ca-tcn-cnttnat-aa-aaaa---ttt-a-tt-gat-aattttttanaa 705
+ || || | || || || |||| ||| | || ||| ||||| ||| ||
+Query 784 caatccacctt-atgaataaaaaaattttaatttgatgaatttgttataa 832
+
+660 2 0 F 687 39 0 1065 94 86.04
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 69
+ |||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa 69
+
+Sbjct 70 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc-aacattct 138
+ |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| || ||||||||
+Query 70 cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctct-tccaacattct 138
+
+Sbjct 139 acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc 208
+ |||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
+Query 139 acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc 208
+
+Sbjct 209 ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+ | | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+
+Sbjct 279 cgtttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagac 348
+ ||||||||||||||||||||||||||||||||||| ||||||||||| |||| |||||||||||||||||
+Query 279 cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac 348
+
+Sbjct 349 taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 418
+ ||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 349 taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 419 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaant 488
+ |||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc 488
+
+Sbjct 489 tctaaccatagacaat-atnt-ctgca-cttggtaccc-attggaaacg-ttatggtntgggant-aaca 552
+ || ||||| | ||||| || | ||||| |||||||||| ||| ||| || ||||||| ||||| | ||||
+Query 489 tccaaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaaca 558
+
+Sbjct 553 -tatc-tactgttg-ctgat-taac-ga-gcatccaaaggattt-tggtga-tga-gccnt-atctt-ga 611
+ ||| || || || | || ||| || ||||| ||||| | | |||||| ||| ||| | ||||| ||
+Query 559 atataatattgatgtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatctttga 628
+
+Sbjct 612 a-ctgaa-tggttaagn-c-ctat-acca-c-t-ctctccct-naattctc-cttctt 659
+ | ||||| |||||||| | || | || | | | ||||| | || | || || |||
+Query 629 agctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcactactt 686
+
+668 3 0 F 660 5 38 1139 63 90.51
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 38 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 107
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 108 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 177
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctcc-gaacaatgttttcacttggaagatacttcg 208
+ ||||||||||||||||||||||||||||||||||||||| || |||||||||||||||||||||||||||
+Query 178 agaaaaacaagagaaagtcacattcatatcaaaccctccaga-caatgttttcacttggaagatacttcg 246
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 247 tttctctaccttggaagataaattctattactccgatgattttctcgttgaagaccgatactggagacta 316
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 317 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 386
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 387 ataaggcaaacgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 455
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| |||||| ||||||||||||||||||||
+Query 456 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaagcggttatggtgtgggagtgaaca 524
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 525 atatcatactgttag-ctgatt-taaacgatgcatcaaaaggatatttggtgaatgatgccattatcttt 592
+
+Sbjct 557 tgaaactgaaatggttaaggtctctgtgaac-aacatantctccncttaaatatatntcactacttcttt 625
+ ||| |||||||||||||||||||| | ||| ||||| ||||| ||||||||| | |||| ||| | |
+Query 593 -gaagctgaaatggttaaggtctctat-aaccaacatcgtctccgcttaaatatctg-cacttctt-tgt 658
+
+Sbjct 626 atcccc-cgnaat-aaccttacaaagaaaaattgatgatttaat 667
+ | | | ||| ||||||| || ||| | ||| |||| ||
+Query 659 ctacgatc--aatcaaccttatgaataaaga--gat-atttgat 697
+
+639 3 14 F 631 6 14 1063 69 89.13
+Sbjct 14 cgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaaggg 83
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||||| ||||||
+Query 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgcgaangaaggg 83
+
+Sbjct 84 tacnttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagag 152
+ ||| ||||| | ||| ||||||| |||||||| |||||||| || || ||||||||||| || |
+Query 84 taccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgacagaaanacnnnan 153
+
+Sbjct 153 aaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgtttctctaccttgg 222
+ | |||| |||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 154 anagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgtttctctaccttgg 223
+
+Sbjct 223 aagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaa 292
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 224 aagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaa 293
+
+Sbjct 293 aggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgca 362
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 294 aggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgca 363
+
+Sbjct 363 gttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 432
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 364 gttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+
+Sbjct 433 tatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaatatcatattgatgt 502
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||| ||||||||||
+Query 434 tatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaatataatattgatgt 502
+
+Sbjct 503 cagaagctaaaagatgcatcnaaa-gggtatatggtgaatgatgccattatcttttgaaactgaaatggt 571
+ |||| ||||||||||||||| ||| |||||||||||||||||||||||||||||| ||| ||||||||||
+Query 503 caga-gctaaaagatgcatccaaaagggtatatggtgaatgatgccattatcttt-gaagctgaaatggt 570
+
+Sbjct 572 taaggtctctgtgaacaa-catantctccncttaaatatatntcactacttctttatcccccgnaataac 640
+ |||||||||||||| ||| |||| ||||| |||||||| |||||||||||| || | || |||
+Query 571 taaggtctctgtga-caaacatagtctccgtttaaatat----cactacttctttttcaac---aacaac 632
+
+Sbjct 641 cttacaaagaaa 652
+ ||||| || |||
+Query 633 cttacgaataaa 644
+
+655 3 0 F 650 16 156 1047 86 86.82
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctct-tccaacattctac 68
+ ||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| || ||||||||||
+Query 156 gtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc-aacattctac 224
+
+Sbjct 69 aacgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccga 138
+ |||||||||||||| ||| ||| |||||||| | ||||||||||||||||||||| || ||||| |||
+Query 225 aacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccgg 294
+
+Sbjct 139 cagaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcg 208
+ | || ||||||||||||| |||||||||||||||||||| |||||||||||||||||||||||||||||
+Query 295 ctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcg 364
+
+Sbjct 209 tttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagatta 278
+ ||||||||||||||||||||||||||||||||| |||||| |||||||||||||||||||||||||| ||
+Query 365 tttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagacta 434
+
+Sbjct 279 ggatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcc 348
+ ||||||||||||||||| ||| ||||| |||||||||||||||||||||||||||| |||||||||||
+Query 435 ggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggcc 504
+
+Sbjct 349 ataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctc 418
+ |||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||||||| |
+Query 505 ataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-ta 573
+
+Sbjct 419 c-aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaaca 487
+ | ||||| | |||| |||||||||||||||||||||| |||| ||| || ||||||||||||||||||||
+Query 574 ctaaccatagacaaatatattctgcagcttggtaccc-gattggaaacggttatggtgtgggagtgaaca 642
+
+Sbjct 488 atatcatattgat-gtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttt 556
+ |||||||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 643 atatcatactgttag-ctgatt-taaacgatgcatccaaaggatatttggtgaatgatgccattatcttt 710
+
+Sbjct 557 tgaaactgaaatggttaaggtctctgtgaac-aacatantctccncttaaatatatntcactacttcttt 625
+ ||| |||||||||||||||||||| | ||| ||||| ||||| ||||||||| | | || ||| | |
+Query 711 -gaagctgaaatggttaaggtctctat-aaccaacatcgtctccgcttaaatatctg-cncttctt-tgt 776
+
+Sbjct 626 atcccccgnaat-aaccttacaaagaaaaa 654
+ | | ||| |||||| || |||||
+Query 777 ctac-nancaatccaccttatgaataaaaa 805
+
+653 3 0 F 643 39 72 1203 31 95.22
+Sbjct 0 gtgaagcgatacaacgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 69
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72 gtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctaca 141
+
+Sbjct 70 acgcgaacgaagggtacnttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 139
+ ||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 142 acgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgac 211
+
+Sbjct 140 agaaaaacaagagaaagtcacattcatatcaaaccctccgaacaatgttttcacttggaagatacttcgt 209
+ ||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||
+Query 212 agaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgt 281
+
+Sbjct 210 ttctctaccttggaagataaattctattactctgatgattttctcgttgaagaccgatactggagattag 279
+ |||||||||||||||||||||||||||||||||||||||||||| |||| |||||||||||||||| |||
+Query 282 ttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagactag 351
+
+Sbjct 280 gatttaacccgaaaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggcca 349
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||
+Query 352 gatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggcca 421
+
+Sbjct 350 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 422 taaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc 491
+
+Sbjct 420 aaccacaaacaattatattctgcagcttggtaccccgattcgaagcgattatggtgtgggagtgaacaat 489
+ ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||
+Query 492 aaccacaaacaattatattctgcagcttggtaccc-gattcgaagcgattatggtgtgggagtgaacaat 560
+
+Sbjct 490 atcatattgatgtcagaagctaaaagatgcatcnaaagggtatatggtgaatgatgccattatcttttga 559
+ || |||||||||||||| ||||||||||||||| ||||||||||||||||||||||||||||||||| ||
+Query 561 ataatattgatgtcaga-gctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt-ga 628
+
+Sbjct 560 aactgaaatggttaaggtctctgtgaacaa-catantctccncttaaatatatntcactacttctttatc 628
+ | |||||||||||||||||||||||| ||| |||| ||||| |||||||| |||||||||||| ||
+Query 629 agctgaaatggttaaggtctctgtga-caaacatagtctccgtttaaatat----cactacttctttttc 693
+
+Sbjct 629 ccccgnaataaccttacaaagaaa 652
+ | || |||||||| || |||
+Query 694 aac---aacaaccttacgaataaa 714
+
+613 4 16 F 571 47 0 1022 54 90.88
+Sbjct 16 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgctgagctcatca 85
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacaaatggagtctaggtttcacattacttgctttcctcttcatcacttcctcttccgctgagctcatca 69
+
+Sbjct 86 ttaaacaggtcacacagggcagaggaatagagtacaacaactcttacagtctcacgtcgaatcttggagt 155
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 70 ttaaacaggtcacacagggcagaggaatagagtacaacaactcttacagtctcacgtcgaatcttggagt 139
+
+Sbjct 156 gacgacaagagagttgagagacgagcgaccatcaagtaagatagtgacaatcacaagcttctctgtgatt 225
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 140 gacgacaagagagttgagagacgagcgaccatcaagtaagatagtgacaatcacaagcttctctgtgatt 209
+
+Sbjct 226 aaggacagaggagaaccctatgaatcatctatttttgaggctgccggttacaaatggagattagttttgt 295
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||
+Query 210 aaggacagaggagaaccctatgaatcatctatttttgaggctgccggttacaaatggagattanttttgt 279
+
+Sbjct 296 acgtgaagggtaatccgaaaggcggtataaataatcatatttcactttacgcgaggatagaagagacaga 365
+ ||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||
+Query 280 acgtgaagggtaatccgaaaggcggtatanataatcatatttcactttacgcgaggatagaagagacaga 349
+
+Sbjct 366 aactcttccaagagggtgggaagtgaatgttgatctcaaactctttgtccacaatcggaanttaaagaaa 435
+ ||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||| | ||||||
+Query 350 aactcttccaagaaggtgggaagtgaatgttgatctcaaactctttgtccacaatcggaagtnaaagaa- 419
+
+Sbjct 436 tatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtggggattcncacaat 505
+ |||| |||||||||||||||| || |||| |||| || | |||| |||||||| ||||||| | |||| |
+Query 420 tatt-gtctgttacagatgga-ca-tgaancgatcca-cnatgcnaaaaaaga-tggggat-c-caca-t 480
+
+Sbjct 506 tgatttctcttccaacattctacaacgcgaacgaagggttccttgtgccaggacacancttcctttgggt 575
+ ||||| |||| ||| ||| || || | |||| ||||| | | || | | || || || || | ||||| |
+Query 481 tgatt-ctct-cca-cat-ct-ca-c-cgaa-gaagg-tac-tt-t-c-ag-ac-ca-ct-c-tttgg-t 531
+
+Sbjct 576 gctganaacttcatcgttaacccgaccgaaaaaccagaaaaaatccctttctt 628
+ ||||| | || | || ||| || ||| |||| | ||||| ||| || |||
+Query 532 gctgana-ct-c-tcntta-cc-gac-gaaa--c-agaaa---tcc-tt-ctt 570
+
+704 5 52 F 700 6 14 1056 116 83.48
+Sbjct 52 cgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaaggg 121
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||||| ||||||
+Query 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgcgaangaaggg 83
+
+Sbjct 122 taccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagag 190
+ ||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||||||| || |
+Query 84 taccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgacagaaanacnnnan 153
+
+Sbjct 191 aaagtcacattcatatcaaaccctcc-agacaatgttttcacttggaagatacttcgtttctctaccttg 259
+ | |||| |||||||||| ||||||| | |||||||||||||||||||||||||||||||||||||||||
+Query 154 anagtcncattcatatcnnaccctccna-acaatgttttcacttggaagatacttcgtttctctaccttg 222
+
+Sbjct 260 gaagataaattctattactccgatgattttctcgttgaagaccgatactggagactaggatttaacccga 329
+ |||||||||||||||||||| ||||||||||||||||||||||||||||||||| |||||||||||||||
+Query 223 gaagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggatttaacccga 292
+
+Sbjct 330 aaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgc 399
+ |||| ||| ||||| |||||||||||||||||||||||||||| ||||||||||||||||||||||||
+Query 293 aaggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgc 362
+
+Sbjct 400 agttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag-tactaaccatagaca 468
+ ||||| |||||||||||||||||||||||||||||||||||||||||||||||| | | ||||| | |||
+Query 363 agttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc-aaccacaaaca 431
+
+Sbjct 469 aatatattctgcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgtta 538
+ | |||||||||||||||||||||||||| |||||| |||||||||||||||||||||||| ||| || |
+Query 432 attatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataatattgat- 501
+
+Sbjct 539 g-ctgatttaaacgatgcatc-aaaaggatatttggtgaatgatgccattatctttgaagctgaaatggt 606
+ | | || |||| |||||||| |||||| ||| |||||||||||||||||||||||||||||||||||||
+Query 502 gtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaagctgaaatggt 570
+
+Sbjct 607 taaggtctctataaccaacatcgtctccgcttaaatatctgc-acttctttgtctacgatcaatcaacct 675
+ |||||||||| | || ||||| ||||||| ||||||||| | |||||||| || || | ||| | | |
+Query 571 taaggtctctgtgacaaacatagtctccgtttaaatatca-ctacttctttttcaacaa-caa-c--c-t 634
+
+Sbjct 676 tatgaataaagagata-tttgatgagtttgtaataagaaa-acgttaatgtt-t-g-tgaattgtgaagt 740
+ || |||||||| | | |||||||||||| ||| | | ||| || ||| | | || |||||| ||
+Query 635 tacgaataaagtgg-actttgatgagttt--aatttgttatacgacaacgttgttgatg-cttgtgatgt 700
+
+Sbjct 741 tattacttctgtt-ct 755
+ || | | |||| ||
+Query 701 aat--cgt-tgtttct 713
+
+742 5 0 F 746 16 118 1323 55 92.61
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtg 69
+ ||||| || | ||||||||| ||||||||||||| |||||||||||| ||| |||| |||||||| ||
+Query 118 ggaagctacacaaatatttgactgttacagatggcttagtgaagcgatataacaatgcgaaaaaagaatg 187
+
+Sbjct 70 gggattcacacaattgatttctct-tccaacattctacaacgcgaacgaagggtaccttgtgcaggacac 138
+ ||| ||| |||||||||| ||| || |||||||||||||||||||||||| ||||||| ||||||||
+Query 188 gggtttcggacaattgattcctcgatc-aacattctacaacgcgaacgaaggttaccttgaccaggacac 256
+
+Sbjct 139 agcttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatca 208
+ | ||||||||||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||||||
+Query 257 tggttcttttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcatatca 326
+
+Sbjct 209 aaccctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattact 278
+ ||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 327 aaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattact 396
+
+Sbjct 279 ccgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaag 348
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 397 ccgatgatnttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaag 466
+
+Sbjct 349 accacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgg 418
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 467 accacatgcacttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttgg 536
+
+Sbjct 419 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggt 488
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 537 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattctgcagcttggt 606
+
+Sbjct 489 acccgattggaagcggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatc 558
+ |||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 607 acccgattggaaacggttatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatc 676
+
+Sbjct 559 aaaaggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatc 628
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 677 caaaggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacatc 746
+
+Sbjct 629 gtctccgcttaaatatctgcacttctttgtctacgatcaatcaaccttatgaataaagagatatttgat- 698
+ |||||||||||||||||||| ||||||||||||| | ||||| |||||||||||||| | || ||| ||
+Query 747 gtctccgcttaaatatctgcncttctttgtctacnancaatccaccttatgaataaaaaaat-tttaatt 815
+
+Sbjct 699 -ga-g--tttgtaataagaaaacgttaatgtttgtgaattgtgaagtt 741
+ || | ||||| |||| ||||| ||||||||||| || |||||| ||
+Query 816 tgatgaatttgttataanaaaactttaatgtttgttaaatgtgaaatt 863
+
+756 5 0 F 750 39 34 1275 77 89.77
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaaaaaaagagtg 69
+ ||||| || | ||||||||| ||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 34 ggaagctacacaaatatttgactgttacagatggaacagtgaagcgatacaacgatgcnaaaaaagagtg 103
+
+Sbjct 70 gggattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacaca 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 104 gggattcacacaattgatttctcttccaacattctacaacgcgaacgaagggtaccttgtgcaggacaca 173
+
+Sbjct 140 gcttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaa 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 174 gcttcttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcatatcaa 243
+
+Sbjct 210 accctccagacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactc 279
+ |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 244 accctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactc 313
+
+Sbjct 280 cgatgattttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaaga 349
+ ||||||||||| |||| |||||||||||||||||||||||||||||||||||| ||| |||||||||
+Query 314 tgatgattttctngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaaga 383
+
+Sbjct 350 ccacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggg 419
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||| ||||||||||||||
+Query 384 ccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggg 453
+
+Sbjct 420 gagcggttaatctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggt 488
+ |||||||||||||||||||||||||||||||||| | | ||||| | |||| ||||||||||||||||||
+Query 454 gagcggttaatctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggt 522
+
+Sbjct 489 acccgattggaagcggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcat 557
+ |||||||| |||||| |||||||||||||||||||||||| ||| || | | | || |||| |||||||
+Query 523 acccgattcgaagcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcat 591
+
+Sbjct 558 caaaaggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaacat 627
+ ||||||| ||| ||||||||||||||||||||||||||||||||||||||||||||||| | || |||||
+Query 592 caaaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaacat 661
+
+Sbjct 628 cgtctccgcttaaatatctgc-acttctttgtctacgatcaatcaaccttatgaataaagagata-tttg 695
+ ||||||| ||||||||| | |||||||| || || | ||| | | ||| |||||||| | | ||||
+Query 662 agtctccgtttaaatatca-ctacttctttttcaacaa-caa-c--c-ttacgaataaagtgg-actttg 724
+
+Sbjct 696 atgagtttgtaataagaaa-acgttaatgtt-t-g-tgaattgtgaagttattacttctgtt-ct 755
+ |||||||| ||| | | ||| || ||| | | || |||||| || || | | |||| ||
+Query 725 atgagttt--aatttgttatacgacaacgttgttgatg-cttgtgatgtnat--cgt-tgtttct 783
+
+599 6 104 F 601 16 260 915 95 84.17
+Sbjct 104 ttctttnggtgctganatcttcatgcgntancccgacagaa-anacnnnananagtcncattcatatcnn 172
+ |||||| |||||||| ||||| || | || ||| | || | || | | ||| ||||||||||
+Query 260 ttcttttggtgctgagatctttatt-gttaaaccggctcaaca-acaagagaaagttacattcatatcaa 327
+
+Sbjct 173 accctccnaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactc 242
+ ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 328 accctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagataaattctattactc 397
+
+Sbjct 243 tgatgattttctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggaga 312
+ |||||| |||||||||||||||||||||||||| ||||||||||||||||||| ||| ||||| |||
+Query 398 cgatgatnttctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaaga 467
+
+Sbjct 313 ccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggg 382
+ ||||||||||||||||||||||||| ||||||||||||||||||||| ||||||| ||||||||||||||
+Query 468 ccacatgcacttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttggg 537
+
+Sbjct 383 gagcggttaatctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattctgcagcttggt 451
+ |||||||||||||||||||||||||||||||||| | | ||||| | |||| ||||||||||||||||||
+Query 538 gagcggttaatctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattctgcagcttggt 606
+
+Sbjct 452 acccgattcgaagcgattatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcat 520
+ |||||||| ||| || |||||||||||||||||||||||| ||| || | | | || |||| |||||||
+Query 607 acccgattggaaacggttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcat 675
+
+Sbjct 521 ccaaaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgacaaaca 590
+ ||||| || ||| ||||||||||||||||||||||||||||||||||||||||||||||| | || ||||
+Query 676 ccaaa-ggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaaca 744
+
+Sbjct 591 tagtctccgtttaaatatca-ctacttctttttcaacaa-caa-cc---ttacgaataaagtggactttg 654
+ | ||||||| ||||||||| | ||||||| || || | ||| || ||| ||||||| | |||
+Query 745 tcgtctccgcttaaatatctgcn-cttctttgtctacnancaatccaccttatgaataaaaaa-atttta 812
+
+Sbjct 655 atgagtttaatttgttatacgacaacgttgttgatgcttgtga--tgt-aa 702
+ || | | ||||||||||| | ||| || | ||| |||| | ||| ||
+Query 813 atttgatgaatttgttataanaaaac-tt-t-aatgtttgttaaatgtgaa 860
+
+783 6 14 F 788 39 86 1400 57 92.74
+Sbjct 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgcgaangaaggg 83
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||||| ||||||
+Query 86 cgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaaggg 155
+
+Sbjct 84 taccttgtgnangacnnnncttctttnggtgctganatcttcatgcgntancccgacagaaanacnnnan 153
+ ||||||||| | ||| ||||||| |||||||| |||||||| || || ||||||||||| || |
+Query 156 taccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgttaacccgacagaaaaacaagag 224
+
+Sbjct 154 anagtcncattcatatcnnaccctccnaacaatgttttcacttggaagatacttcgtttctctaccttgg 223
+ | |||| |||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 225 aaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttgg 294
+
+Sbjct 224 aagataaattctattactctgatgattttctcgttgaagaccgatactggagattaggatttaacccgaa 293
+ ||||||||||||||||||||||||||||||| |||| |||||||||||||||| ||||||||||||||||
+Query 295 aagataaattctattactctgatgattttctngttggagaccgatactggagactaggatttaacccgaa 364
+
+Sbjct 294 aggatctggtggagggagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgca 363
+ ||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 365 aggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgca 434
+
+Sbjct 364 gttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 435 gttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 504
+
+Sbjct 434 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtc 503
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 505 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataatattgatgtc 574
+
+Sbjct 504 agagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaa 573
+ |||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 575 agagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatctttgaagctgaaatggttaa 643
+
+Sbjct 574 ggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaacaaccttacgaataa 643
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 644 ggtctctgtgacaaacatagtctccgtttaaatatcactacttctttttcaacaacaaccttacgaataa 713
+
+Sbjct 644 agtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgtaatcgttgtttct 713
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||
+Query 714 agtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgtgatgtnatcgttgtttct 783
+
+Sbjct 714 gctctccgagttttcgttttactttttttttcatgttttgctatc-aatgaaa-taaa-ggtataaaact 780
+ ||||||||||||||||||||||||||||||||||||||||||||| ||||||| |||| ||| |||||||
+Query 784 gctctccgagttttcgttttactttttttttcatgttttgctatccaatgaaaataaaaggtttaaaact 853
+
+Sbjct 781 ctc-tt-ggtttt-aaa-gt 796
+ ||| || |||||| ||| ||
+Query 854 ctcctttggtttttaaaagt 873
+
+767 16 84 F 766 39 0 1248 95 87.61
+Sbjct 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggct 153
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgttacagatggaa 69
+
+Sbjct 154 tagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattgattcctcgatc-aacattct 222
+ |||||||||||| ||| |||| |||||||| ||||| ||| |||||||||| ||| || ||||||||
+Query 70 cagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattgatttctct-tccaacattct 138
+
+Sbjct 223 acaacgcgaacgaaggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaacc 292
+ |||||||||||||||| ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||
+Query 139 acaacgcgaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaaccc 208
+
+Sbjct 293 ggctcaacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 362
+ | | || ||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 gacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaagatactt 278
+
+Sbjct 363 cgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaagaccgatactggagac 432
+ ||||||||||||||||||||||||||||||||||| |||||| |||| |||| |||||||||||||||||
+Query 279 cgtttctctaccttggaagataaattctattactctgatgattttctngttggagaccgatactggagac 348
+
+Sbjct 433 taggatttaacccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 502
+ ||||||||||||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 349 taggatttaacccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 503 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaatcaacgaag- 572
+ |||||||||||| ||||||| ||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaatcaacgaagc 488
+
+Sbjct 573 tactaaccatagacaaatatattctgcagcttggtacccgattggaaacggttatggtgtgggagtgaac 641
+ | | ||||| | |||| |||||||||||||||||||||||||| ||| || |||||||||||||||||||
+Query 489 tcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaac 557
+
+Sbjct 642 aatatcatactgttag-ctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatcttt 710
+ ||||| ||| || | | | || |||| |||||||| ||||| ||| |||||||||||||||||||||||
+Query 558 aatataatattgat-gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatcttt 626
+
+Sbjct 711 gaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcn-cttctttgtcta 779
+ |||||||||||||||||||||||| | || ||||| ||||||| ||||||||| | ||||||| || |
+Query 627 gaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatca-ctacttctttttcaa 695
+
+Sbjct 780 cnancaatccaccttatgaataaaaaa-attttaatttgatgaatttgttataanaaaac-tt-t-aatg 845
+ | | ||| || ||| ||||||| | ||| || | | ||||||||||| | ||| || | |||
+Query 696 caa-caa-cc---ttacgaataaagtggactttgatgagtttaatttgttatacgacaacgttgttgatg 760
+
+Sbjct 846 tttgt 850
+ ||||
+Query 761 cttgt 765
+
+517 64 0 F 517 65 0 1034 0 100.00
+Sbjct 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 cacgaaagtcttacgcgtctccttgaagatgcgaaatctattattgagaaatattggaaactcagatgga 69
+
+Sbjct 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 70 gcagacacgtttgcaggaagtacaggtacatcaaaaaactcgaatcgatagaacttgaattagtaagggt 139
+
+Sbjct 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 140 agcacgtgagatacaagtccaccaatggaccgatatcaaagaaatgaaggcgatacaagtccaccaatgg 209
+
+Sbjct 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 210 accgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaagaaatgaaggcgatac 279
+
+Sbjct 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 280 aagtcgaccaatggatcgatatcaaagaaatgaaggcgatacaagtcgaccaatggaccgatatcaaaga 349
+
+Sbjct 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 350 aatgaaggccagatatctgaaaagcataataaatgaatcaatatctaaaatctggtgtttttctctcttt 419
+
+Sbjct 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 420 cttcttccccacaatgattgaaaaactcttcttgttatgaataaagatggatgcccatttataagggcca 489
+
+Sbjct 490 tcatctaagcccatcatctagattttt 516
+ |||||||||||||||||||||||||||
+Query 490 tcatctaagcccatcatctagattttt 516
+
+542 78 223 F 540 1488 8 995 29 94.64
+Sbjct 223 cctat-cttatatgtttata-gtttatacaagtg-ttttta-tgtttgttggatttgaagcgaagcttaa 288
+ ||| | |||| ||| ||||| |||| | | || | ||||| ||| || |||||||| ||| ||||||
+Query 8 cctttccttaaatg-ttataggttt-tcc-ag-gnnttttanggttggtgggatttgacgcg-agcttac 72
+
+Sbjct 289 ccatc-ttatggtgac-ttagatctatttagaacc-tttagttggtggcttttctccggatcgtcatgtt 355
+ ||||| |||||||| | || || |||||||| ||| ||||| |||||||||| ||||||||| |||||||
+Query 73 ccatctttatggtg-ctttgga-ctatttag-accntttag-tggtggctttcctccggatcntcatgtt 138
+
+Sbjct 356 gggtatacggattactgaaatttcaaggatagtttgcaaataaaattgaagaaaagaaagaaatttcctt 425
+ |||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 139 gggtatccggattactgaaatttcaaggatagtttgcaaataaaattgaagaaaagaaagaaatttcctt 208
+
+Sbjct 426 cgcgattttaagatgccttttagccgtgatttcaattgttcggagttttgattcgttttgcaaccagctt 495
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 209 cgcgattttaagatgccttttagccgtgatttcaattgttcggagttttgattcgttttgcaaccagctt 278
+
+Sbjct 496 tgtcggtgaaaatcagaagaatcaatagtcgaatttcagttatcggcaatgattttcttcaccagaatca 565
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 279 tgtcggtgaaaatcagaagaatcaatagtcgaatttcagttatcggcaatgattttcttcaccagaatca 348
+
+Sbjct 566 gcatcttagatggcggtggtgatgtcggaaagcttttagaattttcatccaacacgtgtaccactgttga 635
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 349 gcatcttagatggcggtggtgatgtcggaaagcttttagaattttcatccaacacgtgtaccactgttga 418
+
+Sbjct 636 cacgtttgtttgggaatgaaactaatgataaactttcttcaagttgaagcaatatattgtgtgggccttt 705
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 419 cacgtttgtttgggaatgaaactaatgataaactttcttcaagttgaagcaatatattgtgtgggccttt 488
+
+Sbjct 706 atgggctgtaatctgttttgtaacccatgttgttatgaataaaatcctaatcttgcgag 764
+ |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 489 atgggctgtaatctgttttgtaacccatgttgttatgaataaaatcctaatcttgcgag 547
+
+568 79 56 F 568 1495 0 1022 38 93.31
+Sbjct 56 ttggccggatttggtttgtatccaacgttgttttgtttttctttcaataatctcatagatcttatg-ttg 124
+ || ||||| |||||||||| |||||||||||| | ||| ||| | |||| | ||| | ||| || |||
+Query 0 tt-gccgg-tttggtttgtncccaacgttgtttggntttcctt-cnataaccccatggnccttntggttg 66
+
+Sbjct 125 gtgataatggtttaggtgatttttcgc-ttaaagatcttt-attatccaattcgatcttttgagtttgag 192
+ | |||||||||||| | |||||||| ||||||| |||| |||| ||||||||| |||| |||||| |
+Query 67 gnn-taatggtttaggngttttttcgcattaaaga-cttttattanccaattcgacctttnnagtttggg 134
+
+Sbjct 193 -atttgcaggaat-caatttag-agatttgcatc-ttaagttgaagaaaagaagaagttttcgttgcata 258
+ |||||| || || |||||| | ||||| ||||| |||||||||||||| ||||||||||||||||||||
+Query 135 gatttgcngggattcaattttggagatt-gcatcnttaagttgaagaaa-gaagaagttttcgttgcata 202
+
+Sbjct 259 ttaatattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaa 328
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 203 ttaatattgcccttagctgctaagtttttatctggaagttcgattggtttgtttaaggtgaaacccagaa 272
+
+Sbjct 329 gaatcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaaga 398
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 273 gaatcaaacttgctttcattatcaatgttgatttttctcaccggaatcaatctcagacggcaaaggaaga 342
+
+Sbjct 399 tgtcggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagat 468
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 343 tgtcggaaatgcttttagattactcatccaaacgtgtgctgtgttgttttcagctgttgacacgtaagat 412
+
+Sbjct 469 tggttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgt 538
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 413 tggttggagccacaatatcagttcttcatctttaagcaatgttcttggactcatttaggacttcaaatgt 482
+
+Sbjct 539 tcttgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataaga 608
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 483 tcttgtaatctcagtgtatgttgggcttttggttttttagcccatgtatggttggttaacgttaataaga 552
+
+Sbjct 609 ttttccacttatgag 623
+ |||||||||||||||
+Query 553 ttttccacttatgag 567
+
+540 474 0 F 522 658 80 975 29 94.54
+Sbjct 0 tgaaggttgcccccaatcggaagagaagttgngcnctttcttcctccctgccnttagtgccgttgaattg 69
+ || |||||||||| | ||||||||||| ||| | ||| |||||||| | | |||||| ||| || |||
+Query 80 tg-aggttgcccc-a-tcggaagagaanttgaactctt-cttcctcc-tnnc-ttagtgacgt-ga-ttg 141
+
+Sbjct 70 gctaaggaagttg-cttccttctccgcaacaagtggatcccttgtgttgaattcgagttggagcaccgga 138
+ ||||||||||| | || ||||||||||| || |||||| ||| ||||||| ||||||||||||||| |||
+Query 142 gctaaggaagt-gact-ccttctccgca-ca-gtggattcct-gtgttga-ttcgagttggagcac-gga 204
+
+Sbjct 139 ttngtgtaccgtgagcacggaaccactcccggatactatgatggacggtactggacaatgtggaagcttc 208
+ || |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||| |||||
+Query 205 tttgtgtaccgtgagcacggaac-actcccggatactatgatggacggtactggacaatgtgga-gcttc 272
+
+Sbjct 209 cattggttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtaccctg 278
+ ||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||
+Query 273 cattg-ttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaaggagtacc-tg 340
+
+Sbjct 279 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 348
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 341 gcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttcattgcctacaa 410
+
+Sbjct 349 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 418
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 411 gcccccaagcttcaccgaagcttaatcccctttctggaatattcagcgttgattattctggaacccattt 480
+
+Sbjct 419 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtg 488
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 481 ctatgtggtcaatgcaaatttaagaaattatttgccgacttaaaagttgaggaactattgtttgaaagtg 550
+
+Sbjct 489 aaaatgttattcctatcagtttctctataattatagttatcatttcatttc 539
+ |||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 551 aaaatgttattcctatcagtttctctataattatagttatcatttcatttc 601
+
+510 736 0 F 525 846 91 915 40 92.27
+Sbjct 0 ca-cac-ggg-a-attncct-catg-a-g-gt-gcc-ccaatgg-a-agaagatttg-g-ct-tttcttn 54
+ || ||| ||| | | | || |||| | | || ||| ||| ||| | ||||| | || | || | ||||
+Query 91 cagcacggggaagagtngctncatgaaggtgtngccaccattggaagagaag-tntgagactctatctta 159
+
+Sbjct 55 cc-ncctgccttagtg-cgtcgaatggctaaggaagttgactnc-ttctccgcaacaagtggat-ccntt 120
+ || |||| ||||||| |||||| |||| |||||||||||| | ||| ||||| || |||||| || |
+Query 160 cctccctgacttagtgacgtcgattggc-naggaagttgactaccttcaccgcanca-gtggattccct- 227
+
+Sbjct 121 gtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaaacactcccggatactacgatgg 190
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 228 gtgttgaattcgagttagagcacggatttgtgtaccgtgagcacggaaacactcccggatactacgatgg 296
+
+Sbjct 191 acggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagtt 260
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 297 acggtactggacaatgtggaagcttccattgttcggatgcaccgactccgctcaagtgttgaaggaagtt 366
+
+Sbjct 261 gaagaatgcaagaaggagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtcc 330
+ ||||||||||||||||| ||||||||||| ||||||||||||||||||||||||||||||||||||||||
+Query 367 gaagaatgcaagaaggantacccgggcgcnttcattaggatcatcggattcgacaacacccgtcaagtcc 436
+
+Sbjct 331 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattct 400
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 437 aatgcatcagtttcattgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattct 506
+
+Sbjct 401 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctat 470
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 507 tatgaattatctctgctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctat 576
+
+Sbjct 471 cggattgtcaaatgtctgatttatgaatatgtaatttat 509
+ |||||||||||||||||||||||||||||||||||||||
+Query 577 cggattgtcaaatgtctgatttatgaatatgtaatttat 615
+
+503 846 115 F 511 1230 2 879 45 91.12
+Sbjct 115 gaaggtgtngccaccattgg-aag-agaagtntgagactctatcttacctccct-gac-ttagtgacgtc 180
+ |||| || || | ||||| ||| |||| | || | || | |||| || |||| | | ||||| | ||
+Query 2 gaagntgccccc-caattggaaagaagaantttgggcct-tttctt-ccnccctggcctttagtnccntc 68
+
+Sbjct 181 -g-attggc-naggaagttgactacc-ttcaccgcancag-tggattccct-gtgttgaattcgagttag 244
+ | |||||| |||||||||||| || ||| | ||| || ||| | |||| ||||||||||||||||||
+Query 69 ggaattggctaaggaagttgact-ccnttctcngcaacaaatggnt-cccttgtgttgaattcgagttag 136
+
+Sbjct 245 agcacggatttgtgtaccgtgagcacggaaacactcccggatactacgatggac-ggtactggacaat-g 312
+ || ||||||||||| |||||||| ||||||||||||||||||||||||||||| ||||||||||||| |
+Query 137 ggcncggatttgtgtcccgtgagcccggaaacactcccggatactacgatggaccggtactggacaattg 206
+
+Sbjct 313 tggaagcttcc-attgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaag 381
+ ||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 207 tggaagcttcccattgttcggatgcaccgactccgctcaagtgttgaaggaagttgaagaatgcaagaag 276
+
+Sbjct 382 gantacccgggcgcnttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 451
+ || ||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 277 gagtacccgggcgccttcattaggatcatcggattcgacaacacccgtcaagtccaatgcatcagtttca 346
+
+Sbjct 452 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctg 521
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 347 ttgcctacaagcccccaagcttcaccgaagcttaatttcttttctaaaacattcttatgaattatctctg 416
+
+Sbjct 522 ctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 591
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 417 ctcatttcatttcctattgtctgtgttctttttctctttatgagacaatttctatcggattgtcaaatgt 486
+
+Sbjct 592 ctgatttatgaatatgtaatttatat 617
+ ||||||||||||||||||||||||||
+Query 487 ctgatttatgaatatgtaatttatat 512
+
+557 866 17 F 561 1212 0 884 78 86.05
+Sbjct 17 cgtttcttgtgacaactcccatcc-gacgtcaagaatgctaggatctgngatccgttccccatcaaccac 85
+ || |||||||| | || ||| || | | || || || ||||| | || | ||| |||| || |||||
+Query 0 cg-ttcttgtg-c-acntccaaccggccttc-ag-atcctagg-tntg-ggnccg-tcccnttc-accac 60
+
+Sbjct 86 c-atgagc--tactcagcctt-ggaacnc-gatgattggccc-cgagaggc-gtttagagagncc-atgg 147
+ | ||| || | |||| |||| || || | | || ||||||| || | ||| |||||| ||| || ||||
+Query 61 cnatgngctttnctcacccttngg-acncggttg-ttggcccncg-ggggcggtttagggagcccaatgg 127
+
+Sbjct 148 ncc-atgcncctttcgttgcatc-tacaa-ngatnccacatagatgntnccca-gc-tctgtggaagccc 212
+ || |||| ||||||| |||||| | ||| | | || |||||||| | ||| || ||||||||| ||
+Query 128 nccaatgc-cctttcggtgcatcttncaagggntcccncatagatggttnccangcttctgtggaancca 196
+
+Sbjct 213 agtactgt-cccacacaagcccgcatgtggtggaatcagaa-gantnccgtgacccttgacgctgacca- 280
+ |||||||| |||||||||| ||||||||||||| ||||||| || | ||||| ||||||||||||| ||
+Query 197 agtactgtgcccacacaagnccgcatgtggtggnatcagaaagagttccgtg-cccttgacgctgaacaa 265
+
+Sbjct 281 tggcgtcgtctcaa-tgggtccgtatgaagtggnccatntacaactactntaccgaccggactaggttcc 348
+ |||||||||||||| ||||| |||||||||||| |||| |||||||||| ||||||||||||||||||||
+Query 266 tggcgtcgtctcaaatgggttcgtatgaagtggnccatctacaactactgtaccgaccggactaggttcc 335
+
+Sbjct 349 cgnttatgccagctgaatntaaaagggacagagacgcntaagttactac-cnttgagggttttaatgaat 417
+ || ||||||||||||||| |||||||||||||||||| ||||||||||| | ||| ||||||||||||||
+Query 336 cggttatgccagctgaatgtaaaagggacagagacgcataagttactactc-ttgngggttttaatgaat 404
+
+Sbjct 418 ttatgctatcattattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatg 487
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 405 ttatgctatcattattatttgaattatgcttgttcaagagattgatatatgtattgtttgttggcccatg 474
+
+Sbjct 488 atgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattagctatgtattt 557
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 475 atgtttatgctatatttgggcctaaaattacatgttataattcatatatgtattgattagctatgtattt 544
+
+Sbjct 558 tcatatgttatgatct 573
+ ||||||||||||||||
+Query 545 tcatatgttatgatct 560
+
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
diff --git a/testdata/see-ext-at1MB-500-alignment-seed_in_algn.matches b/testdata/see-ext-at1MB-500-alignment-seed_in_algn.matches
new file mode 100644
index 0000000..b69f9eb
--- /dev/null
+++ b/testdata/see-ext-at1MB-500-alignment-seed_in_algn.matches
@@ -0,0 +1,321 @@
+# Options: -ii at1MB -l 700 -outfmt alignment=60 seed_in_algn -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+706 2 0 F 749 16 84 1269 62 91.48
+Sbjct 0 gtgantgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+ |||| ++++++++++|||||||||||||||||||||||||||||||||||||||||||||
+Query 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 143
+
+Sbjct 60 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 144 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 203
+
+Sbjct 120 attcctcgatcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttct 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 204 attcctcgatcaacattctacaacgcgaacgaaggttaccttgaccaggacactggttct 263
+
+Sbjct 180 tttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcata 239
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 264 tttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcata 323
+
+Sbjct 240 tcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagat 299
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 324 tcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaagat 383
+
+Sbjct 300 aaattctattactccgatgattttctcgttgaagaccgatactggagactaggatttaac 359
+ ||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||
+Query 384 aaattctattactccgatgatnttctcgttgaagaccgatactggagactaggatttaac 443
+
+Sbjct 360 ccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 419
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 444 ccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaaggc 503
+
+Sbjct 420 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaat 479
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 504 cataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaat 563
+
+Sbjct 480 caacgaanttctaaccatagacaa-tatnt-ctgca-cttggtaccc-attggaaacg-t 534
+ ||||||| | |||||||||||||| ||| | ||||| |||||||||| |||||||||| |
+Query 564 caacgaagtactaaccatagacaaatatattctgcagcttggtacccgattggaaacggt 623
+
+Sbjct 535 tatggtntgggant-aaca-tatc-tactgtt-gctgatt-aa-cga-gcatccaaagga 587
+ |||||| ||||| | |||| |||| ||||||| ||||||| || ||| ||||||||||||
+Query 624 tatggtgtgggagtgaacaatatcatactgttagctgatttaaacgatgcatccaaagga 683
+
+Sbjct 588 t-tttggtga-tga-gccnt-atctt-gaa-ctgaa-tggttaagn-c-ctata-cca-c 636
+ | |||||||| ||| ||| | ||||| ||| ||||| |||||||| | ||||| ||| |
+Query 684 tatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataaccaac 743
+
+Sbjct 637 -tc-tctcc-ctnaa-t-tct-c-cttcttn-tcn-cna-ca-tcn-cnttnat-aa-aa 682
+ || ||||| || || | ||| | |||||| || | | || || | || || || ||
+Query 744 atcgtctccgcttaaatatctgcncttctttgtctacnancaatccacctt-atgaataa 802
+
+Sbjct 683 aa---ttt-a-tt-gat-aattttttanaa 705
+ || ||| | || ||| ||||| ||| ||
+Query 803 aaaaattttaatttgatgaatttgttataa 832
+
+704 5 52 F 700 6 14 1056 116 83.48
+Sbjct 52 cgatgcaaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgc 111
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||
+Query 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgc 73
+
+Sbjct 112 gaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgtta 170
+ ||| ++++++++++||||| | ||| ||||||| |||||||| |||||||| || ||
+Query 74 gaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgnta 133
+
+Sbjct 171 acccgacagaaaaacaagagaaagtcacattcatatcaaaccctcc-agacaatgttttc 229
+ ||||||||||| || | | |||| |||||||||| ||||||| | |||||||||||
+Query 134 ncccgacagaaanacnnnananagtcncattcatatcnnaccctccna-acaatgttttc 192
+
+Sbjct 230 acttggaagatacttcgtttctctaccttggaagataaattctattactccgatgatttt 289
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 193 acttggaagatacttcgtttctctaccttggaagataaattctattactctgatgatttt 252
+
+Sbjct 290 ctcgttgaagaccgatactggagactaggatttaacccgaaaggggatggaggaggaaga 349
+ |||||||||||||||||||||||| ||||||||||||||||||| ||| ||||| |||
+Query 253 ctcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggaga 312
+
+Sbjct 350 ccacatgcacttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctaca 409
+ ||||||||||||||||||||||||| ||||||||||||||||||||||||||||| ||||
+Query 313 ccacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttaca 372
+
+Sbjct 410 aacacttggggagcggttaatctgcggttaaagaatcaacgaag-tactaaccatagaca 468
+ |||||||||||||||||||||||||||||||||||||||||||| | | ||||| | |||
+Query 373 aacacttggggagcggttaatctgcggttaaagaatcaacgaagctcc-aaccacaaaca 431
+
+Sbjct 469 aatatattctgcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatat 528
+ | |||||||||||||||||||||||||| |||||| ||||||||||||||||||||||||
+Query 432 attatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatat 491
+
+Sbjct 529 catactgttag-ctgatttaaacgatgcatc-aaaaggatatttggtgaatgatgccatt 586
+ ||| || | | | || |||| |||||||| |||||| ||| |||||||||||||||||
+Query 492 aatattgat-gtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccatt 550
+
+Sbjct 587 atctttgaagctgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatct 646
+ |||||||||||||||||||||||||||||| | || ||||| ||||||| |||||||||
+Query 551 atctttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatca 610
+
+Sbjct 647 gc-acttctttgtctacgatcaatcaaccttatgaataaagagata-tttgatgagtttg 704
+ | |||||||| || || | ||| | | ||| |||||||| | | ||||||||||||
+Query 611 -ctacttctttttcaacaa-caa-c--c-ttacgaataaagtgg-actttgatgagttt- 663
+
+Sbjct 705 taataagaaa-acgttaatgtt-t-g-tgaattgtgaagttattacttctgtt-ct 755
+ ||| | | ||| || ||| | | || |||||| || || | | |||| ||
+Query 664 -aatttgttatacgacaacgttgttgatg-cttgtgatgtaat--cgt-tgtttct 713
+
+742 5 0 F 746 16 118 1323 55 92.61
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaa 59
+ ||||| || | ||||||||| ++++++++++||| |||||||||||| ||| |||| |
+Query 118 ggaagctacacaaatatttgactgttacagatggcttagtgaagcgatataacaatgcga 177
+
+Sbjct 60 aaaaagagtggggattcacacaattgatttctct-tccaacattctacaacgcgaacgaa 118
+ ||||||| ||||| ||| |||||||||| ||| || ||||||||||||||||||||||
+Query 178 aaaaagaatggggtttcggacaattgattcctcgatc-aacattctacaacgcgaacgaa 236
+
+Sbjct 119 gggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgaca 178
+ || ||||||| |||||||| | ||||||||||||||||||||| || ||||| ||| |
+Query 237 ggttaccttgaccaggacactggttcttttggtgctgagatctttattgttaaaccggct 296
+
+Sbjct 179 gaaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttcacttggaag 238
+ || ||||||||||||| ||||||||||||||||||||| ||||||||||||||||||||
+Query 297 caacaacaagagaaagttacattcatatcaaaccctccaaacaatgttttcacttggaag 356
+
+Sbjct 239 atacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaa 298
+ |||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||
+Query 357 atacttcgtttctctaccttggaagataaattctattactccgatgatnttctcgttgaa 416
+
+Sbjct 299 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 358
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 417 gaccgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgca 476
+
+Sbjct 359 cttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttgg 418
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 477 cttccaatcttcctatttgctcaaggccataaggcaaatgcagttgctacaaacacttgg 536
+
+Sbjct 419 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattct 478
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 537 ggagcggttaatctgcggttaaagaatcaacgaagtactaaccatagacaaatatattct 596
+
+Sbjct 479 gcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgtta 538
+ |||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||
+Query 597 gcagcttggtacccgattggaaacggttatggtgtgggagtgaacaatatcatactgtta 656
+
+Sbjct 539 gctgatttaaacgatgcatcaaaaggatatttggtgaatgatgccattatctttgaagct 598
+ |||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||
+Query 657 gctgatttaaacgatgcatccaaaggatatttggtgaatgatgccattatctttgaagct 716
+
+Sbjct 599 gaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcacttctttgt 658
+ |||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||
+Query 717 gaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgcncttctttgt 776
+
+Sbjct 659 ctacgatcaatcaaccttatgaataaagagatatttgat--ga-g--tttgtaataagaa 713
+ |||| | ||||| |||||||||||||| | || ||| || || | ||||| |||| ||
+Query 777 ctacnancaatccaccttatgaataaaaaaat-tttaatttgatgaatttgttataanaa 835
+
+Sbjct 714 aacgttaatgtttgtgaattgtgaagtt 741
+ ||| ||||||||||| || |||||| ||
+Query 836 aactttaatgtttgttaaatgtgaaatt 863
+
+756 5 0 F 750 39 34 1275 77 89.77
+Sbjct 0 ggaagttaaagaaatatttgtctgttacagatggaacagtgaagcgatacaacgatgcaa 59
+ ||||| || | ||||||||| ++++++++++||||||||||||||||||||||||||| |
+Query 34 ggaagctacacaaatatttgactgttacagatggaacagtgaagcgatacaacgatgcna 93
+
+Sbjct 60 aaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaag 119
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 94 aaaaagagtggggattcacacaattgatttctcttccaacattctacaacgcgaacgaag 153
+
+Sbjct 120 ggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgacag 179
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 154 ggtaccttgtgcaggacacagcttcttttggtgctgagatcttcatcgttaacccgacag 213
+
+Sbjct 180 aaaaacaagagaaagtcacattcatatcaaaccctccagacaatgttttcacttggaaga 239
+ |||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||
+Query 214 aaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttcacttggaaga 273
+
+Sbjct 240 tacttcgtttctctaccttggaagataaattctattactccgatgattttctcgttgaag 299
+ |||||||||||||||||||||||||||||||||||||||| ||||||||||| |||| ||
+Query 274 tacttcgtttctctaccttggaagataaattctattactctgatgattttctngttggag 333
+
+Sbjct 300 accgatactggagactaggatttaacccgaaaggggatggaggaggaagaccacatgcac 359
+ |||||||||||||||||||||||||||||||||| ||| |||||||||||||||||||
+Query 334 accgatactggagactaggatttaacccgaaaggatctggtggaggaagaccacatgcac 393
+
+Sbjct 360 ttccaatcttcctatttgctcaaggccataaggcaaacgcagttgctacaaacacttggg 419
+ ||||||||||||||| ||||||||||||||||||||||||||||| ||||||||||||||
+Query 394 ttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaaacacttggg 453
+
+Sbjct 420 gagcggttaatctgcggttaaagaatcaacgaag-tactaaccatagacaaatatattct 478
+ |||||||||||||||||||||||||||||||||| | | ||||| | |||| ||||||||
+Query 454 gagcggttaatctgcggttaaagaatcaacgaagctcc-aaccacaaacaattatattct 512
+
+Sbjct 479 gcagcttggtacccgattggaagcggttatggtgtgggagtgaacaatatcatactgtta 538
+ |||||||||||||||||| |||||| |||||||||||||||||||||||| ||| || |
+Query 513 gcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataatattgat- 572
+
+Sbjct 539 g-ctgatttaaacgatgcatcaaaaggatatttggtgaatgatgccattatctttgaagc 597
+ | | || |||| |||||||||||||| ||| ||||||||||||||||||||||||||||
+Query 573 gtcagagctaaaagatgcatcaaaagggtatatggtgaatgatgccattatctttgaagc 631
+
+Sbjct 598 tgaaatggttaaggtctctataaccaacatcgtctccgcttaaatatctgc-acttcttt 656
+ ||||||||||||||||||| | || ||||| ||||||| ||||||||| | ||||||||
+Query 632 tgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatca-ctacttcttt 690
+
+Sbjct 657 gtctacgatcaatcaaccttatgaataaagagata-tttgatgagtttgtaataagaaa- 715
+ || || | ||| | | ||| |||||||| | | |||||||||||| ||| | |
+Query 691 ttcaacaa-caa-c--c-ttacgaataaagtgg-actttgatgagttt--aatttgttat 742
+
+Sbjct 716 acgttaatgtt-t-g-tgaattgtgaagttattacttctgtt-ct 755
+ ||| || ||| | | || |||||| || || | | |||| ||
+Query 743 acgacaacgttgttgatg-cttgtgatgtnat--cgt-tgtttct 783
+
+783 6 14 F 788 39 86 1400 57 92.74
+Sbjct 14 cgatgnnnaaaannantgnggattnncannatngatntctcttcnnnnattctnnnncgc 73
+ ||||| |||| | || ||||| || || ||| ||||||| ||||| |||
+Query 86 cgatgcnaaaaaagagtggggattcacacaattgatttctcttccaacattctacaacgc 145
+
+Sbjct 74 gaangaagggtaccttgtgnangacnnnncttctttnggtgctganatcttcatgcgnta 133
+ ||| ++++++++++||||| | ||| ||||||| |||||||| |||||||| || ||
+Query 146 gaacgaagggtaccttgtgcaggacacagcttcttttggtgctgagatcttcat-cgtta 204
+
+Sbjct 134 ncccgacagaaanacnnnananagtcncattcatatcnnaccctccnaacaatgttttca 193
+ ||||||||||| || | | |||| |||||||||| ||||||| |||||||||||||
+Query 205 acccgacagaaaaacaagagaaagtcacattcatatcaaaccctccaaacaatgttttca 264
+
+Sbjct 194 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 253
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 265 cttggaagatacttcgtttctctaccttggaagataaattctattactctgatgattttc 324
+
+Sbjct 254 tcgttgaagaccgatactggagattaggatttaacccgaaaggatctggtggagggagac 313
+ | |||| |||||||||||||||| ||||||||||||||||||||||||||||||| ||||
+Query 325 tngttggagaccgatactggagactaggatttaacccgaaaggatctggtggaggaagac 384
+
+Sbjct 314 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 373
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 385 cacatgcacttccaatcttcctatatgctcaaggccataaggcaaacgcagttgttacaa 444
+
+Sbjct 374 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 433
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 445 acacttggggagcggttaatctgcggttaaagaatcaacgaagctccaaccacaaacaat 504
+
+Sbjct 434 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataa 493
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 505 tatattctgcagcttggtacccgattcgaagcgattatggtgtgggagtgaacaatataa 564
+
+Sbjct 494 tattgatgtcagagctaaaagatgcatccaaaagggtatatggtgaatgatgccattatc 553
+ |||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||
+Query 565 tattgatgtcagagctaaaagatgcatc-aaaagggtatatggtgaatgatgccattatc 623
+
+Sbjct 554 tttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcacta 613
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 624 tttgaagctgaaatggttaaggtctctgtgacaaacatagtctccgtttaaatatcacta 683
+
+Sbjct 614 cttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaatttgttata 673
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 684 cttctttttcaacaacaaccttacgaataaagtggactttgatgagtttaatttgttata 743
+
+Sbjct 674 cgacaacgttgttgatgcttgtgatgtaatcgttgtttctgctctccgagttttcgtttt 733
+ ||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||
+Query 744 cgacaacgttgttgatgcttgtgatgtnatcgttgtttctgctctccgagttttcgtttt 803
+
+Sbjct 734 actttttttttcatgttttgctatc-aatgaaa-taaa-ggtataaaactctc-tt-ggt 788
+ ||||||||||||||||||||||||| ||||||| |||| ||| |||||||||| || |||
+Query 804 actttttttttcatgttttgctatccaatgaaaataaaaggtttaaaactctcctttggt 863
+
+Sbjct 789 ttt-aaa-gt 796
+ ||| ||| ||
+Query 864 ttttaaaagt 873
+
+767 16 84 F 766 39 0 1248 95 87.61
+Sbjct 84 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 143
+ ++++++++++||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 0 gtgaatgttgatctcaaactctttgtccataatgggaagctacacaaatatttgactgtt 59
+
+Sbjct 144 acagatggcttagtgaagcgatataacaatgcgaaaaaagaatggggtttcggacaattg 203
+ |||||||| |||||||||||| ||| |||| |||||||| ||||| ||| |||||||
+Query 60 acagatggaacagtgaagcgatacaacgatgcnaaaaaagagtggggattcacacaattg 119
+
+Sbjct 204 attcctcgatc-aacattctacaacgcgaacgaaggttaccttgaccaggacactggttc 262
+ ||| ||| || |||||||||||||||||||||||| ||||||| |||||||| | |||
+Query 120 atttctct-tccaacattctacaacgcgaacgaagggtaccttgtgcaggacacagcttc 178
+
+Sbjct 263 ttttggtgctgagatctttattgttaaaccggctcaacaacaagagaaagttacattcat 322
+ |||||||||||||||||| || ||||| ||| | || ||||||||||||| ||||||||
+Query 179 ttttggtgctgagatcttcatcgttaacccgacagaaaaacaagagaaagtcacattcat 238
+
+Sbjct 323 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 382
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 239 atcaaaccctccaaacaatgttttcacttggaagatacttcgtttctctaccttggaaga 298
+
+Sbjct 383 taaattctattactccgatgatnttctcgttgaagaccgatactggagactaggatttaa 442
+ ||||||||||||||| |||||| |||| |||| |||||||||||||||||||||||||||
+Query 299 taaattctattactctgatgattttctngttggagaccgatactggagactaggatttaa 358
+
+Sbjct 443 cccgaaaggggatggaggaggaagaccacatgcacttccaatcttcctatttgctcaagg 502
+ ||||||||| ||| |||||||||||||||||||||||||||||||||| |||||||||
+Query 359 cccgaaaggatctggtggaggaagaccacatgcacttccaatcttcctatatgctcaagg 418
+
+Sbjct 503 ccataaggcaaatgcagttgctacaaacacttggggagcggttaatctgcggttaaagaa 562
+ |||||||||||| ||||||| |||||||||||||||||||||||||||||||||||||||
+Query 419 ccataaggcaaacgcagttgttacaaacacttggggagcggttaatctgcggttaaagaa 478
+
+Sbjct 563 tcaacgaag-tactaaccatagacaaatatattctgcagcttggtacccgattggaaacg 621
+ ||||||||| | | ||||| | |||| |||||||||||||||||||||||||| ||| ||
+Query 479 tcaacgaagctcc-aaccacaaacaattatattctgcagcttggtacccgattcgaagcg 537
+
+Sbjct 622 gttatggtgtgggagtgaacaatatcatactgttag-ctgatttaaacgatgcatccaaa 680
+ |||||||||||||||||||||||| ||| || | | | || |||| |||||||| |||
+Query 538 attatggtgtgggagtgaacaatataatattgat-gtcagagctaaaagatgcatcaaaa 596
+
+Sbjct 681 ggatatttggtgaatgatgccattatctttgaagctgaaatggttaaggtctctataacc 740
+ || ||| ||||||||||||||||||||||||||||||||||||||||||||||| | ||
+Query 597 gggtatatggtgaatgatgccattatctttgaagctgaaatggttaaggtctctgtgaca 656
+
+Sbjct 741 aacatcgtctccgcttaaatatctgcn-cttctttgtctacnancaatccaccttatgaa 799
+ ||||| ||||||| ||||||||| | ||||||| || || | ||| || ||| |||
+Query 657 aacatagtctccgtttaaatatca-ctacttctttttcaacaa-caa-cc---ttacgaa 710
+
+Sbjct 800 taaaaaa-attttaatttgatgaatttgttataanaaaac-tt-t-aatgtttgt 850
+ |||| | ||| || | | ||||||||||| | ||| || | ||| ||||
+Query 711 taaagtggactttgatgagtttaatttgttatacgacaacgttgttgatgcttgt 765
+
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
diff --git a/testdata/see-ext-at1MB-500-failed_seed.matches b/testdata/see-ext-at1MB-500-failed_seed.matches
new file mode 100644
index 0000000..8330fef
--- /dev/null
+++ b/testdata/see-ext-at1MB-500-failed_seed.matches
@@ -0,0 +1,1477 @@
+# Options: -ii at1MB -outfmt seed failed_seed -l 600 -seedlength 20 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, seedlen, s. seedstart, q. seedstart
+# failed_seed: 20 1 383 F 2 5
+# failed_seed: 20 1 45 F 4 52
+# failed_seed: 20 1 294 F 16 0
+# failed_seed: 20 1 378 F 39 0
+# failed_seed: 20 1 45 F 47 36
+# failed_seed: 20 2 130 F 3 58
+626 2 34 F 656 5 0 1063 73 88.61 20 130 96
+# failed_seed: 20 2 252 F 6 181
+# failed_seed: 20 2 130 F 7 96
+706 2 0 F 749 16 84 1269 62 91.48 20 5 89
+660 2 0 F 687 39 0 1065 94 86.04 20 5 5
+# failed_seed: 20 3 0 F 4 460
+668 3 0 F 660 5 38 1139 63 90.51 20 0 38
+639 3 14 F 631 6 14 1063 69 89.13 20 180 181
+# failed_seed: 20 3 0 F 7 38
+655 3 0 F 650 16 156 1047 86 86.82 20 58 214
+653 3 0 F 643 39 72 1203 31 95.22 20 0 72
+# failed_seed: 20 4 427 F 5 5
+# failed_seed: 20 4 427 F 7 5
+# failed_seed: 20 4 382 F 16 78
+# failed_seed: 20 4 388 F 39 0
+# failed_seed: 20 4 16 F 47 0
+704 5 52 F 700 6 14 1056 116 83.48 20 219 182
+# failed_seed: 20 5 0 F 7 0
+742 5 0 F 746 16 118 1323 55 92.61 20 96 214
+756 5 0 F 750 39 34 1275 77 89.77 20 21 55
+599 6 104 F 601 16 260 915 95 84.17 20 181 336
+783 6 14 F 788 39 86 1400 57 92.74 20 181 252
+# failed_seed: 20 7 96 F 16 214
+# failed_seed: 20 7 295 F 33 21
+# failed_seed: 20 7 21 F 39 55
+# failed_seed: 20 7 309 F 73 36
+# failed_seed: 20 7 295 F 264 555
+# failed_seed: 20 11 162 F 29 163
+767 16 84 F 766 39 0 1248 95 87.61 20 84 0
+# failed_seed: 20 17 1 F 55 0
+# failed_seed: 20 18 243 F 40 207
+# failed_seed: 20 18 20 F 46 214
+# failed_seed: 20 18 243 F 747 120
+# failed_seed: 20 22 368 F 29 0
+# failed_seed: 20 24 164 F 43 1
+# failed_seed: 20 33 137 F 38 704
+# failed_seed: 20 33 35 F 73 36
+# failed_seed: 20 33 0 F 264 534
+# failed_seed: 20 34 264 F 1317 93
+# failed_seed: 20 35 0 F 42 0
+# failed_seed: 20 35 147 F 49 398
+# failed_seed: 20 35 0 F 54 46
+# failed_seed: 20 35 187 F 72 198
+# failed_seed: 20 35 184 F 73 109
+# failed_seed: 20 35 204 F 73 144
+# failed_seed: 20 35 0 F 146 261
+# failed_seed: 20 37 0 F 1823 0
+# failed_seed: 20 40 358 F 66 172
+# failed_seed: 20 40 188 F 747 101
+# failed_seed: 20 42 147 F 49 398
+# failed_seed: 20 42 0 F 54 46
+# failed_seed: 20 42 0 F 146 261
+# failed_seed: 20 54 44 F 146 259
+# failed_seed: 20 59 272 F 651 92
+# failed_seed: 20 61 154 F 61 196
+# failed_seed: 20 61 172 F 61 214
+# failed_seed: 20 61 177 F 61 219
+# failed_seed: 20 61 178 F 61 220
+# failed_seed: 20 61 157 F 61 241
+# failed_seed: 20 61 172 F 61 298
+# failed_seed: 20 61 188 F 64 149
+# failed_seed: 20 61 169 F 64 298
+# failed_seed: 20 61 359 F 64 361
+# failed_seed: 20 61 188 F 65 149
+# failed_seed: 20 61 169 F 65 298
+# failed_seed: 20 61 359 F 65 361
+# failed_seed: 20 62 324 F 555 21
+# failed_seed: 20 64 149 F 64 191
+# failed_seed: 20 64 172 F 64 214
+# failed_seed: 20 64 173 F 64 215
+# failed_seed: 20 64 174 F 64 216
+# failed_seed: 20 64 175 F 64 217
+# failed_seed: 20 64 176 F 64 218
+# failed_seed: 20 64 177 F 64 219
+# failed_seed: 20 64 178 F 64 220
+# failed_seed: 20 64 179 F 64 221
+# failed_seed: 20 64 180 F 64 222
+# failed_seed: 20 64 181 F 64 223
+# failed_seed: 20 64 160 F 64 244
+# failed_seed: 20 64 172 F 64 298
+# failed_seed: 20 64 0 F 65 0
+# failed_seed: 20 65 149 F 65 191
+# failed_seed: 20 65 172 F 65 214
+# failed_seed: 20 65 173 F 65 215
+# failed_seed: 20 65 174 F 65 216
+# failed_seed: 20 65 175 F 65 217
+# failed_seed: 20 65 176 F 65 218
+# failed_seed: 20 65 177 F 65 219
+# failed_seed: 20 65 178 F 65 220
+# failed_seed: 20 65 179 F 65 221
+# failed_seed: 20 65 180 F 65 222
+# failed_seed: 20 65 181 F 65 223
+# failed_seed: 20 65 160 F 65 244
+# failed_seed: 20 65 172 F 65 298
+# failed_seed: 20 66 172 F 747 271
+# failed_seed: 20 72 198 F 73 112
+# failed_seed: 20 72 215 F 73 144
+# failed_seed: 20 78 48 F 80 97
+# failed_seed: 20 78 96 F 80 157
+# failed_seed: 20 78 710 F 80 740
+# failed_seed: 20 78 363 F 1488 146
+# failed_seed: 20 79 236 F 1495 180
+# failed_seed: 20 103 0 F 107 0
+# failed_seed: 20 112 39 F 120 64
+# failed_seed: 20 120 196 F 120 226
+# failed_seed: 20 120 207 F 120 237
+# failed_seed: 20 120 208 F 120 238
+# failed_seed: 20 120 209 F 120 239
+# failed_seed: 20 120 210 F 120 240
+# failed_seed: 20 120 211 F 120 241
+# failed_seed: 20 120 212 F 120 242
+# failed_seed: 20 120 213 F 120 243
+# failed_seed: 20 120 214 F 120 244
+# failed_seed: 20 120 215 F 120 245
+# failed_seed: 20 120 216 F 120 246
+# failed_seed: 20 120 217 F 120 247
+# failed_seed: 20 120 218 F 120 248
+# failed_seed: 20 120 219 F 120 249
+# failed_seed: 20 120 220 F 120 250
+# failed_seed: 20 120 221 F 120 251
+# failed_seed: 20 120 212 F 120 272
+# failed_seed: 20 120 109 F 1624 21
+# failed_seed: 20 120 287 F 1624 259
+# failed_seed: 20 126 102 F 530 148
+# failed_seed: 20 126 117 F 544 104
+# failed_seed: 20 126 102 F 1343 156
+# failed_seed: 20 131 0 F 158 0
+# failed_seed: 20 160 124 F 160 305
+# failed_seed: 20 160 278 F 160 459
+# failed_seed: 20 160 283 F 160 464
+# failed_seed: 20 175 77 F 1821 2
+# failed_seed: 20 197 189 F 385 72
+# failed_seed: 20 197 210 F 665 86
+# failed_seed: 20 204 13 F 273 0
+# failed_seed: 20 216 0 F 277 0
+# failed_seed: 20 221 0 F 266 0
+# failed_seed: 20 223 5 F 271 5
+# failed_seed: 20 229 0 F 270 0
+# failed_seed: 20 237 226 F 468 9
+# failed_seed: 20 238 0 F 274 0
+# failed_seed: 20 242 0 F 294 0
+# failed_seed: 20 244 0 F 272 0
+# failed_seed: 20 247 184 F 880 55
+# failed_seed: 20 248 0 F 292 0
+# failed_seed: 20 253 2 F 276 2
+# failed_seed: 20 264 526 F 300 278
+# failed_seed: 20 306 71 F 1349 195
+# failed_seed: 20 309 22 F 804 102
+# failed_seed: 20 310 109 F 310 149
+# failed_seed: 20 310 130 F 310 170
+# failed_seed: 20 310 131 F 310 171
+# failed_seed: 20 310 132 F 310 172
+# failed_seed: 20 310 133 F 310 173
+# failed_seed: 20 310 134 F 310 174
+# failed_seed: 20 310 135 F 310 175
+# failed_seed: 20 310 136 F 310 176
+# failed_seed: 20 310 137 F 310 177
+# failed_seed: 20 310 138 F 310 178
+# failed_seed: 20 310 139 F 310 179
+# failed_seed: 20 310 140 F 310 180
+# failed_seed: 20 310 141 F 310 181
+# failed_seed: 20 310 142 F 310 182
+# failed_seed: 20 310 143 F 310 183
+# failed_seed: 20 310 144 F 310 184
+# failed_seed: 20 310 145 F 310 185
+# failed_seed: 20 310 146 F 310 186
+# failed_seed: 20 310 147 F 310 187
+# failed_seed: 20 310 148 F 310 188
+# failed_seed: 20 310 84 F 1363 89
+# failed_seed: 20 313 100 F 1782 65
+# failed_seed: 20 313 100 F 1827 26
+# failed_seed: 20 317 172 F 1128 101
+# failed_seed: 20 318 146 F 905 196
+# failed_seed: 20 318 150 F 1693 282
+# failed_seed: 20 319 60 F 626 255
+# failed_seed: 20 322 131 F 793 130
+# failed_seed: 20 335 0 F 1059 206
+# failed_seed: 20 336 47 F 1703 12
+# failed_seed: 20 354 142 F 1077 156
+# failed_seed: 20 355 169 F 499 60
+# failed_seed: 20 355 187 F 589 86
+# failed_seed: 20 356 132 F 496 93
+# failed_seed: 20 358 80 F 1678 3
+# failed_seed: 20 369 53 F 1409 31
+# failed_seed: 20 372 51 F 1348 110
+# failed_seed: 20 376 65 F 1277 80
+# failed_seed: 20 376 191 F 1402 62
+# failed_seed: 20 376 59 F 1694 148
+# failed_seed: 20 379 97 F 1785 182
+# failed_seed: 20 380 53 F 451 86
+# failed_seed: 20 380 77 F 454 118
+# failed_seed: 20 380 77 F 474 178
+# failed_seed: 20 380 169 F 481 70
+# failed_seed: 20 380 61 F 483 56
+# failed_seed: 20 380 143 F 506 69
+# failed_seed: 20 380 83 F 543 125
+# failed_seed: 20 380 172 F 579 100
+# failed_seed: 20 380 140 F 605 120
+# failed_seed: 20 380 189 F 610 69
+# failed_seed: 20 380 140 F 630 153
+# failed_seed: 20 380 140 F 641 61
+# failed_seed: 20 380 169 F 642 58
+# failed_seed: 20 380 77 F 658 243
+# failed_seed: 20 380 111 F 713 113
+# failed_seed: 20 380 49 F 736 158
+# failed_seed: 20 380 93 F 761 19
+# failed_seed: 20 380 89 F 798 83
+# failed_seed: 20 380 49 F 826 117
+# failed_seed: 20 380 49 F 846 264
+# failed_seed: 20 380 115 F 849 95
+# failed_seed: 20 380 49 F 902 69
+# failed_seed: 20 380 77 F 912 126
+# failed_seed: 20 380 176 F 935 134
+# failed_seed: 20 380 59 F 988 103
+# failed_seed: 20 380 68 F 1049 122
+# failed_seed: 20 380 189 F 1076 136
+# failed_seed: 20 380 115 F 1100 155
+# failed_seed: 20 380 106 F 1120 113
+# failed_seed: 20 380 107 F 1143 113
+# failed_seed: 20 380 49 F 1151 102
+# failed_seed: 20 380 107 F 1189 43
+# failed_seed: 20 380 152 F 1196 113
+# failed_seed: 20 380 169 F 1198 91
+# failed_seed: 20 380 55 F 1230 162
+# failed_seed: 20 380 184 F 1289 26
+# failed_seed: 20 380 94 F 1297 132
+# failed_seed: 20 380 98 F 1327 121
+# failed_seed: 20 380 49 F 1328 44
+# failed_seed: 20 380 86 F 1360 102
+# failed_seed: 20 380 83 F 1365 54
+# failed_seed: 20 380 176 F 1456 178
+# failed_seed: 20 380 78 F 1722 56
+# failed_seed: 20 380 77 F 1837 47
+# failed_seed: 20 382 92 F 918 94
+# failed_seed: 20 385 137 F 665 131
+# failed_seed: 20 386 267 F 1201 116
+# failed_seed: 20 404 265 F 819 124
+# failed_seed: 20 404 254 F 975 120
+# failed_seed: 20 404 378 F 1301 96
+# failed_seed: 20 404 396 F 1362 209
+# failed_seed: 20 404 355 F 1500 199
+# failed_seed: 20 406 98 F 542 86
+# failed_seed: 20 406 170 F 1056 141
+# failed_seed: 20 406 52 F 1653 120
+# failed_seed: 20 406 52 F 1828 195
+# failed_seed: 20 406 65 F 1947 202
+# failed_seed: 20 409 143 F 456 0
+# failed_seed: 20 412 196 F 1525 121
+# failed_seed: 20 413 76 F 1250 110
+# failed_seed: 20 413 234 F 1250 279
+# failed_seed: 20 422 236 F 1126 82
+# failed_seed: 20 422 109 F 1794 175
+# failed_seed: 20 426 208 F 795 175
+# failed_seed: 20 428 53 F 1441 80
+# failed_seed: 20 428 64 F 1513 118
+# failed_seed: 20 432 66 F 492 29
+# failed_seed: 20 432 143 F 652 135
+# failed_seed: 20 432 201 F 742 141
+# failed_seed: 20 432 84 F 825 146
+# failed_seed: 20 432 157 F 862 120
+# failed_seed: 20 432 121 F 1469 178
+# failed_seed: 20 432 53 F 1874 29
+# failed_seed: 20 440 67 F 765 156
+# failed_seed: 20 442 181 F 1510 133
+# failed_seed: 20 447 115 F 746 117
+# failed_seed: 20 449 36 F 868 177
+# failed_seed: 20 451 110 F 454 118
+# failed_seed: 20 451 110 F 474 178
+# failed_seed: 20 451 202 F 481 70
+# failed_seed: 20 451 94 F 483 56
+# failed_seed: 20 451 176 F 506 69
+# failed_seed: 20 451 116 F 543 125
+# failed_seed: 20 451 160 F 579 54
+# failed_seed: 20 451 168 F 605 115
+# failed_seed: 20 451 222 F 610 69
+# failed_seed: 20 451 171 F 630 151
+# failed_seed: 20 451 168 F 641 56
+# failed_seed: 20 451 202 F 642 58
+# failed_seed: 20 451 110 F 658 243
+# failed_seed: 20 451 144 F 713 113
+# failed_seed: 20 451 47 F 736 126
+# failed_seed: 20 451 126 F 761 19
+# failed_seed: 20 451 122 F 798 83
+# failed_seed: 20 451 86 F 826 121
+# failed_seed: 20 451 47 F 846 232
+# failed_seed: 20 451 148 F 849 95
+# failed_seed: 20 451 86 F 902 73
+# failed_seed: 20 451 110 F 912 126
+# failed_seed: 20 451 209 F 935 134
+# failed_seed: 20 451 92 F 988 103
+# failed_seed: 20 451 101 F 1049 122
+# failed_seed: 20 451 222 F 1076 136
+# failed_seed: 20 451 148 F 1100 155
+# failed_seed: 20 451 139 F 1120 113
+# failed_seed: 20 451 140 F 1143 113
+# failed_seed: 20 451 86 F 1151 106
+# failed_seed: 20 451 140 F 1189 43
+# failed_seed: 20 451 154 F 1196 80
+# failed_seed: 20 451 202 F 1198 91
+# failed_seed: 20 451 88 F 1230 162
+# failed_seed: 20 451 217 F 1289 26
+# failed_seed: 20 451 127 F 1297 132
+# failed_seed: 20 451 131 F 1327 121
+# failed_seed: 20 451 143 F 1328 106
+# failed_seed: 20 451 119 F 1360 102
+# failed_seed: 20 451 116 F 1365 54
+# failed_seed: 20 451 154 F 1456 122
+# failed_seed: 20 451 111 F 1722 56
+# failed_seed: 20 451 110 F 1837 47
+# failed_seed: 20 452 93 F 882 95
+# failed_seed: 20 454 32 F 474 92
+# failed_seed: 20 454 118 F 483 72
+# failed_seed: 20 454 220 F 506 105
+# failed_seed: 20 454 124 F 543 125
+# failed_seed: 20 454 168 F 579 54
+# failed_seed: 20 454 220 F 605 159
+# failed_seed: 20 454 220 F 630 192
+# failed_seed: 20 454 220 F 642 68
+# failed_seed: 20 454 75 F 658 201
+# failed_seed: 20 454 160 F 713 121
+# failed_seed: 20 454 75 F 736 143
+# failed_seed: 20 454 160 F 761 45
+# failed_seed: 20 454 130 F 798 83
+# failed_seed: 20 454 48 F 826 76
+# failed_seed: 20 454 75 F 846 249
+# failed_seed: 20 454 160 F 849 99
+# failed_seed: 20 454 74 F 902 53
+# failed_seed: 20 454 48 F 912 58
+# failed_seed: 20 454 118 F 988 121
+# failed_seed: 20 454 75 F 1049 87
+# failed_seed: 20 454 230 F 1076 136
+# failed_seed: 20 454 160 F 1100 159
+# failed_seed: 20 454 160 F 1120 126
+# failed_seed: 20 454 160 F 1143 125
+# failed_seed: 20 454 75 F 1151 87
+# failed_seed: 20 454 162 F 1196 80
+# failed_seed: 20 454 46 F 1230 113
+# failed_seed: 20 454 220 F 1297 216
+# failed_seed: 20 454 160 F 1327 142
+# failed_seed: 20 454 160 F 1328 115
+# failed_seed: 20 454 127 F 1360 102
+# failed_seed: 20 454 124 F 1365 54
+# failed_seed: 20 454 162 F 1456 122
+# failed_seed: 20 454 83 F 1722 20
+# failed_seed: 20 454 75 F 1837 4
+# failed_seed: 20 455 38 F 1260 252
+# failed_seed: 20 460 118 F 1351 92
+# failed_seed: 20 460 238 F 1859 0
+# failed_seed: 20 460 113 F 1936 22
+# failed_seed: 20 461 13 F 1788 264
+# failed_seed: 20 461 0 F 1850 260
+# failed_seed: 20 470 300 F 991 64
+# failed_seed: 20 470 116 F 1013 36
+# failed_seed: 20 473 28 F 766 65
+# failed_seed: 20 473 80 F 994 150
+# failed_seed: 20 473 141 F 1190 96
+# failed_seed: 20 474 278 F 481 77
+# failed_seed: 20 474 178 F 483 72
+# failed_seed: 20 474 245 F 506 69
+# failed_seed: 20 474 184 F 543 125
+# failed_seed: 20 474 229 F 579 54
+# failed_seed: 20 474 237 F 605 115
+# failed_seed: 20 474 291 F 610 69
+# failed_seed: 20 474 240 F 630 151
+# failed_seed: 20 474 237 F 641 56
+# failed_seed: 20 474 278 F 642 65
+# failed_seed: 20 474 142 F 658 208
+# failed_seed: 20 474 214 F 713 114
+# failed_seed: 20 474 87 F 736 96
+# failed_seed: 20 474 194 F 761 19
+# failed_seed: 20 474 190 F 798 83
+# failed_seed: 20 474 108 F 826 76
+# failed_seed: 20 474 178 F 846 292
+# failed_seed: 20 474 217 F 849 95
+# failed_seed: 20 474 178 F 902 97
+# failed_seed: 20 474 108 F 912 58
+# failed_seed: 20 474 273 F 935 129
+# failed_seed: 20 474 142 F 988 86
+# failed_seed: 20 474 178 F 1049 131
+# failed_seed: 20 474 259 F 1076 104
+# failed_seed: 20 474 217 F 1100 155
+# failed_seed: 20 474 214 F 1120 119
+# failed_seed: 20 474 214 F 1143 118
+# failed_seed: 20 474 74 F 1151 26
+# failed_seed: 20 474 235 F 1189 69
+# failed_seed: 20 474 223 F 1196 80
+# failed_seed: 20 474 278 F 1198 98
+# failed_seed: 20 474 106 F 1230 113
+# failed_seed: 20 474 286 F 1289 26
+# failed_seed: 20 474 235 F 1297 170
+# failed_seed: 20 474 214 F 1327 135
+# failed_seed: 20 474 214 F 1328 108
+# failed_seed: 20 474 187 F 1360 102
+# failed_seed: 20 474 149 F 1365 17
+# failed_seed: 20 474 223 F 1456 122
+# failed_seed: 20 474 179 F 1722 56
+# failed_seed: 20 474 166 F 1837 35
+# failed_seed: 20 477 29 F 1052 90
+# failed_seed: 20 480 157 F 926 100
+# failed_seed: 20 481 70 F 483 165
+# failed_seed: 20 481 70 F 506 95
+# failed_seed: 20 481 77 F 543 218
+# failed_seed: 20 481 73 F 579 100
+# failed_seed: 20 481 70 F 605 149
+# failed_seed: 20 481 90 F 610 69
+# failed_seed: 20 481 70 F 630 182
+# failed_seed: 20 481 81 F 641 101
+# failed_seed: 20 481 70 F 642 58
+# failed_seed: 20 481 77 F 658 340
+# failed_seed: 20 481 77 F 713 178
+# failed_seed: 20 481 70 F 736 278
+# failed_seed: 20 481 77 F 761 102
+# failed_seed: 20 481 77 F 798 170
+# failed_seed: 20 481 77 F 826 244
+# failed_seed: 20 481 83 F 846 397
+# failed_seed: 20 481 111 F 849 190
+# failed_seed: 20 481 70 F 902 189
+# failed_seed: 20 481 77 F 912 226
+# failed_seed: 20 481 77 F 935 134
+# failed_seed: 20 481 70 F 988 213
+# failed_seed: 20 481 70 F 1049 223
+# failed_seed: 20 481 90 F 1076 136
+# failed_seed: 20 481 70 F 1100 209
+# failed_seed: 20 481 77 F 1120 183
+# failed_seed: 20 481 70 F 1143 175
+# failed_seed: 20 481 70 F 1151 222
+# failed_seed: 20 481 70 F 1189 105
+# failed_seed: 20 481 26 F 1196 88
+# failed_seed: 20 481 70 F 1198 91
+# failed_seed: 20 481 70 F 1230 279
+# failed_seed: 20 481 85 F 1289 26
+# failed_seed: 20 481 77 F 1297 213
+# failed_seed: 20 481 77 F 1327 199
+# failed_seed: 20 481 90 F 1328 185
+# failed_seed: 20 481 90 F 1360 205
+# failed_seed: 20 481 70 F 1365 141
+# failed_seed: 20 481 77 F 1456 178
+# failed_seed: 20 483 139 F 506 69
+# failed_seed: 20 483 78 F 543 125
+# failed_seed: 20 483 123 F 579 54
+# failed_seed: 20 483 131 F 605 115
+# failed_seed: 20 483 185 F 610 69
+# failed_seed: 20 483 134 F 630 151
+# failed_seed: 20 483 131 F 641 56
+# failed_seed: 20 483 165 F 642 58
+# failed_seed: 20 483 72 F 658 243
+# failed_seed: 20 483 107 F 713 113
+# failed_seed: 20 483 56 F 736 170
+# failed_seed: 20 483 97 F 761 27
+# failed_seed: 20 483 106 F 798 104
+# failed_seed: 20 483 97 F 826 169
+# failed_seed: 20 483 56 F 846 276
+# failed_seed: 20 483 111 F 849 95
+# failed_seed: 20 483 56 F 902 81
+# failed_seed: 20 483 72 F 912 126
+# failed_seed: 20 483 172 F 935 134
+# failed_seed: 20 483 56 F 988 105
+# failed_seed: 20 483 63 F 1049 122
+# failed_seed: 20 483 185 F 1076 136
+# failed_seed: 20 483 111 F 1100 155
+# failed_seed: 20 483 102 F 1120 113
+# failed_seed: 20 483 103 F 1143 113
+# failed_seed: 20 483 56 F 1151 114
+# failed_seed: 20 483 103 F 1189 43
+# failed_seed: 20 483 117 F 1196 80
+# failed_seed: 20 483 165 F 1198 91
+# failed_seed: 20 483 56 F 1230 168
+# failed_seed: 20 483 180 F 1289 26
+# failed_seed: 20 483 97 F 1297 139
+# failed_seed: 20 483 97 F 1327 124
+# failed_seed: 20 483 106 F 1328 106
+# failed_seed: 20 483 111 F 1360 131
+# failed_seed: 20 483 78 F 1365 54
+# failed_seed: 20 483 117 F 1456 122
+# failed_seed: 20 483 73 F 1722 56
+# failed_seed: 20 483 72 F 1837 47
+# failed_seed: 20 489 57 F 1339 72
+# failed_seed: 20 492 105 F 652 135
+# failed_seed: 20 492 163 F 742 141
+# failed_seed: 20 492 47 F 825 146
+# failed_seed: 20 492 79 F 862 83
+# failed_seed: 20 492 73 F 1469 168
+# failed_seed: 20 492 29 F 1874 42
+# failed_seed: 20 497 113 F 1544 31
+# failed_seed: 20 497 113 F 1546 209
+# failed_seed: 20 497 127 F 1547 207
+# failed_seed: 20 497 113 F 1549 7
+# failed_seed: 20 497 128 F 1550 199
+# failed_seed: 20 497 127 F 1551 30
+# failed_seed: 20 499 78 F 589 86
+# failed_seed: 20 505 58 F 633 80
+# failed_seed: 20 506 69 F 543 185
+# failed_seed: 20 506 98 F 579 100
+# failed_seed: 20 506 69 F 605 123
+# failed_seed: 20 506 115 F 610 69
+# failed_seed: 20 506 69 F 630 156
+# failed_seed: 20 506 69 F 641 64
+# failed_seed: 20 506 95 F 642 58
+# failed_seed: 20 506 69 F 658 308
+# failed_seed: 20 506 69 F 713 145
+# failed_seed: 20 506 69 F 736 252
+# failed_seed: 20 506 69 F 761 69
+# failed_seed: 20 506 69 F 798 137
+# failed_seed: 20 506 69 F 826 211
+# failed_seed: 20 506 69 F 846 358
+# failed_seed: 20 506 136 F 849 190
+# failed_seed: 20 506 69 F 902 163
+# failed_seed: 20 506 69 F 912 193
+# failed_seed: 20 506 102 F 935 134
+# failed_seed: 20 506 69 F 988 187
+# failed_seed: 20 506 69 F 1049 197
+# failed_seed: 20 506 115 F 1076 136
+# failed_seed: 20 506 69 F 1100 183
+# failed_seed: 20 506 69 F 1120 150
+# failed_seed: 20 506 69 F 1143 149
+# failed_seed: 20 506 69 F 1151 196
+# failed_seed: 20 506 69 F 1189 79
+# failed_seed: 20 506 102 F 1196 136
+# failed_seed: 20 506 95 F 1198 91
+# failed_seed: 20 506 69 F 1230 253
+# failed_seed: 20 506 110 F 1289 26
+# failed_seed: 20 506 69 F 1297 180
+# failed_seed: 20 506 102 F 1327 199
+# failed_seed: 20 506 72 F 1328 142
+# failed_seed: 20 506 115 F 1360 205
+# failed_seed: 20 506 69 F 1365 115
+# failed_seed: 20 506 102 F 1456 178
+# failed_seed: 20 522 135 F 1134 95
+# failed_seed: 20 530 96 F 544 35
+# failed_seed: 20 530 115 F 1304 136
+# failed_seed: 20 530 102 F 1343 110
+# failed_seed: 20 536 201 F 567 119
+# failed_seed: 20 536 140 F 965 30
+# failed_seed: 20 536 209 F 1034 91
+# failed_seed: 20 536 160 F 1082 106
+# failed_seed: 20 538 80 F 667 179
+# failed_seed: 20 539 118 F 1080 25
+# failed_seed: 20 541 56 F 1006 142
+# failed_seed: 20 542 83 F 1056 59
+# failed_seed: 20 542 83 F 1653 165
+# failed_seed: 20 542 85 F 1828 242
+# failed_seed: 20 543 169 F 579 54
+# failed_seed: 20 543 177 F 605 115
+# failed_seed: 20 543 231 F 610 69
+# failed_seed: 20 543 180 F 630 151
+# failed_seed: 20 543 177 F 641 56
+# failed_seed: 20 543 218 F 642 65
+# failed_seed: 20 543 144 F 658 267
+# failed_seed: 20 543 153 F 713 113
+# failed_seed: 20 543 125 F 736 192
+# failed_seed: 20 543 135 F 761 19
+# failed_seed: 20 543 131 F 798 83
+# failed_seed: 20 543 128 F 826 154
+# failed_seed: 20 543 125 F 846 298
+# failed_seed: 20 543 157 F 849 95
+# failed_seed: 20 543 125 F 902 103
+# failed_seed: 20 543 125 F 912 132
+# failed_seed: 20 543 213 F 935 129
+# failed_seed: 20 543 125 F 988 127
+# failed_seed: 20 543 125 F 1049 137
+# failed_seed: 20 543 199 F 1076 104
+# failed_seed: 20 543 157 F 1100 155
+# failed_seed: 20 543 148 F 1120 113
+# failed_seed: 20 543 149 F 1143 113
+# failed_seed: 20 543 125 F 1151 136
+# failed_seed: 20 543 149 F 1189 43
+# failed_seed: 20 543 163 F 1196 80
+# failed_seed: 20 543 218 F 1198 98
+# failed_seed: 20 543 149 F 1230 217
+# failed_seed: 20 543 226 F 1289 26
+# failed_seed: 20 543 136 F 1297 132
+# failed_seed: 20 543 140 F 1327 121
+# failed_seed: 20 543 152 F 1328 106
+# failed_seed: 20 543 128 F 1360 102
+# failed_seed: 20 543 125 F 1365 54
+# failed_seed: 20 543 163 F 1456 122
+# failed_seed: 20 543 125 F 1722 61
+# failed_seed: 20 543 125 F 1837 53
+# failed_seed: 20 544 41 F 1343 110
+# failed_seed: 20 545 31 F 1453 168
+# failed_seed: 20 546 142 F 884 67
+# failed_seed: 20 546 142 F 890 79
+# failed_seed: 20 549 99 F 661 176
+# failed_seed: 20 558 65 F 1254 193
+# failed_seed: 20 560 97 F 1069 64
+# failed_seed: 20 567 127 F 965 99
+# failed_seed: 20 567 127 F 1034 91
+# failed_seed: 20 567 119 F 1082 147
+# failed_seed: 20 568 89 F 1793 83
+# failed_seed: 20 574 125 F 1369 108
+# failed_seed: 20 579 100 F 605 152
+# failed_seed: 20 579 117 F 610 69
+# failed_seed: 20 579 100 F 630 185
+# failed_seed: 20 579 108 F 641 101
+# failed_seed: 20 579 100 F 642 61
+# failed_seed: 20 579 54 F 658 292
+# failed_seed: 20 579 54 F 713 129
+# failed_seed: 20 579 54 F 736 236
+# failed_seed: 20 579 54 F 761 53
+# failed_seed: 20 579 54 F 798 121
+# failed_seed: 20 579 54 F 826 195
+# failed_seed: 20 579 54 F 846 342
+# failed_seed: 20 579 54 F 849 107
+# failed_seed: 20 579 54 F 902 147
+# failed_seed: 20 579 54 F 912 177
+# failed_seed: 20 579 104 F 935 134
+# failed_seed: 20 579 100 F 988 216
+# failed_seed: 20 579 54 F 1049 181
+# failed_seed: 20 579 50 F 1076 70
+# failed_seed: 20 579 54 F 1100 167
+# failed_seed: 20 579 54 F 1120 134
+# failed_seed: 20 579 54 F 1143 133
+# failed_seed: 20 579 54 F 1151 180
+# failed_seed: 20 579 100 F 1189 108
+# failed_seed: 20 579 104 F 1196 136
+# failed_seed: 20 579 100 F 1198 94
+# failed_seed: 20 579 54 F 1230 237
+# failed_seed: 20 579 112 F 1289 26
+# failed_seed: 20 579 104 F 1297 213
+# failed_seed: 20 579 54 F 1327 150
+# failed_seed: 20 579 117 F 1328 185
+# failed_seed: 20 579 117 F 1360 205
+# failed_seed: 20 579 54 F 1365 99
+# failed_seed: 20 579 28 F 1456 101
+# failed_seed: 20 580 77 F 762 135
+# failed_seed: 20 584 247 F 1381 106
+# failed_seed: 20 584 154 F 1661 113
+# failed_seed: 20 588 82 F 775 185
+# failed_seed: 20 591 54 F 1758 61
+# failed_seed: 20 593 81 F 607 134
+# failed_seed: 20 597 70 F 1372 205
+# failed_seed: 20 600 134 F 1251 76
+# failed_seed: 20 601 126 F 609 195
+# failed_seed: 20 605 169 F 610 69
+# failed_seed: 20 605 118 F 630 151
+# failed_seed: 20 605 115 F 641 56
+# failed_seed: 20 605 149 F 642 58
+# failed_seed: 20 605 115 F 658 300
+# failed_seed: 20 605 115 F 713 137
+# failed_seed: 20 605 115 F 736 244
+# failed_seed: 20 605 115 F 761 61
+# failed_seed: 20 605 115 F 798 129
+# failed_seed: 20 605 115 F 826 203
+# failed_seed: 20 605 115 F 846 350
+# failed_seed: 20 605 115 F 849 115
+# failed_seed: 20 605 115 F 902 155
+# failed_seed: 20 605 115 F 912 185
+# failed_seed: 20 605 156 F 935 134
+# failed_seed: 20 605 120 F 988 184
+# failed_seed: 20 605 115 F 1049 189
+# failed_seed: 20 605 169 F 1076 136
+# failed_seed: 20 605 115 F 1100 175
+# failed_seed: 20 605 115 F 1120 142
+# failed_seed: 20 605 115 F 1143 141
+# failed_seed: 20 605 115 F 1151 188
+# failed_seed: 20 605 115 F 1189 71
+# failed_seed: 20 605 132 F 1196 113
+# failed_seed: 20 605 149 F 1198 91
+# failed_seed: 20 605 115 F 1230 245
+# failed_seed: 20 605 164 F 1289 26
+# failed_seed: 20 605 115 F 1297 172
+# failed_seed: 20 605 156 F 1327 199
+# failed_seed: 20 605 126 F 1328 142
+# failed_seed: 20 605 169 F 1360 205
+# failed_seed: 20 605 115 F 1365 107
+# failed_seed: 20 605 115 F 1456 136
+# failed_seed: 20 610 69 F 630 202
+# failed_seed: 20 610 69 F 641 110
+# failed_seed: 20 610 87 F 642 96
+# failed_seed: 20 610 69 F 658 353
+# failed_seed: 20 610 69 F 713 191
+# failed_seed: 20 610 69 F 736 298
+# failed_seed: 20 610 69 F 761 115
+# failed_seed: 20 610 80 F 798 195
+# failed_seed: 20 610 69 F 826 257
+# failed_seed: 20 610 69 F 846 404
+# failed_seed: 20 610 69 F 902 209
+# failed_seed: 20 610 69 F 912 239
+# failed_seed: 20 610 83 F 935 162
+# failed_seed: 20 610 69 F 988 233
+# failed_seed: 20 610 69 F 1049 243
+# failed_seed: 20 610 69 F 1076 136
+# failed_seed: 20 610 69 F 1100 229
+# failed_seed: 20 610 69 F 1120 196
+# failed_seed: 20 610 69 F 1143 195
+# failed_seed: 20 610 69 F 1151 242
+# failed_seed: 20 610 69 F 1196 149
+# failed_seed: 20 610 88 F 1198 130
+# failed_seed: 20 610 69 F 1230 299
+# failed_seed: 20 610 69 F 1289 31
+# failed_seed: 20 610 69 F 1297 226
+# failed_seed: 20 610 69 F 1327 212
+# failed_seed: 20 610 69 F 1328 185
+# failed_seed: 20 610 69 F 1360 205
+# failed_seed: 20 610 69 F 1365 161
+# failed_seed: 20 610 69 F 1456 191
+# failed_seed: 20 624 302 F 1619 141
+# failed_seed: 20 630 151 F 641 59
+# failed_seed: 20 630 182 F 642 58
+# failed_seed: 20 630 151 F 658 303
+# failed_seed: 20 630 151 F 713 140
+# failed_seed: 20 630 151 F 736 247
+# failed_seed: 20 630 151 F 761 64
+# failed_seed: 20 630 151 F 798 132
+# failed_seed: 20 630 151 F 826 206
+# failed_seed: 20 630 151 F 846 353
+# failed_seed: 20 630 151 F 849 118
+# failed_seed: 20 630 151 F 902 158
+# failed_seed: 20 630 151 F 912 188
+# failed_seed: 20 630 189 F 935 134
+# failed_seed: 20 630 153 F 988 184
+# failed_seed: 20 630 151 F 1049 192
+# failed_seed: 20 630 202 F 1076 136
+# failed_seed: 20 630 151 F 1100 178
+# failed_seed: 20 630 151 F 1120 145
+# failed_seed: 20 630 151 F 1143 144
+# failed_seed: 20 630 151 F 1151 191
+# failed_seed: 20 630 151 F 1189 74
+# failed_seed: 20 630 165 F 1196 113
+# failed_seed: 20 630 182 F 1198 91
+# failed_seed: 20 630 151 F 1230 248
+# failed_seed: 20 630 197 F 1289 26
+# failed_seed: 20 630 151 F 1297 175
+# failed_seed: 20 630 189 F 1327 199
+# failed_seed: 20 630 159 F 1328 142
+# failed_seed: 20 630 202 F 1360 205
+# failed_seed: 20 630 151 F 1365 110
+# failed_seed: 20 630 189 F 1456 178
+# failed_seed: 20 634 59 F 976 70
+# failed_seed: 20 641 101 F 642 69
+# failed_seed: 20 641 56 F 658 300
+# failed_seed: 20 641 56 F 713 137
+# failed_seed: 20 641 56 F 736 244
+# failed_seed: 20 641 56 F 761 61
+# failed_seed: 20 641 56 F 798 129
+# failed_seed: 20 641 56 F 826 203
+# failed_seed: 20 641 56 F 846 350
+# failed_seed: 20 641 56 F 902 155
+# failed_seed: 20 641 56 F 912 185
+# failed_seed: 20 641 61 F 988 184
+# failed_seed: 20 641 56 F 1049 189
+# failed_seed: 20 641 56 F 1100 175
+# failed_seed: 20 641 56 F 1120 142
+# failed_seed: 20 641 56 F 1143 141
+# failed_seed: 20 641 56 F 1151 188
+# failed_seed: 20 641 56 F 1189 71
+# failed_seed: 20 641 73 F 1196 113
+# failed_seed: 20 641 101 F 1198 102
+# failed_seed: 20 641 56 F 1230 245
+# failed_seed: 20 641 105 F 1289 26
+# failed_seed: 20 641 56 F 1297 172
+# failed_seed: 20 641 101 F 1327 203
+# failed_seed: 20 641 67 F 1328 142
+# failed_seed: 20 641 110 F 1360 205
+# failed_seed: 20 641 56 F 1365 107
+# failed_seed: 20 641 56 F 1456 136
+# failed_seed: 20 642 65 F 658 340
+# failed_seed: 20 642 65 F 713 178
+# failed_seed: 20 642 58 F 736 278
+# failed_seed: 20 642 65 F 761 102
+# failed_seed: 20 642 65 F 798 170
+# failed_seed: 20 642 65 F 826 244
+# failed_seed: 20 642 71 F 846 397
+# failed_seed: 20 642 99 F 849 190
+# failed_seed: 20 642 58 F 902 189
+# failed_seed: 20 642 65 F 912 226
+# failed_seed: 20 642 65 F 935 134
+# failed_seed: 20 642 58 F 988 213
+# failed_seed: 20 642 58 F 1049 223
+# failed_seed: 20 642 58 F 1100 209
+# failed_seed: 20 642 65 F 1120 183
+# failed_seed: 20 642 58 F 1143 175
+# failed_seed: 20 642 58 F 1151 222
+# failed_seed: 20 642 58 F 1189 105
+# failed_seed: 20 642 65 F 1196 136
+# failed_seed: 20 642 58 F 1198 91
+# failed_seed: 20 642 58 F 1230 279
+# failed_seed: 20 642 73 F 1289 26
+# failed_seed: 20 642 65 F 1297 213
+# failed_seed: 20 642 65 F 1327 199
+# failed_seed: 20 642 96 F 1328 203
+# failed_seed: 20 642 96 F 1360 223
+# failed_seed: 20 642 58 F 1365 141
+# failed_seed: 20 642 65 F 1456 178
+# failed_seed: 20 647 104 F 1388 161
+# failed_seed: 20 652 193 F 742 141
+# failed_seed: 20 652 135 F 825 205
+# failed_seed: 20 652 149 F 862 120
+# failed_seed: 20 652 135 F 1469 200
+# failed_seed: 20 652 135 F 1874 117
+# failed_seed: 20 654 157 F 807 216
+# failed_seed: 20 654 121 F 866 258
+# failed_seed: 20 654 157 F 1212 279
+# failed_seed: 20 658 276 F 713 113
+# failed_seed: 20 658 196 F 736 138
+# failed_seed: 20 658 267 F 761 28
+# failed_seed: 20 658 275 F 798 104
+# failed_seed: 20 658 225 F 826 127
+# failed_seed: 20 658 196 F 846 244
+# failed_seed: 20 658 186 F 849 1
+# failed_seed: 20 658 201 F 902 54
+# failed_seed: 20 658 186 F 912 69
+# failed_seed: 20 658 337 F 935 131
+# failed_seed: 20 658 206 F 988 84
+# failed_seed: 20 658 201 F 1049 87
+# failed_seed: 20 658 353 F 1076 136
+# failed_seed: 20 658 280 F 1100 155
+# failed_seed: 20 658 271 F 1120 113
+# failed_seed: 20 658 272 F 1143 113
+# failed_seed: 20 658 199 F 1151 85
+# failed_seed: 20 658 272 F 1189 43
+# failed_seed: 20 658 286 F 1196 80
+# failed_seed: 20 658 340 F 1198 98
+# failed_seed: 20 658 272 F 1230 217
+# failed_seed: 20 658 348 F 1289 26
+# failed_seed: 20 658 267 F 1297 140
+# failed_seed: 20 658 267 F 1327 125
+# failed_seed: 20 658 275 F 1328 106
+# failed_seed: 20 658 280 F 1360 131
+# failed_seed: 20 658 278 F 1365 85
+# failed_seed: 20 658 286 F 1456 122
+# failed_seed: 20 658 244 F 1722 56
+# failed_seed: 20 658 197 F 1837 0
+# failed_seed: 20 662 221 F 1193 154
+# failed_seed: 20 664 101 F 1183 97
+# failed_seed: 20 671 110 F 1334 113
+# failed_seed: 20 674 102 F 1281 139
+# failed_seed: 20 676 159 F 1165 110
+# failed_seed: 20 678 180 F 1204 101
+# failed_seed: 20 679 104 F 759 44
+# failed_seed: 20 691 90 F 814 157
+# failed_seed: 20 695 173 F 938 121
+# failed_seed: 20 701 182 F 715 174
+# failed_seed: 20 707 119 F 1623 265
+# failed_seed: 20 713 113 F 736 220
+# failed_seed: 20 713 89 F 761 11
+# failed_seed: 20 713 113 F 798 105
+# failed_seed: 20 713 113 F 826 179
+# failed_seed: 20 713 113 F 846 326
+# failed_seed: 20 713 117 F 849 95
+# failed_seed: 20 713 113 F 902 131
+# failed_seed: 20 713 113 F 912 161
+# failed_seed: 20 713 174 F 935 130
+# failed_seed: 20 713 142 F 988 184
+# failed_seed: 20 713 113 F 1049 165
+# failed_seed: 20 713 191 F 1076 136
+# failed_seed: 20 713 117 F 1100 155
+# failed_seed: 20 713 113 F 1120 118
+# failed_seed: 20 713 113 F 1143 117
+# failed_seed: 20 713 113 F 1151 164
+# failed_seed: 20 713 135 F 1189 69
+# failed_seed: 20 713 123 F 1196 80
+# failed_seed: 20 713 178 F 1198 98
+# failed_seed: 20 713 113 F 1230 221
+# failed_seed: 20 713 186 F 1289 26
+# failed_seed: 20 713 135 F 1297 170
+# failed_seed: 20 713 113 F 1327 134
+# failed_seed: 20 713 113 F 1328 107
+# failed_seed: 20 713 117 F 1360 131
+# failed_seed: 20 713 115 F 1365 85
+# failed_seed: 20 713 123 F 1456 122
+# failed_seed: 20 719 160 F 1199 49
+# failed_seed: 20 720 112 F 1398 133
+# failed_seed: 20 724 145 F 1826 145
+# failed_seed: 20 726 213 F 1393 61
+# failed_seed: 20 735 264 F 1479 85
+# failed_seed: 20 736 202 F 761 19
+# failed_seed: 20 736 198 F 798 83
+# failed_seed: 20 736 155 F 826 114
+# failed_seed: 20 736 120 F 846 226
+# failed_seed: 20 736 224 F 849 95
+# failed_seed: 20 736 143 F 902 54
+# failed_seed: 20 736 186 F 912 126
+# failed_seed: 20 736 285 F 935 134
+# failed_seed: 20 736 148 F 988 84
+# failed_seed: 20 736 143 F 1049 87
+# failed_seed: 20 736 298 F 1076 136
+# failed_seed: 20 736 224 F 1100 155
+# failed_seed: 20 736 215 F 1120 113
+# failed_seed: 20 736 216 F 1143 113
+# failed_seed: 20 736 96 F 1151 39
+# failed_seed: 20 736 216 F 1189 43
+# failed_seed: 20 736 230 F 1196 80
+# failed_seed: 20 736 278 F 1198 91
+# failed_seed: 20 736 119 F 1230 117
+# failed_seed: 20 736 293 F 1289 26
+# failed_seed: 20 736 203 F 1297 132
+# failed_seed: 20 736 207 F 1327 121
+# failed_seed: 20 736 158 F 1328 44
+# failed_seed: 20 736 195 F 1360 102
+# failed_seed: 20 736 192 F 1365 54
+# failed_seed: 20 736 230 F 1456 122
+# failed_seed: 20 736 187 F 1722 56
+# failed_seed: 20 736 139 F 1837 0
+# failed_seed: 20 738 184 F 739 64
+# failed_seed: 20 738 177 F 1384 69
+# failed_seed: 20 739 64 F 1384 76
+# failed_seed: 20 742 141 F 825 263
+# failed_seed: 20 742 154 F 862 176
+# failed_seed: 20 742 141 F 1469 258
+# failed_seed: 20 742 141 F 1874 175
+# failed_seed: 20 755 70 F 1412 184
+# failed_seed: 20 761 36 F 798 104
+# failed_seed: 20 761 19 F 826 161
+# failed_seed: 20 761 19 F 846 308
+# failed_seed: 20 761 41 F 849 95
+# failed_seed: 20 761 19 F 902 113
+# failed_seed: 20 761 33 F 912 157
+# failed_seed: 20 761 97 F 935 129
+# failed_seed: 20 761 19 F 988 137
+# failed_seed: 20 761 19 F 1049 147
+# failed_seed: 20 761 83 F 1076 104
+# failed_seed: 20 761 41 F 1100 155
+# failed_seed: 20 761 32 F 1120 113
+# failed_seed: 20 761 33 F 1143 113
+# failed_seed: 20 761 19 F 1151 146
+# failed_seed: 20 761 33 F 1189 43
+# failed_seed: 20 761 47 F 1196 80
+# failed_seed: 20 761 102 F 1198 98
+# failed_seed: 20 761 33 F 1230 217
+# failed_seed: 20 761 110 F 1289 26
+# failed_seed: 20 761 20 F 1297 132
+# failed_seed: 20 761 24 F 1327 121
+# failed_seed: 20 761 36 F 1328 106
+# failed_seed: 20 761 19 F 1360 109
+# failed_seed: 20 761 19 F 1365 64
+# failed_seed: 20 761 47 F 1456 122
+# failed_seed: 20 766 158 F 994 191
+# failed_seed: 20 766 178 F 1190 96
+# failed_seed: 20 779 162 F 783 159
+# failed_seed: 20 782 133 F 1270 88
+# failed_seed: 20 782 256 F 1279 121
+# failed_seed: 20 798 83 F 826 157
+# failed_seed: 20 798 83 F 846 304
+# failed_seed: 20 798 109 F 849 95
+# failed_seed: 20 798 83 F 902 109
+# failed_seed: 20 798 83 F 912 138
+# failed_seed: 20 798 165 F 935 129
+# failed_seed: 20 798 83 F 988 133
+# failed_seed: 20 798 83 F 1049 143
+# failed_seed: 20 798 151 F 1076 104
+# failed_seed: 20 798 109 F 1100 155
+# failed_seed: 20 798 104 F 1120 117
+# failed_seed: 20 798 104 F 1143 116
+# failed_seed: 20 798 83 F 1151 142
+# failed_seed: 20 798 127 F 1189 69
+# failed_seed: 20 798 115 F 1196 80
+# failed_seed: 20 798 170 F 1198 98
+# failed_seed: 20 798 104 F 1230 220
+# failed_seed: 20 798 195 F 1289 42
+# failed_seed: 20 798 127 F 1297 170
+# failed_seed: 20 798 104 F 1327 133
+# failed_seed: 20 798 104 F 1328 106
+# failed_seed: 20 798 83 F 1360 105
+# failed_seed: 20 798 83 F 1365 60
+# failed_seed: 20 798 115 F 1456 122
+# failed_seed: 20 798 83 F 1722 67
+# failed_seed: 20 807 253 F 866 329
+# failed_seed: 20 807 131 F 1212 194
+# failed_seed: 20 815 73 F 1699 76
+# failed_seed: 20 819 124 F 975 131
+# failed_seed: 20 819 200 F 1301 56
+# failed_seed: 20 819 257 F 1362 209
+# failed_seed: 20 819 134 F 1500 116
+# failed_seed: 20 825 179 F 862 83
+# failed_seed: 20 825 176 F 1469 171
+# failed_seed: 20 825 176 F 1874 88
+# failed_seed: 20 826 114 F 846 261
+# failed_seed: 20 826 183 F 849 95
+# failed_seed: 20 826 61 F 902 11
+# failed_seed: 20 826 75 F 912 57
+# failed_seed: 20 826 239 F 935 129
+# failed_seed: 20 826 154 F 988 130
+# failed_seed: 20 826 154 F 1049 140
+# failed_seed: 20 826 225 F 1076 104
+# failed_seed: 20 826 183 F 1100 155
+# failed_seed: 20 826 174 F 1120 113
+# failed_seed: 20 826 175 F 1143 113
+# failed_seed: 20 826 63 F 1151 46
+# failed_seed: 20 826 175 F 1189 43
+# failed_seed: 20 826 189 F 1196 80
+# failed_seed: 20 826 244 F 1198 98
+# failed_seed: 20 826 76 F 1230 115
+# failed_seed: 20 826 252 F 1289 26
+# failed_seed: 20 826 162 F 1297 132
+# failed_seed: 20 826 166 F 1327 121
+# failed_seed: 20 826 117 F 1328 44
+# failed_seed: 20 826 154 F 1360 102
+# failed_seed: 20 826 154 F 1365 57
+# failed_seed: 20 826 189 F 1456 122
+# failed_seed: 20 826 154 F 1722 64
+# failed_seed: 20 826 133 F 1837 35
+# failed_seed: 20 833 182 F 1146 103
+# failed_seed: 20 846 330 F 849 95
+# failed_seed: 20 846 249 F 902 54
+# failed_seed: 20 846 292 F 912 126
+# failed_seed: 20 846 418 F 935 162
+# failed_seed: 20 846 254 F 988 84
+# failed_seed: 20 846 249 F 1049 87
+# failed_seed: 20 846 404 F 1076 136
+# failed_seed: 20 846 330 F 1100 155
+# failed_seed: 20 846 321 F 1120 113
+# failed_seed: 20 846 322 F 1143 113
+# failed_seed: 20 846 247 F 1151 85
+# failed_seed: 20 846 322 F 1189 43
+# failed_seed: 20 846 336 F 1196 80
+# failed_seed: 20 846 423 F 1198 130
+# failed_seed: 20 846 270 F 1230 162
+# failed_seed: 20 846 399 F 1289 26
+# failed_seed: 20 846 309 F 1297 132
+# failed_seed: 20 846 313 F 1327 121
+# failed_seed: 20 846 264 F 1328 44
+# failed_seed: 20 846 301 F 1360 102
+# failed_seed: 20 846 298 F 1365 54
+# failed_seed: 20 846 336 F 1456 122
+# failed_seed: 20 846 293 F 1722 56
+# failed_seed: 20 846 245 F 1837 0
+# failed_seed: 20 848 226 F 1658 93
+# failed_seed: 20 849 95 F 902 135
+# failed_seed: 20 849 0 F 912 68
+# failed_seed: 20 849 190 F 935 169
+# failed_seed: 20 849 120 F 988 184
+# failed_seed: 20 849 95 F 1049 169
+# failed_seed: 20 849 190 F 1076 157
+# failed_seed: 20 849 94 F 1100 154
+# failed_seed: 20 849 95 F 1120 122
+# failed_seed: 20 849 95 F 1143 121
+# failed_seed: 20 849 95 F 1151 168
+# failed_seed: 20 849 113 F 1189 69
+# failed_seed: 20 849 101 F 1196 80
+# failed_seed: 20 849 95 F 1230 225
+# failed_seed: 20 849 113 F 1297 170
+# failed_seed: 20 849 95 F 1327 138
+# failed_seed: 20 849 95 F 1328 111
+# failed_seed: 20 849 95 F 1360 131
+# failed_seed: 20 849 95 F 1365 87
+# failed_seed: 20 849 101 F 1456 122
+# failed_seed: 20 859 7 F 1265 175
+# failed_seed: 20 859 88 F 1265 235
+# failed_seed: 20 862 83 F 1469 174
+# failed_seed: 20 862 83 F 1874 91
+# failed_seed: 20 866 329 F 1212 316
+# failed_seed: 20 867 289 F 1602 58
+# failed_seed: 20 871 187 F 1401 128
+# failed_seed: 20 871 388 F 1401 314
+# failed_seed: 20 871 128 F 1710 168
+# failed_seed: 20 877 193 F 1268 213
+# failed_seed: 20 877 199 F 1514 8
+# failed_seed: 20 877 193 F 1627 123
+# failed_seed: 20 877 193 F 1747 115
+# failed_seed: 20 881 34 F 1248 130
+# failed_seed: 20 884 59 F 890 71
+# failed_seed: 20 885 105 F 1021 40
+# failed_seed: 20 885 105 F 1051 282
+# failed_seed: 20 892 130 F 1300 190
+# failed_seed: 20 895 240 F 1405 86
+# failed_seed: 20 902 97 F 912 126
+# failed_seed: 20 902 196 F 935 134
+# failed_seed: 20 902 59 F 988 84
+# failed_seed: 20 902 54 F 1049 87
+# failed_seed: 20 902 209 F 1076 136
+# failed_seed: 20 902 135 F 1100 155
+# failed_seed: 20 902 126 F 1120 113
+# failed_seed: 20 902 127 F 1143 113
+# failed_seed: 20 902 13 F 1151 46
+# failed_seed: 20 902 127 F 1189 43
+# failed_seed: 20 902 141 F 1196 80
+# failed_seed: 20 902 189 F 1198 91
+# failed_seed: 20 902 75 F 1230 162
+# failed_seed: 20 902 204 F 1289 26
+# failed_seed: 20 902 114 F 1297 132
+# failed_seed: 20 902 118 F 1327 121
+# failed_seed: 20 902 69 F 1328 44
+# failed_seed: 20 902 106 F 1360 102
+# failed_seed: 20 902 103 F 1365 54
+# failed_seed: 20 902 141 F 1456 122
+# failed_seed: 20 902 98 F 1722 56
+# failed_seed: 20 902 54 F 1837 4
+# failed_seed: 20 905 37 F 1693 120
+# failed_seed: 20 912 221 F 935 129
+# failed_seed: 20 912 126 F 988 121
+# failed_seed: 20 912 126 F 1049 131
+# failed_seed: 20 912 207 F 1076 104
+# failed_seed: 20 912 165 F 1100 155
+# failed_seed: 20 912 157 F 1120 114
+# failed_seed: 20 912 154 F 1143 110
+# failed_seed: 20 912 126 F 1151 130
+# failed_seed: 20 912 154 F 1189 40
+# failed_seed: 20 912 171 F 1196 80
+# failed_seed: 20 912 226 F 1198 98
+# failed_seed: 20 912 58 F 1230 115
+# failed_seed: 20 912 234 F 1289 26
+# failed_seed: 20 912 157 F 1297 145
+# failed_seed: 20 912 157 F 1327 130
+# failed_seed: 20 912 160 F 1328 106
+# failed_seed: 20 912 135 F 1360 102
+# failed_seed: 20 912 132 F 1365 54
+# failed_seed: 20 912 171 F 1456 122
+# failed_seed: 20 912 127 F 1722 56
+# failed_seed: 20 912 114 F 1837 35
+# failed_seed: 20 915 149 F 1070 83
+# failed_seed: 20 935 134 F 988 220
+# failed_seed: 20 935 134 F 1049 230
+# failed_seed: 20 935 162 F 1076 150
+# failed_seed: 20 935 134 F 1100 216
+# failed_seed: 20 935 130 F 1120 179
+# failed_seed: 20 935 134 F 1143 182
+# failed_seed: 20 935 134 F 1151 229
+# failed_seed: 20 935 134 F 1189 112
+# failed_seed: 20 935 134 F 1196 136
+# failed_seed: 20 935 134 F 1198 98
+# failed_seed: 20 935 134 F 1230 286
+# failed_seed: 20 935 162 F 1289 45
+# failed_seed: 20 935 129 F 1297 208
+# failed_seed: 20 935 129 F 1327 194
+# failed_seed: 20 935 162 F 1328 199
+# failed_seed: 20 935 162 F 1360 219
+# failed_seed: 20 935 134 F 1365 148
+# failed_seed: 20 935 134 F 1456 178
+# failed_seed: 20 936 43 F 937 206
+# failed_seed: 20 950 70 F 1041 60
+# failed_seed: 20 950 2 F 1850 210
+# failed_seed: 20 950 61 F 1850 260
+# failed_seed: 20 960 80 F 970 192
+# failed_seed: 20 965 90 F 1034 82
+# failed_seed: 20 965 23 F 1082 79
+# failed_seed: 20 974 103 F 1310 249
+# failed_seed: 20 975 207 F 1301 56
+# failed_seed: 20 975 264 F 1362 209
+# failed_seed: 20 975 188 F 1500 164
+# failed_seed: 20 977 104 F 1605 152
+# failed_seed: 20 985 43 F 1426 107
+# failed_seed: 20 988 84 F 1049 92
+# failed_seed: 20 988 233 F 1076 136
+# failed_seed: 20 988 184 F 1100 180
+# failed_seed: 20 988 150 F 1120 113
+# failed_seed: 20 988 151 F 1143 113
+# failed_seed: 20 988 84 F 1151 92
+# failed_seed: 20 988 151 F 1189 43
+# failed_seed: 20 988 196 F 1196 113
+# failed_seed: 20 988 213 F 1198 91
+# failed_seed: 20 988 103 F 1230 166
+# failed_seed: 20 988 228 F 1289 26
+# failed_seed: 20 988 138 F 1297 132
+# failed_seed: 20 988 142 F 1327 121
+# failed_seed: 20 988 154 F 1328 106
+# failed_seed: 20 988 130 F 1360 102
+# failed_seed: 20 988 127 F 1365 54
+# failed_seed: 20 988 220 F 1456 178
+# failed_seed: 20 988 122 F 1722 56
+# failed_seed: 20 988 121 F 1837 47
+# failed_seed: 20 989 146 F 1350 90
+# failed_seed: 20 991 64 F 1013 224
+# failed_seed: 20 994 211 F 1190 96
+# failed_seed: 20 1021 3 F 1051 245
+# failed_seed: 20 1034 91 F 1082 155
+# failed_seed: 20 1039 0 F 1435 147
+# failed_seed: 20 1049 243 F 1076 136
+# failed_seed: 20 1049 169 F 1100 155
+# failed_seed: 20 1049 160 F 1120 113
+# failed_seed: 20 1049 161 F 1143 113
+# failed_seed: 20 1049 87 F 1151 87
+# failed_seed: 20 1049 161 F 1189 43
+# failed_seed: 20 1049 175 F 1196 80
+# failed_seed: 20 1049 223 F 1198 91
+# failed_seed: 20 1049 161 F 1230 217
+# failed_seed: 20 1049 238 F 1289 26
+# failed_seed: 20 1049 148 F 1297 132
+# failed_seed: 20 1049 152 F 1327 121
+# failed_seed: 20 1049 164 F 1328 106
+# failed_seed: 20 1049 140 F 1360 102
+# failed_seed: 20 1049 137 F 1365 54
+# failed_seed: 20 1049 175 F 1456 122
+# failed_seed: 20 1049 132 F 1722 56
+# failed_seed: 20 1049 87 F 1837 4
+# failed_seed: 20 1055 39 F 1542 187
+# failed_seed: 20 1056 59 F 1653 165
+# failed_seed: 20 1064 99 F 1669 39
+# failed_seed: 20 1066 86 F 1600 156
+# failed_seed: 20 1068 79 F 1517 174
+# failed_seed: 20 1076 136 F 1100 229
+# failed_seed: 20 1076 136 F 1120 196
+# failed_seed: 20 1076 136 F 1143 195
+# failed_seed: 20 1076 136 F 1151 242
+# failed_seed: 20 1076 136 F 1196 149
+# failed_seed: 20 1076 136 F 1230 299
+# failed_seed: 20 1076 136 F 1289 31
+# failed_seed: 20 1076 104 F 1297 194
+# failed_seed: 20 1076 136 F 1327 212
+# failed_seed: 20 1076 136 F 1328 185
+# failed_seed: 20 1076 136 F 1360 205
+# failed_seed: 20 1076 136 F 1365 161
+# failed_seed: 20 1076 136 F 1456 191
+# failed_seed: 20 1097 79 F 1806 62
+# failed_seed: 20 1100 155 F 1120 122
+# failed_seed: 20 1100 155 F 1143 121
+# failed_seed: 20 1100 155 F 1151 168
+# failed_seed: 20 1100 173 F 1189 69
+# failed_seed: 20 1100 161 F 1196 80
+# failed_seed: 20 1100 209 F 1198 91
+# failed_seed: 20 1100 155 F 1230 225
+# failed_seed: 20 1100 224 F 1289 26
+# failed_seed: 20 1100 173 F 1297 170
+# failed_seed: 20 1100 155 F 1327 138
+# failed_seed: 20 1100 155 F 1328 111
+# failed_seed: 20 1100 155 F 1360 131
+# failed_seed: 20 1100 114 F 1365 45
+# failed_seed: 20 1100 161 F 1456 122
+# failed_seed: 20 1120 114 F 1143 113
+# failed_seed: 20 1120 113 F 1151 159
+# failed_seed: 20 1120 114 F 1189 43
+# failed_seed: 20 1120 128 F 1196 80
+# failed_seed: 20 1120 183 F 1198 98
+# failed_seed: 20 1120 114 F 1230 217
+# failed_seed: 20 1120 191 F 1289 26
+# failed_seed: 20 1120 113 F 1297 144
+# failed_seed: 20 1120 113 F 1327 129
+# failed_seed: 20 1120 117 F 1328 106
+# failed_seed: 20 1120 122 F 1360 131
+# failed_seed: 20 1120 120 F 1365 85
+# failed_seed: 20 1120 128 F 1456 122
+# failed_seed: 20 1121 166 F 1512 123
+# failed_seed: 20 1125 202 F 1507 260
+# failed_seed: 20 1132 134 F 1140 42
+# failed_seed: 20 1138 179 F 1215 354
+# failed_seed: 20 1143 113 F 1151 160
+# failed_seed: 20 1143 110 F 1189 40
+# failed_seed: 20 1143 127 F 1196 80
+# failed_seed: 20 1143 175 F 1198 91
+# failed_seed: 20 1143 110 F 1230 214
+# failed_seed: 20 1143 190 F 1289 26
+# failed_seed: 20 1143 113 F 1297 145
+# failed_seed: 20 1143 113 F 1327 130
+# failed_seed: 20 1143 116 F 1328 106
+# failed_seed: 20 1143 121 F 1360 131
+# failed_seed: 20 1143 119 F 1365 85
+# failed_seed: 20 1143 127 F 1456 122
+# failed_seed: 20 1147 69 F 1331 182
+# failed_seed: 20 1151 160 F 1189 43
+# failed_seed: 20 1151 174 F 1196 80
+# failed_seed: 20 1151 222 F 1198 91
+# failed_seed: 20 1151 108 F 1230 162
+# failed_seed: 20 1151 237 F 1289 26
+# failed_seed: 20 1151 147 F 1297 132
+# failed_seed: 20 1151 151 F 1327 121
+# failed_seed: 20 1151 102 F 1328 44
+# failed_seed: 20 1151 139 F 1360 102
+# failed_seed: 20 1151 136 F 1365 54
+# failed_seed: 20 1151 174 F 1456 122
+# failed_seed: 20 1151 131 F 1722 56
+# failed_seed: 20 1151 85 F 1837 2
+# failed_seed: 20 1153 84 F 1161 187
+# failed_seed: 20 1170 122 F 1347 203
+# failed_seed: 20 1189 88 F 1196 113
+# failed_seed: 20 1189 105 F 1198 91
+# failed_seed: 20 1189 40 F 1230 214
+# failed_seed: 20 1189 43 F 1297 145
+# failed_seed: 20 1189 43 F 1327 130
+# failed_seed: 20 1189 82 F 1328 142
+# failed_seed: 20 1189 69 F 1365 105
+# failed_seed: 20 1189 69 F 1456 134
+# failed_seed: 20 1196 136 F 1198 98
+# failed_seed: 20 1196 80 F 1230 231
+# failed_seed: 20 1196 144 F 1289 26
+# failed_seed: 20 1196 113 F 1297 189
+# failed_seed: 20 1196 80 F 1327 144
+# failed_seed: 20 1196 80 F 1328 117
+# failed_seed: 20 1196 149 F 1360 205
+# failed_seed: 20 1196 80 F 1365 93
+# failed_seed: 20 1196 74 F 1456 116
+# failed_seed: 20 1198 91 F 1230 279
+# failed_seed: 20 1198 130 F 1289 50
+# failed_seed: 20 1198 98 F 1297 213
+# failed_seed: 20 1198 98 F 1327 199
+# failed_seed: 20 1198 130 F 1360 224
+# failed_seed: 20 1198 91 F 1365 141
+# failed_seed: 20 1198 98 F 1456 178
+# failed_seed: 20 1210 183 F 1516 129
+# failed_seed: 20 1226 164 F 1296 164
+# failed_seed: 20 1230 294 F 1289 26
+# failed_seed: 20 1230 217 F 1297 145
+# failed_seed: 20 1230 217 F 1327 130
+# failed_seed: 20 1230 220 F 1328 106
+# failed_seed: 20 1230 225 F 1360 131
+# failed_seed: 20 1230 223 F 1365 85
+# failed_seed: 20 1230 231 F 1456 122
+# failed_seed: 20 1231 48 F 1318 69
+# failed_seed: 20 1260 142 F 1615 5
+# failed_seed: 20 1268 219 F 1514 8
+# failed_seed: 20 1268 147 F 1627 57
+# failed_seed: 20 1268 147 F 1747 49
+# failed_seed: 20 1270 211 F 1279 121
+# failed_seed: 20 1277 210 F 1402 62
+# failed_seed: 20 1277 296 F 1402 209
+# failed_seed: 20 1277 80 F 1694 154
+# failed_seed: 20 1288 95 F 1374 200
+# failed_seed: 20 1289 26 F 1297 221
+# failed_seed: 20 1289 26 F 1327 207
+# failed_seed: 20 1289 31 F 1328 185
+# failed_seed: 20 1289 31 F 1360 205
+# failed_seed: 20 1289 26 F 1365 156
+# failed_seed: 20 1289 26 F 1456 186
+# failed_seed: 20 1294 127 F 1786 128
+# failed_seed: 20 1297 136 F 1327 121
+# failed_seed: 20 1297 183 F 1328 142
+# failed_seed: 20 1297 132 F 1360 110
+# failed_seed: 20 1297 132 F 1365 65
+# failed_seed: 20 1297 170 F 1456 134
+# failed_seed: 20 1299 77 F 1776 189
+# failed_seed: 20 1301 114 F 1362 209
+# failed_seed: 20 1301 56 F 1500 183
+# failed_seed: 20 1302 104 F 1433 42
+# failed_seed: 20 1325 139 F 1621 4
+# failed_seed: 20 1327 133 F 1328 106
+# failed_seed: 20 1327 138 F 1360 131
+# failed_seed: 20 1327 136 F 1365 85
+# failed_seed: 20 1327 144 F 1456 122
+# failed_seed: 20 1328 111 F 1360 131
+# failed_seed: 20 1328 109 F 1365 85
+# failed_seed: 20 1328 117 F 1456 122
+# failed_seed: 20 1351 210 F 1859 0
+# failed_seed: 20 1351 92 F 1936 27
+# failed_seed: 20 1360 102 F 1365 57
+# failed_seed: 20 1360 205 F 1456 191
+# failed_seed: 20 1360 102 F 1722 64
+# failed_seed: 20 1360 102 F 1837 56
+# failed_seed: 20 1362 209 F 1500 240
+# failed_seed: 20 1365 93 F 1456 122
+# failed_seed: 20 1365 54 F 1722 61
+# failed_seed: 20 1365 54 F 1837 53
+# failed_seed: 20 1381 106 F 1661 206
+# failed_seed: 20 1382 53 F 1933 221
+# failed_seed: 20 1401 128 F 1710 227
+# failed_seed: 20 1402 62 F 1694 284
+# failed_seed: 20 1415 180 F 1724 31
+# failed_seed: 20 1441 91 F 1513 118
+# failed_seed: 20 1449 162 F 1451 130
+# failed_seed: 20 1469 147 F 1874 64
+# failed_seed: 20 1475 87 F 1594 15
+# failed_seed: 20 1514 8 F 1627 129
+# failed_seed: 20 1514 8 F 1747 121
+# failed_seed: 20 1536 0 F 1630 0
+# failed_seed: 20 1543 286 F 1543 369
+# failed_seed: 20 1544 0 F 1546 178
+# failed_seed: 20 1544 0 F 1547 162
+# failed_seed: 20 1544 24 F 1549 0
+# failed_seed: 20 1544 0 F 1550 153
+# failed_seed: 20 1544 15 F 1551 0
+# failed_seed: 20 1546 28 F 1547 12
+# failed_seed: 20 1546 202 F 1549 0
+# failed_seed: 20 1546 30 F 1550 4
+# failed_seed: 20 1546 193 F 1551 0
+# failed_seed: 20 1547 186 F 1549 0
+# failed_seed: 20 1547 14 F 1550 4
+# failed_seed: 20 1547 177 F 1551 0
+# failed_seed: 20 1548 49 F 1552 44
+# failed_seed: 20 1548 0 F 1554 49
+# failed_seed: 20 1548 6 F 1555 107
+# failed_seed: 20 1549 0 F 1550 177
+# failed_seed: 20 1549 0 F 1551 9
+# failed_seed: 20 1550 168 F 1551 0
+# failed_seed: 20 1552 44 F 1554 98
+# failed_seed: 20 1552 130 F 1555 232
+# failed_seed: 20 1554 55 F 1555 107
+# failed_seed: 20 1564 22 F 1847 145
+# failed_seed: 20 1578 0 F 1682 12
+# failed_seed: 20 1592 0 F 1595 8
+# failed_seed: 20 1620 0 F 1796 6
+# failed_seed: 20 1620 56 F 1937 36
+# failed_seed: 20 1624 108 F 1624 138
+# failed_seed: 20 1624 119 F 1624 149
+# failed_seed: 20 1624 120 F 1624 150
+# failed_seed: 20 1624 121 F 1624 151
+# failed_seed: 20 1624 122 F 1624 152
+# failed_seed: 20 1624 123 F 1624 153
+# failed_seed: 20 1624 124 F 1624 154
+# failed_seed: 20 1624 125 F 1624 155
+# failed_seed: 20 1624 126 F 1624 156
+# failed_seed: 20 1624 127 F 1624 157
+# failed_seed: 20 1624 128 F 1624 158
+# failed_seed: 20 1624 129 F 1624 159
+# failed_seed: 20 1624 130 F 1624 160
+# failed_seed: 20 1624 131 F 1624 161
+# failed_seed: 20 1624 132 F 1624 162
+# failed_seed: 20 1624 133 F 1624 163
+# failed_seed: 20 1624 124 F 1624 184
+# failed_seed: 20 1624 199 F 1624 259
+# failed_seed: 20 1624 201 F 1624 261
+# failed_seed: 20 1624 202 F 1624 262
+# failed_seed: 20 1624 203 F 1624 263
+# failed_seed: 20 1624 204 F 1624 264
+# failed_seed: 20 1624 205 F 1624 265
+# failed_seed: 20 1627 8 F 1747 0
+# failed_seed: 20 1640 92 F 1840 0
+# failed_seed: 20 1646 2 F 1862 3
+# failed_seed: 20 1649 5 F 1708 0
+# failed_seed: 20 1649 20 F 1736 0
+# failed_seed: 20 1649 13 F 1931 0
+# failed_seed: 20 1653 0 F 1828 74
+# failed_seed: 20 1653 0 F 1947 68
+# failed_seed: 20 1663 15 F 1893 42
+# failed_seed: 20 1664 41 F 1871 44
+# failed_seed: 20 1664 41 F 1892 44
+# failed_seed: 20 1668 62 F 1668 107
+# failed_seed: 20 1668 95 F 1668 140
+# failed_seed: 20 1668 96 F 1668 141
+# failed_seed: 20 1668 97 F 1668 142
+# failed_seed: 20 1668 98 F 1668 143
+# failed_seed: 20 1668 99 F 1668 144
+# failed_seed: 20 1668 100 F 1668 145
+# failed_seed: 20 1668 101 F 1668 146
+# failed_seed: 20 1668 102 F 1668 147
+# failed_seed: 20 1668 103 F 1668 148
+# failed_seed: 20 1668 104 F 1668 149
+# failed_seed: 20 1668 105 F 1668 150
+# failed_seed: 20 1668 106 F 1668 151
+# failed_seed: 20 1668 62 F 1668 152
+# failed_seed: 20 1681 23 F 1808 23
+# failed_seed: 20 1696 0 F 1781 23
+# failed_seed: 20 1705 0 F 1709 0
+# failed_seed: 20 1708 15 F 1736 0
+# failed_seed: 20 1708 8 F 1931 0
+# failed_seed: 20 1722 20 F 1837 12
+# failed_seed: 20 1734 47 F 1814 54
+# failed_seed: 20 1736 0 F 1931 7
+# failed_seed: 20 1745 6 F 1764 7
+# failed_seed: 20 1745 6 F 1767 6
+# failed_seed: 20 1745 25 F 1882 15
+# failed_seed: 20 1745 6 F 1896 0
+# failed_seed: 20 1764 7 F 1767 6
+# failed_seed: 20 1764 48 F 1882 37
+# failed_seed: 20 1764 7 F 1896 0
+# failed_seed: 20 1767 25 F 1882 15
+# failed_seed: 20 1767 6 F 1896 0
+# failed_seed: 20 1782 39 F 1827 0
+# failed_seed: 20 1784 7 F 1799 0
+# failed_seed: 20 1787 62 F 1810 55
+# failed_seed: 20 1788 0 F 1850 9
+# failed_seed: 20 1796 62 F 1937 36
+# failed_seed: 20 1802 3 F 1877 0
+# failed_seed: 20 1820 16 F 1909 16
+# failed_seed: 20 1828 6 F 1947 0
+# failed_seed: 20 1851 54 F 1879 9
+# failed_seed: 20 1851 33 F 1950 58
+# failed_seed: 20 1859 15 F 1936 162
+# failed_seed: 20 1868 41 F 1948 25
+# failed_seed: 20 1871 0 F 1892 0
+# failed_seed: 20 1879 81 F 1950 151
+# failed_seed: 20 1882 0 F 1896 3
+# failed_seed: 20 1910 0 F 1926 25
+# failed_seed: 20 1912 46 F 1913 46
+# failed_seed: 20 1939 0 F 1940 10
+# failed_seed: 20 1941 0 F 1942 31
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, seedlen, s. seedstart, q. seedstart
+# failed_seed: 20 95 0 P 1624 174
+# failed_seed: 20 95 0 P 1624 234
+# failed_seed: 20 218 90 P 296 21
+# failed_seed: 20 252 91 P 285 18
+# failed_seed: 20 284 0 P 476 79
+# failed_seed: 20 299 0 P 883 28
+# failed_seed: 20 859 207 P 1214 178
+# failed_seed: 20 859 208 P 1214 183
+# failed_seed: 20 859 208 P 1214 187
+# failed_seed: 20 859 208 P 1214 191
+# failed_seed: 20 859 208 P 1214 195
+# TIME seedextend-greedy-20-600-80-5-64 overall 0.091930
+# space peak in megabytes: 2.30 (in 1046 events)
+# mmap space peak in megabytes: 0.52
+# combined space peak in megabytes: 2.82
diff --git a/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigar-seqlength.matches b/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigar-seqlength.matches
new file mode 100644
index 0000000..457ba24
--- /dev/null
+++ b/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigar-seqlength.matches
@@ -0,0 +1,11 @@
+# Options: -ii at1MB -qii Atinsert.fna -l 100 -outfmt bitscore evalue s.seqlen q.seqlen cigar -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, bit score, evalue, s. seqlen, q. seqlen, cigar
+201 0 74 F 201 0 74 300 34 83.08 171.5 4e-44 275 275 201M
+134 2 232 F 134 6 161 193 25 81.34 102.8 6e-23 719 797 134M
+743 3 3 F 743 3 3 1048 146 80.35 525.2 4e-150 746 746 743M
+291 3 3 F 291 5 41 408 58 80.07 202.4 6e-53 746 800 176M1D1M1I113M
+291 5 41 F 291 3 3 408 58 80.07 202.4 6e-53 800 746 176M1I1M1D113M
+134 6 161 F 134 2 232 193 25 81.34 102.8 5e-23 797 719 134M
+134 6 161 F 134 16 316 190 26 80.60 97.7 2e-21 797 865 134M
+369 7 2 F 369 7 2 528 70 81.03 274.5 6e-75 371 371 369M
+134 16 316 F 134 6 161 190 26 80.60 97.7 2e-21 865 797 134M
diff --git a/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigarX-seqlength.matches b/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigarX-seqlength.matches
new file mode 100644
index 0000000..a422376
--- /dev/null
+++ b/testdata/see-ext-at1MB-Atinsert100-evalue-bitscore-cigarX-seqlength.matches
@@ -0,0 +1,12 @@
+# Options: -ii at1MB -qii Atinsert.fna -l 100 -outfmt bitscore evalue s.seqlen q.seqlen cigarX -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, bit score, evalue, s. seqlen, q. seqlen, cigarX
+201 0 74 F 201 0 74 300 34 83.08 171.5 4e-44 275 275 2=1X3=1X1=2X4=1X14=1X1=4X5=1X2=1X6=1X10=1X10=1X12=1X2=1X3=1X14=1X8=1X7=1X4=1X5=1X2=1X2=1X5=1X1=1X2=1X6=1X4=1X2=2X9=2X21=
+134 2 232 F 134 6 161 193 25 81.34 102.8 6e-23 719 797 10=2X7=1X6=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X8=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+743 3 3 F 743 3 3 1048 146 80.35 525.2 4e-150 746 746 2=1X1=1X7=1X2=1X8=1X1=1X1=4X12=1X24=1X1=1X3=1X2=3X3=1X2=1X1=1X2=2X5=1X8=2X1=1X2=1X1=1X9=1X7=1X3=1X8=1X1=1X3=1X22=1X6=1X9=2X2=1X7=1X12=2X2=1X17=1X2=1X8=1X2=1X2=1X3=1X5=2X1=1X4=2X9=1X3=2X4=2X1=2X1=3X1=1X7=1X20=1X5=2X6=2X5=1X2=1X2=1X12=4X1=1X1=2X7=1X1=2X5=1X7=1X2=1X25=1X2=1X3=2X6=1X4=1X2=1X1=1X5=2X1=1X1=3X1=1X1=1X14=1X2=1X3=1X2=1X6=1X2=1X4=1X3=3X5=2X1=1X3=1X2=1X12=1X5=1X4=2X4=2X5=1X1=1X9=1X5=1X11=1X20=2X14=1X7=1X2=1X9=1X6=1X10=1X2=1X3=1X [...]
+291 3 3 F 291 5 41 408 58 80.07 202.4 6e-53 746 800 2=1X1=1X7=1X2=1X8=1X1=1X1=4X12=1X24=1X1=1X3=1X2=3X3=1X2=1X1=1X2=2X5=1X8=2X1=1X2=1X1=1X9=1X7=1X3=1X8=1X1=1X3=1X22=1D1=1I5=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X8=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+291 5 41 F 291 3 3 408 58 80.07 202.4 6e-53 800 746 2=1X1=1X7=1X2=1X8=1X1=1X1=4X12=1X24=1X1=1X3=1X2=3X3=1X2=1X1=1X2=2X5=1X8=2X1=1X2=1X1=1X9=1X7=1X3=1X8=1X1=1X3=1X22=1I1=1D5=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X8=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+134 6 161 F 134 2 232 193 25 81.34 102.8 5e-23 797 719 10=2X7=1X6=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X8=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+134 6 161 F 134 16 316 190 26 80.60 97.7 2e-21 797 865 10=2X7=1X6=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X2=1X5=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+369 7 2 F 369 7 2 528 70 81.03 274.5 6e-75 371 371 2=1X5=1X8=1X3=1X5=1X2=2X4=1X1=1X2=1X1=1X7=1X2=1X8=1X1=1X1=4X12=1X24=1X1=1X3=1X2=3X6=1X1=1X2=2X5=1X8=2X1=1X2=1X1=1X9=1X7=1X3=1X8=1X1=1X3=1X18=1X1=5X1=4X1=2X6=2X2=1X7=1X12=1X20=1X5=2X6=1X8=1X11=2X2=1X12=1X8=1X23=1X5=
+134 16 316 F 134 6 161 190 26 80.60 97.7 2e-21 865 797 10=2X7=1X6=1X9=2X2=1X7=1X12=2X2=1X16=2X2=1X2=1X5=1X2=1X2=1X3=1X5=2X1=1X1=1X2=2X9=1X3=
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, bit score, evalue, s. seqlen, q. seqlen, cigarX
diff --git a/testdata/see-ext-at1MB-U8-200-al-from-dtrace.matches b/testdata/see-ext-at1MB-U8-200-al-from-dtrace.matches
new file mode 100644
index 0000000..3b99960
--- /dev/null
+++ b/testdata/see-ext-at1MB-U8-200-al-from-dtrace.matches
@@ -0,0 +1,47 @@
+# Options: -ii at1MB -qii U89959_genomic.fas -outfmt trace=20 -l 200 -seedlength 13 -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+333 1265 0 F 330 0 72423 612 17 94.87
+Sbjct 0 ccttagangg-tgggaaattgcatgagtttggcacatcccttnttctnncggatttngga 58
+ ||||||| || |||||||| |||||||| ||||||||||||| |||| ||||||| |||
+Query 72423 ccttagaaggatgggaaat-gcatgagtgtggcacatcccttcttctctcggattt-gga 72480
+
+Sbjct 59 tcnnagtatgggaagccctgtctcagcctnngcttccagcntctcctccttccacatcnt 118
+ | ||||||||||||| |||||||||| ||||||||| ||||||||||||||||| |
+Query 72481 cca-agtatgggaagcc-tgtctcagccacggcttccagcctctcctccttccacatcat 72538
+
+Sbjct 119 taaaactccaaccttggaagattttaggagaatgagagcgacacgctctgtgcttctttt 178
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72539 taaaactccaaccttggaagattttaggagaatgagagcgacacgctctgtgcttctttt 72598
+
+Sbjct 179 ccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacaca 238
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72599 ccttatgatccagctcttccacgcacaaatgaactatgaaacatatataaagcgcacaca 72658
+
+Sbjct 239 tatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcg 298
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 72659 tatatttatgcatatcaagcttttggtgattatggtattgatagagtcaaattaagctcg 72718
+
+Sbjct 299 gtgactatggtattaataagagtactatttcctt 332
+ ||||||||||||||||||||||||||||||||||
+Query 72719 gtgactatggtattaataagagtactatttcctt 72752
+
+222 1361 148 F 222 0 105629 435 3 98.65
+Sbjct 148 gatggttacttcaagatcaggngaggaacgaacgaatgtggcattgaacagagtnttgta 207
+ ||||||||||||||||||||| |||||||||||||||||||||||||||||||| |||||
+Query 105629 gatggttacttcaagatcaggagaggaacgaacgaatgtggcattgaacagagtgttgta 105688
+
+Sbjct 208 gctggtttaccttcagngaagaacgtatttaaaggtattaccacttcagatgatcttctg 267
+ |||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||
+Query 105689 gctggtttaccttcagagaagaacgtatttaaaggtattaccacttcagatgatcttctg 105748
+
+Sbjct 268 gtttcctcagtctaaacaagacgatgtgtccctacttctgtaatatatcatttgcaactg 327
+ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+Query 105749 gtttcctcagtctaaacaagacgatgtgtccctacttctgtaatatatcatttgcaactg 105808
+
+Sbjct 328 tgttgtaagtttaatataccattgaaagaatcaccttcaatc 369
+ ||||||||||||||||||||||||||||||||||||||||||
+Query 105809 tgttgtaagtttaatataccattgaaagaatcaccttcaatc 105850
+
+# space peak in megabytes: 0.31 (in 802 events)
+# mmap space peak in megabytes: 0.55
+# combined space peak in megabytes: 0.86
diff --git a/testdata/see-ext-at1MB-maxmat250.matches b/testdata/see-ext-at1MB-maxmat250.matches
new file mode 100644
index 0000000..a2d0c46
--- /dev/null
+++ b/testdata/see-ext-at1MB-maxmat250.matches
@@ -0,0 +1,94 @@
+# Options: -ii at1MB -l 250 -maxmat
+# Fields: s. len, s. seqnum, s. start, strand, q. seqnum, q. start
+ 316 2 6 F 16 90
+ 275 3 181 F 6 182
+ 273 4 17 F 47 1
+ 517 64 1 F 65 1
+ 402 78 364 F 1488 147
+ 388 79 237 F 1495 181
+ 291 221 86 F 266 86
+ 392 229 1 F 270 1
+ 283 309 99 F 804 174
+ 282 335 27 F 1059 234
+ 312 355 170 F 499 61
+ 294 355 188 F 589 87
+ 261 380 141 F 451 174
+ 263 380 141 F 630 154
+ 261 380 141 F 736 250
+ 263 380 141 F 902 161
+ 252 380 141 F 1100 181
+ 263 380 141 F 1151 194
+ 263 380 141 F 1230 251
+ 267 409 197 F 456 52
+ 293 432 122 F 492 84
+ 301 432 122 F 825 184
+ 276 432 122 F 1469 179
+ 303 449 121 F 868 262
+ 263 451 172 F 630 152
+ 348 451 87 F 736 163
+ 348 451 87 F 902 74
+ 277 451 149 F 1100 156
+ 348 451 87 F 1151 107
+ 294 451 141 F 1230 218
+ 266 452 150 F 882 151
+ 259 473 133 F 766 170
+ 326 474 215 F 543 155
+ 265 474 276 F 658 338
+ 266 474 275 F 713 175
+ 321 474 215 F 912 163
+ 305 474 236 F 1297 171
+ 298 480 158 F 926 101
+ 316 489 110 F 1339 126
+ 300 492 77 F 825 177
+ 286 492 74 F 1469 169
+ 294 499 79 F 589 87
+ 279 505 99 F 633 123
+ 279 536 202 F 567 120
+ 280 536 201 F 1082 147
+ 265 543 216 F 658 338
+ 266 543 215 F 713 175
+ 267 543 136 F 761 20
+ 274 543 129 F 826 155
+ 326 543 150 F 912 158
+ 305 543 176 F 1297 171
+ 260 546 190 F 890 128
+ 279 567 120 F 1082 148
+ 253 580 105 F 762 163
+ 263 630 152 F 736 248
+ 265 630 152 F 902 159
+ 254 630 152 F 1100 179
+ 265 630 152 F 1151 192
+ 265 630 152 F 1230 249
+ 265 658 338 F 713 176
+ 260 658 338 F 912 224
+ 265 658 338 F 1297 211
+ 261 713 175 F 912 223
+ 266 713 175 F 1297 210
+ 367 736 144 F 902 55
+ 277 736 225 F 1100 156
+ 369 736 142 F 1151 86
+ 294 736 217 F 1230 218
+ 320 761 20 F 826 162
+ 253 761 34 F 912 158
+ 284 819 182 F 975 189
+ 337 819 172 F 1500 155
+ 283 825 177 F 1469 172
+ 253 826 176 F 912 158
+ 286 884 136 F 890 150
+ 294 892 131 F 1300 191
+ 277 902 136 F 1100 156
+ 369 902 55 F 1151 88
+ 296 902 128 F 1230 218
+ 300 912 184 F 1297 171
+ 284 975 189 F 1500 165
+ 255 985 44 F 1426 108
+ 277 1100 156 F 1151 169
+ 277 1100 156 F 1230 226
+ 296 1151 161 F 1230 218
+ 303 1210 184 F 1516 130
+ 252 1802 4 F 1877 1
+# Fields: s. len, s. seqnum, s. start, strand, q. seqnum, q. start
+# TIME seedextend-greedy-30-250-80-5-64 overall 0.036999
+# space peak in megabytes: 1.52 (in 1049 events)
+# mmap space peak in megabytes: 0.52
+# combined space peak in megabytes: 2.04
diff --git a/testdata/see-ext-at1MB-mincoverage200-tabsep.matches b/testdata/see-ext-at1MB-mincoverage200-tabsep.matches
new file mode 100644
index 0000000..ceb0f10
--- /dev/null
+++ b/testdata/see-ext-at1MB-mincoverage200-tabsep.matches
@@ -0,0 +1,750 @@
+# Options: -ii at1MB -mincoverage 200 -outfmt tabsep custom s.seqnum s.start s.len strand q.seqnum q.start q.len editdist -minidentity 80 -history 60
+# Fields: s. seqnum, s. start, s. len, strand, q. seqnum, q. start, q. len, editdist
+1 0 597 F 4 7 592 97
+1 294 323 F 16 0 312 23
+1 9 538 F 47 0 523 94
+2 72 577 F 3 0 606 89
+2 34 626 F 5 0 656 73
+2 176 484 F 6 104 513 89
+2 0 706 F 16 84 749 62
+2 0 660 F 39 0 687 94
+3 0 668 F 5 38 660 63
+3 14 639 F 6 14 631 69
+3 0 242 F 7 38 242 20
+3 0 655 F 16 156 650 86
+3 0 653 F 39 72 643 31
+4 16 613 F 47 0 571 54
+5 52 704 F 6 14 700 116
+5 0 280 F 7 0 280 19
+5 0 742 F 16 118 746 55
+5 0 756 F 39 34 750 77
+6 104 599 F 16 260 601 95
+6 14 783 F 39 86 788 57
+7 0 280 F 39 34 280 24
+11 135 467 F 29 138 449 50
+16 84 767 F 39 0 766 95
+18 0 397 F 46 194 417 60
+22 368 293 F 29 0 282 26
+33 105 321 F 38 672 320 7
+34 157 458 F 1317 0 442 37
+35 0 230 F 42 0 229 9
+35 140 399 F 72 145 402 28
+37 0 390 F 1823 0 401 27
+40 152 303 F 747 65 303 7
+61 134 381 F 64 137 380 16
+61 134 430 F 65 137 438 27
+64 0 517 F 65 0 517 0
+78 86 461 F 80 149 459 40
+78 560 201 F 80 587 204 25
+78 223 542 F 1488 8 540 29
+79 56 568 F 1495 0 568 38
+80 284 324 F 1488 8 322 57
+80 587 204 F 1488 343 201 25
+120 88 244 F 1624 0 244 4
+131 0 319 F 158 0 319 2
+197 112 366 F 385 0 359 21
+197 126 335 F 665 0 336 26
+204 13 200 F 273 0 200 0
+221 0 397 F 266 0 397 2
+223 0 417 F 271 2 414 10
+229 0 418 F 270 0 419 3
+242 0 378 F 294 0 379 7
+244 0 309 F 272 0 309 7
+248 0 268 F 292 0 269 15
+306 0 341 F 1349 124 341 16
+309 7 374 F 804 88 368 13
+310 0 367 F 1363 6 366 32
+313 34 270 F 1782 2 265 21
+317 66 302 F 1128 0 297 21
+318 13 383 F 905 59 387 23
+319 2 341 F 626 202 336 24
+322 70 344 F 793 68 346 42
+335 0 308 F 1059 206 309 1
+336 36 405 F 1703 0 419 30
+355 111 370 F 499 1 371 8
+355 97 384 F 589 0 380 13
+356 33 397 F 496 1 390 22
+358 77 291 F 1678 0 292 15
+369 21 360 F 1409 0 360 20
+372 9 342 F 1348 71 339 7
+376 0 316 F 1277 1 334 28
+376 132 295 F 1402 3 295 14
+376 0 439 F 1694 81 450 62
+379 0 379 F 1785 85 398 48
+380 1 400 F 451 26 408 14
+380 0 282 F 454 37 285 31
+380 0 317 F 474 97 326 32
+380 107 296 F 481 0 304 14
+380 14 369 F 483 0 380 16
+380 0 317 F 543 42 321 34
+380 72 331 F 579 0 330 20
+380 22 381 F 605 0 383 19
+380 123 280 F 610 0 283 23
+380 0 403 F 630 10 406 29
+380 79 324 F 641 0 324 12
+380 110 258 F 642 0 257 13
+380 0 317 F 658 167 318 33
+380 0 401 F 736 106 404 7
+380 8 309 F 798 0 316 41
+380 0 317 F 826 66 323 28
+380 3 400 F 846 215 403 10
+380 0 403 F 902 16 407 9
+380 0 317 F 912 47 324 33
+380 0 296 F 988 39 300 28
+380 0 296 F 1049 51 298 20
+380 2 401 F 1100 35 408 23
+380 2 401 F 1143 2 407 29
+380 0 403 F 1151 49 407 8
+380 55 348 F 1196 9 356 25
+380 88 315 F 1198 2 326 24
+380 0 403 F 1230 104 409 13
+380 162 239 F 1289 3 239 8
+380 0 399 F 1360 9 406 25
+380 35 368 F 1365 2 373 16
+385 14 328 F 665 1 335 24
+386 165 331 F 1201 5 344 33
+404 165 475 F 819 35 466 44
+404 186 418 F 975 52 420 26
+404 286 354 F 1301 0 358 24
+404 213 420 F 1362 2 444 55
+404 187 453 F 1500 29 455 34
+406 8 434 F 542 0 430 31
+406 40 402 F 1056 0 413 34
+409 143 320 F 456 0 318 2
+412 83 430 F 1525 0 436 37
+413 38 211 F 1250 74 205 30
+422 168 352 F 1126 0 367 27
+422 1 383 F 1794 64 394 49
+426 27 434 F 795 0 429 47
+428 7 317 F 1441 36 313 17
+428 7 317 F 1513 64 312 14
+432 37 377 F 492 0 376 5
+432 9 409 F 652 0 410 28
+432 58 335 F 742 0 333 20
+432 0 422 F 825 61 423 18
+432 25 386 F 862 0 373 28
+432 0 397 F 1469 51 403 24
+432 23 392 F 1874 0 392 17
+440 2 339 F 765 95 335 17
+442 56 374 F 1510 8 375 31
+447 0 366 F 746 16 355 39
+449 0 423 F 868 143 421 14
+451 0 315 F 454 14 308 39
+451 0 350 F 474 74 349 37
+451 140 294 F 481 0 302 13
+451 41 375 F 483 0 380 15
+451 105 329 F 579 0 328 19
+451 51 383 F 605 0 381 18
+451 156 278 F 610 0 281 23
+451 49 385 F 630 31 383 24
+451 112 322 F 641 0 322 11
+451 143 258 F 642 0 257 13
+451 0 350 F 658 146 339 39
+451 0 434 F 736 83 427 12
+451 1 349 F 826 42 347 38
+451 0 434 F 846 189 427 15
+451 10 424 F 902 1 420 19
+451 0 350 F 912 25 346 41
+451 1 328 F 988 17 322 34
+451 0 329 F 1049 28 321 26
+451 0 434 F 1100 12 429 33
+451 47 387 F 1143 18 389 22
+451 0 434 F 1151 26 428 13
+451 77 357 F 1196 0 363 28
+451 121 313 F 1198 2 324 23
+451 0 434 F 1230 80 431 20
+451 195 239 F 1289 3 239 8
+451 15 417 F 1360 1 414 35
+451 62 372 F 1365 0 373 15
+452 0 415 F 882 3 413 26
+454 5 317 F 474 64 320 28
+454 52 270 F 483 0 278 35
+454 5 317 F 543 13 311 42
+454 7 315 F 658 138 308 34
+454 4 318 F 736 73 318 32
+454 5 317 F 826 31 319 34
+454 4 318 F 846 180 317 38
+454 23 299 F 902 1 301 33
+454 7 315 F 912 17 315 33
+454 4 318 F 1049 18 318 35
+454 3 319 F 1151 16 319 32
+454 2 320 F 1230 67 325 40
+454 62 265 F 1722 0 264 14
+454 70 424 F 1837 0 432 21
+455 0 255 F 1260 213 254 7
+460 27 453 F 1351 0 452 28
+460 238 231 F 1859 0 231 3
+460 93 376 F 1936 2 376 6
+461 0 253 F 1850 260 259 10
+470 80 391 F 1013 0 395 24
+473 3 388 F 766 41 387 13
+474 112 297 F 483 0 303 31
+474 48 492 F 543 0 480 23
+474 121 302 F 605 0 297 37
+474 0 540 F 658 80 522 29
+474 86 454 F 713 0 440 36
+474 0 423 F 736 18 408 46
+474 176 341 F 761 0 341 4
+474 105 435 F 798 0 433 19
+474 35 480 F 826 2 479 15
+474 0 423 F 846 114 418 52
+474 118 422 F 849 0 417 27
+474 82 341 F 902 0 337 33
+474 47 488 F 912 0 483 13
+474 189 351 F 935 37 360 26
+474 189 350 F 935 37 364 37
+474 57 407 F 988 0 407 50
+474 45 419 F 1049 0 417 38
+474 156 384 F 1076 1 383 28
+474 65 358 F 1100 3 354 49
+474 87 453 F 1120 0 444 33
+474 46 377 F 1151 0 370 34
+474 1 422 F 1230 2 425 56
+474 40 500 F 1297 0 475 41
+474 68 447 F 1327 0 436 36
+474 88 335 F 1360 1 332 43
+474 132 291 F 1365 0 289 31
+477 0 363 F 1052 64 360 16
+480 46 409 F 926 0 398 21
+481 0 284 F 483 103 277 13
+481 0 304 F 579 34 296 20
+481 0 304 F 605 85 298 16
+481 19 285 F 610 0 283 27
+481 0 304 F 630 120 296 16
+481 1 303 F 641 31 293 21
+481 0 302 F 736 216 294 13
+481 0 304 F 846 322 296 15
+481 0 304 F 902 127 296 13
+481 0 304 F 1100 147 296 15
+481 0 304 F 1143 113 296 16
+481 0 304 F 1151 160 296 13
+481 0 304 F 1196 63 302 24
+481 0 304 F 1198 25 303 26
+481 0 304 F 1230 217 296 13
+481 71 231 F 1289 11 231 7
+481 0 300 F 1360 123 292 20
+481 0 304 F 1365 78 297 17
+483 67 313 F 579 0 310 21
+483 10 370 F 605 0 363 24
+483 2 378 F 630 26 370 28
+483 74 306 F 641 0 304 13
+483 106 259 F 642 0 257 14
+483 0 314 F 658 180 305 38
+483 0 380 F 736 121 371 14
+483 0 314 F 826 80 309 37
+483 0 380 F 846 227 371 16
+483 0 380 F 902 30 373 16
+483 0 314 F 912 62 309 38
+483 0 292 F 1049 65 284 25
+483 0 380 F 1100 48 375 21
+483 2 378 F 1143 15 374 29
+483 0 380 F 1151 63 373 14
+483 49 331 F 1196 9 336 23
+483 83 297 F 1198 2 306 22
+483 0 380 F 1230 119 374 18
+483 158 222 F 1289 3 221 7
+483 0 380 F 1360 26 373 27
+483 31 349 F 1365 6 349 16
+489 0 425 F 1339 12 429 16
+492 0 376 F 652 29 377 22
+492 21 334 F 742 0 333 20
+492 0 376 F 825 98 378 7
+492 0 373 F 862 12 361 24
+492 0 359 F 1469 92 362 15
+492 0 376 F 1874 14 377 14
+497 81 361 F 1544 2 358 5
+497 0 268 F 1546 100 264 16
+497 0 268 F 1547 84 264 18
+497 105 337 F 1549 0 336 17
+497 0 268 F 1550 75 264 22
+497 95 260 F 1551 0 258 6
+499 1 371 F 589 12 368 15
+505 0 377 F 633 21 380 10
+506 0 308 F 988 123 303 16
+506 0 342 F 1049 133 337 11
+506 0 320 F 1189 14 317 29
+506 2 318 F 1328 75 315 18
+522 41 409 F 1134 0 410 32
+530 60 360 F 544 0 360 12
+530 14 406 F 1343 30 398 23
+536 87 393 F 567 0 398 25
+536 109 369 F 965 0 368 13
+536 124 356 F 1034 0 362 17
+536 58 422 F 1082 12 414 27
+538 0 295 F 667 102 288 22
+539 94 328 F 1080 0 328 18
+541 0 309 F 1006 81 314 20
+542 30 400 F 1056 0 413 25
+543 3 477 F 658 126 476 21
+543 44 436 F 713 11 429 24
+543 0 363 F 736 60 366 41
+543 117 340 F 761 0 341 4
+543 51 429 F 798 3 430 22
+543 0 455 F 826 15 466 23
+543 0 363 F 846 166 366 45
+543 61 419 F 849 1 416 29
+543 29 334 F 902 0 337 41
+543 0 475 F 912 1 482 20
+543 130 350 F 935 37 360 26
+543 130 349 F 935 37 364 37
+543 0 404 F 1049 3 414 47
+543 97 383 F 1076 1 383 27
+543 33 447 F 1120 0 444 31
+543 0 363 F 1151 2 368 42
+543 13 350 F 1230 70 357 46
+543 0 480 F 1297 7 468 31
+543 16 439 F 1327 0 436 31
+543 76 287 F 1365 2 287 30
+544 0 360 F 1343 70 358 15
+545 1 321 F 1453 139 317 16
+546 67 382 F 884 0 373 21
+546 59 390 F 890 2 385 19
+549 0 436 F 661 68 448 37
+558 0 376 F 1254 134 368 19
+560 33 339 F 1069 1 338 21
+567 23 373 F 965 0 368 30
+567 38 364 F 1034 0 366 24
+567 2 396 F 1082 39 387 26
+568 10 402 F 1793 2 406 23
+574 20 394 F 1369 0 398 33
+579 0 330 F 605 50 333 26
+579 50 292 F 610 0 295 27
+579 0 348 F 630 84 350 25
+579 7 323 F 641 0 324 28
+579 0 328 F 736 181 329 19
+579 0 330 F 846 287 331 21
+579 0 330 F 902 92 331 19
+579 0 330 F 1100 112 331 20
+579 0 348 F 1143 75 352 23
+579 0 330 F 1151 125 331 19
+579 4 366 F 1196 30 375 31
+579 15 315 F 1198 2 326 34
+579 0 330 F 1230 179 334 19
+579 100 228 F 1289 13 229 5
+579 0 326 F 1360 88 327 26
+579 1 347 F 1365 43 350 23
+580 0 357 F 762 57 358 19
+584 135 345 F 1381 0 339 35
+584 48 432 F 1661 0 449 58
+588 0 330 F 775 103 330 20
+593 0 328 F 607 58 323 12
+601 0 355 F 609 68 356 25
+605 120 263 F 610 18 265 19
+605 0 383 F 630 33 383 30
+605 57 326 F 641 0 324 19
+605 92 256 F 642 3 254 16
+605 0 297 F 658 188 297 37
+605 0 381 F 736 130 380 16
+605 0 383 F 846 236 382 18
+605 0 383 F 902 39 384 18
+605 0 383 F 1100 57 386 29
+605 0 383 F 1143 22 387 30
+605 0 383 F 1151 73 383 16
+605 35 348 F 1196 11 354 31
+605 68 315 F 1198 5 323 29
+605 0 383 F 1230 128 385 20
+605 142 239 F 1289 3 239 10
+605 0 379 F 1360 34 381 32
+605 13 370 F 1365 2 373 26
+610 2 293 F 630 138 290 23
+610 0 281 F 736 232 278 23
+610 0 283 F 846 338 280 24
+610 0 283 F 902 143 280 23
+610 0 283 F 1100 163 280 25
+610 0 295 F 1143 129 292 26
+610 0 283 F 1151 176 280 23
+610 0 295 F 1196 82 295 31
+610 2 281 F 1198 45 283 33
+610 0 283 F 1230 233 280 23
+610 0 295 F 1365 95 292 26
+624 179 327 F 1619 0 354 45
+630 91 325 F 641 0 324 20
+630 123 258 F 642 0 257 15
+630 2 412 F 736 96 414 32
+630 1 415 F 846 202 416 34
+630 1 415 F 902 4 419 34
+630 0 416 F 1100 23 420 39
+630 9 425 F 1143 1 426 41
+630 1 415 F 1151 38 418 32
+630 68 366 F 1196 11 372 29
+630 110 306 F 1198 14 314 21
+630 0 416 F 1230 92 421 35
+630 175 239 F 1289 3 239 8
+630 3 409 F 1360 1 414 45
+630 46 388 F 1365 2 391 29
+634 4 376 F 976 13 377 16
+641 33 256 F 642 0 257 18
+641 0 322 F 736 188 322 11
+641 0 324 F 846 294 324 13
+641 0 324 F 902 99 324 11
+641 0 324 F 1100 119 324 16
+641 0 324 F 1143 83 326 17
+641 0 324 F 1151 132 324 11
+641 0 324 F 1196 34 331 29
+641 10 314 F 1198 2 326 32
+641 0 324 F 1230 186 327 13
+641 0 320 F 1360 95 320 21
+641 0 324 F 1365 50 325 17
+642 0 257 F 736 219 258 13
+642 0 257 F 846 325 258 15
+642 0 257 F 902 130 258 13
+642 6 251 F 1100 157 251 11
+642 0 257 F 1143 116 258 15
+642 0 257 F 1151 163 258 13
+642 0 257 F 1230 220 258 13
+642 6 251 F 1360 133 251 13
+642 0 254 F 1365 81 256 12
+647 2 282 F 1388 62 279 17
+652 50 335 F 742 3 330 28
+652 10 400 F 825 79 401 30
+652 28 375 F 862 11 362 35
+652 0 389 F 1469 62 392 36
+652 15 392 F 1874 0 392 33
+654 1 412 F 807 63 407 36
+654 1 440 F 866 142 432 51
+654 0 461 F 1212 120 461 41
+658 161 441 F 713 2 438 34
+658 60 425 F 736 0 426 56
+658 241 338 F 761 0 341 5
+658 174 428 F 798 0 433 22
+658 110 467 F 826 0 481 27
+658 20 465 F 846 47 485 71
+658 186 416 F 849 1 416 23
+658 156 329 F 902 3 334 37
+658 126 471 F 912 4 479 18
+658 254 348 F 935 37 360 28
+658 254 347 F 935 37 364 39
+658 131 395 F 988 0 407 52
+658 131 395 F 1049 12 405 41
+658 222 380 F 1076 1 383 30
+658 140 345 F 1100 6 351 51
+658 158 444 F 1120 0 444 34
+658 127 358 F 1151 7 363 39
+658 88 397 F 1230 11 416 63
+658 116 486 F 1297 0 475 36
+658 140 437 F 1327 0 436 32
+658 177 349 F 1328 2 357 49
+658 159 326 F 1360 1 332 47
+658 199 286 F 1365 0 289 32
+662 80 376 F 1193 8 379 42
+671 15 384 F 1334 9 393 28
+674 12 337 F 1281 47 339 19
+676 49 326 F 1165 1 324 28
+678 95 291 F 1204 14 292 13
+679 62 271 F 759 0 273 14
+691 0 415 F 814 49 433 42
+695 59 421 F 938 0 427 29
+701 5 432 F 715 7 422 41
+713 79 338 F 761 1 340 7
+713 17 423 F 798 1 432 34
+713 0 415 F 826 53 428 38
+713 27 413 F 849 0 417 40
+713 0 435 F 912 37 446 33
+713 91 349 F 935 37 360 30
+713 91 348 F 935 37 364 41
+713 58 382 F 1076 0 384 27
+713 3 437 F 1120 2 442 30
+713 3 437 F 1297 38 437 35
+713 1 414 F 1327 16 420 37
+719 114 322 F 1199 0 327 17
+720 0 328 F 1398 19 330 31
+726 157 249 F 1393 2 252 11
+735 195 350 F 1479 14 347 41
+736 114 312 F 798 0 316 37
+736 46 380 F 826 0 389 39
+736 0 510 F 846 91 525 40
+736 96 414 F 902 5 416 10
+736 59 367 F 912 0 371 37
+736 68 337 F 988 0 339 34
+736 58 347 F 1049 0 349 25
+736 75 435 F 1100 4 437 30
+736 104 406 F 1143 0 407 29
+736 58 452 F 1151 0 454 10
+736 164 346 F 1196 9 354 24
+736 197 313 F 1198 2 324 23
+736 25 485 F 1230 11 500 29
+736 271 239 F 1289 3 239 8
+736 52 374 F 1297 0 358 57
+736 97 411 F 1360 1 414 26
+736 141 369 F 1365 0 373 13
+738 129 370 F 739 9 370 21
+738 115 384 F 1384 0 391 26
+739 1 378 F 1384 5 386 43
+742 0 333 F 825 119 336 21
+742 7 326 F 862 36 319 29
+742 0 333 F 1469 114 336 24
+742 0 333 F 1874 34 334 25
+755 0 311 F 1412 113 312 22
+761 0 341 F 798 69 341 7
+761 0 339 F 826 143 338 1
+761 0 341 F 849 57 337 19
+761 0 341 F 912 124 341 4
+761 13 328 F 935 37 337 26
+761 12 329 F 1076 31 330 15
+761 0 339 F 1120 83 336 11
+761 0 341 F 1297 114 338 7
+761 1 338 F 1327 99 337 8
+779 2 375 F 783 4 369 62
+782 52 324 F 1270 4 327 18
+798 0 408 F 826 74 407 20
+798 13 420 F 849 0 417 38
+798 0 316 F 902 24 313 40
+798 0 428 F 912 55 428 20
+798 83 350 F 935 38 359 30
+798 83 349 F 935 38 363 41
+798 2 355 F 988 49 358 49
+798 0 357 F 1049 58 359 43
+798 49 384 F 1076 1 383 34
+798 1 432 F 1120 16 428 36
+798 0 316 F 1151 57 313 38
+798 3 430 F 1297 52 423 29
+798 3 405 F 1327 34 402 31
+807 2 468 F 866 82 464 44
+807 2 468 F 1212 57 476 40
+815 0 445 F 1699 0 462 43
+819 14 451 F 975 5 467 36
+819 145 361 F 1301 0 363 17
+819 76 418 F 1362 3 443 45
+819 35 484 F 1500 8 494 32
+825 86 387 F 862 0 373 30
+825 27 432 F 1469 13 441 36
+825 86 391 F 1874 2 390 19
+826 0 389 F 846 150 382 45
+826 86 395 F 849 0 392 24
+826 49 340 F 902 0 337 32
+826 14 467 F 912 0 463 19
+826 124 357 F 935 0 372 40
+826 24 397 F 988 0 397 49
+826 12 409 F 1049 0 407 38
+826 123 358 F 1076 1 358 27
+826 32 357 F 1100 3 354 50
+826 55 426 F 1120 0 419 34
+826 13 376 F 1151 0 370 34
+826 0 389 F 1230 38 389 47
+826 7 474 F 1297 0 450 41
+826 35 446 F 1327 0 436 36
+833 87 335 F 1146 0 344 34
+846 199 419 F 902 1 422 16
+846 165 367 F 912 0 371 41
+846 174 337 F 988 0 339 36
+846 174 337 F 1049 12 337 27
+846 184 434 F 1100 6 437 33
+846 222 396 F 1143 9 400 26
+846 164 454 F 1151 0 456 17
+846 270 348 F 1196 9 356 26
+846 303 315 F 1198 2 326 25
+846 115 503 F 1230 2 511 45
+846 377 239 F 1289 3 239 9
+846 204 410 F 1360 1 414 31
+846 247 371 F 1365 0 375 15
+848 138 447 F 1658 0 476 62
+849 0 412 F 912 68 415 27
+849 95 322 F 935 66 331 29
+849 95 321 F 935 66 335 40
+849 95 322 F 1076 61 323 17
+849 0 417 F 1120 27 417 43
+849 0 417 F 1297 62 413 36
+849 0 392 F 1327 43 393 40
+862 0 359 F 1469 79 375 30
+862 0 372 F 1874 2 385 36
+866 17 557 F 1212 0 561 78
+867 233 405 F 1602 0 417 38
+871 111 281 F 1401 50 283 22
+871 110 268 F 1710 150 275 27
+877 174 309 F 1268 193 310 5
+877 193 306 F 1514 2 305 16
+877 174 307 F 1627 103 311 13
+877 174 302 F 1747 95 310 20
+881 0 367 F 1248 100 364 8
+884 0 421 F 890 8 427 26
+885 68 245 F 1021 3 247 13
+885 2 311 F 1051 182 310 27
+892 0 424 F 1300 64 420 24
+902 0 337 F 912 33 338 36
+902 1 315 F 988 24 315 34
+902 0 316 F 1049 36 313 24
+902 0 423 F 1100 20 423 33
+902 14 409 F 1143 0 409 30
+902 0 423 F 1151 34 422 9
+902 75 348 F 1196 9 356 24
+902 108 315 F 1198 2 326 23
+902 3 420 F 1230 91 422 19
+902 182 239 F 1289 3 239 8
+902 15 404 F 1360 8 407 25
+902 54 369 F 1365 2 373 13
+905 0 438 F 1693 83 451 53
+912 137 346 F 935 37 355 26
+912 9 403 F 988 0 407 54
+912 1 411 F 1049 3 414 43
+912 105 378 F 1076 1 378 26
+912 19 352 F 1100 6 351 51
+912 38 445 F 1120 0 439 31
+912 0 371 F 1151 1 369 38
+912 0 371 F 1230 51 376 48
+912 0 483 F 1297 6 464 35
+912 19 444 F 1327 0 436 34
+915 65 379 F 1070 0 378 25
+935 48 349 F 1076 44 340 30
+935 37 360 F 1120 96 348 32
+935 37 360 F 1297 127 348 27
+935 37 335 F 1327 111 325 30
+950 12 365 F 1041 0 366 23
+960 0 325 F 970 99 339 25
+965 14 354 F 1034 0 360 17
+965 0 368 F 1082 58 366 18
+974 0 281 F 1310 150 277 21
+975 152 320 F 1301 0 322 15
+975 76 396 F 1362 0 417 42
+975 53 419 F 1500 29 419 19
+977 26 332 F 1605 73 332 27
+985 0 353 F 1426 64 353 13
+988 0 426 F 1049 12 424 28
+988 0 339 F 1151 11 338 37
+988 110 315 F 1189 0 318 24
+988 49 377 F 1328 1 377 33
+989 64 342 F 1350 12 336 22
+994 124 273 F 1190 1 282 23
+1021 0 250 F 1051 242 250 8
+1034 0 362 F 1082 71 355 19
+1039 0 274 F 1435 147 274 6
+1049 20 329 F 1100 4 332 39
+1049 0 349 F 1151 0 349 27
+1049 119 329 F 1189 0 331 21
+1049 0 349 F 1230 50 356 34
+1049 59 389 F 1328 0 390 26
+1049 42 307 F 1360 1 311 32
+1049 87 262 F 1365 2 266 19
+1055 0 329 F 1542 146 328 13
+1064 63 348 F 1669 2 351 24
+1068 0 304 F 1517 96 303 16
+1076 0 384 F 1120 63 381 29
+1076 1 383 F 1297 96 379 30
+1076 1 358 F 1327 80 356 31
+1097 23 409 F 1806 1 417 35
+1100 33 410 F 1143 1 408 31
+1100 1 442 F 1151 16 440 31
+1100 91 352 F 1196 7 358 29
+1100 128 315 F 1198 2 326 26
+1100 3 440 F 1230 71 442 30
+1100 202 239 F 1289 3 239 9
+1100 26 413 F 1360 1 414 41
+1100 72 371 F 1365 3 372 22
+1120 0 444 F 1297 36 439 37
+1120 0 419 F 1327 17 419 41
+1121 56 382 F 1512 11 384 23
+1125 1 361 F 1507 63 359 53
+1132 92 297 F 1140 0 299 13
+1143 0 409 F 1151 47 409 28
+1143 47 380 F 1196 0 383 32
+1143 93 316 F 1198 2 326 26
+1143 2 407 F 1230 106 407 24
+1143 168 239 F 1289 3 239 10
+1143 0 405 F 1360 10 405 43
+1143 35 392 F 1365 2 391 23
+1147 0 303 F 1331 108 308 25
+1151 108 348 F 1196 9 356 24
+1151 141 315 F 1198 2 326 23
+1151 0 456 F 1230 50 463 25
+1151 215 239 F 1289 3 239 8
+1151 40 412 F 1360 1 414 28
+1151 85 371 F 1365 0 375 13
+1170 0 287 F 1347 84 283 26
+1189 0 331 F 1328 61 329 29
+1196 43 322 F 1198 2 326 35
+1196 0 365 F 1230 152 361 27
+1196 1 360 F 1360 61 354 39
+1196 11 372 F 1365 25 368 32
+1198 2 326 F 1230 196 317 23
+1198 84 242 F 1289 3 239 17
+1198 2 322 F 1360 104 311 30
+1198 2 326 F 1365 59 316 25
+1210 50 436 F 1516 1 431 27
+1226 5 443 F 1296 26 421 44
+1230 272 239 F 1289 3 239 8
+1230 74 353 F 1297 21 337 58
+1230 95 414 F 1360 1 414 31
+1230 141 372 F 1365 2 373 17
+1231 2 323 F 1318 24 322 7
+1268 211 291 F 1514 0 290 16
+1268 97 404 F 1627 3 411 23
+1268 101 395 F 1747 0 405 29
+1277 1 330 F 1694 81 326 19
+1288 0 321 F 1374 102 323 36
+1289 3 237 F 1360 178 237 10
+1289 3 239 F 1365 134 239 10
+1294 10 451 F 1786 0 463 58
+1297 21 429 F 1327 0 436 37
+1301 0 351 F 1362 83 363 34
+1301 0 363 F 1500 127 362 18
+1302 67 343 F 1433 4 343 20
+1325 136 348 F 1621 0 350 8
+1351 210 231 F 1859 0 231 3
+1351 67 374 F 1936 2 376 18
+1360 47 368 F 1365 0 371 23
+1362 1 445 F 1500 52 425 46
+1401 1 321 F 1710 106 323 41
+1415 148 274 F 1724 0 273 16
+1441 10 356 F 1513 37 356 16
+1449 38 390 F 1451 4 392 28
+1469 77 377 F 1874 0 372 22
+1475 72 371 F 1594 0 376 43
+1514 0 289 F 1627 121 293 22
+1536 0 332 F 1630 0 332 3
+1544 24 336 F 1549 0 336 18
+1544 15 258 F 1551 0 258 5
+1546 15 349 F 1547 0 348 6
+1546 28 336 F 1550 1 338 11
+1547 12 336 F 1550 1 338 13
+1548 7 309 F 1552 0 314 16
+1548 0 299 F 1554 49 300 2
+1548 0 319 F 1555 101 318 8
+1549 0 249 F 1551 9 249 16
+1552 0 297 F 1554 56 293 16
+1552 0 314 F 1555 108 308 22
+1554 0 349 F 1555 52 347 16
+1592 0 374 F 1595 8 361 28
+1620 0 477 F 1796 6 478 41
+1620 20 446 F 1937 0 439 41
+1627 8 403 F 1747 0 408 19
+1640 92 333 F 1840 0 313 39
+1646 0 265 F 1862 2 264 11
+1649 5 367 F 1708 0 373 35
+1649 20 305 F 1736 0 302 26
+1649 13 309 F 1931 0 309 18
+1653 0 397 F 1828 74 396 41
+1653 0 351 F 1947 68 363 43
+1663 0 415 F 1893 27 414 43
+1664 0 360 F 1892 3 362 25
+1681 0 309 F 1808 0 308 19
+1696 0 438 F 1781 23 439 43
+1705 0 265 F 1709 0 264 12
+1708 15 302 F 1736 0 295 29
+1722 8 256 F 1837 0 256 12
+1745 0 433 F 1764 1 427 28
+1745 0 458 F 1767 0 455 28
+1745 9 450 F 1882 0 443 28
+1745 6 388 F 1896 0 398 32
+1764 1 427 F 1767 0 432 21
+1764 10 416 F 1882 0 415 16
+1764 7 403 F 1896 0 417 40
+1767 9 446 F 1882 0 440 20
+1767 6 405 F 1896 0 413 36
+1782 39 224 F 1827 0 224 11
+1784 7 379 F 1799 0 381 26
+1787 9 391 F 1810 2 389 25
+1788 0 494 F 1850 9 499 37
+1796 26 449 F 1937 0 439 43
+1802 3 458 F 1877 0 471 34
+1820 0 339 F 1909 0 340 20
+1828 6 435 F 1947 0 446 49
+1851 45 267 F 1879 0 268 17
+1859 0 231 F 1936 147 231 5
+1871 0 299 F 1892 0 296 20
+1882 0 399 F 1896 3 414 36
+1910 0 336 F 1926 25 328 25
+1912 0 362 F 1913 0 358 24
+1939 0 330 F 1940 10 330 23
+218 71 350 P 296 0 354 9
+252 74 327 P 285 41 327 14
+284 0 285 P 476 2 291 13
+299 0 414 P 883 20 420 35
diff --git a/testdata/see-ext-at1MB-u8-failed_seed-evalue.matches b/testdata/see-ext-at1MB-u8-failed_seed-evalue.matches
new file mode 100644
index 0000000..2a163a9
--- /dev/null
+++ b/testdata/see-ext-at1MB-u8-failed_seed-evalue.matches
@@ -0,0 +1,21 @@
+# Options: -ii at1MB -outfmt seed failed_seed evalue -l 100 -seedlength 20 -qii U89959_genomic -minidentity 80 -history 60
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity, seed. len, seed. s, seed. q, evalue
+# failed_seed: 20 859 7 F 0 72595
+135 859 84 F 135 0 72651 258 4 97.04 20 88 72655 7e-54
+167 859 84 F 155 0 72651 271 17 89.44 20 220 72775 3e-50
+# failed_seed: 20 859 208 F 0 77815
+# failed_seed: 20 859 208 F 0 77819
+# failed_seed: 20 1214 205 F 0 77815
+333 1265 0 F 330 0 72423 612 17 94.87 20 118 72538 1e-136
+222 1361 148 F 222 0 105629 435 3 98.65 20 148 105629 2e-100
+# failed_seed: 20 31 11 P 0 101872
+# failed_seed: 20 31 10 P 0 101874
+# failed_seed: 20 31 10 P 0 101877
+# failed_seed: 20 31 10 P 0 101880
+# failed_seed: 20 31 10 P 0 101883
+# failed_seed: 20 859 207 P 0 29121
+# failed_seed: 20 859 208 P 0 29126
+# failed_seed: 20 859 208 P 0 29130
+# failed_seed: 20 859 208 P 0 29134
+# failed_seed: 20 859 208 P 0 29138
+# failed_seed: 20 1214 204 P 0 29121
diff --git a/testdata/see-ext-at1MB-u8-maxmat30.matches b/testdata/see-ext-at1MB-u8-maxmat30.matches
new file mode 100644
index 0000000..f24eb46
--- /dev/null
+++ b/testdata/see-ext-at1MB-u8-maxmat30.matches
@@ -0,0 +1,27 @@
+# Options: -ii at1MB -l 30 -qii U89959_genomic.fas -maxmat
+# Fields: s. len, s. seqnum, s. start, strand, q. seqnum, q. start
+ 31 859 221 F 0 72776
+ 98 859 89 F 0 72656
+ 30 1214 212 F 0 77816
+ 32 1214 210 F 0 77816
+ 34 1214 208 F 0 77816
+ 38 1214 206 F 0 77816
+ 34 1214 206 F 0 77818
+ 32 1214 206 F 0 77820
+ 30 1214 206 F 0 77822
+ 215 1265 119 F 0 72539
+ 42 1361 70 F 0 105387
+ 32 1361 171 F 0 105652
+ 145 1361 226 F 0 105707
+# Fields: s. len, s. seqnum, s. start, strand, q. seqnum, q. start
+ 30 1214 212 P 0 29123
+ 32 1214 210 P 0 29123
+ 34 1214 208 P 0 29123
+ 37 1214 205 P 0 29122
+ 34 1214 206 P 0 29125
+ 32 1214 206 P 0 29127
+ 30 1214 206 P 0 29129
+# TIME seedextend-greedy-30-30-80-5-64 overall 0.012799
+# space peak in megabytes: 0.42 (in 1065 events)
+# mmap space peak in megabytes: 0.55
+# combined space peak in megabytes: 0.97
diff --git a/testdata/see-ext-at1MB-u8.matches b/testdata/see-ext-at1MB-u8.matches
new file mode 100644
index 0000000..4bf3009
--- /dev/null
+++ b/testdata/see-ext-at1MB-u8.matches
@@ -0,0 +1,1397 @@
+113 1361 1 F 108 0 105325 158 21 81.00
+135 859 84 F 135 0 72651 258 4 97.04
+167 859 84 F 155 0 72651 271 17 89.44
+20 1069 314 F 24 0 99169 32 4 81.82
+20 1476 406 F 24 0 75888 32 4 81.82
+20 229 359 F 24 0 19005 32 4 81.82
+20 270 359 F 24 0 19005 32 4 81.82
+20 560 347 F 24 0 99169 32 4 81.82
+20 626 550 P 24 0 70494 32 4 81.82
+21 1001 380 F 23 0 18863 32 4 81.82
+21 1052 340 F 23 0 90862 32 4 81.82
+21 1056 352 F 25 0 22755 34 4 82.61
+21 1067 182 P 23 0 105473 35 3 86.36
+21 1091 369 F 23 0 43199 32 4 81.82
+21 1094 124 F 24 0 49454 33 4 82.22
+21 1136 355 P 23 0 82276 32 4 81.82
+21 121 56 P 23 0 4894 35 3 86.36
+21 1223 437 F 23 0 15346 32 4 81.82
+21 1233 283 P 23 0 85102 32 4 81.82
+21 124 129 F 24 0 43668 33 4 82.22
+21 133 232 F 23 0 24209 32 4 81.82
+21 1428 461 P 23 0 80428 35 3 86.36
+21 1432 448 F 23 0 25665 35 3 86.36
+21 144 66 F 23 0 40027 32 4 81.82
+21 1449 353 P 25 0 53959 34 4 82.61
+21 1451 321 P 25 0 53959 34 4 82.61
+21 146 4 F 23 0 42287 35 3 86.36
+21 1469 168 F 23 0 25462 32 4 81.82
+21 1485 322 P 23 0 63970 32 4 81.82
+21 1493 283 P 24 0 12635 33 4 82.22
+21 1504 154 F 23 0 34889 32 4 81.82
+21 1504 293 P 23 0 74827 32 4 81.82
+21 1507 294 F 23 0 76248 32 4 81.82
+21 1507 351 F 23 0 36786 32 4 81.82
+21 1542 425 P 23 0 74801 32 4 81.82
+21 1646 0 F 23 0 6919 35 3 86.36
+21 1646 1 F 23 0 6923 38 2 90.91
+21 1646 1 F 23 0 74553 32 4 81.82
+21 1708 16 F 23 0 67601 32 4 81.82
+21 1806 10 P 23 0 86833 32 4 81.82
+21 1837 297 F 23 0 58323 32 4 81.82
+21 1860 194 F 24 0 2657 33 4 82.22
+21 1903 17 P 24 0 6006 33 4 82.22
+21 1930 63 P 24 0 18439 33 4 82.22
+21 229 363 F 23 0 90196 32 4 81.82
+21 231 18 P 23 0 5138 38 2 90.91
+21 270 363 F 23 0 90196 32 4 81.82
+21 304 0 F 24 0 26708 36 3 86.67
+21 32 665 F 23 0 74790 32 4 81.82
+21 336 343 F 23 0 97115 32 4 81.82
+21 349 380 F 24 0 14970 33 4 82.22
+21 349 380 P 23 0 95979 32 4 81.82
+21 351 285 P 23 0 90206 35 3 86.36
+21 362 351 P 24 0 76884 33 4 82.22
+21 363 172 F 23 0 90735 32 4 81.82
+21 38 909 P 23 0 98410 32 4 81.82
+21 404 593 F 24 0 48578 33 4 82.22
+21 406 381 F 25 0 22755 34 4 82.61
+21 423 215 F 23 0 104261 32 4 81.82
+21 423 263 F 23 0 14757 32 4 81.82
+21 429 431 F 24 0 33562 33 4 82.22
+21 435 196 P 24 0 4761 33 4 82.22
+21 435 198 P 23 0 4836 35 3 86.36
+21 450 390 F 24 0 14027 33 4 82.22
+21 453 352 P 23 0 40362 32 4 81.82
+21 454 368 F 23 0 58323 32 4 81.82
+21 471 182 F 24 0 32511 33 4 82.22
+21 475 295 P 23 0 35105 32 4 81.82
+21 477 279 F 23 0 90862 32 4 81.82
+21 542 369 F 25 0 22755 34 4 82.61
+21 566 392 F 23 0 48814 32 4 81.82
+21 574 224 F 23 0 73246 32 4 81.82
+21 640 234 F 23 0 51645 32 4 81.82
+21 682 263 F 23 0 87674 38 2 90.91
+21 684 143 F 23 0 76131 32 4 81.82
+21 719 287 F 24 0 13646 33 4 82.22
+21 730 410 P 24 0 102596 33 4 82.22
+21 744 239 P 24 0 9743 33 4 82.22
+21 753 258 P 23 0 32704 32 4 81.82
+21 754 380 F 23 0 82785 32 4 81.82
+21 778 283 P 23 0 19024 35 3 86.36
+21 779 59 F 23 0 58194 32 4 81.82
+21 783 204 F 23 0 73354 35 3 86.36
+21 833 411 F 23 0 17260 32 4 81.82
+21 838 287 P 23 0 9855 35 3 86.36
+21 853 545 P 23 0 51769 32 4 81.82
+21 870 412 P 23 0 30789 32 4 81.82
+21 870 412 P 23 0 84827 35 3 86.36
+21 891 324 P 25 0 97200 34 4 82.61
+21 899 290 P 23 0 38671 32 4 81.82
+21 903 333 P 24 0 103831 33 4 82.22
+21 914 315 F 23 0 47550 32 4 81.82
+21 930 209 F 23 0 71291 32 4 81.82
+21 936 282 F 25 0 26701 34 4 82.61
+21 936 287 F 23 0 15242 35 3 86.36
+21 936 298 F 23 0 84267 32 4 81.82
+22 1000 304 P 22 0 51898 32 4 81.82
+22 1007 110 F 23 0 83366 33 4 82.22
+22 1012 289 P 23 0 86575 33 4 82.22
+22 103 74 P 23 0 5065 42 1 95.56
+22 1038 279 F 22 0 30823 32 4 81.82
+22 107 74 P 23 0 5065 39 2 91.11
+22 1073 226 P 22 0 17052 35 3 86.36
+22 1080 155 P 23 0 92288 33 4 82.22
+22 1080 227 P 23 0 92192 33 4 82.22
+22 1080 26 F 24 0 49812 37 3 86.96
+22 1094 298 P 23 0 90729 33 4 82.22
+22 1097 328 F 25 0 6012 35 4 82.98
+22 1125 306 P 22 0 51778 35 3 86.36
+22 1144 348 F 22 0 52822 35 3 86.36
+22 1146 301 P 23 0 17930 36 3 86.67
+22 1160 81 F 22 0 73236 32 4 81.82
+22 1195 123 P 23 0 73623 36 3 86.67
+22 1195 123 P 24 0 74197 34 4 82.61
+22 1205 221 P 22 0 93474 32 4 81.82
+22 1207 281 P 24 0 73817 34 4 82.61
+22 1233 195 P 23 0 46154 33 4 82.22
+22 1265 228 P 22 0 64077 32 4 81.82
+22 1272 285 P 22 0 17271 32 4 81.82
+22 1279 352 P 24 0 76650 34 4 82.61
+22 1307 185 P 23 0 83527 39 2 91.11
+22 1310 381 P 22 0 38154 35 3 86.36
+22 1316 253 P 22 0 5376 35 3 86.36
+22 1325 114 P 22 0 45913 32 4 81.82
+22 1325 273 F 22 0 5072 35 3 86.36
+22 1325 273 F 22 0 5075 35 3 86.36
+22 1338 42 F 23 0 98420 33 4 82.22
+22 1339 405 F 23 0 97844 33 4 82.22
+22 1346 312 F 22 0 33764 35 3 86.36
+22 1369 80 F 23 0 4924 36 3 86.67
+22 1374 386 F 24 0 60836 37 3 86.96
+22 1376 217 F 24 0 7108 34 4 82.61
+22 1377 126 P 24 0 81585 34 4 82.61
+22 1381 419 P 22 0 80286 32 4 81.82
+22 1382 357 F 23 0 20283 33 4 82.22
+22 1399 65 F 24 0 45769 34 4 82.61
+22 1408 60 P 22 0 52837 32 4 81.82
+22 1425 170 P 24 0 51894 34 4 82.61
+22 143 4 F 22 0 97986 32 4 81.82
+22 1432 145 P 22 0 90839 32 4 81.82
+22 1432 145 P 22 0 90884 32 4 81.82
+22 144 2 P 23 0 49482 33 4 82.22
+22 1446 258 F 24 0 35506 34 4 82.61
+22 1451 321 F 22 0 26708 38 2 90.91
+22 146 155 F 23 0 44540 33 4 82.22
+22 1461 141 P 22 0 5969 32 4 81.82
+22 1504 227 F 23 0 1100 33 4 82.22
+22 1507 366 P 22 0 51778 35 3 86.36
+22 1524 236 P 22 0 17270 44 0 100.00
+22 1529 541 P 23 0 5083 33 4 82.22
+22 1531 368 P 23 0 96754 33 4 82.22
+22 1578 0 F 22 0 74376 32 4 81.82
+22 159 126 F 22 0 5084 32 4 81.82
+22 159 177 F 23 0 38542 36 3 86.67
+22 16 798 P 23 0 28234 33 4 82.22
+22 1614 34 P 22 0 91048 32 4 81.82
+22 1621 138 F 22 0 5072 32 4 81.82
+22 1621 138 F 22 0 5075 32 4 81.82
+22 1622 292 P 24 0 74686 34 4 82.61
+22 1654 26 P 22 0 80300 32 4 81.82
+22 1657 2 F 22 0 6102 32 4 81.82
+22 166 117 P 23 0 34848 33 4 82.22
+22 1674 272 P 23 0 99856 33 4 82.22
+22 1682 12 F 22 0 74376 32 4 81.82
+22 1695 69 P 22 0 61637 35 3 86.36
+22 1721 221 F 22 0 37065 35 3 86.36
+22 1765 50 F 24 0 95973 40 2 91.30
+22 1866 237 F 22 0 48530 35 3 86.36
+22 1868 10 F 22 0 53970 35 3 86.36
+22 19 464 P 22 0 28561 35 3 86.36
+22 19 514 F 23 0 39111 33 4 82.22
+22 191 232 F 22 0 5963 35 3 86.36
+22 218 371 P 22 0 64950 32 4 81.82
+22 227 167 P 25 0 97114 38 3 87.23
+22 237 108 F 23 0 5080 33 4 82.22
+22 258 281 F 24 0 64295 34 4 82.61
+22 26 568 F 24 0 88313 34 4 82.61
+22 261 106 F 24 0 21365 34 4 82.61
+22 262 280 P 23 0 16247 33 4 82.22
+22 270 362 F 22 0 78229 32 4 81.82
+22 286 33 F 25 0 103023 35 4 82.98
+22 29 293 F 22 0 104117 32 4 81.82
+22 296 28 F 22 0 64950 32 4 81.82
+22 304 99 P 23 0 36675 33 4 82.22
+22 314 179 F 23 0 15673 33 4 82.22
+22 321 133 P 22 0 100506 32 4 81.82
+22 333 312 F 24 0 78730 34 4 82.61
+22 344 290 F 23 0 68454 33 4 82.22
+22 347 105 F 22 0 2209 32 4 81.82
+22 35 26 F 25 0 89031 35 4 82.98
+22 356 247 P 23 0 84835 36 3 86.67
+22 357 65 F 23 0 6642 33 4 82.22
+22 36 29 P 22 0 15971 32 4 81.82
+22 38 918 F 23 0 63354 33 4 82.22
+22 384 368 P 25 0 69908 35 4 82.98
+22 393 247 F 23 0 1008 33 4 82.22
+22 393 314 F 22 0 55634 32 4 81.82
+22 41 503 F 23 0 1673 33 4 82.22
+22 418 402 P 23 0 35508 33 4 82.22
+22 42 26 F 25 0 89031 35 4 82.98
+22 420 23 F 22 0 85514 32 4 81.82
+22 429 305 P 22 0 5966 32 4 81.82
+22 429 309 F 23 0 5067 36 3 86.67
+22 429 309 F 23 0 5073 36 3 86.67
+22 429 309 F 25 0 6636 38 3 87.23
+22 436 197 P 22 0 50389 32 4 81.82
+22 455 260 F 22 0 95972 32 4 81.82
+22 459 124 F 24 0 66694 37 3 86.96
+22 462 362 P 22 0 74142 32 4 81.82
+22 475 262 P 22 0 27116 32 4 81.82
+22 475 304 P 23 0 53918 33 4 82.22
+22 479 405 F 24 0 65224 34 4 82.61
+22 488 163 P 23 0 71287 33 4 82.22
+22 489 389 F 23 0 97844 33 4 82.22
+22 496 208 P 23 0 84835 36 3 86.67
+22 5 178 P 23 0 28425 39 2 91.11
+22 501 369 F 23 0 18822 33 4 82.22
+22 514 346 F 22 0 1018 32 4 81.82
+22 517 466 F 23 0 89118 33 4 82.22
+22 52 327 P 22 0 105932 32 4 81.82
+22 539 248 P 23 0 92288 33 4 82.22
+22 539 351 P 23 0 79351 33 4 82.22
+22 546 361 P 25 0 74833 35 4 82.98
+22 563 204 F 23 0 58465 36 3 86.67
+22 571 306 P 24 0 5082 34 4 82.61
+22 571 311 F 24 0 5966 37 3 86.96
+22 573 357 F 23 0 4288 33 4 82.22
+22 576 70 F 23 0 71276 36 3 86.67
+22 604 334 P 22 0 42259 32 4 81.82
+22 609 396 P 22 0 82821 35 3 86.36
+22 614 180 F 24 0 26609 34 4 82.61
+22 622 217 P 22 0 93838 32 4 81.82
+22 623 435 F 22 0 5063 35 3 86.36
+22 629 385 P 23 0 103821 39 2 91.11
+22 640 306 P 23 0 50342 33 4 82.22
+22 679 314 P 22 0 26716 35 3 86.36
+22 682 234 P 23 0 73388 33 4 82.22
+22 734 170 P 23 0 105605 36 3 86.67
+22 749 363 P 23 0 302 33 4 82.22
+22 753 96 F 23 0 31162 33 4 82.22
+22 765 336 F 22 0 48380 32 4 81.82
+22 773 402 F 22 0 34199 32 4 81.82
+22 777 250 P 22 0 74385 35 3 86.36
+22 777 256 P 22 0 70572 32 4 81.82
+22 777 259 P 22 0 90202 32 4 81.82
+22 79 225 F 23 0 6640 36 3 86.67
+22 790 186 P 25 0 91094 35 4 82.98
+22 80 675 F 22 0 104124 32 4 81.82
+22 823 84 F 22 0 84566 32 4 81.82
+22 829 259 F 23 0 76609 36 3 86.67
+22 830 309 P 24 0 1587 37 3 86.96
+22 833 276 P 22 0 79605 32 4 81.82
+22 840 312 P 23 0 51912 36 3 86.67
+22 855 321 P 24 0 86831 37 3 86.96
+22 856 1 P 23 0 6007 33 4 82.22
+22 857 285 F 22 0 32717 32 4 81.82
+22 859 208 P 22 0 77815 44 0 100.00
+22 870 195 F 22 0 9162 32 4 81.82
+22 877 463 F 23 0 82559 33 4 82.22
+22 880 152 P 23 0 81782 33 4 82.22
+22 884 285 P 25 0 74833 35 4 82.98
+22 890 299 P 25 0 74833 35 4 82.98
+22 900 310 P 23 0 72771 36 3 86.67
+22 903 327 F 23 0 76375 33 4 82.22
+22 912 144 F 22 0 100173 32 4 81.82
+22 917 104 P 22 0 79435 32 4 81.82
+22 917 224 F 22 0 104505 32 4 81.82
+22 918 174 F 22 0 83163 32 4 81.82
+22 926 386 P 22 0 42274 32 4 81.82
+22 926 386 P 22 0 83378 32 4 81.82
+22 929 278 F 22 0 71810 32 4 81.82
+22 931 198 F 23 0 6007 33 4 82.22
+22 951 107 P 22 0 99021 35 3 86.36
+22 954 272 F 22 0 87731 32 4 81.82
+22 971 169 F 23 0 30783 36 3 86.67
+22 974 235 P 22 0 38154 35 3 86.36
+22 974 280 F 22 0 28864 32 4 81.82
+22 974 280 F 23 0 28864 33 4 82.22
+22 991 150 P 22 0 6918 38 2 90.91
+222 1361 148 F 222 0 105629 435 3 98.65
+23 1004 389 P 24 0 74824 35 4 82.98
+23 1045 358 P 25 0 29243 36 4 83.33
+23 1052 174 F 26 0 36167 37 4 83.67
+23 1055 293 F 23 0 44590 34 4 82.61
+23 1065 211 P 21 0 74194 32 4 81.82
+23 1065 211 P 21 0 74597 32 4 81.82
+23 1066 378 F 21 0 2840 32 4 81.82
+23 107 75 F 23 0 97119 34 4 82.61
+23 1094 353 P 23 0 51767 37 3 86.96
+23 1096 202 P 23 0 66169 34 4 82.61
+23 11 466 F 21 0 98549 32 4 81.82
+23 1109 295 P 23 0 9665 34 4 82.61
+23 1123 51 F 23 0 104867 34 4 82.61
+23 1145 96 F 21 0 16718 32 4 81.82
+23 115 243 P 21 0 64031 32 4 81.82
+23 1157 155 F 21 0 21377 32 4 81.82
+23 1169 199 F 23 0 96641 34 4 82.61
+23 119 134 P 21 0 5380 35 3 86.36
+23 1194 182 P 23 0 44315 37 3 86.96
+23 1195 154 P 26 0 19958 37 4 83.67
+23 1202 236 P 23 0 87886 34 4 82.61
+23 1204 110 F 21 0 89062 32 4 81.82
+23 1205 238 F 24 0 33629 41 2 91.49
+23 1207 143 P 23 0 37206 34 4 82.61
+23 1207 151 P 23 0 88123 34 4 82.61
+23 1207 271 P 22 0 76720 36 3 86.67
+23 1207 281 P 24 0 74396 35 4 82.98
+23 1214 204 F 23 0 17268 46 0 100.00
+23 1224 492 F 27 0 23587 35 5 80.00
+23 1233 189 P 23 0 103556 34 4 82.61
+23 124 32 P 23 0 51812 34 4 82.61
+23 124 34 F 23 0 7018 34 4 82.61
+23 1256 329 P 23 0 14405 40 2 91.30
+23 1264 290 P 22 0 5382 33 4 82.22
+23 1264 304 F 22 0 6196 33 4 82.22
+23 1273 363 P 23 0 76851 37 3 86.96
+23 1283 357 P 23 0 6918 34 4 82.61
+23 1288 171 F 24 0 55425 35 4 82.98
+23 1296 105 P 25 0 54035 36 4 83.33
+23 1301 232 F 23 0 28124 40 2 91.30
+23 1335 361 F 23 0 79365 37 3 86.96
+23 1343 148 P 21 0 81286 32 4 81.82
+23 1346 360 P 22 0 85371 33 4 82.22
+23 1347 304 F 23 0 93973 34 4 82.61
+23 1362 327 F 23 0 28124 40 2 91.30
+23 1372 253 P 24 0 90891 35 4 82.98
+23 1379 154 F 22 0 6937 33 4 82.22
+23 138 48 P 23 0 14762 37 3 86.96
+23 138 61 F 24 0 26701 35 4 82.98
+23 1381 309 P 23 0 94301 34 4 82.61
+23 1382 358 F 23 0 14053 34 4 82.61
+23 1385 301 P 22 0 76153 36 3 86.67
+23 1386 261 F 22 0 21652 33 4 82.22
+23 1386 263 P 24 0 51761 35 4 82.98
+23 1386 269 P 23 0 14517 34 4 82.61
+23 1397 153 F 22 0 35512 33 4 82.22
+23 1398 306 F 22 0 97119 33 4 82.22
+23 140 29 P 25 0 34846 36 4 83.33
+23 1417 294 P 24 0 32174 35 4 82.98
+23 142 397 F 22 0 81301 33 4 82.22
+23 1423 391 F 25 0 61602 36 4 83.33
+23 143 11 P 22 0 73958 33 4 82.22
+23 143 11 P 24 0 74538 35 4 82.98
+23 143 2 F 23 0 82811 37 3 86.96
+23 144 167 P 23 0 2326 34 4 82.61
+23 1451 372 P 27 0 5070 35 5 80.00
+23 1458 326 F 22 0 34907 39 2 91.11
+23 1459 158 P 21 0 83818 35 3 86.36
+23 146 52 P 25 0 15184 36 4 83.33
+23 146 8 F 23 0 44317 37 3 86.96
+23 1465 229 F 21 0 50620 35 3 86.36
+23 1480 315 P 22 0 90194 33 4 82.22
+23 1482 379 F 24 0 31305 41 2 91.49
+23 149 2 P 21 0 6020 32 4 81.82
+23 1495 515 P 27 0 91484 35 5 80.00
+23 1498 293 P 25 0 51818 36 4 83.33
+23 1500 358 F 23 0 28124 40 2 91.30
+23 1507 340 P 21 0 39069 32 4 81.82
+23 1527 297 F 23 0 84836 34 4 82.61
+23 1529 545 F 23 0 5966 34 4 82.61
+23 1534 433 F 22 0 106243 33 4 82.22
+23 1541 250 F 22 0 10533 33 4 82.22
+23 1544 186 F 21 0 6930 32 4 81.82
+23 1559 172 P 21 0 95984 32 4 81.82
+23 1559 172 P 22 0 95983 33 4 82.22
+23 156 60 P 22 0 40642 33 4 82.22
+23 157 8 F 23 0 21528 34 4 82.61
+23 159 54 F 22 0 91342 33 4 82.22
+23 1596 164 F 27 0 21535 38 4 84.00
+23 1596 166 P 22 0 90200 33 4 82.22
+23 1596 215 F 27 0 90830 35 5 80.00
+23 1596 215 F 27 0 90875 35 5 80.00
+23 1602 200 F 24 0 96383 38 3 87.23
+23 1618 52 F 21 0 83697 32 4 81.82
+23 1654 20 P 22 0 5084 33 4 82.22
+23 1682 13 P 25 0 41489 36 4 83.33
+23 1688 107 F 22 0 88710 33 4 82.22
+23 1690 372 F 22 0 26139 33 4 82.22
+23 1697 240 F 24 0 74380 38 3 87.23
+23 1701 306 F 22 0 21348 39 2 91.11
+23 1726 56 P 24 0 47995 35 4 82.98
+23 1763 370 F 22 0 17269 33 4 82.22
+23 1763 370 F 22 0 77829 33 4 82.22
+23 1763 370 P 22 0 77829 33 4 82.22
+23 1798 138 F 22 0 8894 33 4 82.22
+23 1801 71 P 22 0 93330 33 4 82.22
+23 1837 301 F 22 0 54792 33 4 82.22
+23 1846 115 F 21 0 26008 32 4 81.82
+23 1868 11 P 22 0 83374 36 3 86.67
+23 1888 1 P 26 0 5972 37 4 83.67
+23 1903 17 P 21 0 8901 32 4 81.82
+23 1903 8 P 21 0 5965 38 2 90.91
+23 1941 312 F 24 0 33629 35 4 82.98
+23 20 10 F 21 0 6641 32 4 81.82
+23 20 24 P 23 0 6007 34 4 82.61
+23 200 11 F 21 0 65136 32 4 81.82
+23 200 219 P 21 0 35512 32 4 81.82
+23 211 269 P 23 0 2645 34 4 82.61
+23 213 325 F 23 0 49699 34 4 82.61
+23 227 48 P 24 0 35522 35 4 82.98
+23 229 361 F 21 0 52832 32 4 81.82
+23 229 361 F 22 0 52832 33 4 82.22
+23 229 361 F 23 0 52832 34 4 82.61
+23 24 499 P 23 0 89120 34 4 82.61
+23 249 206 F 23 0 5067 40 2 91.30
+23 25 485 P 21 0 15762 32 4 81.82
+23 270 361 F 21 0 52832 32 4 81.82
+23 270 361 F 22 0 52832 33 4 82.22
+23 270 361 F 23 0 52832 34 4 82.61
+23 289 57 P 21 0 87265 32 4 81.82
+23 289 70 P 24 0 50256 35 4 82.98
+23 291 430 F 23 0 99067 34 4 82.61
+23 314 149 P 21 0 52225 32 4 81.82
+23 32 1 F 21 0 48475 32 4 81.82
+23 332 127 F 23 0 77414 34 4 82.61
+23 350 188 F 22 0 25288 36 3 86.67
+23 351 277 P 23 0 14516 34 4 82.61
+23 354 286 F 21 0 106302 32 4 81.82
+23 358 297 F 27 0 55532 35 5 80.00
+23 363 357 P 24 0 51779 35 4 82.98
+23 363 391 P 22 0 28855 33 4 82.22
+23 38 258 F 21 0 63992 32 4 81.82
+23 38 69 P 21 0 94557 32 4 81.82
+23 387 185 P 23 0 100407 34 4 82.61
+23 39 682 P 22 0 61639 33 4 82.22
+23 39 718 P 22 0 67657 33 4 82.22
+23 396 326 P 22 0 23913 33 4 82.22
+23 396 414 P 23 0 19630 34 4 82.61
+23 4 505 F 22 0 9433 33 4 82.22
+23 40 396 P 22 0 93039 33 4 82.22
+23 407 304 F 25 0 65429 36 4 83.33
+23 424 39 P 22 0 98992 33 4 82.22
+23 427 412 P 24 0 105278 35 4 82.98
+23 429 247 F 22 0 32105 36 3 86.67
+23 429 309 F 25 0 5079 36 4 83.33
+23 443 265 F 21 0 34905 32 4 81.82
+23 450 329 F 22 0 13625 33 4 82.22
+23 454 372 F 22 0 54792 33 4 82.22
+23 455 271 F 25 0 19973 36 4 83.33
+23 459 43 P 21 0 16183 32 4 81.82
+23 47 416 P 24 0 102193 35 4 82.98
+23 470 442 P 23 0 103561 34 4 82.61
+23 479 174 P 23 0 20718 34 4 82.61
+23 486 199 P 21 0 35157 32 4 81.82
+23 486 297 P 24 0 104060 35 4 82.98
+23 491 195 F 24 0 14761 38 3 87.23
+23 491 196 F 25 0 6604 39 3 87.50
+23 497 268 F 21 0 6930 32 4 81.82
+23 500 356 F 24 0 76651 35 4 82.98
+23 514 332 P 22 0 91412 33 4 82.22
+23 52 417 F 23 0 97332 34 4 82.61
+23 528 311 P 22 0 82557 36 3 86.67
+23 530 140 P 21 0 81286 32 4 81.82
+23 532 124 P 24 0 71992 35 4 82.98
+23 538 344 F 22 0 89110 33 4 82.22
+23 544 80 P 21 0 81286 32 4 81.82
+23 545 128 F 21 0 16219 32 4 81.82
+23 546 370 F 23 0 7018 34 4 82.61
+23 548 170 P 22 0 100803 33 4 82.22
+23 548 205 P 22 0 51817 33 4 82.22
+23 548 317 P 23 0 74352 34 4 82.61
+23 550 86 P 22 0 101993 33 4 82.22
+23 570 334 F 21 0 71499 32 4 81.82
+23 571 28 F 21 0 53731 35 3 86.36
+23 572 238 P 23 0 60879 34 4 82.61
+23 575 219 F 24 0 6926 35 4 82.98
+23 576 215 P 21 0 68463 35 3 86.36
+23 576 298 F 25 0 15273 36 4 83.33
+23 576 73 F 22 0 17057 36 3 86.67
+23 583 160 F 22 0 84827 36 3 86.67
+23 584 450 P 23 0 94301 34 4 82.61
+23 588 273 P 22 0 93219 33 4 82.22
+23 590 151 P 27 0 55618 35 5 80.00
+23 6 612 P 22 0 61639 33 4 82.22
+23 60 0 F 22 0 103150 36 3 86.67
+23 611 394 P 23 0 19433 37 3 86.96
+23 616 174 P 23 0 29313 34 4 82.61
+23 632 166 F 24 0 5962 44 1 95.74
+23 662 423 P 23 0 17267 34 4 82.61
+23 689 311 F 25 0 83356 36 4 83.33
+23 700 443 P 21 0 15522 32 4 81.82
+23 703 367 P 21 0 70572 32 4 81.82
+23 707 313 P 24 0 95631 35 4 82.98
+23 71 605 P 23 0 77554 34 4 82.61
+23 730 305 F 21 0 96824 35 3 86.36
+23 731 276 P 22 0 40383 33 4 82.22
+23 748 310 F 23 0 66078 34 4 82.61
+23 751 276 F 23 0 76288 34 4 82.61
+23 758 186 P 22 0 15674 33 4 82.22
+23 760 160 F 25 0 7315 36 4 83.33
+23 760 301 P 24 0 78158 35 4 82.98
+23 763 326 F 23 0 97667 34 4 82.61
+23 77 860 F 21 0 98710 32 4 81.82
+23 772 260 P 21 0 83317 32 4 81.82
+23 79 183 P 27 0 93621 35 5 80.00
+23 79 571 P 27 0 91484 35 5 80.00
+23 790 227 P 22 0 75556 33 4 82.22
+23 790 257 F 24 0 84890 35 4 82.98
+23 797 352 F 22 0 105927 33 4 82.22
+23 799 252 F 24 0 99343 35 4 82.98
+23 807 131 P 22 0 29005 33 4 82.22
+23 810 304 P 25 0 100506 36 4 83.33
+23 817 235 F 22 0 6634 39 2 91.11
+23 817 350 P 24 0 100512 35 4 82.98
+23 819 375 F 23 0 28124 40 2 91.30
+23 823 291 P 21 0 93666 32 4 81.82
+23 828 379 F 21 0 90859 32 4 81.82
+23 836 32 P 22 0 100513 33 4 82.22
+23 836 433 F 23 0 61012 37 3 86.96
+23 842 422 F 21 0 40248 32 4 81.82
+23 842 562 P 22 0 15686 33 4 82.22
+23 842 563 P 23 0 74393 34 4 82.61
+23 845 159 P 21 0 14409 32 4 81.82
+23 856 211 P 24 0 51482 35 4 82.98
+23 859 207 F 23 0 17268 46 0 100.00
+23 859 209 F 23 0 36479 37 3 86.96
+23 867 592 F 22 0 89170 36 3 86.67
+23 870 418 F 24 0 97455 38 3 87.23
+23 876 239 P 26 0 31903 37 4 83.67
+23 884 291 F 23 0 63242 34 4 82.61
+23 884 294 F 23 0 7018 34 4 82.61
+23 890 308 F 23 0 7018 34 4 82.61
+23 897 379 F 22 0 76206 33 4 82.22
+23 907 143 F 23 0 65114 34 4 82.61
+23 910 193 P 22 0 25811 36 3 86.67
+23 929 216 P 21 0 5958 32 4 81.82
+23 936 269 F 24 0 7016 35 4 82.98
+23 936 323 P 23 0 53730 34 4 82.61
+23 943 148 F 23 0 74383 37 3 86.96
+23 953 119 F 23 0 23592 37 3 86.96
+23 953 168 P 22 0 78488 36 3 86.67
+23 960 338 F 22 0 29303 33 4 82.22
+23 971 176 P 24 0 68460 35 4 82.98
+23 975 382 F 23 0 28124 40 2 91.30
+23 991 147 P 22 0 88077 33 4 82.22
+24 1003 312 P 22 0 20692 37 3 86.96
+24 1003 62 P 27 0 92159 36 5 80.39
+24 1004 408 F 23 0 86829 35 4 82.98
+24 1012 293 P 28 0 5371 37 5 80.77
+24 1013 184 F 22 0 69814 34 4 82.61
+24 1017 338 F 21 0 22832 33 4 82.22
+24 1020 176 F 27 0 73596 36 5 80.39
+24 1033 414 P 24 0 73224 36 4 83.33
+24 1040 267 F 25 0 74967 37 4 83.67
+24 1074 148 P 25 0 5079 37 4 83.67
+24 1093 388 P 22 0 72340 34 4 82.61
+24 1094 353 P 22 0 6919 34 4 82.61
+24 1096 44 F 24 0 71269 36 4 83.33
+24 1098 92 F 24 0 61103 36 4 83.33
+24 1125 290 F 25 0 40366 37 4 83.67
+24 1142 316 P 24 0 76248 36 4 83.33
+24 1146 267 P 22 0 39090 34 4 82.61
+24 1161 207 P 23 0 13647 41 2 91.49
+24 1165 226 F 21 0 14977 33 4 82.22
+24 1167 156 P 21 0 17805 33 4 82.22
+24 1181 71 P 24 0 6021 36 4 83.33
+24 1195 159 P 23 0 83519 35 4 82.98
+24 1207 280 P 22 0 73214 34 4 82.61
+24 1214 206 P 23 0 21131 35 4 82.98
+24 1221 243 P 26 0 24953 35 5 80.00
+24 1223 435 P 24 0 96330 39 3 87.50
+24 1225 271 P 24 0 79092 36 4 83.33
+24 1249 473 F 22 0 72625 34 4 82.61
+24 1264 323 F 25 0 15183 37 4 83.67
+24 1273 210 F 26 0 90934 35 5 80.00
+24 1292 272 P 22 0 76724 37 3 86.96
+24 1305 308 F 20 0 15653 32 4 81.82
+24 1307 154 F 23 0 26711 38 3 87.23
+24 1310 355 P 25 0 98069 37 4 83.67
+24 1316 129 F 27 0 90834 36 5 80.39
+24 1316 129 F 27 0 90879 36 5 80.39
+24 1320 39 F 23 0 46231 35 4 82.98
+24 1334 288 F 23 0 34903 35 4 82.98
+24 1335 238 P 22 0 79279 37 3 86.96
+24 134 66 F 23 0 30170 38 3 87.23
+24 1349 122 F 23 0 16521 38 3 87.23
+24 135 108 P 22 0 14762 37 3 86.96
+24 1369 367 P 22 0 42269 37 3 86.96
+24 1382 236 F 23 0 71289 35 4 82.98
+24 1386 190 P 24 0 71286 42 2 91.67
+24 140 12 P 23 0 34908 35 4 82.98
+24 1401 351 F 25 0 102614 37 4 83.67
+24 1404 412 F 22 0 74538 34 4 82.61
+24 1419 334 P 23 0 80420 35 4 82.98
+24 1428 459 F 25 0 30824 37 4 83.67
+24 1436 403 F 23 0 78217 38 3 87.23
+24 1443 163 P 24 0 73132 39 3 87.50
+24 1449 346 F 23 0 55377 35 4 82.98
+24 1451 314 F 23 0 55377 35 4 82.98
+24 1451 366 F 26 0 55345 38 4 84.00
+24 1480 314 P 23 0 98073 35 4 82.98
+24 1482 435 P 25 0 74533 37 4 83.67
+24 1488 177 F 23 0 90740 38 3 87.23
+24 1502 71 F 24 0 84491 36 4 83.33
+24 1505 362 F 26 0 5967 41 3 88.00
+24 1507 156 F 22 0 15798 34 4 82.61
+24 1507 350 F 25 0 40366 37 4 83.67
+24 1511 255 F 24 0 87532 36 4 83.33
+24 1523 306 P 26 0 57202 38 4 84.00
+24 154 42 F 21 0 97120 33 4 82.22
+24 156 111 P 27 0 50471 36 5 80.39
+24 1565 159 P 21 0 84821 33 4 82.22
+24 159 92 F 23 0 104017 35 4 82.98
+24 159 92 F 23 0 106601 38 3 87.23
+24 1593 357 P 26 0 83268 35 5 80.00
+24 163 139 P 22 0 65135 34 4 82.61
+24 1643 119 F 22 0 93767 34 4 82.61
+24 1650 173 P 26 0 73614 35 5 80.00
+24 1654 21 F 23 0 5965 35 4 82.98
+24 1694 42 F 25 0 6007 40 3 87.76
+24 1697 219 F 24 0 66883 42 2 91.67
+24 1697 239 F 26 0 73610 38 4 84.00
+24 1701 313 F 24 0 77815 42 2 91.67
+24 1701 313 P 24 0 77827 42 2 91.67
+24 1701 313 P 25 0 17266 40 3 87.76
+24 1702 182 P 23 0 14525 35 4 82.98
+24 1713 211 P 27 0 39528 36 5 80.39
+24 1723 50 P 21 0 74561 33 4 82.22
+24 1757 7 P 26 0 6000 38 4 84.00
+24 1758 206 P 23 0 9746 35 4 82.98
+24 1763 370 P 23 0 77814 35 4 82.98
+24 1765 56 F 27 0 53738 36 5 80.39
+24 1769 121 P 25 0 66536 37 4 83.67
+24 179 26 P 26 0 15193 35 5 80.00
+24 182 10 F 27 0 84838 36 5 80.39
+24 1837 296 F 26 0 90953 35 5 80.00
+24 1854 391 F 22 0 93393 34 4 82.61
+24 1868 1 F 24 0 80424 36 4 83.33
+24 1876 62 F 23 0 80304 35 4 82.98
+24 1876 62 F 27 0 6609 36 5 80.39
+24 1895 63 P 24 0 6613 36 4 83.33
+24 195 275 P 27 0 6926 36 5 80.39
+24 20 145 F 20 0 42736 32 4 81.82
+24 20 151 F 24 0 1179 36 4 83.33
+24 200 0 F 26 0 64028 35 5 80.00
+24 214 240 P 24 0 8236 39 3 87.50
+24 217 8 F 23 0 15601 38 3 87.23
+24 229 360 F 21 0 19961 33 4 82.22
+24 229 360 F 22 0 19961 37 3 86.96
+24 24 479 F 24 0 46995 36 4 83.33
+24 242 77 P 24 0 82820 36 4 83.33
+24 262 30 F 27 0 53731 36 5 80.39
+24 263 88 P 21 0 15099 33 4 82.22
+24 270 360 F 21 0 19961 33 4 82.22
+24 270 360 F 22 0 19961 37 3 86.96
+24 293 36 F 23 0 97113 35 4 82.98
+24 293 39 P 23 0 6641 38 3 87.23
+24 294 77 P 24 0 82820 36 4 83.33
+24 295 29 F 22 0 14366 34 4 82.61
+24 300 207 P 27 0 23593 39 4 84.31
+24 326 167 P 24 0 96361 36 4 83.33
+24 339 349 P 25 0 8152 40 3 87.76
+24 347 10 P 21 0 55675 33 4 82.22
+24 351 282 P 25 0 74544 37 4 83.67
+24 355 215 P 26 0 61517 35 5 80.00
+24 359 284 F 23 0 15238 35 4 82.98
+24 360 296 P 26 0 74345 35 5 80.00
+24 393 294 P 27 0 103760 36 5 80.39
+24 408 311 F 26 0 67065 35 5 80.00
+24 420 248 P 22 0 96330 37 3 86.96
+24 421 172 F 28 0 99789 37 5 80.77
+24 426 489 P 26 0 91758 35 5 80.00
+24 429 281 P 27 0 19250 36 5 80.39
+24 429 282 F 27 0 76283 36 5 80.39
+24 429 318 P 23 0 79427 35 4 82.98
+24 44 425 P 27 0 84834 39 4 84.31
+24 445 21 F 23 0 5072 35 4 82.98
+24 445 21 F 23 0 5075 35 4 82.98
+24 445 25 P 23 0 5962 38 3 87.23
+24 454 367 F 26 0 90953 35 5 80.00
+24 464 219 P 26 0 103996 35 5 80.00
+24 470 384 P 26 0 91413 41 3 88.00
+24 470 449 F 27 0 6872 36 5 80.39
+24 479 330 P 24 0 50564 36 4 83.33
+24 479 404 P 23 0 50394 35 4 82.98
+24 479 412 P 22 0 93789 34 4 82.61
+24 484 193 F 22 0 22749 34 4 82.61
+24 488 152 P 24 0 71284 36 4 83.33
+24 488 152 P 25 0 71281 40 3 87.76
+24 49 160 F 28 0 104724 37 5 80.77
+24 499 106 P 26 0 61517 35 5 80.00
+24 507 345 F 25 0 89662 40 3 87.76
+24 517 69 P 24 0 6136 36 4 83.33
+24 518 276 P 24 0 6549 36 4 83.33
+24 523 425 P 23 0 74347 38 3 87.23
+24 524 309 F 24 0 80304 39 3 87.50
+24 53 402 F 23 0 37197 35 4 82.98
+24 531 239 F 25 0 106218 37 4 83.67
+24 533 357 F 27 0 77814 36 5 80.39
+24 533 358 P 23 0 17268 35 4 82.98
+24 550 323 F 26 0 61236 35 5 80.00
+24 554 233 F 23 0 5060 35 4 82.98
+24 559 178 F 22 0 14937 34 4 82.61
+24 563 206 P 24 0 93824 36 4 83.33
+24 576 301 F 25 0 77816 40 3 87.76
+24 591 199 P 23 0 9746 35 4 82.98
+24 60 480 F 26 0 78892 35 5 80.00
+24 614 231 F 21 0 54793 33 4 82.22
+24 619 278 P 24 0 5172 36 4 83.33
+24 619 455 P 24 0 51812 39 3 87.50
+24 619 477 F 22 0 21661 34 4 82.61
+24 622 289 F 26 0 26710 35 5 80.00
+24 623 433 F 23 0 5065 35 4 82.98
+24 629 387 F 26 0 61011 38 4 84.00
+24 634 286 F 21 0 87265 33 4 82.22
+24 651 138 F 25 0 50505 37 4 83.67
+24 654 330 F 21 0 81531 33 4 82.22
+24 671 285 F 23 0 34903 35 4 82.98
+24 676 276 F 21 0 14977 33 4 82.22
+24 684 214 F 26 0 17269 35 5 80.00
+24 693 219 P 22 0 21006 34 4 82.61
+24 693 323 P 24 0 75997 39 3 87.50
+24 693 416 P 25 0 5085 37 4 83.67
+24 700 433 P 26 0 31184 35 5 80.00
+24 703 358 P 23 0 74385 38 3 87.23
+24 703 367 F 24 0 84825 36 4 83.33
+24 704 140 F 20 0 22871 32 4 81.82
+24 71 84 F 24 0 8887 36 4 83.33
+24 719 285 F 25 0 74550 37 4 83.67
+24 722 352 P 23 0 68455 35 4 82.98
+24 724 149 P 20 0 104014 32 4 81.82
+24 732 146 P 24 0 5380 36 4 83.33
+24 732 373 F 26 0 13147 35 5 80.00
+24 740 280 P 23 0 104941 35 4 82.98
+24 749 346 F 25 0 26706 40 3 87.76
+24 753 370 F 27 0 17264 39 4 84.31
+24 754 386 F 26 0 73060 35 5 80.00
+24 760 331 P 27 0 23874 36 5 80.39
+24 765 344 P 24 0 94647 36 4 83.33
+24 77 25 F 22 0 17925 37 3 86.96
+24 770 422 P 26 0 79488 35 5 80.00
+24 771 213 P 21 0 64871 33 4 82.22
+24 777 251 P 27 0 51952 39 4 84.31
+24 78 394 F 23 0 90740 38 3 87.23
+24 784 342 P 26 0 80347 35 5 80.00
+24 79 203 P 21 0 94231 33 4 82.22
+24 79 76 P 26 0 89758 35 5 80.00
+24 790 336 F 24 0 15007 39 3 87.50
+24 810 304 P 26 0 51824 35 5 80.00
+24 813 193 P 26 0 5090 35 5 80.00
+24 823 281 F 21 0 34909 33 4 82.22
+24 827 114 F 23 0 23590 35 4 82.98
+24 829 231 P 23 0 95979 38 3 87.23
+24 831 131 P 22 0 40903 37 3 86.96
+24 857 139 F 26 0 40447 35 5 80.00
+24 859 207 P 24 0 77828 48 0 100.00
+24 866 463 F 21 0 81531 33 4 82.22
+24 874 311 F 22 0 36476 34 4 82.61
+24 889 133 F 23 0 32671 35 4 82.98
+24 895 305 P 21 0 66921 36 3 86.67
+24 920 133 F 24 0 24904 36 4 83.33
+24 921 117 F 27 0 98995 36 5 80.39
+24 924 279 P 26 0 24627 35 5 80.00
+24 931 203 P 27 0 5057 36 5 80.39
+24 932 271 F 25 0 55785 37 4 83.67
+24 936 279 P 25 0 90208 43 2 91.84
+24 943 155 F 26 0 106446 35 5 80.00
+24 952 258 P 21 0 97502 33 4 82.22
+24 954 252 F 22 0 8234 34 4 82.61
+24 973 218 F 26 0 26422 35 5 80.00
+24 974 284 F 26 0 82814 38 4 84.00
+24 976 296 F 21 0 87265 33 4 82.22
+24 986 375 F 24 0 5506 36 4 83.33
+25 10 600 F 27 0 96493 40 4 84.62
+25 1007 257 P 29 0 17255 39 5 81.48
+25 1022 230 F 25 0 88311 35 5 80.00
+25 1025 175 F 27 0 43284 37 5 80.77
+25 1025 175 F 29 0 43284 39 5 81.48
+25 103 71 P 24 0 23594 43 2 91.84
+25 1049 419 F 24 0 43192 37 4 83.67
+25 107 71 P 24 0 23594 40 3 87.76
+25 1078 108 P 26 0 90553 39 4 84.31
+25 1081 339 F 27 0 65435 37 5 80.77
+25 1106 354 P 28 0 47199 38 5 81.13
+25 1109 265 F 25 0 15732 38 4 84.00
+25 1138 375 F 25 0 14499 41 3 88.00
+25 1146 197 F 24 0 15919 37 4 83.67
+25 1150 377 P 23 0 97491 36 4 83.33
+25 1161 305 F 26 0 26798 36 5 80.39
+25 1195 186 P 26 0 76716 36 5 80.39
+25 1207 278 P 24 0 3112 37 4 83.67
+25 1207 334 P 25 0 82059 35 5 80.00
+25 1208 352 F 28 0 43253 38 5 81.13
+25 1235 338 F 25 0 28475 38 4 84.00
+25 1241 125 F 25 0 16287 35 5 80.00
+25 1250 370 P 26 0 83125 36 5 80.39
+25 1256 325 F 27 0 13616 40 4 84.62
+25 1282 321 P 25 0 81944 35 5 80.00
+25 1326 320 F 23 0 44517 36 4 83.33
+25 1326 402 F 24 0 105287 40 3 87.76
+25 1353 332 F 25 0 36783 35 5 80.00
+25 1372 233 F 25 0 16738 41 3 88.00
+25 1374 367 F 27 0 101473 37 5 80.77
+25 1378 211 F 26 0 15716 36 5 80.39
+25 1386 337 F 26 0 23630 36 5 80.39
+25 1386 381 F 23 0 96681 36 4 83.33
+25 1386 86 P 25 0 52548 35 5 80.00
+25 140 42 P 24 0 36775 37 4 83.67
+25 1401 291 P 22 0 17059 35 4 82.98
+25 1426 258 P 25 0 64039 35 5 80.00
+25 1430 245 P 29 0 73628 39 5 81.48
+25 1437 387 P 27 0 88119 37 5 80.77
+25 1447 360 P 26 0 73969 36 5 80.39
+25 1449 340 P 28 0 14516 38 5 81.13
+25 1451 308 P 28 0 14516 38 5 81.13
+25 146 7 F 25 0 17925 41 3 88.00
+25 149 5 F 27 0 5062 40 4 84.62
+25 1503 356 P 25 0 23337 35 5 80.00
+25 1505 362 P 27 0 5073 37 5 80.77
+25 1507 346 F 24 0 14972 40 3 87.76
+25 1508 292 P 28 0 103367 38 5 81.13
+25 1517 323 P 26 0 73205 39 4 84.31
+25 1545 55 F 26 0 56851 36 5 80.39
+25 1581 84 P 25 0 17344 41 3 88.00
+25 1626 335 F 24 0 83348 40 3 87.76
+25 1638 20 P 27 0 34406 37 5 80.77
+25 1652 118 F 26 0 89387 36 5 80.39
+25 1654 18 F 27 0 5956 37 5 80.77
+25 166 127 P 25 0 84813 35 5 80.00
+25 1696 35 P 25 0 51262 35 5 80.00
+25 1701 308 F 27 0 17262 43 3 88.46
+25 1702 316 F 23 0 48316 36 4 83.33
+25 1725 123 F 27 0 57985 37 5 80.77
+25 1744 133 F 26 0 5080 39 4 84.31
+25 1744 171 P 25 0 40646 38 4 84.00
+25 1765 46 F 24 0 98071 40 3 87.76
+25 1780 239 P 25 0 25098 35 5 80.00
+25 179 87 F 26 0 95261 36 5 80.39
+25 1805 101 P 25 0 5963 35 5 80.00
+25 1817 120 P 21 0 85739 34 4 82.61
+25 1832 329 P 27 0 95977 37 5 80.77
+25 190 239 F 29 0 22623 39 5 81.48
+25 193 92 P 25 0 30219 35 5 80.00
+25 20 15 P 24 0 40711 37 4 83.67
+25 200 282 P 25 0 40708 35 5 80.00
+25 203 325 F 26 0 88152 36 5 80.39
+25 209 117 P 26 0 74812 36 5 80.39
+25 22 203 F 25 0 7714 35 5 80.00
+25 229 360 F 24 0 19961 40 3 87.76
+25 231 291 P 29 0 67026 39 5 81.48
+25 237 106 P 26 0 8829 39 4 84.31
+25 262 22 F 24 0 74565 37 4 83.67
+25 265 362 F 22 0 23592 35 4 82.98
+25 270 360 F 24 0 19961 40 3 87.76
+25 291 313 P 24 0 98115 37 4 83.67
+25 291 316 F 27 0 14977 37 5 80.77
+25 304 0 P 24 0 90200 43 2 91.84
+25 304 164 P 27 0 31615 37 5 80.77
+25 312 106 F 25 0 49248 35 5 80.00
+25 312 331 P 26 0 68367 36 5 80.39
+25 314 177 F 24 0 5064 37 4 83.67
+25 314 354 F 25 0 76547 35 5 80.00
+25 321 281 P 27 0 26654 37 5 80.77
+25 333 289 F 25 0 77169 35 5 80.00
+25 352 181 F 24 0 8898 40 3 87.76
+25 367 408 P 27 0 90416 37 5 80.77
+25 38 653 P 25 0 8835 44 2 92.00
+25 38 688 F 27 0 45653 37 5 80.77
+25 40 368 F 25 0 27130 38 4 84.00
+25 405 419 F 25 0 30235 35 5 80.00
+25 413 325 P 26 0 83125 36 5 80.39
+25 423 259 F 26 0 15732 36 5 80.39
+25 425 495 F 27 0 38684 37 5 80.77
+25 427 308 F 26 0 68512 36 5 80.39
+25 437 318 F 26 0 27302 36 5 80.39
+25 445 21 F 24 0 5078 37 4 83.67
+25 450 385 P 27 0 51954 43 3 88.46
+25 450 386 F 26 0 84823 36 5 80.39
+25 450 426 F 25 0 76372 35 5 80.00
+25 453 340 P 26 0 30788 36 5 80.39
+25 457 345 F 23 0 13617 36 4 83.33
+25 491 198 P 26 0 17925 42 3 88.24
+25 499 317 P 26 0 15719 42 3 88.24
+25 506 291 F 24 0 43192 37 4 83.67
+25 514 329 F 25 0 55366 35 5 80.00
+25 517 432 F 27 0 85635 37 5 80.77
+25 518 87 P 27 0 68078 37 5 80.77
+25 539 116 F 26 0 49811 39 4 84.31
+25 539 116 P 25 0 6106 35 5 80.00
+25 546 361 P 23 0 17797 36 4 83.33
+25 549 392 P 26 0 78233 39 4 84.31
+25 554 237 P 25 0 5960 38 4 84.00
+25 574 291 F 26 0 28009 39 4 84.31
+25 576 392 F 25 0 48433 35 5 80.00
+25 583 160 F 24 0 83374 43 2 91.84
+25 589 325 P 26 0 15719 42 3 88.24
+25 603 340 F 21 0 84818 34 4 82.61
+25 619 381 F 23 0 5963 36 4 83.33
+25 62 18 F 26 0 5379 36 5 80.39
+25 622 284 F 25 0 54792 41 3 88.00
+25 640 194 P 27 0 105236 37 5 80.77
+25 657 465 P 26 0 30067 36 5 80.39
+25 661 472 P 26 0 78233 39 4 84.31
+25 662 417 P 25 0 77835 38 4 84.00
+25 690 283 P 25 0 96334 35 5 80.00
+25 700 439 F 25 0 82154 38 4 84.00
+25 708 262 P 23 0 14897 36 4 83.33
+25 723 41 P 25 0 40429 35 5 80.00
+25 735 267 F 24 0 16245 37 4 83.67
+25 753 292 P 24 0 20658 37 4 83.67
+25 777 257 F 25 0 34298 35 5 80.00
+25 790 160 F 25 0 35506 35 5 80.00
+25 790 168 F 25 0 2732 35 5 80.00
+25 80 452 P 26 0 98338 36 5 80.39
+25 800 257 P 25 0 43676 35 5 80.00
+25 816 57 F 21 0 90835 34 4 82.61
+25 816 57 F 21 0 90880 34 4 82.61
+25 823 279 P 27 0 68459 40 4 84.62
+25 829 230 F 25 0 33628 38 4 84.00
+25 833 275 F 24 0 15919 37 4 83.67
+25 833 372 P 23 0 52225 36 4 83.33
+25 843 452 F 24 0 26711 37 4 83.67
+25 850 428 P 25 0 2356 35 5 80.00
+25 850 510 P 25 0 20750 38 4 84.00
+25 853 548 P 25 0 51945 35 5 80.00
+25 883 441 P 25 0 88137 41 3 88.00
+25 884 285 P 23 0 17797 36 4 83.33
+25 892 196 P 25 0 38672 38 4 84.00
+25 897 208 F 26 0 25369 36 5 80.39
+25 918 165 P 25 0 48316 35 5 80.00
+25 932 64 P 26 0 70663 39 4 84.31
+25 952 186 P 27 0 68464 37 5 80.77
+25 953 112 F 28 0 6634 38 5 81.13
+25 968 259 F 24 0 40669 37 4 83.67
+25 971 177 P 25 0 76716 35 5 80.00
+25 974 292 P 23 0 53730 36 4 83.33
+25 979 265 F 23 0 102877 36 4 83.33
+25 985 194 P 25 0 64039 35 5 80.00
+25 991 145 P 26 0 91413 42 3 88.24
+25 991 148 P 27 0 53727 37 5 80.77
+25 992 358 P 21 0 51814 34 4 82.61
+25 997 232 P 24 0 80298 37 4 83.67
+26 1012 287 P 24 0 15961 35 5 80.00
+26 1013 304 F 24 0 36775 41 3 88.00
+26 1038 285 F 24 0 82825 35 5 80.00
+26 1041 180 F 26 0 50154 37 5 80.77
+26 1043 383 P 24 0 17795 41 3 88.00
+26 1045 365 F 30 0 75668 41 5 82.14
+26 1065 255 F 26 0 103708 43 3 88.46
+26 1074 141 P 25 0 15671 42 3 88.24
+26 1078 220 P 28 0 21361 39 5 81.48
+26 1080 214 F 26 0 23609 37 5 80.77
+26 1094 124 P 26 0 98340 37 5 80.77
+26 1094 128 F 24 0 90100 35 5 80.00
+26 1121 270 P 26 0 6101 40 4 84.62
+26 1128 180 F 25 0 90810 36 5 80.39
+26 1135 70 P 24 0 27023 35 5 80.00
+26 1207 279 P 26 0 73614 37 5 80.77
+26 1221 254 P 28 0 40633 42 4 85.19
+26 1226 226 P 24 0 73582 35 5 80.00
+26 1237 406 P 25 0 8160 39 4 84.31
+26 1243 206 P 27 0 5057 38 5 81.13
+26 1271 24 P 26 0 6645 43 3 88.46
+26 1281 331 P 26 0 73130 37 5 80.77
+26 1296 225 P 24 0 73582 35 5 80.00
+26 1315 340 P 24 0 6921 38 4 84.00
+26 1322 340 P 24 0 74191 35 5 80.00
+26 1322 340 P 25 0 74384 36 5 80.39
+26 1336 208 F 24 0 15004 35 5 80.00
+26 1350 373 F 26 0 100840 37 5 80.77
+26 1354 367 F 25 0 83358 36 5 80.39
+26 138 47 F 28 0 52225 39 5 81.48
+26 1382 269 F 27 0 8894 38 5 81.13
+26 1385 285 F 25 0 84826 39 4 84.31
+26 1386 269 F 24 0 55095 35 5 80.00
+26 140 123 F 24 0 17050 35 5 80.00
+26 140 45 F 25 0 51818 36 5 80.39
+26 1404 412 F 25 0 74188 39 4 84.31
+26 1404 412 F 25 0 74591 39 4 84.31
+26 1428 453 P 25 0 53737 36 5 80.39
+26 143 8 P 25 0 73612 36 5 80.39
+26 1437 375 F 24 0 83368 35 5 80.00
+26 1446 264 P 22 0 6920 36 4 83.33
+26 1449 404 P 26 0 5065 37 5 80.77
+26 1464 260 F 26 0 6733 40 4 84.62
+26 1473 110 P 26 0 20261 37 5 80.77
+26 1476 406 F 28 0 75824 39 5 81.48
+26 1488 176 F 27 0 19021 41 4 84.91
+26 1488 442 P 27 0 90653 38 5 81.13
+26 1490 241 F 27 0 29879 38 5 81.13
+26 1495 171 P 27 0 81488 38 5 81.13
+26 1512 227 P 26 0 6101 40 4 84.62
+26 1518 233 P 26 0 71280 46 2 92.31
+26 1531 350 P 27 0 26707 41 4 84.91
+26 1535 223 F 26 0 90762 37 5 80.77
+26 1535 388 P 25 0 74533 39 4 84.31
+26 1543 283 P 26 0 100451 37 5 80.77
+26 156 67 P 25 0 29888 36 5 80.39
+26 1636 124 F 24 0 100886 35 5 80.00
+26 1654 17 P 25 0 5078 36 5 80.39
+26 1701 317 P 25 0 74398 36 5 80.39
+26 1719 158 F 26 0 36146 40 4 84.62
+26 1719 73 P 27 0 50108 38 5 81.13
+26 1802 22 F 27 0 93823 38 5 81.13
+26 1802 345 F 24 0 26881 35 5 80.00
+26 1832 321 F 22 0 84827 36 4 83.33
+26 1889 149 F 25 0 61623 39 4 84.31
+26 190 250 F 25 0 6195 36 5 80.39
+26 192 83 F 25 0 42284 36 5 80.39
+26 1943 354 P 26 0 49517 37 5 80.77
+26 200 0 P 24 0 8893 35 5 80.00
+26 209 104 P 26 0 5067 40 4 84.62
+26 218 12 P 27 0 6119 38 5 81.13
+26 229 360 F 27 0 53959 38 5 81.13
+26 249 203 F 26 0 5067 43 3 88.46
+26 26 756 F 24 0 1422 35 5 80.00
+26 269 374 P 24 0 38743 38 4 84.00
+26 270 360 F 27 0 53959 38 5 81.13
+26 296 56 F 24 0 646 35 5 80.00
+26 317 251 F 25 0 90810 36 5 80.39
+26 323 188 F 24 0 36785 35 5 80.00
+26 336 245 F 27 0 106747 38 5 81.13
+26 344 236 F 27 0 51973 38 5 81.13
+26 35 173 F 25 0 812 36 5 80.39
+26 351 288 F 28 0 84827 39 5 81.48
+26 351 288 P 29 0 52826 40 5 81.82
+26 366 224 F 26 0 97932 37 5 80.77
+26 366 370 P 24 0 30796 35 5 80.00
+26 368 294 P 25 0 96362 39 4 84.31
+26 38 51 P 23 0 14762 40 3 87.76
+26 399 260 F 26 0 74787 37 5 80.77
+26 418 479 P 23 0 69924 40 3 87.76
+26 44 423 F 26 0 90195 43 3 88.46
+26 443 255 P 27 0 90890 38 5 81.13
+26 445 156 P 26 0 8834 37 5 80.77
+26 446 234 P 26 0 90196 37 5 80.77
+26 457 350 P 25 0 68463 39 4 84.31
+26 459 319 F 25 0 22991 36 5 80.39
+26 468 355 P 25 0 40514 36 5 80.39
+26 470 380 F 24 0 36775 41 3 88.00
+26 479 293 P 25 0 96752 36 5 80.39
+26 486 452 P 25 0 68366 36 5 80.39
+26 487 175 F 25 0 16044 36 5 80.39
+26 493 179 P 24 0 86600 35 5 80.00
+26 494 362 P 25 0 90432 39 4 84.31
+26 495 150 F 25 0 77750 36 5 80.39
+26 523 295 F 25 0 15473 36 5 80.39
+26 537 384 F 24 0 57821 38 4 84.00
+26 539 308 F 25 0 6628 42 3 88.24
+26 539 67 P 24 0 65168 35 5 80.00
+26 559 332 F 24 0 15079 35 5 80.00
+26 561 414 P 24 0 98547 35 5 80.00
+26 587 249 P 26 0 15671 37 5 80.77
+26 622 208 P 23 0 15185 37 4 83.67
+26 623 431 F 26 0 5074 37 5 80.77
+26 634 183 F 27 0 96584 38 5 81.13
+26 640 275 P 27 0 5083 38 5 81.13
+26 674 293 F 26 0 22827 37 5 80.77
+26 697 255 F 30 0 13888 41 5 82.14
+26 700 348 F 24 0 60806 38 4 84.00
+26 703 366 P 24 0 6919 41 3 88.00
+26 703 369 P 24 0 52831 35 5 80.00
+26 711 235 F 25 0 104625 36 5 80.39
+26 733 367 P 26 0 68458 37 5 80.77
+26 740 293 P 24 0 95979 38 4 84.00
+26 741 459 P 27 0 102545 38 5 81.13
+26 752 146 F 27 0 8786 38 5 81.13
+26 77 643 P 26 0 19062 37 5 80.77
+26 771 391 F 23 0 93181 37 4 83.67
+26 773 235 F 25 0 17920 36 5 80.39
+26 78 393 F 27 0 19021 41 4 84.91
+26 78 393 P 26 0 285 40 4 84.62
+26 78 659 P 27 0 90653 38 5 81.13
+26 789 164 P 26 0 94409 37 5 80.77
+26 789 256 P 26 0 14404 37 5 80.77
+26 850 237 P 26 0 71281 46 2 92.31
+26 853 485 P 26 0 74722 37 5 80.77
+26 870 248 P 27 0 19221 38 5 81.13
+26 870 414 F 23 0 74141 37 4 83.67
+26 875 280 P 28 0 50882 39 5 81.48
+26 897 355 F 25 0 76216 36 5 80.39
+26 936 306 P 27 0 15027 38 5 81.13
+26 944 227 F 27 0 34906 38 5 81.13
+26 950 190 F 26 0 50154 37 5 80.77
+26 953 121 F 27 0 6634 41 4 84.91
+26 959 219 P 26 0 8447 37 5 80.77
+26 960 245 P 26 0 71284 40 4 84.62
+26 970 358 P 26 0 71284 40 4 84.62
+26 971 176 P 27 0 14459 38 5 81.13
+26 973 195 F 26 0 103757 37 5 80.77
+26 973 219 F 27 0 14057 38 5 81.13
+26 984 470 F 28 0 11825 39 5 81.48
+26 99 331 F 29 0 35035 40 5 81.82
+26 991 149 F 23 0 83373 37 4 83.67
+27 1007 110 P 25 0 70572 40 4 84.62
+27 1011 275 F 25 0 12604 37 5 80.77
+27 1032 307 P 27 0 51810 39 5 81.48
+27 1065 206 P 26 0 74548 38 5 81.13
+27 1074 135 P 27 0 15673 45 3 88.89
+27 1078 108 P 26 0 74547 38 5 81.13
+27 1093 104 P 25 0 16270 37 5 80.77
+27 1125 163 P 25 0 5953 37 5 80.77
+27 1150 374 F 27 0 33629 39 5 81.48
+27 1156 255 F 25 0 105536 37 5 80.77
+27 118 4 P 25 0 54795 37 5 80.77
+27 1207 293 P 26 0 73130 38 5 81.13
+27 1214 205 P 26 0 17265 47 2 92.45
+27 1214 206 F 28 0 21140 43 4 85.45
+27 1235 260 P 24 0 30787 36 5 80.39
+27 1241 151 F 28 0 29288 40 5 81.82
+27 1252 453 F 28 0 73835 40 5 81.82
+27 1264 328 F 27 0 34906 42 4 85.19
+27 1271 23 P 26 0 5077 41 4 84.91
+27 1282 319 P 27 0 82138 39 5 81.48
+27 1285 320 F 24 0 90867 36 5 80.39
+27 1286 391 P 27 0 81360 39 5 81.48
+27 1325 301 F 29 0 24887 41 5 82.14
+27 1350 323 P 26 0 7416 38 5 81.13
+27 1384 226 F 24 0 34422 36 5 80.39
+27 140 38 P 29 0 83368 44 4 85.71
+27 1403 197 F 26 0 51765 38 5 81.13
+27 1416 145 P 27 0 15993 39 5 81.48
+27 143 0 P 27 0 82554 42 4 85.19
+27 143 7 P 24 0 73803 39 4 84.31
+27 143 9 P 26 0 74381 38 5 81.13
+27 146 219 P 26 0 14400 38 5 81.13
+27 1461 255 F 26 0 51804 38 5 81.13
+27 1480 295 F 26 0 46573 38 5 81.13
+27 1486 428 F 23 0 35384 35 5 80.00
+27 1599 207 F 30 0 27178 42 5 82.46
+27 1605 32 F 28 0 72067 40 5 81.82
+27 1609 288 F 29 0 30953 41 5 82.14
+27 1612 45 F 25 0 53654 37 5 80.77
+27 1618 50 F 24 0 11885 39 4 84.31
+27 1623 364 P 26 0 73245 38 5 81.13
+27 163 49 F 29 0 40329 41 5 82.14
+27 1650 163 P 26 0 95980 38 5 81.13
+27 1653 92 P 28 0 79365 40 5 81.82
+27 1698 363 F 26 0 28289 38 5 81.13
+27 195 295 F 25 0 83349 37 5 80.77
+27 226 115 P 25 0 94142 37 5 80.77
+27 229 357 F 23 0 74541 35 5 80.00
+27 270 357 F 23 0 74541 35 5 80.00
+27 290 323 P 24 0 51760 36 5 80.39
+27 302 87 F 25 0 9736 40 4 84.62
+27 342 339 F 24 0 99278 36 5 80.39
+27 357 344 P 25 0 74191 40 4 84.62
+27 363 166 F 24 0 90724 36 5 80.39
+27 384 344 F 28 0 68376 40 5 81.82
+27 39 800 P 25 0 95979 37 5 80.77
+27 393 235 F 28 0 55532 40 5 81.82
+27 443 254 P 28 0 90845 40 5 81.82
+27 450 382 F 26 0 36773 38 5 81.13
+27 453 318 F 26 0 6726 38 5 81.13
+27 479 179 F 27 0 51816 39 5 81.48
+27 484 343 F 27 0 78544 39 5 81.48
+27 539 66 P 25 0 93257 37 5 80.77
+27 548 219 P 26 0 5078 38 5 81.13
+27 548 76 F 28 0 20630 40 5 81.82
+27 565 336 P 24 0 19911 36 5 80.39
+27 566 400 P 23 0 62594 35 5 80.00
+27 623 437 P 24 0 97114 36 5 80.39
+27 636 344 F 26 0 84869 38 5 81.13
+27 693 302 P 24 0 86736 39 4 84.31
+27 693 302 P 24 0 89511 39 4 84.31
+27 71 186 F 23 0 84490 35 5 80.00
+27 729 311 F 25 0 64961 37 5 80.77
+27 758 177 F 28 0 49376 40 5 81.82
+27 758 182 P 23 0 19961 35 5 80.00
+27 77 650 F 25 0 41366 37 5 80.77
+27 772 291 F 25 0 56934 40 4 84.62
+27 790 152 F 27 0 74747 39 5 81.48
+27 790 169 P 33 0 80972 42 6 80.00
+27 800 512 F 23 0 26925 35 5 80.00
+27 817 231 F 28 0 6634 46 3 89.09
+27 842 559 P 30 0 74562 42 5 82.46
+27 848 351 F 27 0 13477 39 5 81.48
+27 875 207 F 26 0 75362 38 5 81.13
+27 891 196 F 23 0 47513 35 5 80.00
+27 901 114 P 27 0 19888 39 5 81.48
+27 918 361 F 28 0 83258 40 5 81.82
+27 936 286 P 24 0 52832 42 3 88.24
+27 936 287 F 25 0 84829 37 5 80.77
+27 953 122 P 25 0 16781 37 5 80.77
+27 99 400 P 27 0 16161 39 5 81.48
+28 109 42 P 27 0 80301 43 4 85.45
+28 1155 171 P 26 0 10737 39 5 81.48
+28 119 126 P 24 0 5081 37 5 80.77
+28 119 126 P 27 0 5078 40 5 81.82
+28 1204 181 P 27 0 64958 40 5 81.82
+28 1205 226 P 28 0 74141 44 4 85.71
+28 1221 257 F 24 0 80304 37 5 80.77
+28 1248 410 P 27 0 93914 43 4 85.45
+28 1257 278 P 28 0 83261 41 5 82.14
+28 1268 293 P 28 0 82029 41 5 82.14
+28 1287 105 F 29 0 64996 42 5 82.46
+28 1301 54 F 26 0 79051 39 5 81.48
+28 138 59 F 29 0 52225 45 4 85.96
+28 1383 144 P 26 0 66927 39 5 81.48
+28 149 2 F 28 0 6629 41 5 82.14
+28 1505 359 F 30 0 97118 43 5 82.76
+28 1538 458 P 29 0 49818 42 5 82.46
+28 154 39 F 27 0 5966 40 5 81.82
+28 1627 203 P 28 0 82029 41 5 82.14
+28 1700 148 F 27 0 5065 40 5 81.82
+28 1744 133 F 27 0 5068 43 4 85.45
+28 1748 367 P 23 0 86731 36 5 80.39
+28 1777 3 F 29 0 51824 42 5 82.46
+28 1903 17 P 26 0 8890 39 5 81.48
+28 23 441 P 25 0 45413 38 5 81.13
+28 291 308 P 29 0 37198 42 5 82.46
+28 3 100 F 26 0 29327 39 5 81.48
+28 351 376 P 25 0 78230 38 5 81.13
+28 38 649 P 27 0 8893 40 5 81.82
+28 39 172 F 26 0 29327 39 5 81.48
+28 393 245 F 27 0 83368 43 4 85.45
+28 4 44 F 26 0 8888 39 5 81.48
+28 423 254 P 26 0 42285 39 5 81.48
+28 424 141 F 26 0 7481 39 5 81.48
+28 443 233 F 25 0 16738 38 5 81.13
+28 457 360 P 28 0 64949 41 5 82.14
+28 486 444 P 25 0 91411 38 5 81.13
+28 5 138 F 26 0 29327 39 5 81.48
+28 548 218 P 29 0 5075 42 5 82.46
+28 619 455 P 27 0 74542 40 5 81.82
+28 632 160 F 27 0 97109 43 4 85.45
+28 693 379 F 28 0 83356 41 5 82.14
+28 7 138 F 26 0 29327 39 5 81.48
+28 732 27 P 28 0 63863 44 4 85.71
+28 732 353 P 24 0 58325 37 5 80.77
+28 777 264 P 25 0 19025 38 5 81.13
+28 801 87 F 25 0 77126 38 5 81.13
+28 815 373 P 25 0 103829 38 5 81.13
+28 815 387 F 25 0 55541 38 5 81.13
+28 820 224 P 26 0 68860 39 5 81.48
+28 859 209 P 27 0 21127 40 5 81.82
+28 877 273 P 28 0 82029 41 5 82.14
+28 881 313 P 27 0 93914 43 4 85.45
+28 929 205 F 26 0 6638 39 5 81.48
+28 944 213 P 27 0 52832 40 5 81.82
+28 997 240 F 26 0 86834 39 5 81.48
+29 1108 177 F 29 0 15732 43 5 82.76
+29 115 230 F 32 0 91326 43 6 80.33
+29 1195 154 F 25 0 83374 39 5 81.48
+29 1214 204 P 29 0 36466 43 5 82.76
+29 1214 213 F 29 0 36466 43 5 82.76
+29 1264 173 F 28 0 42509 42 5 82.46
+29 1325 273 F 28 0 5078 42 5 82.46
+29 1446 257 F 30 0 30166 44 5 83.05
+29 147 59 F 31 0 93736 42 6 80.00
+29 1701 307 F 29 0 77825 46 4 86.21
+29 1726 133 F 28 0 102866 42 5 82.46
+29 1793 156 F 26 0 82079 40 5 81.82
+29 20 142 F 32 0 13626 49 4 86.89
+29 31 3 P 29 0 5080 49 3 89.66
+29 362 344 P 28 0 96685 42 5 82.46
+29 393 234 P 28 0 78242 42 5 82.46
+29 422 287 P 25 0 13645 42 4 85.19
+29 425 166 F 27 0 21462 41 5 82.14
+29 554 228 P 31 0 5972 45 5 83.33
+29 561 415 F 29 0 71281 55 1 96.55
+29 568 162 F 26 0 82079 40 5 81.82
+29 593 147 F 31 0 5064 45 5 83.33
+29 607 200 F 31 0 5064 42 6 80.00
+29 619 377 F 27 0 30780 41 5 82.14
+29 619 382 P 27 0 6636 41 5 82.14
+29 619 461 P 33 0 19017 44 6 80.65
+29 686 285 P 28 0 48042 45 4 85.96
+29 758 182 F 25 0 83374 39 5 81.48
+29 80 691 P 31 0 82769 42 6 80.00
+29 963 221 P 28 0 71278 42 5 82.46
+29 971 163 F 28 0 26701 42 5 82.46
+29 974 295 F 33 0 34906 44 6 80.65
+29 991 150 P 24 0 90200 38 5 81.13
+30 1065 206 P 30 0 74139 42 6 80.00
+30 1065 206 P 31 0 74540 43 6 80.33
+30 109 37 P 32 0 5074 50 4 87.10
+30 1125 274 F 31 0 15225 43 6 80.33
+30 1140 90 F 30 0 79437 42 6 80.00
+30 1325 265 F 26 0 5059 41 5 82.14
+30 1325 265 F 29 0 5059 44 5 83.05
+30 1446 262 P 28 0 74541 43 5 82.76
+30 1500 472 P 32 0 97502 44 6 80.65
+30 1752 11 F 30 0 15963 42 6 80.00
+30 1849 74 P 27 0 5087 42 5 82.46
+30 195 265 F 28 0 78568 43 5 82.76
+30 20 5 P 32 0 90951 47 5 83.87
+30 203 264 F 28 0 74349 46 4 86.21
+30 346 127 P 28 0 106176 43 5 82.76
+30 479 170 F 32 0 17788 44 6 80.65
+30 538 349 F 30 0 55503 42 6 80.00
+30 548 173 F 29 0 54786 44 5 83.05
+30 556 274 F 32 0 96877 44 6 80.65
+30 624 499 P 32 0 5968 44 6 80.65
+30 836 282 P 28 0 72185 43 5 82.76
+30 859 208 F 30 0 77829 51 3 90.00
+30 891 307 F 28 0 83371 46 4 86.21
+30 907 254 F 25 0 39254 40 5 81.82
+30 986 375 P 28 0 51961 43 5 82.76
+31 1074 152 P 34 0 6628 47 6 81.54
+31 1094 349 P 30 0 98111 46 5 83.61
+31 1109 351 P 29 0 17808 42 6 80.00
+31 125 26 F 30 0 5965 49 4 86.89
+31 1264 296 F 31 0 106261 44 6 80.65
+31 1488 171 F 30 0 74539 43 6 80.33
+31 1627 0 P 34 0 97100 47 6 81.54
+31 1837 283 P 31 0 73240 44 6 80.65
+31 20 142 F 31 0 13626 53 3 90.32
+31 290 227 P 29 0 72151 45 5 83.33
+31 300 27 F 31 0 73494 44 6 80.65
+31 304 0 P 29 0 19955 42 6 80.00
+31 363 157 F 30 0 80191 46 5 83.61
+31 366 300 P 29 0 30177 42 6 80.00
+31 366 308 F 28 0 81104 44 5 83.05
+31 393 252 F 30 0 40372 46 5 83.61
+31 454 354 P 31 0 73240 44 6 80.65
+31 524 288 P 29 0 43657 42 6 80.00
+31 58 196 P 30 0 91980 43 6 80.33
+31 751 274 P 30 0 96358 43 6 80.33
+31 78 388 F 30 0 74539 43 6 80.33
+31 789 256 F 29 0 14973 42 6 80.00
+31 790 170 F 34 0 26707 47 6 81.54
+31 840 398 F 30 0 40424 43 6 80.33
+31 843 372 P 30 0 34422 43 6 80.33
+31 859 207 P 33 0 36462 49 5 84.38
+31 870 139 F 31 0 74169 44 6 80.65
+31 870 413 P 31 0 83364 44 6 80.65
+31 908 407 P 32 0 73091 48 5 84.13
+31 969 324 F 33 0 61629 46 6 81.25
+32 103 64 P 35 0 5080 49 6 82.09
+32 1214 206 P 29 0 20267 43 6 80.33
+32 1298 275 P 31 0 5070 45 6 80.95
+32 140 31 P 29 0 84827 43 6 80.33
+32 1401 291 P 29 0 71283 43 6 80.33
+32 1428 450 F 31 0 47598 45 6 80.95
+32 1449 347 F 31 0 42263 45 6 80.95
+32 1451 315 F 31 0 42263 45 6 80.95
+32 149 3 F 32 0 5071 46 6 81.25
+32 1749 23 F 32 0 43276 46 6 81.25
+32 1788 120 P 31 0 66029 48 5 84.13
+32 1802 16 F 29 0 5956 43 6 80.33
+32 1850 129 P 31 0 66029 48 5 84.13
+32 1877 13 F 29 0 5956 43 6 80.33
+32 20 9 P 29 0 6103 43 6 80.33
+32 304 0 F 37 0 83374 51 6 82.61
+32 38 51 P 29 0 43284 46 5 83.61
+32 575 256 F 32 0 26705 46 6 81.25
+32 632 167 P 33 0 5070 56 3 90.77
+32 703 365 F 33 0 40367 47 6 81.54
+32 777 250 F 31 0 83366 45 6 80.95
+32 78 541 P 30 0 1658 44 6 80.65
+33 1012 290 P 30 0 74812 48 5 84.13
+33 1287 144 F 33 0 5065 48 6 81.82
+33 134 36 F 34 0 15008 49 6 82.09
+33 140 73 P 34 0 9146 49 6 82.09
+33 1701 307 P 32 0 77809 50 5 84.62
+33 1805 283 P 33 0 50500 48 6 81.82
+33 291 312 P 30 0 53725 45 6 80.95
+33 470 423 F 32 0 43106 50 5 84.62
+33 504 392 F 33 0 94504 51 5 84.85
+33 548 209 F 28 0 58318 43 6 80.33
+33 583 153 P 29 0 90201 47 5 83.87
+33 753 373 P 34 0 77817 49 6 82.09
+33 833 267 P 31 0 14526 46 6 81.25
+33 833 267 P 32 0 14525 47 6 81.54
+333 1265 0 F 330 0 72423 612 17 94.87
+34 112 58 F 38 0 14942 51 7 80.56
+34 120 83 F 38 0 14942 51 7 80.56
+34 1401 286 F 33 0 100670 49 6 82.09
+34 1507 244 P 32 0 17926 48 6 81.82
+34 1518 215 P 33 0 16242 49 6 82.09
+34 1524 237 F 34 0 77815 56 4 88.24
+34 249 203 F 33 0 5070 49 6 82.09
+34 943 137 F 34 0 81094 56 4 88.24
+34 949 191 P 31 0 14510 47 6 81.54
+34 949 191 P 37 0 43276 56 5 85.92
+34 991 168 P 36 0 102807 49 7 80.00
+35 1271 19 P 36 0 5063 50 7 80.28
+35 1445 38 F 37 0 2019 51 7 80.56
+35 1903 2 F 30 0 5065 47 6 81.54
+35 20 8 F 35 0 6626 49 7 80.00
+35 576 290 P 36 0 17266 50 7 80.28
+35 753 373 F 37 0 77815 51 7 80.56
+36 1662 207 P 37 0 47330 52 7 80.82
+36 290 220 F 32 0 14948 50 6 82.35
+36 712 259 F 36 0 80023 51 7 80.56
+36 733 368 P 34 0 78690 49 7 80.00
+37 1271 19 P 37 0 5059 56 6 83.78
+38 1 27 F 35 0 6112 52 7 80.82
+38 1094 417 F 35 0 70774 52 7 80.82
+38 1214 205 F 38 0 77815 76 0 100.00
+38 1366 321 P 34 0 68459 51 7 80.56
+38 146 33 F 37 0 74576 57 6 84.00
+38 1903 2 F 38 0 5074 55 7 81.58
+38 549 373 P 34 0 67010 51 7 80.56
+38 576 211 P 34 0 74541 51 7 80.56
+40 1364 178 P 40 0 62424 56 8 80.00
+40 1765 34 P 41 0 83380 57 8 80.25
+40 771 294 F 37 0 43232 56 7 81.82
+42 138 38 P 40 0 43281 58 8 80.49
+42 524 309 F 42 0 5065 60 8 80.95
+43 1403 164 F 41 0 43272 60 8 80.95
+44 936 291 F 43 0 55550 63 8 81.61
+49 1214 204 P 48 0 77804 85 4 91.75
+51 125 26 P 53 0 5049 74 10 80.77
+56 1361 104 F 56 0 105490 85 9 83.93
+78 859 0 F 81 0 72588 129 10 87.42
diff --git a/testdata/see-ext-at1MB.matches b/testdata/see-ext-at1MB.matches
new file mode 100644
index 0000000..29376c7
--- /dev/null
+++ b/testdata/see-ext-at1MB.matches
@@ -0,0 +1,1865 @@
+100 33 0 F 101 73 0 192 3 97.01
+102 1289 3 F 100 1456 165 181 7 93.07
+102 454 220 F 103 1289 20 172 11 89.27
+102 859 84 F 102 1265 231 201 1 99.02
+103 1289 20 F 102 1722 157 166 13 87.32
+103 1289 20 F 102 1837 149 166 13 87.32
+103 24 164 F 103 43 1 206 0 100.00
+104 1041 51 F 104 1788 251 166 14 86.54
+104 112 28 F 104 120 53 196 4 96.15
+105 1158 114 F 104 1945 2 167 14 86.60
+108 237 217 F 108 468 0 177 13 87.96
+112 871 0 F 114 1710 2 184 14 87.61
+114 912 17 F 120 1664 241 174 20 82.91
+118 1 452 F 117 3 1 169 22 81.28
+120 1624 143 F 118 1624 263 169 23 80.67
+120 1624 144 F 118 1624 264 169 23 80.67
+120 1624 145 F 118 1624 265 169 23 80.67
+120 319 0 F 117 1513 67 174 21 82.28
+121 935 129 F 120 1289 12 199 14 88.38
+122 319 0 F 124 1023 35 186 20 83.74
+123 454 0 F 128 1664 233 188 21 83.27
+130 35 0 F 130 146 261 260 0 100.00
+130 42 0 F 130 146 261 260 0 100.00
+132 54 44 F 132 146 259 252 4 96.97
+133 1049 216 F 134 1289 3 222 15 88.76
+133 1189 98 F 134 1289 3 201 22 83.52
+133 506 88 F 134 1289 3 222 15 88.76
+133 988 206 F 134 1289 3 219 16 88.01
+134 1289 3 F 133 1328 158 219 16 88.01
+136 120 196 F 136 1624 138 242 10 92.65
+136 120 196 F 136 1624 168 233 13 90.44
+136 120 196 F 136 1624 198 212 20 85.29
+144 1120 169 F 145 1289 3 229 20 86.16
+144 610 0 F 141 1456 124 213 24 83.16
+147 249 222 F 144 968 0 231 20 86.25
+147 642 6 F 148 1456 117 253 14 90.51
+151 1869 183 F 143 1943 2 207 29 80.27
+151 42 147 F 146 49 398 270 9 93.94
+152 413 218 F 148 1250 267 276 8 94.67
+155 1289 3 F 159 1297 199 239 25 84.08
+155 1289 3 F 159 1327 185 239 25 84.08
+155 455 0 F 157 1615 76 258 18 88.46
+158 1 412 F 156 5 0 224 30 80.89
+158 1 412 F 156 7 0 224 30 80.89
+158 1076 109 F 155 1289 3 238 25 84.03
+158 658 327 F 155 1289 3 235 26 83.39
+159 1549 0 F 159 1550 177 297 7 95.60
+159 35 0 F 159 54 46 303 5 96.86
+159 42 0 F 159 54 46 303 5 96.86
+159 474 264 F 155 1289 3 239 25 84.08
+159 543 204 F 155 1289 3 239 25 84.08
+159 713 164 F 155 1289 3 236 26 83.44
+159 761 88 F 155 1289 3 239 25 84.08
+159 826 230 F 155 1289 3 239 25 84.08
+159 912 212 F 155 1289 3 239 25 84.08
+160 1546 202 F 160 1549 0 311 3 98.12
+160 1547 186 F 160 1549 0 305 5 96.88
+160 798 156 F 155 1289 3 237 26 83.49
+163 1578 0 F 163 1682 12 299 9 94.48
+163 642 8 F 162 1722 97 244 27 83.38
+163 642 8 F 162 1837 89 247 26 84.00
+165 481 0 F 158 1456 107 275 16 90.09
+167 454 155 F 168 642 3 260 25 85.07
+168 61 188 F 168 64 149 327 3 98.21
+168 61 188 F 168 65 149 327 3 98.21
+171 1546 193 F 171 1551 0 339 1 99.42
+171 1547 177 F 171 1551 0 336 2 98.83
+171 1550 168 F 171 1551 0 324 6 96.49
+172 66 97 F 171 747 197 277 22 87.17
+173 506 48 F 176 610 0 250 33 81.09
+174 1564 0 F 174 1847 123 321 9 94.83
+174 454 148 F 183 481 0 273 28 84.31
+176 610 0 F 172 1049 177 255 31 82.18
+176 610 0 F 172 1328 119 252 32 81.61
+176 610 0 F 172 988 167 249 33 81.03
+180 160 117 F 181 160 297 352 3 98.34
+180 1608 172 F 178 1802 241 256 34 81.01
+180 642 0 F 190 935 60 268 34 81.62
+181 160 124 F 181 160 305 362 0 100.00
+183 160 119 F 181 160 302 358 2 98.90
+183 481 0 F 174 1722 85 264 31 82.63
+183 481 0 F 174 1837 77 264 31 82.63
+184 1277 151 F 184 1402 3 326 14 92.39
+184 175 74 F 183 1821 0 319 16 91.28
+185 1198 2 F 178 1456 87 285 26 85.67
+185 641 0 F 188 1456 77 313 20 89.28
+185 642 0 F 185 1049 164 310 20 89.19
+185 642 0 F 185 1189 46 286 28 84.86
+185 642 0 F 185 1328 106 304 22 88.11
+185 642 0 F 185 988 154 304 22 88.11
+186 1544 0 F 186 1546 178 372 0 100.00
+186 1544 0 F 186 1547 162 366 2 98.92
+186 1544 0 F 186 1550 153 357 5 97.31
+186 761 4 F 188 1456 77 338 12 93.58
+186 935 37 F 178 1456 87 286 26 85.71
+187 506 34 F 185 642 0 300 24 87.10
+187 610 0 F 183 1120 130 262 36 80.54
+188 1456 77 F 185 1722 57 298 25 86.60
+188 506 0 F 186 1456 77 314 20 89.30
+188 579 3 F 192 1456 73 320 20 89.47
+189 103 0 F 189 107 0 369 3 98.41
+189 1035 19 F 189 1768 236 276 34 82.01
+190 454 129 F 202 935 37 287 35 82.14
+192 1 378 F 190 39 0 304 26 86.39
+192 481 0 F 193 935 57 289 32 83.38
+192 630 112 F 202 935 48 307 29 85.28
+193 454 129 F 203 1198 2 291 35 82.32
+194 216 0 F 194 277 0 382 2 98.97
+194 253 2 F 194 276 2 328 20 89.69
+196 642 0 F 196 1120 117 308 28 85.71
+197 1076 31 F 194 1722 65 286 35 82.10
+197 1189 0 F 197 1456 65 316 26 86.80
+197 481 0 F 188 1049 161 322 21 89.09
+197 481 0 F 188 1189 43 295 30 84.42
+197 481 0 F 188 1328 103 313 24 87.53
+197 481 0 F 188 988 151 313 24 87.53
+197 481 0 F 190 506 31 315 24 87.60
+200 204 13 F 200 273 0 400 0 100.00
+200 3 0 F 204 4 460 335 23 88.61
+200 642 6 F 203 849 97 295 36 82.13
+201 238 0 F 202 274 0 400 1 99.50
+201 78 560 F 204 80 587 330 25 87.65
+202 454 120 F 202 579 7 302 34 83.17
+202 454 120 F 203 641 0 330 25 87.65
+202 454 120 F 208 506 0 320 30 85.37
+202 579 7 F 202 1722 57 296 36 82.18
+202 641 10 F 213 935 37 310 35 83.13
+202 935 37 F 190 1722 66 275 39 80.10
+202 935 37 F 190 1837 58 278 38 80.61
+203 1198 2 F 193 1722 66 282 38 80.81
+203 1198 2 F 193 1837 58 282 38 80.81
+203 579 15 F 213 935 37 293 41 80.29
+203 641 0 F 202 1722 57 318 29 85.68
+203 641 0 F 202 1837 49 318 29 85.68
+203 642 3 F 208 1076 59 303 36 82.48
+203 642 3 F 208 713 115 318 31 84.91
+203 935 37 F 193 1143 93 321 25 87.37
+204 605 67 F 212 935 38 320 32 84.62
+204 80 587 F 201 1488 343 330 25 87.65
+206 454 116 F 208 761 0 354 20 90.34
+206 642 0 F 210 1297 148 320 32 84.62
+206 642 0 F 210 658 275 320 32 84.62
+206 642 0 F 211 1327 133 318 33 84.17
+206 642 0 F 211 761 36 324 31 85.13
+206 642 0 F 211 826 178 324 31 85.13
+206 642 0 F 211 912 160 324 31 85.13
+206 642 0 F 212 798 104 322 32 84.69
+206 642 51 F 206 1289 3 385 9 95.63
+206 849 38 F 211 1456 54 321 32 84.65
+207 1049 142 F 217 1198 2 343 27 87.26
+207 1327 80 F 211 1456 54 343 25 88.04
+207 988 132 F 217 1198 2 334 30 85.85
+208 1189 23 F 217 1198 2 317 36 83.06
+208 474 215 F 203 642 3 321 30 85.40
+208 481 0 F 199 1120 114 323 28 86.24
+208 506 0 F 202 1722 57 308 34 83.41
+208 506 0 F 202 1837 49 308 34 83.41
+208 506 0 F 205 1143 83 359 18 91.28
+208 761 0 F 206 1722 53 342 24 88.41
+208 761 0 F 206 1837 45 345 23 88.89
+209 473 14 F 205 1943 54 291 41 80.19
+209 481 9 F 205 849 95 306 36 82.61
+209 579 0 F 209 1837 42 301 39 81.34
+210 1076 0 F 212 1456 53 335 29 86.26
+211 1456 54 F 209 1837 25 318 34 83.81
+211 413 38 F 205 1250 74 326 30 85.58
+211 506 10 F 217 1198 2 332 32 85.05
+211 543 152 F 206 642 0 324 31 85.13
+211 579 12 F 212 1328 79 336 29 86.29
+211 936 0 F 215 937 160 384 14 93.43
+212 1365 24 F 211 1456 54 360 21 90.07
+212 454 107 F 216 1189 0 332 32 85.05
+213 935 37 F 203 1100 128 326 30 85.58
+213 935 37 F 203 1360 104 314 34 83.65
+213 935 37 F 204 1365 59 327 30 85.61
+213 935 37 F 209 1196 43 320 34 83.89
+213 935 37 F 212 1198 2 299 42 80.24
+214 506 7 F 211 579 12 329 32 84.94
+215 4 422 F 213 7 0 377 17 92.06
+215 474 208 F 218 481 0 340 31 85.68
+215 641 2 F 216 1328 75 362 23 89.33
+216 1189 0 F 212 1722 44 317 37 82.71
+216 1189 0 F 212 1837 36 326 34 84.11
+217 1120 96 F 228 1198 2 340 35 84.27
+217 1143 69 F 216 1189 0 367 22 89.84
+217 1198 2 F 209 1328 82 327 33 84.51
+217 380 79 F 221 506 0 375 21 90.41
+217 451 112 F 221 506 0 378 20 90.87
+217 641 0 F 216 1049 133 382 17 92.15
+217 641 0 F 216 988 123 373 20 90.76
+217 641 0 F 217 1189 14 350 28 87.10
+217 658 254 F 228 1198 2 343 34 84.72
+218 40 284 F 219 66 97 371 22 89.93
+218 459 64 F 210 587 5 308 40 81.31
+218 481 0 F 213 1297 145 332 33 84.69
+218 481 0 F 213 658 272 335 32 85.15
+218 481 0 F 213 713 110 332 33 84.69
+218 481 0 F 214 1076 53 318 38 82.41
+218 481 0 F 214 1327 130 333 33 84.72
+218 481 0 F 214 543 149 339 31 85.65
+218 481 0 F 214 761 33 339 31 85.65
+218 481 0 F 214 826 175 339 31 85.65
+218 481 0 F 214 912 157 339 31 85.65
+218 481 0 F 215 798 101 334 33 84.76
+218 483 74 F 221 506 0 376 21 90.43
+218 713 91 F 228 1198 2 341 35 84.30
+218 798 84 F 225 1198 5 344 33 85.10
+219 543 130 F 228 1198 2 351 32 85.68
+220 474 189 F 228 1198 2 349 33 85.27
+220 912 137 F 228 1198 2 352 32 85.71
+221 1076 32 F 228 1198 2 326 41 81.74
+221 473 2 F 220 1870 65 309 44 80.05
+221 506 0 F 217 1100 119 369 23 89.50
+221 506 0 F 217 1151 132 378 20 90.87
+221 506 0 F 217 1360 95 360 26 88.13
+221 506 0 F 217 641 0 357 27 87.67
+221 506 0 F 217 736 188 378 20 90.87
+221 506 0 F 217 846 294 372 22 89.95
+221 506 0 F 217 902 99 378 20 90.87
+221 506 0 F 218 1365 50 373 22 89.98
+221 506 0 F 218 630 91 358 27 87.70
+221 506 0 F 219 605 57 362 26 88.18
+221 506 0 F 220 1230 186 378 21 90.48
+221 506 0 F 223 1196 34 354 30 86.49
+222 483 158 F 221 1289 3 422 7 96.84
+222 600 54 F 218 1251 0 359 27 87.73
+222 826 153 F 230 1198 0 353 33 85.40
+223 247 130 F 226 880 2 383 22 90.20
+223 313 78 F 220 1827 5 398 15 93.23
+223 473 54 F 228 1190 1 322 43 80.93
+223 579 0 F 223 1049 126 362 28 87.44
+223 579 0 F 223 988 116 353 31 86.10
+223 579 0 F 225 1189 6 331 39 82.59
+223 761 10 F 230 1198 0 351 34 84.99
+224 1196 0 F 222 1456 43 377 23 89.69
+224 1205 24 F 219 1942 136 335 36 83.75
+224 1782 39 F 224 1827 0 415 11 95.09
+224 766 90 F 228 1190 1 329 41 81.86
+225 1297 76 F 233 1456 32 371 29 87.34
+226 454 96 F 227 1076 1 327 42 81.46
+226 454 96 F 234 1196 9 355 35 84.78
+226 886 48 F 226 1483 59 329 41 81.86
+227 579 7 F 226 1120 87 366 29 87.20
+228 1198 2 F 217 1297 127 340 35 84.27
+228 1198 2 F 219 1327 111 339 36 83.89
+228 579 100 F 229 1289 13 442 5 97.81
+228 641 0 F 226 1120 87 370 28 87.67
+228 766 32 F 229 1870 56 322 45 80.31
+228 994 65 F 229 1870 56 325 44 80.74
+229 1260 138 F 232 1615 1 410 17 92.62
+229 1879 0 F 230 1950 70 372 29 87.36
+229 641 9 F 236 1076 31 348 39 83.23
+23 1432 445 P 27 1765 64 35 5 80.00
+23 429 309 P 27 619 378 35 5 80.00
+230 1100 106 F 231 1189 0 383 26 88.72
+230 1151 119 F 231 1189 0 392 23 90.02
+230 35 0 F 229 42 0 432 9 96.08
+230 380 66 F 231 1189 0 389 24 89.59
+230 451 99 F 231 1189 0 392 23 90.02
+230 736 175 F 231 1189 0 392 23 90.02
+230 846 281 F 231 1189 0 386 25 89.15
+230 902 86 F 231 1189 0 392 23 90.02
+231 1189 0 F 231 1360 81 369 31 86.58
+231 1189 0 F 232 1365 36 379 28 87.90
+231 1189 0 F 233 1230 173 392 24 89.66
+231 1189 0 F 237 1196 20 357 37 84.19
+231 1351 210 F 231 1859 0 453 3 98.70
+231 1859 0 F 231 1936 147 447 5 97.84
+231 460 238 F 231 1859 0 453 3 98.70
+231 481 71 F 231 1289 11 441 7 96.97
+231 483 61 F 231 1189 0 390 24 89.61
+231 610 50 F 232 1289 10 427 12 94.82
+231 630 78 F 231 1189 0 369 31 86.58
+232 605 44 F 231 1189 0 367 32 86.18
+233 1641 20 F 231 1677 36 341 41 82.33
+233 382 7 F 223 918 16 327 43 81.14
+233 991 0 F 238 1013 156 414 19 91.93
+234 994 59 F 233 1943 26 341 42 82.01
+235 380 56 F 250 935 0 350 45 81.44
+235 451 89 F 250 935 0 353 44 81.86
+235 658 193 F 241 1456 24 380 32 86.55
+235 736 165 F 250 935 0 353 44 81.86
+235 846 271 F 250 935 0 347 46 81.03
+235 902 76 F 250 935 0 353 44 81.86
+236 1153 0 F 228 1161 110 377 29 87.50
+236 361 85 F 243 362 16 359 40 83.30
+237 1049 79 F 239 1456 24 386 30 87.39
+237 1289 3 F 237 1360 178 444 10 95.78
+237 1613 267 F 244 1826 57 337 48 80.04
+237 483 50 F 250 935 0 349 46 81.11
+237 579 7 F 240 1297 118 363 38 84.07
+237 579 7 F 241 713 82 370 36 84.94
+237 579 7 F 243 761 4 369 37 84.58
+238 543 68 F 241 1456 24 395 28 88.31
+238 641 0 F 239 849 61 342 45 81.13
+238 641 0 F 240 1297 118 385 31 87.03
+238 641 0 F 240 658 245 391 29 87.87
+238 641 0 F 241 713 82 383 32 86.64
+238 641 0 F 242 1327 102 384 32 86.67
+238 641 0 F 242 826 147 396 28 88.33
+238 641 0 F 243 761 4 394 29 87.94
+238 641 0 F 243 798 73 391 30 87.53
+238 641 0 F 243 912 128 400 27 88.77
+238 826 94 F 241 1456 24 383 32 86.64
+238 912 76 F 241 1456 24 392 29 87.89
+238 988 101 F 246 1196 11 397 29 88.02
+239 1 378 F 228 2 0 395 24 89.72
+239 1100 202 F 239 1289 3 451 9 96.23
+239 1143 168 F 239 1289 3 448 10 95.82
+239 1151 215 F 239 1289 3 454 8 96.65
+239 1230 272 F 239 1289 3 454 8 96.65
+239 1289 3 F 239 1365 134 448 10 95.82
+239 380 162 F 239 1289 3 454 8 96.65
+239 451 195 F 239 1289 3 454 8 96.65
+239 454 66 F 241 1456 24 354 42 82.50
+239 605 142 F 239 1289 3 448 10 95.82
+239 630 175 F 239 1289 3 454 8 96.65
+239 630 38 F 242 1456 23 379 34 85.86
+239 641 83 F 239 1289 3 436 14 94.14
+239 736 134 F 243 1456 22 389 31 87.14
+239 736 271 F 239 1289 3 454 8 96.65
+239 846 377 F 239 1289 3 451 9 96.23
+239 902 182 F 239 1289 3 454 8 96.65
+239 988 67 F 241 1456 22 378 34 85.83
+24 1193 360 P 26 1701 303 38 4 84.00
+24 1509 302 P 26 1802 120 35 5 80.00
+24 258 185 P 26 1363 154 35 5 80.00
+24 351 288 P 26 1765 48 38 4 84.00
+24 363 171 P 28 1333 189 37 5 80.77
+24 38 46 P 26 539 116 38 4 84.00
+24 458 223 F 26 1043 270 35 5 80.00
+24 527 201 P 27 1231 161 36 5 80.39
+24 527 201 P 27 1318 182 36 5 80.39
+24 576 208 P 26 1090 339 44 2 92.00
+24 58 341 F 26 1098 224 35 5 80.00
+24 632 168 P 27 1903 4 42 3 88.24
+24 753 370 F 27 1701 310 39 4 84.31
+24 788 246 F 26 1465 441 35 5 80.00
+240 1049 109 F 246 1196 11 402 28 88.48
+240 1151 77 F 243 1456 22 393 30 87.58
+240 1196 123 F 239 1289 3 428 17 92.90
+240 380 77 F 245 761 2 419 22 90.93
+240 451 110 F 245 761 2 422 21 91.34
+240 474 126 F 241 1456 24 388 31 87.11
+240 605 4 F 243 1456 22 375 36 85.09
+240 736 186 F 245 761 2 422 21 91.34
+241 1851 33 F 242 1950 58 390 31 87.16
+241 630 89 F 245 761 2 399 29 88.07
+241 798 18 F 243 1456 22 376 36 85.12
+242 1196 1 F 235 1722 24 345 44 81.55
+242 1196 1 F 235 1837 16 351 42 82.39
+242 1198 84 F 239 1289 3 430 17 92.93
+242 1230 132 F 243 1456 22 401 28 88.45
+242 227 214 F 236 808 0 340 46 80.75
+242 3 0 F 242 7 38 424 20 91.74
+242 4 422 F 238 5 0 408 24 90.00
+242 451 55 F 243 1456 22 395 30 87.63
+242 470 233 F 239 991 0 421 20 91.68
+242 483 72 F 245 761 2 418 23 90.55
+242 543 121 F 237 579 7 371 36 84.97
+242 543 121 F 238 641 0 396 28 88.33
+242 605 55 F 245 761 2 400 29 88.09
+243 1270 88 F 240 1279 0 417 22 90.89
+243 474 180 F 237 579 7 369 37 84.58
+243 474 180 F 238 641 0 397 28 88.36
+243 579 1 F 249 1076 18 372 40 83.74
+243 713 41 F 247 1837 4 367 41 83.27
+243 782 133 F 240 1279 0 414 23 90.48
+244 120 88 F 244 1624 0 476 4 98.36
+244 1299 0 F 246 1776 112 364 42 82.86
+244 1328 34 F 243 1837 8 370 39 83.98
+244 1777 34 F 252 1948 23 370 42 83.06
+244 380 20 F 249 1456 16 394 33 86.61
+244 579 0 F 246 849 54 343 49 80.00
+244 579 0 F 247 658 238 368 41 83.30
+244 579 0 F 249 1327 95 367 42 82.96
+244 579 0 F 249 826 140 376 39 84.18
+244 579 0 F 250 798 66 368 42 83.00
+244 579 0 F 250 912 121 377 39 84.21
+245 1120 43 F 247 1837 4 375 39 84.15
+245 761 2 F 240 1100 117 413 24 90.10
+245 761 2 F 240 1151 130 422 21 91.34
+245 761 2 F 240 1360 93 404 27 88.87
+245 761 2 F 240 846 292 416 23 90.52
+245 761 2 F 240 902 97 422 21 91.34
+245 761 2 F 241 1365 48 414 24 90.12
+245 761 2 F 242 1143 81 412 25 89.73
+245 761 2 F 243 1230 184 416 24 90.16
+245 761 2 F 246 1196 32 398 31 87.37
+245 885 68 F 247 1021 3 453 13 94.72
+246 1196 32 F 242 1297 116 392 32 86.89
+246 1297 73 F 250 1837 1 391 35 85.89
+246 1328 12 F 247 1456 16 373 40 83.77
+246 483 14 F 243 1456 22 393 32 86.91
+247 454 75 F 252 1365 2 406 31 87.58
+247 483 31 F 243 1837 8 400 30 87.76
+247 849 12 F 248 1837 0 366 43 82.63
+247 902 37 F 249 1456 16 400 32 87.10
+248 1196 9 F 241 1328 50 387 34 86.09
+248 1360 32 F 249 1456 16 377 40 83.90
+248 1868 37 F 248 1948 21 424 24 90.32
+248 543 76 F 247 1837 4 405 30 87.88
+248 610 0 F 245 642 12 406 29 88.24
+249 1327 56 F 250 1837 1 376 41 83.57
+249 1549 0 F 249 1551 9 450 16 93.57
+249 658 197 F 251 1837 0 422 26 89.60
+249 726 157 F 252 1393 2 468 11 95.61
+25 111 44 F 25 1372 335 38 4 84.00
+25 1214 206 F 25 1701 312 44 2 92.00
+25 1241 165 F 26 1609 258 39 4 84.31
+25 140 47 P 28 1386 264 38 5 81.13
+25 1784 19 F 25 1862 0 35 5 80.00
+25 1799 12 F 25 1862 0 35 5 80.00
+25 1799 168 F 25 1862 190 41 3 88.00
+25 19 328 F 27 640 55 37 5 80.77
+25 227 59 F 26 249 80 42 3 88.24
+25 24 225 F 25 352 178 35 5 80.00
+25 258 185 P 27 1363 113 37 5 80.77
+25 349 217 F 28 1356 61 38 5 81.13
+25 351 377 P 25 781 327 44 2 92.00
+25 363 166 P 25 1092 353 35 5 80.00
+25 426 386 F 25 1013 347 35 5 80.00
+25 426 386 F 25 470 423 35 5 80.00
+25 426 386 F 25 991 185 35 5 80.00
+25 445 86 F 25 1788 195 35 5 80.00
+25 445 86 F 25 1850 204 35 5 80.00
+25 446 230 F 27 583 144 37 5 80.77
+25 455 151 F 25 693 427 35 5 80.00
+25 488 160 P 26 561 421 36 5 80.39
+25 704 236 F 28 1140 208 38 5 81.13
+25 758 171 P 25 1765 60 38 4 84.00
+25 763 316 P 27 1883 234 40 4 84.62
+25 777 258 P 25 1765 50 38 4 84.00
+25 795 354 F 25 1013 347 35 5 80.00
+25 795 354 F 25 991 185 35 5 80.00
+25 824 342 F 25 1366 335 38 4 84.00
+25 850 238 P 26 1231 176 36 5 80.39
+25 850 238 P 26 1318 197 36 5 80.39
+25 855 314 F 25 1782 108 41 3 88.00
+25 855 314 F 25 1827 69 41 3 88.00
+25 936 349 F 25 1889 151 35 5 80.00
+25 95 0 P 25 120 197 44 2 92.00
+25 95 0 P 25 1624 109 44 2 92.00
+250 1021 0 F 250 1051 242 476 8 96.80
+250 798 27 F 249 1837 2 406 31 87.58
+250 935 0 F 235 1151 109 353 44 81.86
+250 935 0 F 238 1230 163 353 45 81.56
+251 380 31 F 251 1837 0 418 28 88.84
+251 579 44 F 251 642 6 445 19 92.43
+251 642 6 F 251 1100 157 469 11 95.62
+251 642 6 F 251 1360 133 463 13 94.82
+252 1360 46 F 250 1837 1 406 32 87.25
+252 605 10 F 250 1837 1 385 39 84.46
+252 630 43 F 250 1837 1 376 42 83.27
+252 736 139 F 251 1837 0 428 25 90.06
+252 826 98 F 251 1837 0 422 27 89.26
+252 846 245 F 251 1837 0 422 27 89.26
+252 912 80 F 251 1837 0 425 26 89.66
+253 1049 83 F 251 1837 0 414 30 88.10
+253 1143 35 F 247 1837 4 383 39 84.40
+253 1151 82 F 251 1837 0 426 26 89.68
+253 461 0 F 259 1850 260 482 10 96.09
+253 713 31 F 259 1722 0 371 47 81.64
+253 902 49 F 251 1837 0 423 27 89.29
+253 988 73 F 251 1837 0 417 29 88.49
+254 1120 34 F 256 1722 3 375 45 82.35
+254 1230 138 F 250 1837 1 414 30 88.10
+254 1297 65 F 259 1722 0 393 40 84.41
+254 1327 51 F 255 1722 4 377 44 82.71
+254 1365 0 F 249 1722 10 392 37 85.29
+254 1365 0 F 249 1837 2 398 35 86.08
+254 474 130 F 251 1837 0 421 28 88.91
+254 642 0 F 256 1365 81 474 12 95.29
+255 1100 67 F 250 1837 1 391 38 84.95
+255 451 60 F 251 1837 0 422 28 88.93
+255 455 0 F 254 1260 213 488 7 97.25
+255 597 0 F 253 1372 137 457 17 93.31
+255 713 11 F 265 1456 0 421 33 87.31
+255 849 4 F 256 1722 0 373 46 82.00
+256 1722 8 F 256 1837 0 476 12 95.31
+256 18 192 F 262 40 156 407 37 85.71
+256 542 0 F 279 1947 144 382 51 80.93
+256 605 92 F 254 642 3 462 16 93.73
+256 641 33 F 257 642 0 459 18 92.98
+256 798 21 F 255 1722 4 406 35 86.30
+257 1328 34 F 262 1365 6 426 31 88.05
+257 515 0 F 258 1905 22 368 49 80.97
+257 630 38 F 255 1722 4 371 47 81.64
+257 642 0 F 258 1143 116 470 15 94.17
+257 642 0 F 258 1151 163 476 13 94.95
+257 642 0 F 258 1230 220 476 13 94.95
+257 642 0 F 258 736 219 476 13 94.95
+257 642 0 F 258 846 325 470 15 94.17
+257 642 0 F 258 902 130 476 13 94.95
+257 642 0 F 263 1196 67 451 23 91.15
+257 642 0 F 265 1198 28 444 26 90.04
+257 658 189 F 259 1722 0 429 29 88.76
+257 846 222 F 260 1456 5 397 40 84.53
+258 1544 15 F 258 1551 0 501 5 98.06
+258 380 110 F 257 642 0 476 13 94.95
+258 451 143 F 257 642 0 476 13 94.95
+258 481 11 F 251 642 6 449 20 92.14
+258 630 123 F 257 642 0 470 15 94.17
+258 895 170 F 263 1405 10 467 18 93.09
+259 1120 11 F 265 1456 0 422 34 87.02
+259 1120 54 F 268 1196 0 413 38 85.58
+259 380 23 F 259 1722 0 422 32 87.64
+259 461 0 F 259 1788 251 419 33 87.26
+259 483 106 F 257 642 0 474 14 94.57
+259 59 193 F 263 651 9 393 43 83.52
+26 10 8 F 26 349 244 37 5 80.77
+26 1243 259 F 24 1702 231 38 4 84.00
+26 125 19 P 24 1866 79 38 4 84.00
+26 125 34 P 25 1885 65 42 3 88.24
+26 1279 236 F 24 1449 350 35 5 80.00
+26 1279 236 F 24 1451 318 35 5 80.00
+26 1372 335 P 28 1790 77 39 5 81.48
+26 142 23 F 24 1803 298 35 5 80.00
+26 1432 445 F 28 1437 376 39 5 81.48
+26 146 6 P 26 1403 192 40 4 84.62
+26 16 365 F 27 1115 86 38 5 81.13
+26 246 263 P 28 1092 281 39 5 81.48
+26 286 75 P 26 286 75 52 0 100.00
+26 347 270 P 25 622 200 39 4 84.31
+26 423 255 F 26 1403 186 46 2 92.31
+26 423 255 P 25 1372 336 45 2 92.16
+26 423 255 P 25 597 201 45 2 92.16
+26 423 258 F 27 539 117 41 4 84.91
+26 44 221 F 26 310 140 37 5 80.77
+26 44 221 F 26 310 180 37 5 80.77
+26 443 263 F 26 457 355 37 5 80.77
+26 491 200 F 27 1403 180 38 5 81.13
+26 5 247 F 27 1115 86 38 5 81.13
+26 548 314 P 27 1765 87 38 5 81.13
+26 549 286 P 26 887 292 37 5 80.77
+26 561 406 F 27 1951 7 41 4 84.91
+26 576 197 F 26 1125 302 40 4 84.62
+26 576 197 F 26 1507 362 40 4 84.62
+26 577 260 F 25 1436 394 39 4 84.31
+26 586 249 P 27 1418 396 44 3 88.68
+26 587 236 P 26 1257 197 40 4 84.62
+26 597 200 P 28 1790 77 39 5 81.48
+26 6 724 F 27 914 344 41 4 84.91
+26 661 365 P 26 887 292 37 5 80.77
+26 720 286 P 24 1024 149 35 5 80.00
+26 774 66 F 25 1513 235 36 5 80.39
+26 840 278 F 27 1318 205 44 3 88.68
+26 850 236 F 29 924 154 40 5 81.82
+26 850 238 F 26 924 195 40 4 84.62
+260 1205 24 F 253 1941 105 393 40 84.41
+260 497 95 F 258 1551 0 500 6 97.68
+260 543 64 F 259 1722 0 417 34 86.90
+260 664 16 F 270 1183 3 455 25 90.57
+260 736 131 F 259 1722 0 432 29 88.82
+260 826 90 F 259 1722 0 429 30 88.44
+260 846 237 F 259 1722 0 429 30 88.44
+260 902 42 F 258 1722 1 422 32 87.64
+260 912 72 F 259 1722 0 432 29 88.82
+261 1049 75 F 259 1722 0 421 33 87.31
+261 1151 74 F 259 1722 0 430 30 88.46
+261 1328 17 F 258 1722 1 378 47 81.89
+261 1360 37 F 258 1722 1 408 37 85.74
+261 454 58 F 259 849 0 391 43 83.46
+261 454 61 F 262 605 0 412 37 85.85
+261 483 119 F 263 610 0 452 24 90.84
+261 605 1 F 259 1722 0 391 43 83.46
+262 1049 87 F 266 1365 2 471 19 92.80
+262 380 55 F 266 1076 1 387 47 82.20
+262 451 88 F 266 1076 1 390 46 82.58
+262 474 122 F 259 1722 0 428 31 88.10
+262 658 223 F 267 1196 11 418 37 86.01
+262 736 164 F 266 1076 1 390 46 82.58
+262 846 270 F 266 1076 1 384 48 81.82
+262 902 75 F 266 1076 1 390 46 82.58
+262 988 64 F 259 1722 0 422 33 87.33
+263 1100 94 F 264 1327 80 428 33 87.48
+263 1230 129 F 259 1722 0 414 36 86.21
+263 451 52 F 259 1722 0 426 32 87.74
+263 605 120 F 265 610 18 471 19 92.80
+263 630 67 F 266 1076 1 385 48 81.85
+264 1100 58 F 259 1722 0 394 43 83.56
+264 935 48 F 255 1328 94 393 42 83.82
+264 988 75 F 268 1365 0 460 24 90.98
+265 1143 23 F 259 1722 0 380 48 81.68
+265 1646 0 F 264 1862 2 496 11 95.84
+265 1705 0 F 264 1709 0 493 12 95.46
+265 454 62 F 264 1722 0 487 14 94.71
+265 483 49 F 266 1076 1 387 48 81.92
+266 1076 1 F 262 1151 108 390 46 82.58
+266 1076 1 F 263 1360 70 373 52 80.34
+266 1076 1 F 265 1365 24 390 47 82.30
+266 1143 4 F 265 1456 0 426 35 86.82
+266 406 2 F 285 1947 138 401 50 81.85
+266 474 157 F 267 1196 11 422 37 86.12
+266 826 123 F 269 1196 9 421 38 85.79
+267 1076 0 F 264 1100 93 387 48 81.92
+267 1076 0 F 266 1143 57 401 44 83.49
+267 1076 0 F 266 1230 161 398 45 83.11
+267 1076 0 F 270 1196 8 390 49 81.75
+267 1076 32 F 266 1189 23 407 42 84.24
+267 1851 45 F 268 1879 0 484 17 93.64
+267 227 189 F 267 968 0 390 48 82.02
+267 483 11 F 259 1722 0 406 40 84.79
+267 798 49 F 269 1196 9 413 41 84.70
+268 1100 36 F 265 1456 0 419 38 85.74
+268 248 0 F 269 292 0 492 15 94.41
+268 497 0 F 264 1546 100 484 16 93.98
+268 497 0 F 264 1547 84 478 18 93.23
+268 497 0 F 264 1550 75 466 22 91.73
+268 62 300 F 271 555 0 440 33 87.76
+268 871 110 F 275 1710 150 462 27 90.06
+269 506 10 F 275 935 37 400 48 82.35
+27 115 243 F 31 1899 152 46 4 86.21
+27 1231 148 F 26 1951 8 47 2 92.45
+27 140 39 P 30 1386 262 48 3 89.47
+27 140 39 P 30 1449 404 42 5 82.46
+27 1403 197 P 23 1451 371 38 4 84.00
+27 146 50 P 25 1446 263 37 5 80.77
+27 1634 6 F 27 1634 33 51 1 96.30
+27 1634 7 F 27 1634 34 51 1 96.30
+27 1634 8 F 27 1634 35 51 1 96.30
+27 1634 9 F 27 1634 36 51 1 96.30
+27 31 10 F 30 830 312 42 5 82.46
+27 349 385 P 28 1765 71 43 4 85.45
+27 351 288 P 26 943 144 38 5 81.13
+27 351 296 F 25 974 252 37 5 80.77
+27 393 252 F 27 936 287 39 5 81.48
+27 491 198 F 27 1403 189 45 3 88.89
+27 515 315 P 26 1090 352 41 4 84.91
+27 539 307 F 25 817 230 40 4 84.62
+27 548 320 F 24 936 281 36 5 80.39
+27 552 293 F 24 552 320 36 5 80.39
+27 619 449 P 23 1697 246 35 5 80.00
+27 629 407 P 26 1765 75 38 5 81.13
+27 632 170 F 26 720 284 38 5 81.13
+27 693 380 F 27 829 219 39 5 81.48
+27 727 144 P 27 1022 373 48 2 92.59
+27 82 48 P 29 950 2 44 4 85.71
+27 856 0 P 27 1074 138 39 5 81.48
+270 1120 43 F 277 1365 2 439 36 86.84
+270 313 34 F 265 1782 2 472 21 92.15
+270 454 52 F 278 483 0 443 35 87.23
+270 506 9 F 268 1076 31 415 41 84.76
+271 679 62 F 273 759 0 502 14 94.85
+272 2 0 F 276 4 388 386 54 80.29
+272 605 25 F 276 798 40 440 36 86.86
+273 713 50 F 278 1196 0 422 43 84.39
+273 994 124 F 282 1190 1 486 23 91.71
+274 1039 0 F 274 1435 147 530 6 97.81
+274 1415 148 F 273 1724 0 499 16 94.15
+274 473 3 F 268 994 75 431 37 86.35
+274 605 2 F 274 1328 17 431 39 85.77
+275 912 96 F 277 1196 1 435 39 85.87
+275 935 37 F 265 988 132 405 45 83.33
+275 935 37 F 266 1189 23 397 48 82.26
+276 4 388 F 272 39 0 458 30 89.05
+276 454 46 F 278 1328 0 422 44 84.12
+276 543 87 F 278 1196 0 428 42 84.84
+276 605 0 F 275 1049 74 470 27 90.20
+276 605 0 F 276 988 63 459 31 88.77
+276 605 11 F 272 1120 41 428 40 85.40
+277 454 45 F 277 798 0 449 35 87.36
+277 761 2 F 276 1049 131 493 20 92.77
+277 761 2 F 276 988 121 478 25 90.96
+277 761 2 F 278 1328 71 471 28 89.91
+278 1196 0 F 274 1327 70 411 47 82.97
+278 451 156 F 281 610 0 490 23 91.77
+279 1143 9 F 278 1328 0 440 39 86.00
+279 506 0 F 271 849 61 415 45 83.64
+279 506 0 F 272 1120 87 446 35 87.30
+279 506 0 F 274 826 147 463 30 89.15
+279 506 0 F 275 761 4 464 30 89.17
+279 610 0 F 276 1360 139 471 28 89.91
+28 107 74 F 27 125 28 40 5 81.82
+28 167 252 P 29 561 416 42 5 82.46
+28 1788 187 P 28 1857 38 41 5 82.14
+28 1809 199 F 25 1857 42 41 4 84.91
+28 1809 199 F 28 1857 42 44 4 85.71
+28 1850 196 P 28 1857 38 41 5 82.14
+28 261 155 F 31 359 352 44 5 83.05
+28 314 162 P 32 1372 332 42 6 80.00
+28 314 162 P 32 597 197 42 6 80.00
+28 314 215 F 27 429 432 40 5 81.82
+28 413 202 F 26 1024 98 42 4 85.19
+28 423 257 F 31 1125 184 44 5 83.05
+28 448 282 F 33 1260 370 43 6 80.33
+28 448 282 F 33 455 158 43 6 80.33
+28 539 307 F 29 817 230 45 4 85.96
+28 571 342 P 27 1205 312 40 5 81.82
+28 587 268 F 24 1437 374 37 5 80.77
+28 619 458 F 24 1451 372 40 4 84.62
+28 632 158 F 25 1140 80 41 4 84.91
+28 749 344 P 26 786 224 39 5 81.48
+28 751 271 F 29 1522 319 42 5 82.46
+28 777 185 F 28 1372 327 41 5 82.14
+28 872 353 F 27 1395 115 40 5 81.82
+280 2 34 F 280 7 0 410 50 82.14
+280 380 123 F 283 610 0 494 23 91.83
+280 5 0 F 280 7 0 503 19 93.21
+280 7 0 F 280 16 118 410 50 82.14
+280 7 0 F 280 39 34 488 24 91.43
+281 1120 7 F 288 1143 0 470 33 88.40
+281 610 0 F 278 736 232 490 23 91.77
+281 610 2 F 283 1198 45 465 33 88.30
+281 871 111 F 283 1401 50 498 22 92.20
+281 974 0 F 277 1310 150 495 21 92.47
+282 1297 76 F 287 1365 2 458 37 86.99
+282 380 0 F 285 454 37 474 31 89.07
+282 451 47 F 280 1328 11 472 30 89.32
+282 591 0 F 283 1758 7 487 26 90.80
+282 630 27 F 282 1328 9 444 40 85.82
+282 647 2 F 279 1388 62 510 17 93.94
+282 713 41 F 287 1365 2 446 41 85.59
+282 988 44 F 283 1143 5 460 35 87.61
+283 454 39 F 274 713 10 416 47 83.12
+283 610 0 F 279 641 45 475 29 89.68
+283 610 0 F 280 1100 163 488 25 91.12
+283 610 0 F 280 1151 176 494 23 91.83
+283 610 0 F 280 1230 233 494 23 91.83
+283 610 0 F 280 846 338 491 24 91.47
+283 610 0 F 280 902 143 494 23 91.83
+284 1056 0 F 289 1828 182 408 55 80.80
+284 1514 0 F 292 1747 113 483 31 89.24
+284 17 311 F 275 46 0 397 54 80.68
+284 1892 4 F 284 1931 25 421 49 82.75
+284 474 180 F 289 506 0 474 33 88.48
+284 481 0 F 277 483 103 522 13 95.37
+285 1327 59 F 287 1365 2 443 43 84.97
+285 284 0 P 291 476 2 537 13 95.49
+285 481 19 F 283 610 0 487 27 90.49
+286 380 10 F 289 1328 2 476 33 88.52
+286 658 199 F 289 1365 0 479 32 88.87
+286 849 14 F 289 1365 0 425 50 82.61
+287 1049 49 F 288 1143 0 482 31 89.22
+287 1056 0 F 295 1653 107 414 56 80.76
+287 1170 0 F 283 1347 84 492 26 90.88
+287 454 35 F 288 1143 0 443 44 84.70
+287 543 76 F 287 1365 2 484 30 89.55
+287 826 102 F 287 1365 2 478 32 88.85
+289 1514 0 F 293 1627 121 516 22 92.44
+289 798 27 F 289 1365 0 467 37 87.20
+289 846 222 F 291 1328 0 478 34 88.28
+289 912 82 F 289 1365 0 479 33 88.58
+29 125 26 F 28 135 79 45 4 85.96
+29 1263 303 P 30 1765 61 44 5 83.05
+29 146 0 P 32 423 256 43 6 80.33
+29 162 116 F 32 848 366 43 6 80.33
+29 1788 145 F 29 1788 208 49 3 89.66
+29 1850 154 F 29 1850 217 49 3 89.66
+29 197 22 F 26 1303 65 40 5 81.82
+29 20 6 P 33 135 81 44 6 80.65
+29 314 159 F 30 1403 187 47 4 86.44
+29 35 179 F 29 73 104 55 1 96.55
+29 561 412 F 30 840 275 53 2 93.22
+29 640 280 F 28 1298 267 42 5 82.46
+29 829 230 F 31 936 319 42 6 80.00
+29 850 234 F 29 1261 203 46 4 86.21
+29 99 326 F 29 99 359 49 3 89.66
+290 1151 59 F 289 1328 2 483 32 88.95
+290 736 115 F 291 1328 0 485 32 88.98
+290 902 26 F 289 1328 2 480 33 88.60
+291 1268 211 F 290 1514 0 533 16 94.49
+291 1328 0 F 293 1360 19 455 43 85.27
+291 1402 3 F 291 1694 225 429 51 82.47
+291 358 77 F 292 1678 0 538 15 94.85
+291 474 132 F 289 1365 0 487 31 89.31
+291 678 95 F 292 1204 14 544 13 95.54
+292 1649 38 F 295 1871 4 425 54 81.60
+292 483 0 F 284 1049 65 501 25 91.32
+292 483 0 F 285 1328 6 472 35 87.87
+292 483 0 F 285 988 54 496 27 90.64
+292 579 50 F 295 610 0 506 27 90.80
+293 1100 43 F 290 1328 1 460 41 85.93
+293 1230 113 F 291 1328 0 491 31 89.38
+293 1664 0 F 296 1871 3 499 30 89.81
+293 22 368 F 282 29 0 497 26 90.96
+293 454 29 F 287 1120 1 442 46 84.14
+293 610 2 F 290 630 138 514 23 92.11
+294 451 140 F 302 481 0 557 13 95.64
+294 454 28 F 298 1360 0 463 43 85.47
+295 376 132 F 295 1402 3 548 14 95.25
+295 538 0 F 288 667 102 517 22 92.45
+295 610 0 F 292 1143 129 509 26 91.14
+295 610 0 F 292 1365 95 509 26 91.14
+295 610 0 F 295 1196 82 497 31 89.49
+296 380 0 F 298 1049 51 534 20 93.27
+296 380 0 F 300 988 39 512 28 90.60
+296 380 107 F 304 481 0 558 14 95.33
+296 454 26 F 295 630 0 429 54 81.73
+297 1132 92 F 299 1140 0 557 13 95.64
+297 1552 0 F 293 1554 56 542 16 94.58
+297 380 20 F 300 849 0 453 48 83.92
+297 474 112 F 303 483 0 507 31 89.67
+297 483 83 F 306 1198 2 537 22 92.70
+297 605 0 F 293 713 30 443 49 83.39
+297 605 0 F 294 1297 64 459 44 85.11
+297 605 0 F 297 658 188 483 37 87.54
+297 605 0 F 297 849 3 423 57 80.81
+297 605 0 F 298 1327 46 451 48 83.87
+297 605 0 F 300 826 89 483 38 87.27
+297 605 0 F 300 912 71 483 38 87.27
+297 988 100 F 298 1076 1 445 50 83.19
+298 1076 1 F 299 1328 50 450 49 83.58
+298 707 1 F 316 1623 143 458 52 83.06
+299 1049 108 F 298 1076 1 459 46 84.59
+299 1548 0 F 300 1554 49 593 2 99.33
+299 1736 0 F 302 1931 7 496 35 88.35
+299 1871 0 F 296 1892 0 535 20 93.28
+299 454 23 F 301 902 1 501 33 89.00
+299 736 127 F 300 849 0 467 44 85.31
+299 846 233 F 300 849 0 461 46 84.64
+30 0 245 P 27 583 160 42 5 82.46
+30 1074 135 F 29 1449 349 47 4 86.44
+30 1074 135 F 29 1451 317 47 4 86.44
+30 120 196 F 30 120 226 60 0 100.00
+30 120 197 F 30 120 227 60 0 100.00
+30 120 198 F 30 120 228 60 0 100.00
+30 120 199 F 30 120 229 60 0 100.00
+30 120 200 F 30 120 230 60 0 100.00
+30 120 201 F 30 120 231 60 0 100.00
+30 120 202 F 30 120 232 60 0 100.00
+30 120 203 F 30 120 233 60 0 100.00
+30 120 204 F 30 120 234 60 0 100.00
+30 120 205 F 30 120 235 60 0 100.00
+30 1225 317 F 31 1225 347 52 3 90.16
+30 1234 297 P 30 1247 479 60 0 100.00
+30 1624 108 F 30 1624 138 60 0 100.00
+30 1624 109 F 30 1624 139 60 0 100.00
+30 1624 110 F 30 1624 140 60 0 100.00
+30 1624 111 F 30 1624 141 60 0 100.00
+30 1624 112 F 30 1624 142 60 0 100.00
+30 1624 113 F 30 1624 143 60 0 100.00
+30 1624 114 F 30 1624 144 60 0 100.00
+30 1624 115 F 30 1624 145 60 0 100.00
+30 1624 116 F 30 1624 146 60 0 100.00
+30 1624 117 F 30 1624 147 60 0 100.00
+30 1882 155 P 31 1930 115 43 6 80.33
+30 20 23 P 29 1132 168 44 5 83.05
+30 299 251 P 31 840 286 43 6 80.33
+30 304 0 P 28 1765 46 43 5 82.76
+30 31 1 P 28 856 0 46 4 86.21
+30 498 370 F 32 1107 270 44 6 80.65
+30 577 254 F 27 1436 327 42 5 82.46
+30 693 316 F 30 1372 264 42 6 80.00
+30 71 198 F 26 159 60 41 5 82.14
+30 730 269 F 31 757 257 46 5 83.61
+30 80 153 P 30 1109 102 42 6 80.00
+30 850 231 P 31 1231 156 43 6 80.33
+30 850 231 P 31 1318 177 43 6 80.33
+30 859 201 P 30 1214 218 54 2 93.33
+30 865 488 F 28 1498 395 43 5 82.76
+30 873 451 P 30 1403 175 42 6 80.00
+30 943 145 P 30 1195 150 42 6 80.00
+300 481 0 F 292 1360 123 532 20 93.24
+300 543 63 F 297 605 0 471 42 85.93
+300 849 0 F 300 1151 70 465 45 85.00
+300 849 0 F 300 902 37 453 49 83.67
+300 849 0 F 301 1360 32 442 53 82.36
+300 849 0 F 302 1230 125 452 50 83.39
+300 849 0 F 303 1100 54 438 55 81.76
+301 1382 1 F 316 1933 164 470 49 84.12
+301 483 2 F 290 1120 23 456 45 84.77
+301 542 0 F 321 1828 150 475 49 84.24
+302 1708 15 F 295 1736 0 510 29 90.28
+302 317 66 F 297 1128 0 536 21 92.99
+302 451 48 F 296 713 27 463 45 84.95
+302 451 48 F 300 849 0 461 47 84.39
+302 474 121 F 297 605 0 488 37 87.65
+302 481 0 F 294 736 216 557 13 95.64
+302 877 174 F 310 1747 95 552 20 93.46
+303 1147 0 F 308 1331 108 536 25 91.82
+303 40 152 F 303 747 65 585 7 97.69
+303 451 47 F 302 1327 42 476 43 85.79
+303 451 47 F 304 798 12 496 37 87.81
+303 481 1 F 293 641 31 533 21 92.95
+304 1068 0 F 303 1517 96 559 16 94.73
+304 481 0 F 296 1100 147 555 15 95.00
+304 481 0 F 296 1143 113 552 16 94.67
+304 481 0 F 296 1151 160 561 13 95.67
+304 481 0 F 296 1230 217 561 13 95.67
+304 481 0 F 296 579 34 540 20 93.33
+304 481 0 F 296 630 120 552 16 94.67
+304 481 0 F 296 846 322 555 15 95.00
+304 481 0 F 296 902 127 561 13 95.67
+304 481 0 F 297 1365 78 550 17 94.34
+304 481 0 F 298 605 85 554 16 94.68
+304 481 0 F 302 1196 63 534 24 92.08
+304 481 0 F 303 1198 25 529 26 91.43
+304 542 0 F 326 1653 76 483 49 84.44
+305 1066 1 F 311 1600 69 487 43 86.04
+305 1649 20 F 302 1736 0 529 26 91.43
+305 506 0 F 299 1297 118 472 44 85.43
+305 506 0 F 299 658 245 475 43 85.76
+305 506 0 F 300 713 82 470 45 85.12
+305 506 0 F 301 1327 102 468 46 84.82
+305 506 0 F 301 543 121 480 42 86.14
+305 506 0 F 302 798 73 472 45 85.17
+305 506 0 F 302 912 128 481 42 86.16
+305 761 2 F 302 1189 11 469 46 84.84
+306 1297 52 F 312 1360 21 471 49 84.14
+306 483 74 F 304 641 0 571 13 95.74
+306 630 110 F 314 1198 14 557 21 93.23
+306 713 17 F 310 846 222 466 50 83.77
+306 877 193 F 305 1514 2 563 16 94.76
+307 1049 42 F 311 1360 1 522 32 89.64
+307 380 0 F 304 1120 9 476 45 85.27
+307 877 174 F 311 1627 103 579 13 95.79
+308 1143 15 F 300 1297 58 461 49 83.88
+308 18 140 F 311 747 20 448 57 81.58
+308 335 0 F 309 1059 206 614 1 99.68
+308 380 9 F 307 1297 51 501 38 87.64
+308 451 42 F 301 1297 57 486 41 86.54
+308 483 6 F 300 849 0 437 57 81.25
+308 506 0 F 303 988 123 563 16 94.76
+308 630 1 F 309 1049 40 488 43 86.06
+308 630 1 F 312 988 27 473 49 84.19
+308 766 6 F 306 994 37 473 47 84.69
+309 1548 7 F 314 1552 0 575 16 94.86
+309 1649 13 F 309 1931 0 564 18 94.17
+309 1681 0 F 308 1808 0 560 19 93.84
+309 1708 8 F 305 1931 0 524 30 90.23
+309 244 0 F 309 272 0 597 7 97.73
+309 380 8 F 316 798 0 502 41 86.88
+309 541 0 F 314 1006 81 563 20 93.58
+309 877 174 F 310 1268 193 604 5 98.38
+31 1225 324 F 31 1225 355 62 0 100.00
+31 1225 325 F 31 1225 356 62 0 100.00
+31 1225 326 F 31 1225 357 62 0 100.00
+31 1225 327 F 31 1225 358 62 0 100.00
+31 1225 328 F 31 1225 359 62 0 100.00
+31 1225 329 F 31 1225 360 62 0 100.00
+31 1386 262 F 35 1449 404 48 6 81.82
+31 1624 259 F 30 1624 290 55 2 93.44
+31 1702 121 F 31 1929 271 44 6 80.65
+31 207 252 F 27 1261 172 43 5 82.76
+31 262 269 F 33 1221 158 46 6 81.25
+31 391 284 P 31 632 166 44 6 80.65
+31 455 342 P 29 565 316 42 6 80.00
+31 561 414 P 35 1386 179 51 5 84.85
+31 619 365 P 31 928 234 44 6 80.65
+31 693 377 F 30 829 220 43 6 80.33
+310 630 20 F 313 798 3 461 54 82.66
+310 713 13 F 318 1360 15 445 61 80.57
+310 988 29 F 311 1360 1 507 38 87.76
+311 380 6 F 314 1327 30 484 47 84.96
+311 406 2 F 327 1828 144 497 47 85.27
+311 483 3 F 299 713 24 457 51 83.28
+311 483 3 F 304 1327 40 465 50 83.74
+311 755 0 F 312 1412 113 557 22 92.94
+311 885 2 F 310 1051 182 540 27 91.30
+312 1120 1 F 322 1230 95 493 47 85.17
+312 1120 1 F 322 1360 1 463 57 82.02
+312 454 10 F 303 1327 2 453 54 82.44
+312 736 114 F 316 798 0 517 37 88.22
+312 935 0 F 298 1049 109 442 56 81.64
+313 1100 44 F 306 1297 52 475 48 84.49
+313 1120 0 F 321 1151 39 496 46 85.49
+313 1120 74 F 313 1189 0 464 54 82.75
+313 1189 0 F 312 1297 106 478 49 84.32
+313 1189 0 F 315 1327 89 469 53 83.12
+313 451 121 F 324 1198 2 568 23 92.78
+313 454 9 F 298 1297 21 452 53 82.65
+313 483 1 F 301 1297 57 473 47 84.69
+313 483 67 F 310 579 0 560 21 93.26
+313 658 232 F 313 1189 0 482 48 84.66
+313 713 10 F 319 902 18 473 53 83.23
+313 713 70 F 313 1189 0 467 53 83.07
+313 736 197 F 324 1198 2 568 23 92.78
+314 1552 0 F 308 1555 108 556 22 92.93
+314 406 2 F 332 1653 70 499 49 84.83
+314 483 0 F 305 658 180 505 38 87.72
+314 483 0 F 308 543 55 499 41 86.82
+314 483 0 F 309 798 7 482 47 84.91
+314 483 0 F 309 826 80 512 37 88.12
+314 483 0 F 309 912 62 509 38 87.80
+314 543 109 F 313 1189 0 486 47 85.01
+314 641 10 F 326 1198 2 544 32 90.00
+314 713 9 F 321 1230 106 482 51 83.94
+314 713 9 F 322 1143 1 489 49 84.59
+314 798 2 F 314 1100 43 475 51 83.76
+315 1100 128 F 326 1198 2 563 26 91.89
+315 1151 141 F 326 1198 2 572 23 92.82
+315 380 2 F 313 713 10 475 51 83.76
+315 380 88 F 326 1198 2 569 24 92.51
+315 451 0 F 308 454 14 506 39 87.48
+315 454 7 F 308 658 138 521 34 89.09
+315 454 7 F 315 912 17 531 33 89.52
+315 579 15 F 326 1198 2 539 34 89.39
+315 605 68 F 323 1198 5 551 29 90.91
+315 798 1 F 310 846 222 508 39 87.52
+315 798 1 F 314 1143 9 470 53 83.15
+315 798 1 F 314 1230 113 503 42 86.65
+315 826 134 F 313 1189 0 487 47 85.03
+315 846 303 F 326 1198 2 566 25 92.20
+315 902 1 F 315 988 24 528 34 89.21
+315 902 108 F 326 1198 2 572 23 92.82
+315 988 110 F 318 1189 0 561 24 92.42
+316 1143 93 F 326 1198 2 564 26 91.90
+316 376 0 F 334 1277 1 566 28 91.38
+316 474 167 F 313 1189 0 488 47 85.06
+316 658 169 F 319 1143 4 491 48 84.88
+316 798 0 F 313 1151 57 515 38 87.92
+316 798 0 F 313 902 24 509 40 87.28
+316 798 0 F 315 1360 18 484 49 84.47
+316 798 60 F 313 1189 0 476 51 83.78
+316 902 0 F 313 1049 36 557 24 92.37
+316 912 115 F 313 1189 0 494 45 85.69
+317 1143 6 F 314 1327 30 466 55 82.57
+317 380 0 F 318 658 167 536 33 89.61
+317 380 0 F 321 543 42 536 34 89.34
+317 380 0 F 323 826 66 556 28 91.25
+317 380 0 F 324 912 47 542 33 89.70
+317 380 0 F 326 474 97 547 32 90.05
+317 428 7 F 312 1513 64 587 14 95.55
+317 428 7 F 313 1441 36 579 17 94.60
+317 454 5 F 311 543 13 502 42 86.62
+317 454 5 F 319 826 31 534 34 89.31
+317 454 5 F 320 474 64 553 28 91.21
+318 354 0 F 299 1077 34 485 44 85.74
+318 454 4 F 317 846 180 521 38 88.03
+318 454 4 F 318 1049 18 531 35 88.99
+318 454 4 F 318 736 73 540 32 89.94
+318 454 4 F 321 988 5 501 46 85.60
+318 506 2 F 315 1328 75 579 18 94.31
+318 630 2 F 313 1120 0 472 53 83.20
+319 131 0 F 319 158 0 632 2 99.37
+319 1548 0 F 318 1555 101 613 8 97.49
+319 1649 38 F 316 1664 1 467 56 82.36
+319 454 3 F 319 1151 16 542 32 89.97
+319 454 3 F 321 1100 1 484 52 83.75
+319 543 44 F 319 1143 4 506 44 86.21
+319 846 203 F 313 1120 0 491 47 85.13
+32 102 224 F 32 102 257 52 4 87.50
+32 1109 255 F 32 1403 178 46 6 81.25
+32 124 117 P 32 524 310 49 5 84.38
+32 304 0 F 32 1385 286 49 5 84.38
+32 442 99 P 32 928 214 46 6 81.25
+32 479 185 P 31 790 166 48 5 84.13
+32 929 206 P 35 1298 262 49 6 82.09
+320 409 143 F 318 456 0 632 2 99.37
+320 454 2 F 325 1230 67 525 40 87.60
+320 506 0 F 317 1189 14 550 29 90.89
+320 641 0 F 320 1360 95 577 21 93.44
+320 736 96 F 313 1120 0 495 46 85.47
+320 902 17 F 315 1297 43 503 44 86.14
+320 975 152 F 322 1301 0 597 15 95.33
+321 1288 0 F 323 1374 102 536 36 88.82
+321 1401 1 F 323 1710 106 521 41 87.27
+321 1941 0 F 323 1942 31 554 30 90.68
+321 33 105 F 320 38 672 620 7 97.82
+321 545 1 F 317 1453 139 590 16 94.98
+321 713 2 F 327 736 99 483 55 83.02
+321 849 95 F 335 935 66 536 40 87.80
+322 1100 25 F 313 1120 0 488 49 84.57
+322 1196 43 F 326 1198 2 543 35 89.20
+322 1198 2 F 311 1360 104 543 30 90.52
+322 451 112 F 322 641 0 611 11 96.58
+322 641 0 F 322 736 188 611 11 96.58
+322 713 1 F 332 1151 38 489 55 83.18
+322 719 114 F 327 1199 0 598 17 94.76
+322 849 95 F 323 1076 61 594 17 94.73
+322 849 95 F 331 935 66 566 29 91.12
+322 902 5 F 313 1120 0 485 50 84.25
+323 1 294 F 312 16 0 566 23 92.76
+323 1231 2 F 322 1318 24 624 7 97.83
+323 1381 25 F 336 1661 121 485 58 82.40
+323 579 7 F 324 641 0 563 28 91.34
+323 713 0 F 334 1100 23 492 55 83.26
+324 1734 1 F 327 1814 8 501 50 84.64
+324 380 79 F 324 641 0 612 12 96.30
+324 641 0 F 324 1100 119 600 16 95.06
+324 641 0 F 324 1151 132 615 11 96.60
+324 641 0 F 324 846 294 609 13 95.99
+324 641 0 F 324 902 99 615 11 96.60
+324 641 0 F 325 1365 50 598 17 94.76
+324 641 0 F 326 1143 83 599 17 94.77
+324 641 0 F 327 1230 186 612 13 96.01
+324 641 0 F 331 1196 34 568 29 91.15
+324 782 52 F 327 1270 4 597 18 94.47
+324 80 284 F 322 1488 8 475 57 82.35
+325 630 91 F 324 641 0 589 20 93.84
+325 826 64 F 323 1143 0 507 47 85.49
+325 960 0 F 339 970 99 589 25 92.47
+326 1198 2 F 316 1365 59 567 25 92.21
+326 1198 2 F 317 1230 196 574 23 92.85
+326 1327 18 F 332 1360 1 475 61 81.46
+326 1708 33 F 317 1892 4 469 58 81.96
+326 451 14 F 313 1120 0 483 52 83.72
+326 579 0 F 327 1360 88 575 26 92.04
+326 605 57 F 324 641 0 593 19 94.15
+326 658 159 F 332 1360 1 517 47 85.71
+326 676 49 F 324 1165 1 566 28 91.38
+326 742 7 F 319 862 36 558 29 91.01
+326 912 45 F 323 1143 0 508 47 85.52
+327 252 74 P 327 285 41 612 14 95.72
+327 624 179 F 354 1619 0 546 45 86.78
+328 385 14 F 335 665 1 591 24 92.76
+328 451 1 F 322 988 17 548 34 89.54
+328 474 95 F 323 1143 0 513 46 85.87
+328 539 94 F 328 1080 0 602 18 94.51
+328 579 0 F 329 736 181 600 19 94.22
+328 593 0 F 323 607 58 615 12 96.31
+328 630 2 F 322 1297 36 479 57 82.46
+328 720 0 F 330 1398 19 565 31 90.58
+328 761 13 F 337 935 37 587 26 92.18
+329 1049 119 F 331 1189 0 597 21 93.64
+329 1049 20 F 332 1100 4 544 39 88.20
+329 1055 0 F 328 1542 146 618 13 96.04
+329 451 0 F 321 1049 28 572 26 92.00
+329 451 105 F 328 579 0 600 19 94.22
+329 543 34 F 332 1360 1 511 50 84.87
+329 630 1 F 328 1327 16 483 58 82.34
+329 630 1 F 328 658 157 495 54 83.56
+329 630 1 F 334 912 37 510 51 84.62
+329 658 156 F 334 902 3 552 37 88.84
+329 761 12 F 330 1076 31 614 15 95.45
+33 1225 318 F 31 1225 351 58 2 93.75
+33 1225 319 F 31 1225 352 58 2 93.75
+33 159 45 F 30 1857 37 45 6 80.95
+33 305 252 F 32 1081 305 47 6 81.54
+33 42 215 F 36 264 523 57 4 88.41
+33 426 299 P 33 1112 186 48 6 81.82
+33 548 186 F 29 1884 205 44 6 80.65
+33 576 215 F 33 643 270 48 6 81.82
+33 619 458 F 31 1449 404 46 6 81.25
+33 80 127 F 33 80 162 54 4 87.88
+33 949 186 P 32 1403 178 50 5 84.62
+330 1277 1 F 326 1694 81 599 19 94.21
+330 1939 0 F 330 1940 10 591 23 93.03
+330 579 0 F 331 1100 112 601 20 93.95
+330 579 0 F 331 1151 125 604 19 94.25
+330 579 0 F 331 846 287 598 21 93.65
+330 579 0 F 331 902 92 604 19 94.25
+330 579 0 F 333 605 50 585 26 92.16
+330 579 0 F 334 1230 179 607 19 94.28
+330 588 0 F 330 775 103 600 20 93.94
+330 630 0 F 323 713 0 470 61 81.32
+330 630 0 F 336 826 53 504 54 83.78
+330 849 2 F 335 988 62 518 49 85.26
+331 1189 0 F 329 1328 61 573 29 91.21
+331 380 72 F 330 579 0 601 20 93.95
+331 386 165 F 344 1201 5 576 33 90.22
+331 483 49 F 336 1196 9 598 23 93.10
+331 543 32 F 329 630 1 504 52 84.24
+332 1536 0 F 332 1630 0 655 3 99.10
+332 849 0 F 336 1049 71 533 45 86.53
+332 849 0 F 337 1328 12 495 58 82.66
+332 912 39 F 332 1360 1 532 44 86.75
+332 977 26 F 332 1605 73 583 27 91.87
+332 988 7 F 333 1100 3 533 44 86.77
+333 1640 92 F 313 1840 0 529 39 87.93
+333 742 0 F 334 1874 34 592 25 92.50
+333 742 0 F 336 1469 114 597 24 92.83
+333 742 0 F 336 825 119 606 21 93.72
+333 826 56 F 333 1360 0 534 44 86.79
+334 492 21 F 333 742 0 607 20 94.00
+334 543 29 F 337 902 0 548 41 87.78
+334 902 3 F 329 1327 15 501 54 83.71
+335 197 126 F 336 665 0 593 26 92.25
+335 432 58 F 333 742 0 608 20 94.01
+335 474 88 F 332 1360 1 538 43 87.11
+335 652 50 F 330 742 3 581 28 91.58
+335 833 87 F 344 1146 0 577 34 89.99
+335 935 37 F 325 1327 111 570 30 90.91
+335 988 4 F 339 1230 67 551 41 87.83
+336 1544 24 F 336 1549 0 618 18 94.64
+336 1546 28 F 338 1550 1 641 11 96.74
+336 1547 12 F 338 1550 1 635 13 96.14
+336 1777 2 F 343 1868 8 493 62 81.74
+336 1910 0 F 328 1926 25 589 25 92.47
+337 474 86 F 329 630 1 507 53 84.08
+337 497 105 F 336 1549 0 622 17 94.95
+337 674 12 F 339 1281 47 619 19 94.38
+337 736 68 F 339 988 0 574 34 89.94
+337 846 174 F 337 1049 12 593 27 91.99
+337 846 174 F 339 988 0 568 36 89.35
+337 902 0 F 338 912 33 567 36 89.33
+338 658 241 F 341 761 0 664 5 98.53
+338 713 79 F 340 761 1 657 7 97.94
+338 761 1 F 337 1327 99 651 8 97.63
+339 1649 38 F 335 1892 4 527 49 85.46
+339 1820 0 F 340 1909 0 619 20 94.11
+339 440 2 F 335 765 95 623 17 94.96
+339 560 33 F 338 1069 1 614 21 93.80
+339 761 0 F 336 1120 83 642 11 96.74
+339 761 0 F 338 826 143 674 1 99.70
+339 988 0 F 338 1151 11 566 37 89.07
+34 132 236 F 36 1013 334 49 7 80.00
+34 132 236 F 36 470 410 49 7 80.00
+34 132 236 F 36 991 172 49 7 80.00
+34 20 8 P 33 135 80 49 6 82.09
+34 288 1 P 34 515 372 50 6 82.35
+34 289 40 F 33 1453 251 49 6 82.09
+34 401 96 F 33 650 13 58 3 91.04
+34 632 157 P 31 817 237 47 6 81.54
+34 753 372 F 35 1214 206 51 6 82.61
+34 753 372 P 35 1214 205 51 6 82.61
+34 80 86 F 33 80 120 58 3 91.04
+340 543 117 F 341 761 0 669 4 98.83
+340 826 49 F 337 902 0 581 32 90.55
+341 306 0 F 341 1349 124 634 16 95.31
+341 319 2 F 336 626 202 605 24 92.91
+341 474 176 F 341 761 0 670 4 98.83
+341 474 82 F 337 902 0 579 33 90.27
+341 761 0 F 337 849 57 621 19 94.40
+341 761 0 F 338 1297 114 658 7 97.94
+341 761 0 F 341 798 69 661 7 97.95
+341 761 0 F 341 912 124 670 4 98.83
+342 372 9 F 339 1348 71 660 7 97.94
+342 506 0 F 337 1049 133 646 11 96.76
+342 989 64 F 336 1350 12 612 22 93.51
+343 1120 16 F 349 1328 0 515 59 82.95
+343 1302 67 F 343 1433 4 626 20 94.17
+344 322 70 F 346 793 68 564 42 87.83
+345 584 135 F 339 1381 0 579 35 89.77
+345 658 140 F 351 1100 6 543 51 85.34
+345 826 76 F 347 1328 2 566 42 87.86
+346 736 164 F 354 1196 9 628 24 93.14
+346 912 137 F 355 935 37 623 26 92.58
+347 1297 52 F 357 1328 2 542 54 84.66
+347 579 1 F 350 1365 43 628 23 93.40
+347 658 254 F 364 935 37 594 39 89.03
+347 713 17 F 359 1328 0 523 61 82.72
+347 736 58 F 349 1049 0 621 25 92.82
+348 1064 63 F 351 1669 2 627 24 93.13
+348 1151 108 F 356 1196 9 632 24 93.18
+348 1325 136 F 350 1621 0 674 8 97.71
+348 380 55 F 356 1196 9 629 25 92.90
+348 579 0 F 350 630 84 623 25 92.84
+348 579 0 F 352 1143 75 631 23 93.43
+348 605 35 F 354 1196 11 609 31 91.17
+348 658 254 F 360 935 37 624 28 92.09
+348 713 91 F 364 935 37 589 41 88.48
+348 846 184 F 344 1327 0 527 55 84.10
+348 846 270 F 356 1196 9 626 26 92.61
+348 902 75 F 356 1196 9 632 24 93.18
+349 1049 0 F 349 1151 0 617 27 92.26
+349 1049 0 F 356 1230 50 603 34 90.35
+349 1151 21 F 344 1327 0 534 53 84.70
+349 1546 15 F 348 1547 0 679 6 98.28
+349 1554 0 F 347 1555 52 648 16 95.40
+349 451 1 F 347 826 42 582 38 89.08
+349 483 31 F 349 1365 6 650 16 95.42
+349 543 130 F 364 935 37 602 37 89.62
+349 543 14 F 353 1100 4 549 51 85.47
+349 658 177 F 357 1328 2 559 49 86.12
+349 713 91 F 360 935 37 619 30 91.54
+349 736 77 F 344 1327 0 534 53 84.70
+349 798 83 F 363 935 38 589 41 88.48
+349 935 48 F 340 1076 44 599 30 91.29
+35 1221 184 F 32 1221 220 49 6 82.09
+35 147 1 F 35 289 57 52 6 82.86
+35 82 44 P 38 1788 197 52 7 80.82
+35 82 44 P 38 1850 206 52 7 80.82
+350 218 71 P 354 296 0 677 9 97.44
+350 451 0 F 339 658 146 572 39 88.68
+350 451 0 F 342 543 21 554 46 86.71
+350 451 0 F 346 912 25 573 41 88.22
+350 451 0 F 349 474 74 588 37 89.41
+350 474 189 F 364 935 37 603 37 89.64
+350 543 13 F 357 1230 70 569 46 86.99
+350 543 130 F 360 935 37 632 26 92.68
+350 735 195 F 347 1479 14 574 41 88.24
+350 798 83 F 359 935 38 619 30 91.54
+351 1301 0 F 363 1362 83 612 34 90.48
+351 1327 34 F 357 1328 2 540 56 84.18
+351 1653 0 F 363 1947 68 585 43 87.96
+351 474 189 F 360 935 37 633 26 92.69
+352 1100 91 F 358 1196 7 623 29 91.83
+352 422 168 F 367 1126 0 638 27 92.49
+352 713 12 F 364 988 43 530 62 82.68
+352 912 19 F 351 1100 6 550 51 85.49
+353 1230 74 F 337 1297 21 516 58 83.19
+353 1230 74 F 344 1327 0 532 55 84.22
+353 543 51 F 357 1328 2 557 51 85.63
+353 985 0 F 353 1426 64 667 13 96.32
+354 404 286 F 358 1301 0 640 24 93.26
+354 912 58 F 357 1328 2 573 46 87.06
+354 965 14 F 360 1034 0 663 17 95.24
+355 601 0 F 356 609 68 636 25 92.97
+355 798 2 F 358 988 49 566 49 86.26
+356 1441 10 F 356 1513 37 664 16 95.51
+356 536 124 F 362 1034 0 667 17 95.26
+356 798 1 F 359 1328 0 553 54 84.90
+357 451 77 F 363 1196 0 636 28 92.22
+357 580 0 F 358 762 57 658 19 94.69
+357 798 0 F 359 1049 58 587 43 87.99
+357 826 124 F 372 935 0 609 40 89.03
+357 826 32 F 354 1100 3 561 50 85.94
+358 1076 1 F 356 1327 80 621 31 91.32
+358 474 106 F 359 1328 0 576 47 86.89
+358 474 65 F 354 1100 3 565 49 86.24
+358 658 127 F 363 1151 7 604 39 89.18
+358 826 123 F 358 1076 1 635 27 92.46
+359 492 0 F 362 1469 92 676 15 95.84
+359 862 0 F 375 1469 79 644 30 91.83
+36 138 46 P 37 1403 176 61 4 89.04
+36 237 45 F 36 1067 62 51 7 80.56
+36 293 30 P 36 817 231 51 7 80.56
+36 317 184 F 36 1423 261 51 7 80.56
+36 7 258 F 40 31 243 61 5 86.84
+360 1196 1 F 354 1360 61 597 39 89.08
+360 1664 0 F 362 1892 3 647 25 93.07
+360 369 21 F 360 1409 0 660 20 94.44
+360 4 304 F 356 16 0 503 71 80.17
+360 530 60 F 360 544 0 684 12 96.67
+360 544 0 F 358 1343 70 673 15 95.82
+360 935 37 F 348 1120 96 612 32 90.96
+360 935 37 F 348 1297 127 627 27 92.37
+361 1125 1 F 359 1507 63 561 53 85.28
+361 497 81 F 358 1544 2 704 5 98.61
+361 819 145 F 363 1301 0 673 17 95.30
+362 1034 0 F 355 1082 71 660 19 94.70
+362 1912 0 F 358 1913 0 648 24 93.33
+362 713 2 F 373 1049 44 561 58 84.22
+363 1301 0 F 362 1500 127 671 18 95.03
+363 477 0 F 360 1052 64 675 16 95.57
+363 543 0 F 366 736 60 606 41 88.75
+363 543 0 F 366 846 166 594 45 87.65
+363 543 0 F 368 1151 2 605 42 88.51
+364 567 38 F 366 1034 0 658 24 93.42
+364 988 59 F 361 1327 42 548 59 83.72
+365 1196 0 F 361 1230 152 645 27 92.56
+365 950 12 F 366 1041 0 662 23 93.71
+366 1049 41 F 359 1120 0 572 51 85.93
+366 197 112 F 359 385 0 662 21 94.21
+366 447 0 F 355 746 16 604 39 89.18
+366 579 4 F 375 1196 30 648 31 91.63
+366 630 68 F 372 1196 11 651 29 92.14
+367 1649 5 F 373 1708 0 635 35 90.54
+367 310 0 F 366 1363 6 637 32 91.27
+367 736 59 F 371 912 0 627 37 89.97
+367 846 165 F 371 912 0 615 41 88.89
+367 881 0 F 364 1248 100 707 8 97.81
+368 1360 47 F 371 1365 0 670 23 93.78
+368 380 35 F 373 1365 2 693 16 95.68
+368 965 0 F 366 1082 58 680 18 95.10
+369 380 14 F 380 483 0 701 16 95.73
+369 536 109 F 368 965 0 698 13 96.47
+369 736 141 F 373 1365 0 703 13 96.50
+369 902 54 F 373 1365 2 703 13 96.50
+369 988 28 F 359 1120 0 551 59 83.79
+37 20 8 P 33 125 24 49 7 80.00
+37 314 143 F 36 491 190 52 7 80.82
+37 38 46 P 36 1403 179 58 5 86.30
+37 443 271 F 36 710 246 52 7 80.82
+37 539 297 P 35 632 173 51 7 80.56
+370 1151 0 F 353 1297 5 549 58 83.96
+370 355 111 F 371 499 1 717 8 97.84
+370 483 10 F 363 605 0 661 24 93.45
+370 605 13 F 373 1365 2 665 26 93.00
+370 738 129 F 370 739 9 677 21 94.32
+371 1100 72 F 372 1365 3 677 22 94.08
+371 1151 85 F 375 1365 0 707 13 96.51
+371 1475 72 F 376 1594 0 618 43 88.49
+371 499 1 F 368 589 12 694 15 95.94
+371 846 247 F 375 1365 0 701 15 95.98
+371 912 0 F 369 1151 1 626 38 89.73
+371 912 0 F 376 1230 51 603 48 87.15
+372 1196 11 F 368 1365 25 644 32 91.35
+372 1230 141 F 373 1365 2 694 17 95.44
+372 451 62 F 373 1365 0 700 15 95.97
+372 862 0 F 385 1874 2 649 36 90.49
+373 492 0 F 361 862 12 662 24 93.46
+373 567 23 F 368 965 0 651 30 91.90
+373 988 50 F 365 1297 52 564 58 84.28
+374 1351 67 F 376 1936 2 696 18 95.20
+374 1592 0 F 361 1595 8 651 28 92.38
+374 309 7 F 368 804 88 703 13 96.50
+374 442 56 F 375 1510 8 656 31 91.72
+374 736 52 F 358 1297 0 561 57 84.43
+375 451 41 F 380 483 0 710 15 96.03
+375 652 28 F 362 862 11 632 35 90.50
+375 779 2 F 369 783 4 558 62 83.33
+375 846 157 F 358 1297 0 547 62 83.08
+376 460 93 F 376 1936 2 734 6 98.40
+376 492 0 F 377 1874 14 711 14 96.28
+376 492 0 F 377 652 29 687 22 94.16
+376 492 0 F 378 825 98 733 7 98.14
+376 558 0 F 368 1254 134 687 19 94.89
+376 634 4 F 377 976 13 705 16 95.75
+376 662 80 F 379 1193 8 629 42 88.87
+376 826 13 F 370 1151 0 644 34 90.88
+377 1469 77 F 372 1874 0 683 22 94.13
+377 432 37 F 376 492 0 738 5 98.67
+377 474 46 F 370 1151 0 645 34 90.90
+377 505 0 F 380 633 21 727 10 97.36
+377 988 49 F 377 1328 1 655 33 91.25
+378 242 0 F 379 294 0 736 7 98.15
+378 483 2 F 370 630 26 664 28 92.51
+378 483 2 F 374 1143 15 665 29 92.29
+378 739 1 F 386 1384 5 635 43 88.74
+378 912 105 F 378 1076 1 678 26 93.12
+379 1784 7 F 381 1799 0 682 26 93.16
+379 379 0 F 398 1785 85 633 48 87.64
+379 605 0 F 381 1360 34 664 32 91.58
+379 915 65 F 378 1070 0 682 25 93.39
+38 1133 186 F 38 1133 224 76 0 100.00
+38 1133 187 F 38 1133 225 76 0 100.00
+38 1133 188 F 38 1133 226 76 0 100.00
+38 1133 189 F 38 1133 227 76 0 100.00
+38 1133 190 F 38 1133 228 76 0 100.00
+38 1133 191 F 38 1133 229 76 0 100.00
+38 1133 192 F 38 1133 230 76 0 100.00
+38 1318 181 P 36 1386 178 56 6 83.78
+380 1143 47 F 383 1196 0 667 32 91.61
+380 483 0 F 371 736 121 709 14 96.27
+380 483 0 F 371 846 227 703 16 95.74
+380 483 0 F 373 1151 63 711 14 96.28
+380 483 0 F 373 1360 26 672 27 92.83
+380 483 0 F 373 902 30 705 16 95.75
+380 483 0 F 374 1230 119 700 18 95.23
+380 483 0 F 375 1100 48 692 21 94.44
+380 658 222 F 383 1076 1 673 30 92.14
+380 736 46 F 389 826 0 652 39 89.86
+381 380 22 F 383 605 0 707 19 95.03
+381 605 0 F 380 736 130 713 16 95.80
+381 61 134 F 380 64 137 713 16 95.80
+382 1121 56 F 384 1512 11 697 23 93.99
+382 546 67 F 373 884 0 692 21 94.44
+382 713 58 F 384 1076 0 685 27 92.95
+382 724 29 F 433 1826 2 605 70 82.82
+383 1076 1 F 379 1297 96 672 30 92.13
+383 318 13 F 387 905 59 701 23 94.03
+383 422 1 F 394 1794 64 630 49 87.39
+383 451 51 F 381 605 0 710 18 95.29
+383 543 97 F 383 1076 1 685 27 92.95
+383 605 0 F 382 846 236 711 18 95.29
+383 605 0 F 383 1151 73 718 16 95.82
+383 605 0 F 383 630 33 676 30 92.17
+383 605 0 F 384 902 39 713 18 95.31
+383 605 0 F 385 1230 128 708 20 94.79
+383 605 0 F 386 1100 57 682 29 92.46
+383 605 0 F 387 1143 22 680 30 92.21
+384 1076 0 F 381 1120 63 678 29 92.42
+384 355 97 F 380 589 0 725 13 96.60
+384 474 156 F 383 1076 1 683 28 92.70
+384 671 15 F 393 1334 9 693 28 92.79
+384 738 115 F 391 1384 0 697 26 93.29
+384 798 49 F 383 1076 1 665 34 91.13
+385 451 49 F 383 630 31 696 24 93.75
+386 432 25 F 373 862 0 675 28 92.62
+387 451 47 F 389 1143 18 710 22 94.33
+387 825 86 F 373 862 0 670 30 92.11
+388 1745 6 F 398 1896 0 690 32 91.86
+388 473 3 F 387 766 41 736 13 96.65
+388 630 46 F 391 1365 2 692 29 92.55
+389 1049 59 F 390 1328 0 701 26 93.32
+389 652 0 F 392 1469 62 673 36 90.78
+389 826 0 F 382 846 150 636 45 88.33
+389 826 0 F 389 1230 38 637 47 87.92
+39 1277 275 F 40 1402 258 61 6 84.81
+39 357 193 F 36 357 232 54 7 81.33
+39 501 150 P 35 548 86 53 7 81.08
+39 7 257 F 43 36 331 67 5 87.80
+39 703 367 F 33 991 148 51 7 80.56
+39 749 329 F 42 1013 290 57 8 80.25
+39 99 0 F 38 950 65 68 3 92.21
+39 99 0 F 39 1788 255 72 2 94.87
+39 99 0 F 39 1850 264 75 1 97.44
+39 99 0 F 39 461 4 75 1 97.44
+390 1449 38 F 392 1451 4 698 28 92.84
+390 37 0 F 401 1823 0 710 27 93.17
+390 546 59 F 385 890 2 718 19 95.10
+391 1787 9 F 389 1810 2 705 25 93.59
+391 470 80 F 395 1013 0 714 24 93.89
+391 825 86 F 390 1874 2 724 19 95.13
+392 1143 35 F 391 1365 2 714 23 94.13
+392 432 23 F 392 1874 0 733 17 95.66
+392 652 15 F 392 1874 0 685 33 91.58
+392 849 0 F 393 1327 43 665 40 89.81
+393 536 87 F 398 567 0 716 25 93.68
+394 574 20 F 398 1369 0 693 33 91.67
+395 1268 101 F 405 1747 0 713 29 92.75
+395 658 131 F 405 1049 12 677 41 89.75
+395 658 131 F 407 988 0 646 52 87.03
+395 826 86 F 392 849 0 715 24 93.90
+396 567 2 F 387 1082 39 705 26 93.36
+396 846 222 F 400 1143 9 718 26 93.47
+396 975 76 F 417 1362 0 687 42 89.67
+397 1653 0 F 396 1828 74 670 41 89.66
+397 18 0 F 417 46 194 634 60 85.26
+397 221 0 F 397 266 0 788 2 99.50
+397 356 33 F 390 496 1 721 22 94.41
+397 432 0 F 403 1469 51 728 24 94.00
+397 543 7 F 407 988 0 633 57 85.82
+397 658 88 F 416 1230 11 624 63 84.50
+397 826 24 F 397 988 0 647 49 87.66
+399 1882 0 F 414 1896 3 705 36 91.14
+399 35 140 F 402 72 145 717 28 93.01
+399 380 0 F 406 1360 9 730 25 93.79
+40 1363 114 F 40 1363 154 74 2 95.00
+40 1363 122 F 40 1363 162 74 2 95.00
+40 1363 123 F 40 1363 163 74 2 95.00
+40 31 243 F 40 36 332 80 0 100.00
+40 31 243 F 40 42 202 80 0 100.00
+40 310 109 F 40 310 149 80 0 100.00
+40 310 110 F 40 310 150 80 0 100.00
+40 310 111 F 40 310 151 80 0 100.00
+40 310 112 F 40 310 152 80 0 100.00
+40 310 113 F 40 310 153 80 0 100.00
+40 310 114 F 40 310 154 80 0 100.00
+40 310 115 F 40 310 155 80 0 100.00
+40 310 116 F 40 310 156 80 0 100.00
+40 310 117 F 40 310 157 80 0 100.00
+40 310 118 F 40 310 158 80 0 100.00
+40 561 400 F 40 1231 171 62 6 85.00
+40 561 400 F 40 1318 192 62 6 85.00
+400 380 1 F 408 451 26 766 14 96.53
+400 380 3 F 403 846 215 773 10 97.51
+400 542 30 F 413 1056 0 738 25 93.85
+400 652 10 F 401 825 79 711 30 92.51
+401 380 0 F 404 736 106 784 7 98.26
+401 380 2 F 407 1143 2 721 29 92.82
+401 380 2 F 408 1100 35 740 23 94.31
+402 406 40 F 413 1056 0 713 34 91.66
+402 568 10 F 406 1793 2 739 23 94.31
+403 1627 8 F 408 1747 0 754 19 95.31
+403 1764 7 F 417 1896 0 700 40 90.24
+403 380 0 F 406 630 10 722 29 92.83
+403 380 0 F 407 1151 49 786 8 98.02
+403 380 0 F 407 902 16 783 9 97.78
+403 380 0 F 409 1230 104 773 13 96.80
+403 912 9 F 407 988 0 648 54 86.67
+404 1268 97 F 411 1627 3 746 23 94.36
+404 543 0 F 414 1049 3 677 47 88.51
+404 902 15 F 407 1360 8 736 25 93.83
+405 1143 0 F 405 1360 10 681 43 89.38
+405 1767 6 F 413 1896 0 710 36 91.20
+405 336 36 F 419 1703 0 734 30 92.72
+405 798 3 F 402 1327 34 714 31 92.32
+405 867 233 F 417 1602 0 708 38 90.75
+406 530 14 F 398 1343 30 735 23 94.28
+406 736 104 F 407 1143 0 726 29 92.87
+407 1143 2 F 407 1230 106 742 24 94.10
+407 474 57 F 407 988 0 664 50 87.71
+408 798 0 F 407 826 74 755 20 95.09
+409 1049 24 F 401 1327 2 615 65 83.95
+409 1097 23 F 417 1806 1 721 35 91.53
+409 1143 0 F 409 1151 47 734 28 93.15
+409 432 9 F 410 652 0 735 28 93.16
+409 480 46 F 398 926 0 744 21 94.80
+409 522 41 F 410 1134 0 723 32 92.19
+409 630 3 F 414 1360 1 688 45 89.06
+409 826 12 F 407 1049 0 702 38 90.69
+409 902 14 F 409 1143 0 728 30 92.67
+41 362 205 F 42 362 246 68 5 87.95
+41 561 402 P 39 1596 256 65 5 87.50
+41 61 150 F 42 61 191 77 2 95.18
+410 1100 33 F 408 1143 1 725 31 92.42
+410 846 204 F 414 1360 1 731 31 92.48
+411 736 97 F 414 1360 1 747 26 93.70
+411 912 1 F 414 1049 3 696 43 89.58
+412 1151 40 F 414 1360 1 742 28 93.22
+412 630 2 F 414 736 96 730 32 92.25
+412 654 1 F 407 807 63 711 36 91.21
+412 849 0 F 415 912 68 746 27 93.47
+413 1100 26 F 414 1360 1 704 41 90.08
+413 713 27 F 417 849 0 710 40 90.36
+414 1230 95 F 414 1360 1 735 31 92.51
+414 299 0 P 420 883 20 729 35 91.61
+414 713 1 F 420 1327 16 723 37 91.13
+414 736 96 F 416 902 5 800 10 97.59
+415 1663 0 F 414 1893 27 700 43 89.63
+415 452 0 F 413 882 3 750 26 93.72
+415 630 1 F 416 846 202 729 34 91.82
+415 630 1 F 418 1151 38 737 32 92.32
+415 630 1 F 419 902 4 732 34 91.85
+415 691 0 F 433 814 49 722 42 90.09
+415 713 0 F 428 826 53 729 38 90.98
+416 1764 10 F 415 1882 0 783 16 96.15
+416 630 0 F 420 1100 23 719 39 90.67
+416 630 0 F 421 1230 92 732 35 91.64
+416 658 186 F 416 849 1 763 23 94.47
+417 223 0 F 414 271 2 801 10 97.59
+417 451 15 F 414 1360 1 726 35 91.58
+417 849 0 F 413 1297 62 722 36 91.33
+417 849 0 F 417 1120 27 705 43 89.69
+418 229 0 F 419 270 0 828 3 99.28
+418 318 13 F 428 1693 142 621 75 82.27
+418 404 186 F 420 975 52 760 26 93.79
+418 819 76 F 443 1362 3 726 45 89.55
+419 1120 0 F 419 1327 17 715 41 90.21
+419 474 45 F 417 1049 0 722 38 90.91
+419 543 61 F 416 849 1 748 29 93.05
+419 846 199 F 422 902 1 793 16 96.20
+419 975 53 F 419 1500 29 781 19 95.47
+42 1788 136 F 43 1788 178 61 8 81.18
+42 1850 145 F 43 1850 187 61 8 81.18
+42 357 44 F 42 357 92 60 8 80.95
+42 470 366 F 39 749 329 57 8 80.25
+42 61 154 F 42 61 196 84 0 100.00
+42 61 155 F 42 61 197 84 0 100.00
+42 61 156 F 42 61 198 84 0 100.00
+42 64 149 F 42 64 191 84 0 100.00
+42 64 150 F 42 64 192 84 0 100.00
+42 64 151 F 42 64 193 84 0 100.00
+42 64 152 F 42 64 194 84 0 100.00
+42 64 153 F 42 64 195 84 0 100.00
+42 64 154 F 42 64 196 84 0 100.00
+42 64 155 F 42 64 197 84 0 100.00
+42 64 156 F 42 64 198 84 0 100.00
+42 64 157 F 42 64 199 84 0 100.00
+42 64 158 F 42 64 200 84 0 100.00
+42 65 149 F 42 65 191 84 0 100.00
+42 65 150 F 42 65 192 84 0 100.00
+42 65 151 F 42 65 193 84 0 100.00
+42 65 152 F 42 65 194 84 0 100.00
+42 65 153 F 42 65 195 84 0 100.00
+42 65 154 F 42 65 196 84 0 100.00
+42 65 155 F 42 65 197 84 0 100.00
+42 65 156 F 42 65 198 84 0 100.00
+42 65 157 F 42 65 199 84 0 100.00
+42 65 158 F 42 65 200 84 0 100.00
+420 404 213 F 444 1362 2 699 55 87.27
+420 798 13 F 417 849 0 723 38 90.92
+420 902 3 F 422 1230 91 785 19 95.49
+421 695 59 F 427 938 0 761 29 93.16
+421 884 0 F 427 890 8 770 26 93.87
+422 432 0 F 423 825 61 791 18 95.74
+422 474 1 F 425 1230 2 679 56 86.78
+422 474 118 F 417 849 0 758 27 93.56
+422 536 58 F 414 1082 12 755 27 93.54
+423 449 0 F 421 868 143 802 14 96.68
+423 474 0 F 408 736 18 693 46 88.93
+423 474 0 F 418 846 114 685 52 87.63
+423 713 17 F 432 798 1 753 34 92.05
+423 902 0 F 422 1151 34 818 9 97.87
+423 902 0 F 423 1100 20 747 33 92.20
+424 451 10 F 420 902 1 787 19 95.50
+424 454 70 F 432 1837 0 793 21 95.09
+424 892 0 F 420 1300 64 772 24 94.31
+425 489 0 F 429 1339 12 806 16 96.25
+425 630 9 F 426 1143 1 728 41 90.36
+425 658 60 F 426 736 0 683 56 86.84
+426 826 55 F 419 1120 0 743 34 91.95
+426 988 0 F 424 1049 12 766 28 93.41
+427 1764 1 F 432 1767 0 796 21 95.11
+428 658 174 F 433 798 0 795 22 94.89
+428 798 0 F 428 912 55 796 20 95.33
+429 1297 21 F 436 1327 0 754 37 91.45
+429 543 51 F 430 798 3 793 22 94.88
+43 362 208 F 42 362 251 73 4 90.59
+43 95 10 P 44 120 288 69 6 86.21
+430 412 83 F 436 1525 0 755 37 91.45
+430 61 134 F 438 65 137 787 27 93.78
+430 798 3 F 423 1297 52 766 29 93.20
+432 584 48 F 449 1661 0 707 58 86.83
+432 701 5 F 422 715 7 731 41 90.40
+432 798 1 F 428 1120 16 752 36 91.63
+432 825 27 F 441 1469 13 765 36 91.75
+433 1049 0 F 413 1297 4 630 72 82.98
+433 1745 0 F 427 1764 1 776 28 93.49
+434 406 8 F 430 542 0 771 31 92.82
+434 426 27 F 429 795 0 722 47 89.11
+434 451 0 F 427 736 83 825 12 97.21
+434 451 0 F 427 846 189 816 15 96.52
+434 451 0 F 428 1151 26 823 13 96.98
+434 451 0 F 429 1100 12 764 33 92.35
+434 451 0 F 431 1230 80 805 20 95.38
+434 846 184 F 437 1100 6 772 33 92.42
+435 1828 6 F 446 1947 0 734 49 88.88
+435 474 105 F 433 798 0 811 19 95.62
+435 713 0 F 446 912 37 782 33 92.51
+435 736 75 F 437 1100 4 782 30 93.12
+436 1210 50 F 431 1516 1 786 27 93.77
+436 543 44 F 429 713 11 793 24 94.45
+436 549 0 F 448 661 68 773 37 91.63
+437 658 140 F 436 1327 0 777 32 92.67
+437 713 3 F 437 1297 38 769 35 91.99
+437 713 3 F 442 1120 2 789 30 93.17
+438 1696 0 F 439 1781 23 748 43 90.19
+438 905 0 F 451 1693 83 730 53 88.08
+439 376 0 F 450 1694 81 703 62 86.05
+439 543 16 F 436 1327 0 782 31 92.91
+44 1363 114 F 44 1363 194 73 5 88.64
+44 1402 129 F 46 1402 188 69 7 84.44
+44 310 109 F 44 310 189 82 2 95.45
+44 42 179 F 44 73 104 82 2 95.45
+440 1100 3 F 442 1230 71 792 30 93.20
+440 654 1 F 432 866 142 719 51 88.30
+441 658 161 F 438 713 2 777 34 92.26
+442 1100 1 F 440 1151 16 789 31 92.97
+443 1226 5 F 421 1296 26 732 44 89.81
+444 1120 0 F 439 1297 36 772 37 91.62
+444 658 158 F 444 1120 0 786 34 92.34
+444 912 19 F 436 1327 0 778 34 92.27
+445 1362 1 F 425 1500 52 732 46 89.43
+445 815 0 F 462 1699 0 778 43 90.52
+445 912 38 F 439 1120 0 791 31 92.99
+446 1620 20 F 439 1937 0 762 41 90.73
+446 1767 9 F 440 1882 0 826 20 95.49
+446 826 35 F 436 1327 0 774 36 91.84
+447 474 68 F 436 1327 0 775 36 91.85
+447 543 33 F 444 1120 0 798 31 93.04
+447 848 138 F 476 1658 0 737 62 86.57
+449 1796 26 F 439 1937 0 759 43 90.32
+45 1668 56 F 45 1668 101 81 3 93.33
+45 1668 62 F 45 1668 107 84 2 95.56
+45 1668 63 F 45 1668 108 84 2 95.56
+45 1668 64 F 45 1668 109 84 2 95.56
+45 1668 65 F 45 1668 110 84 2 95.56
+45 1668 66 F 45 1668 111 84 2 95.56
+45 1668 67 F 45 1668 112 84 2 95.56
+45 1668 68 F 45 1668 113 84 2 95.56
+45 1668 69 F 45 1668 114 84 2 95.56
+45 1668 70 F 45 1668 115 84 2 95.56
+45 1668 71 F 45 1668 116 84 2 95.56
+450 1745 9 F 443 1882 0 809 28 93.73
+451 1294 10 F 463 1786 0 740 58 87.31
+451 819 14 F 467 975 5 810 36 92.16
+452 736 58 F 454 1151 0 876 10 97.79
+453 404 187 F 455 1500 29 806 34 92.51
+453 460 27 F 452 1351 0 821 28 93.81
+453 474 87 F 444 1120 0 798 33 92.64
+454 474 86 F 440 713 0 786 36 91.95
+454 846 164 F 456 1151 0 859 17 96.26
+455 543 0 F 466 826 15 852 23 95.01
+456 1151 0 F 463 1230 50 844 25 94.56
+458 1745 0 F 455 1767 0 829 28 93.87
+458 1802 3 F 471 1877 0 827 34 92.68
+458 34 157 F 442 1317 0 789 37 91.78
+46 120 196 F 46 120 286 80 4 91.30
+46 357 385 F 50 1267 259 69 9 81.25
+46 362 195 F 42 362 241 64 8 81.82
+46 375 297 F 46 375 343 86 2 95.65
+46 375 298 F 46 375 344 86 2 95.65
+46 376 256 F 47 376 387 75 6 87.10
+46 399 66 F 43 650 2 65 8 82.02
+461 654 0 F 461 1212 120 799 41 91.11
+461 78 86 F 459 80 149 800 40 91.30
+465 658 20 F 485 846 47 737 71 85.05
+467 11 135 F 449 29 138 766 50 89.08
+467 658 110 F 481 826 0 867 27 94.30
+467 826 14 F 463 912 0 873 19 95.91
+468 807 2 F 464 866 82 800 44 90.56
+468 807 2 F 476 1212 57 824 40 91.53
+471 658 126 F 479 912 4 896 18 96.21
+474 826 7 F 450 1297 0 801 41 91.13
+475 404 165 F 466 819 35 809 44 90.65
+475 543 0 F 482 912 1 897 20 95.82
+477 1620 0 F 478 1796 6 832 41 91.41
+477 543 3 F 476 658 126 890 21 95.59
+48 1049 12 F 51 1931 256 78 7 85.86
+480 474 35 F 479 826 2 914 15 96.87
+480 543 0 F 468 1297 7 855 31 93.46
+483 912 0 F 464 1297 6 842 35 92.61
+484 2 176 F 513 6 104 730 89 82.15
+484 819 35 F 494 1500 8 882 32 93.46
+485 736 25 F 500 1230 11 898 29 94.11
+486 658 116 F 475 1297 0 853 36 92.51
+488 474 47 F 483 912 0 932 13 97.32
+49 552 293 F 49 552 344 71 9 81.63
+49 858 109 F 52 858 159 83 6 88.12
+492 474 48 F 480 543 0 903 23 95.27
+494 1788 0 F 499 1850 9 882 37 92.55
+50 1041 0 F 48 1788 211 74 8 83.67
+50 1041 0 F 48 1850 220 74 8 83.67
+50 552 290 F 51 552 340 71 10 80.20
+500 474 40 F 475 1297 0 852 41 91.59
+503 846 115 F 511 1230 2 879 45 91.12
+51 36 324 F 52 42 193 91 4 92.23
+510 736 0 F 525 846 91 915 40 92.27
+517 64 0 F 517 65 0 1034 0 100.00
+53 390 291 F 56 390 344 82 9 83.49
+53 848 88 F 58 1482 0 81 10 81.98
+53 95 0 P 54 120 198 83 8 85.05
+53 95 0 P 54 120 228 80 9 83.18
+53 95 0 P 54 120 258 86 7 86.92
+53 95 0 P 54 1624 110 83 8 85.05
+53 95 0 P 54 1624 140 80 9 83.18
+53 95 0 P 54 1624 170 86 7 86.92
+53 95 0 P 54 1624 200 83 8 85.05
+53 95 0 P 54 1624 230 104 1 98.13
+538 1 9 F 523 47 0 779 94 82.28
+540 474 0 F 522 658 80 975 29 94.54
+542 78 223 F 540 1488 8 995 29 94.64
+55 33 0 F 56 300 286 102 3 94.59
+55 390 297 F 56 390 352 90 7 87.39
+557 866 17 F 561 1212 0 884 78 86.05
+56 1575 43 F 53 1788 78 79 10 81.65
+56 73 0 F 56 300 286 97 5 91.07
+568 79 56 F 568 1495 0 1022 38 93.31
+577 2 72 F 606 3 0 916 89 84.95
+58 120 196 F 58 120 256 107 3 94.83
+58 1624 108 F 58 1624 168 107 3 94.83
+58 1668 56 F 54 1668 146 79 11 80.36
+58 381 4 F 58 399 58 83 11 81.03
+58 950 2 F 58 1788 201 110 2 96.55
+58 950 2 F 58 1850 210 110 2 96.55
+59 35 147 F 59 49 398 118 0 100.00
+59 95 0 P 59 1624 255 91 9 84.75
+597 1 0 F 592 4 7 898 97 83.68
+599 6 104 F 601 16 260 915 95 84.17
+60 1402 148 F 62 1402 209 95 9 85.25
+60 1777 34 F 60 1897 41 84 12 80.00
+60 376 277 F 62 376 338 98 8 86.89
+61 376 269 F 63 376 330 94 10 83.87
+613 4 16 F 571 47 0 1022 54 90.88
+62 1069 56 F 62 1083 133 103 7 88.71
+626 2 34 F 656 5 0 1063 73 88.61
+63 1402 143 F 63 1402 206 93 11 82.54
+63 1664 298 F 60 1722 0 93 10 83.74
+63 376 272 F 63 376 335 96 10 84.13
+63 560 88 F 62 1083 133 95 10 84.00
+639 3 14 F 631 6 14 1063 69 89.13
+653 3 0 F 643 39 72 1203 31 95.22
+655 3 0 F 650 16 156 1047 86 86.82
+660 2 0 F 687 39 0 1065 94 86.04
+668 3 0 F 660 5 38 1139 63 90.51
+67 1889 131 F 64 1889 200 98 11 83.21
+68 1613 4 F 68 1826 1 127 3 95.59
+68 7 261 F 67 300 275 102 11 83.70
+69 112 63 F 69 1624 0 126 4 94.20
+69 126 101 F 69 1206 190 105 11 84.06
+69 1932 103 F 64 1932 212 97 12 81.95
+70 126 102 F 73 1431 261 104 13 81.82
+704 5 52 F 700 6 14 1056 116 83.48
+706 2 0 F 749 16 84 1269 62 91.48
+71 1543 267 F 71 1543 350 130 4 94.37
+71 376 299 F 68 376 373 100 13 81.29
+71 719 170 F 71 1650 0 124 6 91.55
+72 1199 59 F 71 1650 0 122 7 90.21
+72 126 102 F 72 1343 156 141 1 98.61
+72 126 102 F 72 530 148 141 1 98.61
+72 126 102 F 73 544 88 142 1 98.62
+72 540 271 F 78 1520 102 105 15 80.00
+74 78 25 F 74 80 74 121 9 87.84
+742 5 0 F 746 16 118 1323 55 92.61
+75 127 0 F 75 1706 76 111 13 82.67
+75 264 513 F 77 300 265 137 5 93.42
+756 5 0 F 750 39 34 1275 77 89.77
+76 126 97 F 76 1304 165 119 11 85.53
+767 16 84 F 766 39 0 1248 95 87.61
+78 859 0 F 81 1265 168 129 10 87.42
+783 6 14 F 788 39 86 1400 57 92.74
+80 35 204 F 80 73 144 154 2 97.50
+80 61 150 F 81 61 275 146 5 93.79
+80 72 215 F 80 73 144 154 2 97.50
+80 843 10 F 78 857 0 116 14 82.28
+82 13 317 F 80 73 144 132 10 87.65
+83 61 150 F 84 61 233 152 5 94.01
+83 7 276 F 83 264 535 154 4 95.18
+84 61 150 F 87 64 278 150 7 91.81
+84 61 150 F 87 65 278 150 7 91.81
+84 64 149 F 84 64 233 159 3 96.43
+84 65 149 F 84 65 233 159 3 96.43
+85 33 0 F 84 264 534 163 2 97.63
+86 17 1 F 86 55 0 172 0 100.00
+86 73 0 F 84 264 534 155 5 94.12
+87 871 362 F 87 1401 288 156 6 93.10
+88 64 149 F 90 64 275 163 5 94.38
+88 65 149 F 90 65 275 163 5 94.38
+89 1624 130 F 89 1624 220 145 11 87.64
+90 1624 108 F 90 1624 198 147 11 87.78
+90 1624 122 F 90 1624 212 144 12 86.67
+90 1624 123 F 90 1624 213 144 12 86.67
+90 1624 124 F 90 1624 214 144 12 86.67
+90 1624 125 F 90 1624 215 144 12 86.67
+90 1624 126 F 90 1624 216 144 12 86.67
+90 1624 127 F 90 1624 217 144 12 86.67
+93 733 210 F 93 1678 0 147 13 86.02
+95 7 276 F 96 33 1 185 2 97.91
+95 7 276 F 97 73 1 177 5 94.79
+97 399 15 F 101 582 2 144 18 81.82
diff --git a/testdata/see-ext-fastq_long-u8.matches b/testdata/see-ext-fastq_long-u8.matches
new file mode 100644
index 0000000..b44c7a1
--- /dev/null
+++ b/testdata/see-ext-fastq_long-u8.matches
@@ -0,0 +1,108 @@
+19 106 0 F 21 0 83361 31 3 85.00
+19 106 0 F 22 0 83361 29 4 80.49
+19 106 0 P 21 0 53972 28 4 80.00
+19 106 1 F 21 0 34909 34 2 90.00
+19 397 3 P 21 0 98125 31 3 85.00
+19 486 7 P 22 0 68455 29 4 80.49
+20 106 0 P 23 0 53970 31 4 81.40
+20 129 5 P 21 0 90721 29 4 80.49
+20 150 6 F 20 0 87969 28 4 80.00
+20 163 6 P 20 0 91413 34 2 90.00
+20 181 6 F 21 0 20421 29 4 80.49
+20 220 6 F 22 0 52826 33 3 85.71
+20 220 6 P 20 0 84836 31 3 85.00
+20 376 3 P 23 0 90700 31 4 81.40
+20 380 3 P 20 0 58926 28 4 80.00
+20 477 0 P 22 0 5086 36 2 90.48
+20 49 6 P 20 0 76250 34 2 90.00
+21 106 1 P 20 0 73237 29 4 80.49
+21 163 5 F 19 0 83369 31 3 85.00
+21 163 5 F 20 0 83369 32 3 85.37
+21 163 5 F 20 0 84827 32 3 85.37
+21 163 5 F 21 0 83369 33 3 85.71
+21 163 5 F 22 0 83369 34 3 86.05
+21 163 5 P 19 0 90205 31 3 85.00
+21 163 5 P 21 0 73619 33 3 85.71
+21 163 5 P 21 0 74388 36 2 90.48
+21 163 5 P 23 0 74192 35 3 86.36
+21 163 5 P 23 0 74595 35 3 86.36
+21 29 5 P 20 0 75173 29 4 80.49
+21 295 4 P 22 0 73246 31 4 81.40
+21 359 5 P 20 0 74200 29 4 80.49
+21 395 1 P 20 0 73215 29 4 80.49
+21 395 3 F 19 0 76373 31 3 85.00
+21 397 3 P 21 0 5067 30 4 80.95
+21 429 2 F 24 0 84833 33 4 82.22
+21 429 2 P 21 0 90200 36 2 90.48
+21 429 5 P 22 0 52837 37 2 90.70
+21 441 4 F 20 0 33030 32 3 85.37
+21 477 1 F 23 0 5964 32 4 81.82
+21 477 4 F 21 0 48033 39 1 95.24
+21 486 5 F 19 0 83372 31 3 85.00
+21 486 5 F 21 0 83372 33 3 85.71
+21 486 5 P 21 0 80437 30 4 80.95
+21 554 5 F 19 0 88751 28 4 80.00
+21 560 5 P 22 0 56035 31 4 81.40
+21 7 3 F 21 0 55423 30 4 80.95
+21 7 4 P 22 0 81116 31 4 81.40
+21 73 0 F 19 0 55576 28 4 80.00
+22 106 1 P 20 0 68451 30 4 80.95
+22 106 1 P 23 0 52832 33 4 82.22
+22 138 0 F 21 0 48534 31 4 81.40
+22 138 3 P 22 0 73969 32 4 81.82
+22 163 0 P 24 0 74141 34 4 82.61
+22 220 4 F 23 0 91403 33 4 82.22
+22 224 1 P 20 0 66915 30 4 80.95
+22 229 1 P 22 0 6920 32 4 81.82
+22 397 1 F 18 0 55378 28 4 80.00
+22 397 3 F 20 0 14967 30 4 80.95
+22 397 4 P 21 0 74149 31 4 81.40
+22 397 4 P 24 0 74548 34 4 82.61
+22 559 4 P 18 0 39091 28 4 80.00
+22 7 4 F 20 0 83363 30 4 80.95
+23 163 3 P 21 0 6921 38 2 90.91
+23 163 3 P 21 0 90209 32 4 81.82
+23 163 3 P 22 0 6920 36 3 86.67
+23 163 3 P 22 0 90208 33 4 82.22
+23 163 3 P 23 0 90207 34 4 82.61
+23 229 3 F 23 0 83368 34 4 82.61
+23 337 1 F 25 0 57128 36 4 83.33
+23 429 0 P 23 0 52835 37 3 86.96
+23 429 3 F 21 0 83374 35 3 86.36
+23 429 3 F 27 0 83357 35 5 80.00
+23 83 3 P 22 0 74555 33 4 82.22
+24 106 0 P 26 0 88071 41 3 88.00
+24 106 1 P 26 0 90194 35 5 80.00
+24 163 2 F 21 0 84827 33 4 82.22
+24 163 2 F 22 0 84827 34 4 82.61
+24 163 2 P 20 0 90204 32 4 81.82
+24 163 2 P 26 0 74556 41 3 88.00
+24 163 2 P 27 0 74555 39 4 84.31
+24 163 2 P 28 0 74554 37 5 80.77
+24 397 2 P 23 0 73962 35 4 82.98
+24 429 2 P 26 0 74150 35 5 80.00
+24 429 2 P 27 0 74143 39 4 84.31
+24 477 2 F 21 0 40644 33 4 82.22
+24 477 2 P 23 0 90730 35 4 82.98
+24 49 1 P 29 0 30940 38 5 81.13
+25 106 1 F 22 0 84834 35 4 82.98
+25 163 1 F 25 0 83357 35 5 80.00
+25 163 1 F 25 0 83369 35 5 80.00
+25 163 1 F 26 0 83357 36 5 80.39
+25 163 1 F 26 0 83369 36 5 80.39
+25 163 1 F 27 0 83357 37 5 80.77
+25 163 1 P 21 0 90203 34 4 82.61
+25 163 1 P 22 0 90202 35 4 82.98
+25 163 1 P 23 0 90201 36 4 83.33
+25 163 1 P 26 0 74150 36 5 80.39
+25 163 1 P 26 0 74543 36 5 80.39
+25 567 1 F 23 0 73622 36 4 83.33
+25 567 1 F 24 0 74196 37 4 83.67
+25 567 1 F 24 0 74599 37 4 83.67
+26 163 0 F 23 0 83373 37 4 83.67
+26 220 0 F 26 0 90187 37 5 80.77
+26 397 0 P 24 0 74543 35 5 80.00
+26 477 0 F 25 0 90948 36 5 80.39
+26 477 0 F 28 0 40707 39 5 81.48
+26 477 0 P 28 0 6636 42 4 85.19
+26 7 0 F 25 0 83366 36 5 80.39
diff --git a/testdata/see-ext-fastq_long.matches b/testdata/see-ext-fastq_long.matches
new file mode 100644
index 0000000..a5a4c41
--- /dev/null
+++ b/testdata/see-ext-fastq_long.matches
@@ -0,0 +1,39 @@
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+# Fields: s. len, s. seqnum, s. start, strand, q. len, q. seqnum, q. start, score, editdist, % identity
+# Options: -ii fastq_long -splt struct -minidentity 80 -history 60
+17 246 0 P 17 339 0 34 0 100.00
+17 66 7 F 17 138 8 28 2 88.24
+18 119 5 F 18 491 0 36 0 100.00
+18 20 7 P 18 531 8 33 1 94.44
+18 328 8 F 18 342 0 36 0 100.00
+18 339 8 F 18 342 0 36 0 100.00
+18 376 8 F 18 495 0 36 0 100.00
+18 397 7 F 18 429 8 27 3 83.33
+19 247 7 P 19 336 7 38 0 100.00
+19 310 0 P 19 322 0 38 0 100.00
+20 163 0 F 19 429 7 30 3 84.62
+20 180 6 F 20 393 0 37 1 95.00
+20 20 5 P 20 247 6 34 2 90.00
+20 268 0 P 20 339 0 40 0 100.00
+21 163 5 F 19 429 3 28 4 80.00
+21 310 0 P 21 452 0 36 2 90.48
+21 7 5 F 23 83 3 32 4 81.82
+22 129 0 F 22 463 0 44 0 100.00
+23 20 0 P 23 554 0 37 3 86.96
+23 246 0 F 23 268 3 46 0 100.00
+23 251 0 P 23 404 2 43 1 95.65
+24 20 0 F 24 336 2 42 2 91.67
+25 180 0 P 25 336 0 44 2 92.00
+25 336 0 P 25 554 0 47 1 96.00
+25 376 0 F 23 463 0 42 2 91.67
+25 468 1 F 25 621 0 38 4 84.00
+25 531 0 P 25 579 0 44 2 92.00
+26 111 0 F 26 230 0 49 1 96.15
+26 129 0 F 26 376 0 46 2 92.31
+26 129 0 P 26 372 0 46 2 92.31
+26 143 0 F 26 328 0 43 3 88.46
+26 143 0 F 26 339 0 49 1 96.15
+26 180 0 F 26 554 0 43 3 88.46
+26 328 0 F 26 339 0 46 2 92.31
+26 372 0 P 26 376 0 49 1 96.15
+26 372 0 P 26 463 0 46 2 92.31
diff --git a/testdata/see-ext-paired-u8.matches b/testdata/see-ext-paired-u8.matches
new file mode 100644
index 0000000..e69de29
diff --git a/testdata/see-ext-paired.matches b/testdata/see-ext-paired.matches
new file mode 100644
index 0000000..9fddbbe
--- /dev/null
+++ b/testdata/see-ext-paired.matches
@@ -0,0 +1,3 @@
+10 0 0 P 10 1 0 20 0 100.00
+5 0 0 F 5 0 5 10 0 100.00
+5 1 0 F 5 1 5 10 0 100.00
diff --git a/testsuite/gt_condenseq_include.rb b/testsuite/gt_condenseq_include.rb
index f9104f9..6e07b45 100644
--- a/testsuite/gt_condenseq_include.rb
+++ b/testsuite/gt_condenseq_include.rb
@@ -239,10 +239,10 @@ Test do
["-full_diags yes -indexname foo -brute_force #{basename}",
/not compatible/],
["-indexname foo -kmersize 8 -windowsize 8 -cutoff 0 -disable_prune " \
- "#{basename}",
+ "#{basename}",
"'-cutoff 0' disables cutoffs, so '-disable_prune' should not be set"],
["-indexname foo -kmersize 8 -windowsize 8 -cutoff 0 -fraction 3 " \
- "#{basename}",
+ "#{basename}",
"option \"-cutoff\" and option \"-fraction\" exclude each other"]
]
compress_option_fails.each do |call, errmsg|
diff --git a/testsuite/gt_linspace_align_include.rb b/testsuite/gt_linspace_align_include.rb
index e64263b..c836d39 100644
--- a/testsuite/gt_linspace_align_include.rb
+++ b/testsuite/gt_linspace_align_include.rb
@@ -41,11 +41,13 @@ Test do
filelist.each do |f1|
filelist.each do |f2|
if f1 != f2
- run_test "#{$bin}gt dev linspace_align -ff #{$testdata}/nGASP/#{f1} #{$testdata}nGASP/#{f2} "\
- "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -showonlyscore"
+ run_test "#{$bin}gt dev linspace_align -ff #{$testdata}nGASP/#{f1} #{$testdata}nGASP/#{f2} "\
+ "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -showonlyscore",\
+ :maxtime => 180
temp = last_stdout
- run_test "#{$bin}gt dev linspace_align -ff #{$testdata}/nGASP/#{f1} #{$testdata}nGASP/#{f2} "\
- "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -d -showonlyscore"
+ run_test "#{$bin}gt dev linspace_align -ff #{$testdata}nGASP/#{f1} #{$testdata}nGASP/#{f2} "\
+ "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -d -showonlyscore",\
+ :maxtime => 180
run "diff #{last_stdout} #{temp}"
end
end
@@ -169,11 +171,11 @@ if $gttestdata then
Test do
run_test "#{$bin}gt dev linspace_align -ff #{$gttestdata}DNA-mix/Grumbach.fna/humdystrop.fna"\
" #{$gttestdata}DNA-mix/Grumbach.fna/humhdabcd.fna "\
- "-dna -global -l 0 1 1 -showonlyscore", :maxtime =>120
+ "-dna -global -l 0 1 1 -showonlyscore", :maxtime => 1200
temp = last_stdout
run_test "#{$bin}gt dev linspace_align -ff #{$gttestdata}DNA-mix/Grumbach.fna/humdystrop.fna "\
"#{$gttestdata}DNA-mix/Grumbach.fna/humhdabcd.fna "\
- "-dna -global -l 0 1 1 -d -showonlyscore", :maxtime =>120
+ "-dna -global -l 0 1 1 -d -showonlyscore", :maxtime => 1500
run "diff #{last_stdout} #{temp}"
end
@@ -182,11 +184,13 @@ if $gttestdata then
Test do
run_test "#{$bin}gt dev linspace_align -ff #{$gttestdata}swissprot/swiss10K "\
"#{$gttestdata}swissprot/swiss10K " \
- "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -showonlyscore"
+ "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -showonlyscore",\
+ :maxtime => 120
temp = last_stdout
run_test "#{$bin}gt dev linspace_align -ff #{$gttestdata}swissprot/swiss10K "\
"#{$gttestdata}swissprot/swiss10K "\
- "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -d -showonlyscore"
+ "-protein -global -l #{$testdata}BLOSUM62 \" -1\" -d -showonlyscore",\
+ :maxtime => 120
run "diff #{last_stdout} #{temp}"
end
end
diff --git a/testsuite/gt_readjoiner_include.rb b/testsuite/gt_readjoiner_include.rb
index c41131e..0c8df87 100644
--- a/testsuite/gt_readjoiner_include.rb
+++ b/testsuite/gt_readjoiner_include.rb
@@ -1,6 +1,7 @@
rdjO = "#{$bin}gt readjoiner overlap"
rdjA = "#{$bin}gt readjoiner assembly"
spmtest = "#{$bin}gt readjoiner spmtest"
+gfatest = "#{$bin}gt readjoiner gfa"
cnttest = "#{$bin}gt readjoiner cnttest"
def run_correct(input, k, c)
@@ -1092,6 +1093,21 @@ Test do
run "diff reads.contigs.fas #$testdata/readjoiner/3_varlen_seq.contigs.fas"
end
+# gfa
+[1, 2].each do |gfa_version|
+ %w{30x_long_varlen contained_varlen 30x_800nt 70x_100nt}.each do |fasta|
+ Name "gt readjoiner gfa#{gfa_version}: #{fasta}"
+ Keywords "gt_readjoiner gt_readjoiner_gfa"
+ Test do
+ run_prefilter("#$testdata/readjoiner/#{fasta}.fas")
+ run_overlap(32)
+ run_test "#{gfatest} -readset reads #{' -1' if gfa_version == 1}",
+ :retval => 0
+ run "diff reads.gfa #$testdata/readjoiner/#{fasta}.gfa#{gfa_version}"
+ end
+ end
+end
+
# spmtest
[true, false].each do |mirrored|
%w{contained_eqlen contained_varlen 30x_800nt 70x_100nt}.each do |fasta|
@@ -1129,7 +1145,6 @@ end
end
# cnttest
-
[true, false].each do |mirrored|
%w{contained_eqlen contained_varlen}.each do |fasta|
Name "gt readjoiner cnttest#{' singlestrand' if !mirrored}: #{fasta}"
diff --git a/testsuite/gt_repfind_include.rb b/testsuite/gt_repfind_include.rb
index 9e5101b..36cb544 100644
--- a/testsuite/gt_repfind_include.rb
+++ b/testsuite/gt_repfind_include.rb
@@ -48,10 +48,10 @@ def checkrepfind(reffile,withextend = false)
minlength = determineminlength(reffile)
run_test("#{$bin}gt repfind -l #{minlength} -ii sfxidx", :maxtime => 600)
resultfile="#{rdir}/#{reffile}.result"
- run "cmp #{last_stdout} #{resultfile}"
+ run "diff -I '^#' #{last_stdout} #{resultfile}"
run_test("#{$bin}gt repfind -l #{minlength} -r -ii sfxidx", :maxtime => 600)
resultfile="#{rdir}/#{reffile}-r.result"
- run "cmp #{last_stdout} #{resultfile}"
+ run "diff -I '^#' #{last_stdout} #{resultfile}"
if withextend
run_test("#{$bin}gt repfind -l #{minlength} -ii sfxidx -extendgreedy " +
"-minidentity 90 -maxalilendiff 30 -percmathistory 55",
@@ -61,7 +61,7 @@ def checkrepfind(reffile,withextend = false)
else
resultfile="#{$testdata}/repfind-result/#{reffile}-gr-ext.result"
end
- run "cmp #{last_stdout} #{resultfile}"
+ run "diff -I '^#' #{last_stdout} #{resultfile}"
end
end
@@ -80,7 +80,7 @@ def checkrepfindwithquery(reffile,queryfile)
# "#{queryfilepath}"
#run "sed -e '/^#/d' #{last_stdout} | sort"
# run "#{$scriptsdir}repfind-cmp.rb #{last_stdout} #{$gttestdata}repfind-result/#{reffile}-#{queryfile}.result"
- run "cmp #{last_stdout} #{$gttestdata}repfind-result/#{reffile}-#{queryfile}.result"
+ run "diff -I '^#' #{last_stdout} #{$gttestdata}repfind-result/#{reffile}-#{queryfile}.result"
end
def crosstest(common,opts,key)
@@ -107,43 +107,44 @@ Test do
"-indexname Atinsert -dna -tis -suf -lcp"
run_test "#{$bin}gt repfind -minidentity 90 -l 20 -extendxdrop " +
"-xdropbelow 5 -ii at1MB"
- run "cmp #{last_stdout} #{rdir}/at1MB-xdrop-20-20-80-6"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-xdrop-20-20-80-6"
run_test "#{$bin}gt repfind -minidentity 80 -l 20 -extendxdrop -ii at1MB " +
"-q #{$testdata}/U89959_genomic.fas"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6"
run_test "#{$bin}gt repfind -minidentity 80 -l 20 -extendxdrop -ii at1MB " +
"-qii U8"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6"
run_test "#{$bin}gt repfind -minidentity 70 -l 700 -seedlength 15 " +
"-extendgreedy -ii at1MB -q #{$testdata}Atinsert.fna"
- run "cmp #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-15-700-70-4-43"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-15-700-70-4-43"
run_test "#{$bin}gt repfind -minidentity 70 -l 700 -seedlength 15 " +
"-extendgreedy -ii at1MB -qii Atinsert"
- run "cmp #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-15-700-70-4-43"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-15-700-70-4-43"
run_test "#{$bin}gt repfind -extendxdrop -ii at1MB -seedlength 70 -l 500 " +
- "-minidentity 90 -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-xdrop-70-500-90-1-39-a"
+ "-minidentity 90 -outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-xdrop-70-500-90-1-39-a"
run_test "#{$bin}gt repfind -minidentity 75 -l 700 -seedlength 20 " +
- "-extendgreedy -ii at1MB -q #{$testdata}Atinsert.fna -a " +
- "-verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-20-700-75-3-39-a"
+ "-extendgreedy -ii at1MB -q #{$testdata}Atinsert.fna " +
+ "-outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-20-700-75-3-39-a"
run_test "#{$bin}gt repfind -minidentity 75 -l 700 -seedlength 20 " +
- "-extendgreedy -ii at1MB -qii Atinsert -a " +
- "-verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-20-700-75-3-39-a"
+ "-extendgreedy -ii at1MB -qii Atinsert " +
+ "-outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-Atinsert-greedy-20-700-75-3-39-a"
run_test "#{$bin}gt repfind -extendgreedy -ii at1MB -seedlength 14 " +
- "-a -verify-alignment"
+ "-outfmt alignment=70 polinfo -verify-alignment"
run_test "#{$bin}gt repfind -extendxdrop -ii at1MB -seedlength 14 " +
- "-a -verify-alignment"
+ "-outfmt alignment=70 polinfo -verify-alignment"
run_test "#{$bin}gt repfind -extendgreedy -ii at1MB -seedlength 70 -l 500 " +
- "-minidentity 90 -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-greedy-70-500-90-1-39-a"
+ "-minidentity 90 -outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-greedy-70-500-90-1-39-a"
run_test "#{$bin}gt repfind -minidentity 80 -l 20 -extendxdrop -ii at1MB " +
- "-q #{$testdata}U89959_genomic.fas -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6-a"
+ "-q #{$testdata}U89959_genomic.fas " +
+ "-outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6-a"
run_test "#{$bin}gt repfind -minidentity 80 -l 20 -extendxdrop -ii at1MB " +
- "-qii U8 -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6-a"
+ "-qii U8 -outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-xdrop-20-20-80-6-a"
["xdrop","greedy"].each do |ext|
if ext == "xdrop"
params = "6"
@@ -152,16 +153,22 @@ Test do
end
run_test "#{$bin}gt repfind -minidentity 80 -l 30 -seedlength 12 " +
"-extend#{ext} -ii at1MB " +
- "-q #{$testdata}U89959_genomic.fas -r -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-#{ext}-r-12-30-80-#{params}-a"
+ "-q #{$testdata}U89959_genomic.fas -r " +
+ "-outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-#{ext}-r-12-30-80-#{params}-a"
run_test "#{$bin}gt repfind -minidentity 80 -l 30 -seedlength 12 " +
"-extend#{ext} -ii at1MB " +
- "-qii U8 -r -a -verify-alignment"
- run "cmp #{last_stdout} #{rdir}/at1MB-U8-#{ext}-r-12-30-80-#{params}-a"
- run_test "#{$bin}gt repfind -seedlength 14 -a -verify-alignment -l 32 -r " +
+ "-qii U8 -r -outfmt alignment=70 polinfo -verify-alignment"
+ run "diff -I '^#' #{last_stdout} #{rdir}/at1MB-U8-#{ext}-r-12-30-80-#{params}-a"
+ run_test "#{$bin}gt repfind -seedlength 14 -l 32 -r " +
+ "-outfmt alignment=70 polinfo -verify-alignment " +
"-extend#{ext} -ii at1MB"
- run "cmp #{last_stdout} #{$testdata}repfind-result/at1MB-#{ext}-r-14-32-80-#{params}-a"
+ run "diff -I '^#' #{last_stdout} #{$testdata}repfind-result/at1MB-#{ext}-r-14-32-80-#{params}-a"
end
+ run_test "#{$bin}gt repfind -extendgreedy -outfmt evalue -evalue 10e-150 -ii at1MB"
+ evalue_filter = 10e-150
+ run "mv #{last_stdout} strong.matches"
+ run "#{$scriptsdir}/evalue-filter.rb #{evalue_filter} strong.matches"
minlen=24
["xdrop","greedy"].each do |ext|
run_test "#{$bin}gt repfind -minidentity 80 -l #{minlen} -extend#{ext} " +
@@ -169,13 +176,13 @@ Test do
run "mv #{last_stdout} at1MB-vs-U8.#{ext}.matches"
run_test "#{$bin}gt repfind -minidentity 80 -l #{minlen} -extend#{ext} " +
"-ii at1MB -qii U8"
- run "cmp #{last_stdout} at1MB-vs-U8.#{ext}.matches"
+ run "diff -I '^#' #{last_stdout} at1MB-vs-U8.#{ext}.matches"
run_test "#{$bin}gt repfind -minidentity 80 -l #{minlen} -extend#{ext} -ii U8 " +
"-q #{$testdata}/at1MB"
run "mv #{last_stdout} U8-vs-at1MB.#{ext}.matches"
run_test "#{$bin}gt repfind -minidentity 80 -l #{minlen} -extend#{ext} -ii U8 " +
"-qii at1MB"
- run "cmp #{last_stdout} U8-vs-at1MB.#{ext}.matches"
+ run "diff -I '^#' #{last_stdout} U8-vs-at1MB.#{ext}.matches"
run "#{$scriptsdir}cmp_db_query_exch.rb U8-vs-at1MB.#{ext}.matches " +
"at1MB-vs-U8.#{ext}.matches"
end
@@ -183,11 +190,11 @@ Test do
run_test "#{$bin}gt repfind -seedlength #{seedlength} -extendgreedy -ii U8"
run "mv #{last_stdout} U8-selfcompare.matches"
run_test "#{$bin}gt repfind -seedlength #{seedlength} -extendgreedy -ii U8 "
- "-cam encseq"
- run "cmp #{last_stdout} U8-selfcompare.matches"
+ "-cam bytes,bytes"
+ run "diff -I '^#' #{last_stdout} U8-selfcompare.matches"
run_test "#{$bin}gt repfind -seedlength #{seedlength} -extendgreedy -ii U8 "
- "-cam encseq_reader"
- run "cmp #{last_stdout} U8-selfcompare.matches"
+ "-cam encseq_reader,bytes"
+ run "diff -I '^#' #{last_stdout} U8-selfcompare.matches"
end
end
@@ -206,15 +213,15 @@ Test do
run "#{$bin}gt suffixerator -indexname db-index -db db.fna #{opts}"
["xdrop","greedy"].each do |ext|
common = "#{$bin}gt repfind -minidentity #{minid} -extend#{ext} " +
- "-l #{seedlength} -a -verify-alignment"
+ "-l #{seedlength} -outfmt alignment=70 polinfo -verify-alignment"
crosstest(common,"-ii db-query-index","#{ext}-db-query-index")
crosstest(common,"-ii db-index -q query.fna","#{ext}-db-index-q")
crosstest(common,"-ii db-query-r-index -r","#{ext}-db-query-r-index")
crosstest(common,"-ii db-index -r -q query-r.fna","#{ext}-db-index-r-q")
["coords","al"].each do |suffix|
- run "cmp #{ext}-db-query-index.#{suffix} #{ext}-db-index-q.#{suffix}"
- run "cmp #{ext}-db-index-q.#{suffix} #{ext}-db-query-r-index.#{suffix}"
- run "cmp #{ext}-db-query-r-index.#{suffix} #{ext}-db-index-r-q.#{suffix}"
+ run "diff -I '^#' #{ext}-db-query-index.#{suffix} #{ext}-db-index-q.#{suffix}"
+ run "diff -I '^#' #{ext}-db-index-q.#{suffix} #{ext}-db-query-r-index.#{suffix}"
+ run "diff -I '^#' #{ext}-db-query-r-index.#{suffix} #{ext}-db-index-r-q.#{suffix}"
end
end
end
diff --git a/testsuite/gt_seed_extend_include.rb b/testsuite/gt_seed_extend_include.rb
index 3e02841..7aeaf45 100644
--- a/testsuite/gt_seed_extend_include.rb
+++ b/testsuite/gt_seed_extend_include.rb
@@ -1,5 +1,10 @@
-def build_encseq(indexname, sequencefile)
- return "#{$bin}gt encseq encode -des no -sds no -md5 no " +
+def build_encseq(indexname, sequencefile, des = false)
+ if des
+ arg = ""
+ else
+ arg = "yes"
+ end
+ return "#{$bin}gt encseq encode -des #{arg} -sds #{arg} -md5 no " +
"-indexname " + indexname + " " + sequencefile
end
@@ -21,125 +26,169 @@ seeds = [170039800390891361279027638963673934519,
54623490901073137545509422160541861122,
255642063275935424280602245704332672807]
-# KmerPos and SeedPair verification
-Name "gt seed_extend: small_poly, no extension, verify lists"
-Keywords "gt_seed_extend only-seeds verify debug-kmer debug-seedpair small_poly"
-Test do
- run_test build_encseq("small_poly", "#{$testdata}small_poly.fas")
- run_test "#{$bin}gt seed_extend -only-seeds -verify -seedlength 10 " +
- "-debug-kmer -debug-seedpair -ii small_poly -kmerfile no"
- run "gunzip -c #{$testdata}seedextend1.out.gz | cmp #{last_stdout}"
- run_test "#{$bin}gt seed_extend -only-seeds -verify -kmerfile no " +
- "-debug-kmer -debug-seedpair -ii small_poly | wc -l | grep 792"
- run_test "#{$bin}gt seed_extend -only-seeds -verify -seedlength 13 " +
- "-debug-seedpair -ii small_poly"
- grep last_stdout, /\# SeedPair \(0,2,12,12\)/
- grep last_stdout, /\# SeedPair \(0,2,13,12\)/
-end
+$SPLT_LIST = ["-splt struct","-splt ulong"]
+$CAM_LIST = ["encseq", "encseq_reader","bytes"]
+$OUTFMT_ARGS = ["alignment","cigar","cigarX","polinfo","fstperquery","seed.len",
+ "seed.s","seed.q","seed_in_algn","s.seqlen",
+ "q.seqlen","evalue","subjectid","queryid","bitscore"]
-# Compare xdrop and greedy extension
-Name "gt seed_extend: small_poly, xdrop vs greedy extension"
-Keywords "gt_seed_extend extendgreedy extendxdrop small_poly"
+Name "gt seed_extend: ANI computation"
+Keywords "gt_seed_extend ANI"
Test do
- run_test build_encseq("small_poly", "#{$testdata}small_poly.fas")
- run_test "#{$bin}gt seed_extend -extendxdrop 97 " +
- "-l 10 -ii small_poly"
- run "cmp #{last_stdout} #{$testdata}seedextend3.out"
- run_test "#{$bin}gt seed_extend -extendgreedy 97 " +
- "-l 10 -ii small_poly"
- run "cmp #{last_stdout} #{$testdata}seedextend3.out"
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
+ run_test "#{$bin}/gt seed_extend -ii at1MB -qii U89959_genomic -ani"
+ run "diff -I '^#' #{last_stdout} #{$testdata}/see-ext-ani-at1MB-U8.txt"
end
-# Memlimit and maxfreq options (filter)
-Name "gt seed_extend: at1MB, no extension, memlimit, maxfreq"
-Keywords "gt_seed_extend at1MB memlimit maxfreq"
+Name "gt seed_extend: blast like output"
+Keywords "gt_seed_extend blast_format"
Test do
+ run_test build_encseq("subject", "#{$testdata}at-C99930.fna")
+ run_test build_encseq("query-fwd", "#{$testdata}at-C99887-fwd.fna")
+ run_test build_encseq("query-rev", "#{$testdata}at-C99887-rev.fna")
+ options = "-ii subject -evalue 0.01 -outfmt alignment blast -seedlength 12 -minidentity 75"
+ ["fwd","rev"].each do |direction|
+ run_test "#{$bin}/gt seed_extend #{options} -qii query-#{direction}"
+ run "diff -I '^#' #{last_stdout} #{$testdata}/query-#{direction}.match"
+ end
run_test build_encseq("at1MB", "#{$testdata}at1MB")
- run_test "#{$bin}gt seed_extend -verify -debug-seedpair -memlimit 10MB " +
- "-ii at1MB -only-seeds -no-reverse -seedlength 14"
- grep last_stderr, /Only k-mers occurring <= 3 times will be considered, /
- /due to small memlimit. Expect 50496 seed pairs./
- run "gunzip -c #{$testdata}seedextend2.out.gz | cmp #{last_stdout}"
- run_test "#{$bin}gt seed_extend -only-seeds -v -maxfreq 5 -ii at1MB"
- grep last_stdout, /...found 622939 10-mers/
- grep last_stdout, /...collected 305756 seed pairs/
- grep last_stdout, /...collected 235705 seed pairs/
- run_test "#{$bin}gt seed_extend -only-seeds -v -maxfreq 11 -memlimit 1GB " +
- "-ii at1MB"
- grep last_stdout, /Set k-mer maximum frequency to 11, expect 460986 seed/
+ run_test "#{$bin}/gt seed_extend -seedlength 12 -mincoverage 350 -diagbandwidth 3 -outfmt blast -ii at1MB"
+ run_test "#{$bin}/gt matchtool -type BLASTOUT -matchfile #{last_stdout}"
+ run "diff -I '^#' #{last_stdout} #{$testdata}/matchtool_see-ext.match"
end
-# Filter options
-Name "gt seed_extend: diagbandwidth, mincoverage, seedlength"
-Keywords "gt_seed_extend filter diagbandwidth mincoverage memlimit"
+Name "gt seed_extend: maxmat"
+Keywords "gt_seed_extend maxmat"
Test do
- run_test build_encseq("gt_bioseq_succ_3", "#{$testdata}gt_bioseq_succ_3.fas")
- for seedlength in [2, 5, 14, 32] do
- for diagbandwidth in [0, 1, 5, 10] do
- for mincoverage in [1, 10, 50] do
- run_test "#{$bin}gt seed_extend -seedlength #{seedlength} " +
- "-diagbandwidth #{diagbandwidth} " +
- "-mincoverage #{mincoverage} " +
- "-ii gt_bioseq_succ_3", :retval => 0
- end
- end
- end
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii U89959_genomic -l 30 -maxmat"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-u8-maxmat30.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 250 -maxmat"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-maxmat250.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 250 -maxmat -outfmt fstperquery"
+ run "#{$scriptsdir}check-fstperquery.rb #{last_stdout} #{$testdata}see-ext-at1MB-maxmat250.matches"
end
-# Extension options
-Name "gt seed_extend: greedy sensitivity, l, minidentity"
-Keywords "gt_seed_extend extendgreedy sensitivity alignlength history"
+Name "gt seed_extend: symmetry of maxmat/use-apos"
+Keywords "gt_seed_extend symmetry"
Test do
+ run_test build_encseq("u8", "#{$testdata}U89959_genomic.fas")
+ run "#{$scriptsdir}reverse-complement.rb #{$testdata}U89959_genomic.fas"
+ run "mv #{last_stdout} u8-rev.fas"
+ run_test build_encseq("u8-rev", "u8-rev.fas")
run_test build_encseq("at1MB", "#{$testdata}at1MB")
- for sensitivity in [90, 97, 100] do
- for alignlength in [2, 80] do
- for minidentity in [70, 80, 99] do
- run_test "#{$bin}gt seed_extend -extendgreedy #{sensitivity} " +
- "-minidentity #{minidentity} -l #{alignlength} -a " +
- "-seed-display -ii at1MB", :retval => 0
- end
- end
- end
- run_test "#{$bin}gt seed_extend -extendgreedy -bias-parameters -verify " +
- "-overlappingseeds -a -seed-display -ii at1MB", :retval => 0
+ options = "-ii at1MB -minidentity 70 -l 30 -maxmat 2 -use-apos "
+ run "#{$bin}gt seed_extend #{options} -qii u8 -no-reverse"
+ run "mv #{last_stdout} u8.matches"
+ run "#{$bin}gt seed_extend #{options} -qii u8-rev -no-forward"
+ run "mv #{last_stdout} u8-rev.matches"
+ run "#{$scriptsdir}matches-compare.rb -i u8.matches u8-rev.matches"
+ run "#{$bin}gt seed_extend #{options} -qii u8 -no-forward"
+ run "mv #{last_stdout} u8.matches"
+ run "#{$bin}gt seed_extend #{options} -qii u8-rev -no-reverse"
+ run "mv #{last_stdout} u8-rev.matches"
+ run "#{$scriptsdir}matches-compare.rb -i u8.matches u8-rev.matches"
end
-# Greedy extension options
-Name "gt seed_extend: history, percmathistory, maxalilendiff"
-Keywords "gt_seed_extend extendgreedy history percmathistory maxalilendiff"
+Name "gt seed_extend: fstperquery"
+Keywords "gt_seed_extend display fstperquery"
Test do
+ run_test build_encseq("gt_bioseq_succ_3", "#{$testdata}gt_bioseq_succ_3.fas")
run_test build_encseq("at1MB", "#{$testdata}at1MB")
- for history in [10, 50, 64] do
- for percmathistory in [70, 80, 99] do
- for maxalilendiff in [1, 10, 30] do
- run_test "#{$bin}gt seed_extend -maxalilendiff #{maxalilendiff} " +
- "-history #{history} -percmathistory #{percmathistory} -a " +
- "-ii at1MB", :retval => 0
- end
- end
- end
- run_test "#{$bin}gt seed_extend -bias-parameters -seedpairdistance 10 20 " +
- "-seed-display -ii at1MB", :retval => 0
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii gt_bioseq_succ_3 -bias-parameters -outfmt fstperquery"
+ run "mv #{last_stdout} fstperquery.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii gt_bioseq_succ_3 -bias-parameters"
+ run "mv #{last_stdout} all.matches"
+ run "#{$scriptsdir}check-fstperquery.rb fstperquery.matches all.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -bias-parameters -outfmt fstperquery"
+ run "mv #{last_stdout} fstperquery.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -bias-parameters"
+ run "mv #{last_stdout} all.matches"
+ run "#{$scriptsdir}check-fstperquery.rb fstperquery.matches all.matches"
end
-# Xdrop extension options
-Name "gt seed_extend: extendxdrop, xdropbelow, cam"
-Keywords "gt_seed_extend extendxdrop xdropbelow cam"
+Name "gt seed_extend: display arguments"
+Keywords "gt_seed_extend gt_seed_extend_display"
Test do
- run_test build_encseq("at1MB", "#{$testdata}at1MB")
- for sensitivity in [90, 100] do
- for xdbelow in [1, 3, 5] do
- for cam in ["encseq", "encseq_reader"] do
- run_test "#{$bin}gt seed_extend -extendxdrop #{sensitivity} " +
- "-xdropbelow #{xdbelow} -cam #{cam} -ii at1MB", :retval => 0
- end
- end
+ run_test build_encseq("at1MB", "#{$testdata}at1MB", true)
+ run_test build_encseq("Atinsert.fna", "#{$testdata}Atinsert.fna", true)
+ run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
+ $OUTFMT_ARGS.each do |arg|
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt #{arg}"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii Atinsert.fna -outfmt #{arg}"
+ end
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 500 -outfmt alignment=70"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-500-al.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt evalue bitscore"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-evalue-bitscore.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt subjectid queryid"
+ run "#{$scriptsdir}se-permutation.rb #{last_stdout} #{$testdata}see-ext-at1MB-400-seqdesc.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt cigar"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-cigar.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt cigarX"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-cigarX.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 700 -outfmt alignment=60 seed_in_algn"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-500-alignment-seed_in_algn.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt s.seqlen q.seqlen"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-seqlength.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii Atinsert.fna -l 100 -outfmt bitscore evalue s.seqlen q.seqlen cigar"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-Atinsert100-evalue-bitscore-cigar-seqlength.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii Atinsert.fna -l 100 -outfmt bitscore evalue s.seqlen q.seqlen cigarX"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-Atinsert100-evalue-bitscore-cigarX-seqlength.matches"
+ run_test "#{$bin}gt seed_extend -ii U89959_genomic -l 50 -outfmt bitscore evalue"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-U8-evalue-bitscore.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt seed failed_seed -l 600 -seedlength 20"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-500-failed_seed.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt seed failed_seed evalue -l 100 -seedlength 20 -qii U89959_genomic"
+ run "diff #{last_stdout} #{$testdata}see-ext-at1MB-u8-failed_seed-evalue.matches"
+ evalue_filter = 10e-30
+ run_test "#{$bin}gt seed_extend -ii at1MB -evalue #{evalue_filter} -outfmt evalue"
+ run "mv #{last_stdout} strong.matches"
+ run "#{$scriptsdir}evalue-filter.rb #{evalue_filter} strong.matches"
+ ["cigar","cigarX"].each do |ci|
+ other_ci = if ci == "cigar" then "cigarX" else "cigar" end
+ run_test "#{$bin}gt dev show_seedext -f #{$testdata}see-ext-at1MB-400-#{ci}.matches -outfmt alignment"
+ run "mv #{last_stdout} alignment-from-#{ci}.txt"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt alignment"
+ run "diff -I '^#' #{last_stdout} alignment-from-#{ci}.txt"
+ run_test "#{$bin}gt dev show_seedext -f #{$testdata}see-ext-at1MB-400-#{ci}.matches -outfmt #{ci}"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-#{ci}.matches"
+ end
+ run_test "#{$bin}gt dev show_seedext -f #{$testdata}see-ext-at1MB-400-cigarX.matches -outfmt cigar"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-cigar.matches"
+ ["cigar","cigarX"].each do |ci|
+ run_test "#{$bin}gt dev show_seedext -f #{$testdata}see-ext-at1MB-Atinsert100-evalue-bitscore-#{ci}-seqlength.matches -outfmt alignment"
+ run "mv #{last_stdout} alignment-from-#{ci}.txt"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii Atinsert.fna -l 100 -outfmt alignment"
+ run "diff -I '^#' #{last_stdout} alignment-from-#{ci}.txt"
+ end
+ run_test "#{$bin}gt dev show_seedext -f #{$testdata}see-ext-at1MB-Atinsert100-evalue-bitscore-cigarX-seqlength.matches -outfmt bitscore evalue s.seqlen q.seqlen cigar"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-Atinsert100-evalue-bitscore-cigar-seqlength.matches"
+ run "#{$bin}/gt seed_extend -ii at1MB -mincoverage 200 -outfmt tabsep custom s.seqnum s.start s.len strand q.seqnum q.start q.len editdist"
+ run "cmp -s #{last_stdout} #{$testdata}/see-ext-at1MB-mincoverage200-tabsep.matches"
+ ["trace","dtrace"].each do |t|
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt #{t}=50"
+ run "diff -I '^#' #{last_stdout} #{$testdata}see-ext-at1MB-400-#{t}.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 400 -outfmt #{t}"
+ run_test "#{$bin}gt dev show_seedext -f #{last_stdout} -outfmt alignment"
+ run "diff -I '^#' #{last_stdout} #{$testdata}/see-ext-at1MB-400-al-from-dtrace.matches"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii U89959_genomic -l 200 -outfmt #{t}=20 s.seqlen q.seqlen"
+ run "mv #{last_stdout} tmp-with-#{t}.matches"
+ run_test "#{$bin}gt dev show_seedext -f tmp-with-#{t}.matches -outfmt alignment"
+ run "diff -I '^#' #{last_stdout} #{$testdata}/see-ext-at1MB-U8-200-al-from-dtrace.matches"
+ run_test "#{$bin}gt dev show_seedext -f tmp-with-#{t}.matches -outfmt s.seqlen"
end
+ run_test "#{$bin}gt seed_extend -ii at1MB -l 100 -outfmt gfa2 trace"
+ run "#{$scriptsdir}gfa2lint.rb #{last_stdout}"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii Atinsert.fna -outfmt gfa2 cigar"
+ run "#{$scriptsdir}gfa2lint.rb #{last_stdout}"
end
# Invalid arguments
Name "gt seed_extend: failure"
-Keywords "gt_seed_extend failure"
+Keywords "gt_seed_extend gt_seed_extend_failure"
Test do
run_test build_encseq("at1MB", "#{$testdata}at1MB")
run_test build_encseq("foo", "#{$testdata}foo.fas")
@@ -179,8 +228,238 @@ Test do
grep last_stderr, /argument to option -pick must satisfy format i,j/
run_test "#{$bin}gt seed_extend -ii not-existing-file", :retval => 1
grep last_stderr, /cannot open file 'not-existing-file.esq': No such file/
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt xx", :retval => 1
+ grep last_stderr, /illegal identifier in argument of option -outfmt/, :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt alignment=n", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt alignment=-1", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt alignment cigar", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -maxmat 2 -l 100 -chain xx", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt gfa2", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt gfa2 identity dtrace", :retval => 1
+ run_test "#{$bin}gt seed_extend -ii at1MB -outfmt cigar"
+ run_test "#{$bin}gt dev show_seedext -f #{last_stdout} -outfmt cigarX",:retval => 1
+end
+
+Name "gt dev show_seedext without alignment"
+Keywords "gt_seed_extend show"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
+ outfmt_seed = "-outfmt seed"
+ [" "," -qii U89959_genomic "].each do |qidx|
+ run_test "#{$bin}gt seed_extend -v -ii at1MB#{qidx}" + outfmt_seed
+ run "mv #{last_stdout} seed_extend.out"
+ run_test "#{$bin}gt dev show_seedext -f seed_extend.out " + outfmt_seed
+ run "mv #{last_stdout} show_seed_ext.out"
+ run "diff -I '^#' seed_extend.out show_seed_ext.out"
+ run_test "#{$bin}gt dev show_seedext -f seed_extend.out -optimal -outfmt alignment"
+ $OUTFMT_ARGS.each do |arg|
+ if arg != "subjectid" and arg != "queryid" and not arg.match(/^seed/)
+ run_test "#{$bin}gt dev show_seedext -f seed_extend.out #{outfmt_seed} #{arg}"
+ if arg != "alignment"
+ run "#{$scriptsdir}se-permutation.rb #{last_stdout} seed_extend.out"
+ end
+ end
+ end
+ run_test "#{$bin}gt seed_extend -v -ii at1MB#{qidx}"
+ run "mv #{last_stdout} tmp.matches"
+ run_test "#{$bin}gt dev show_seedext -f tmp.matches -optimal -outfmt alignment"
+ end
+ ["",outfmt_seed].each do |seed|
+ run_test "#{$bin}gt seed_extend -v -ii at1MB -l 783 " + seed
+ run "mv #{last_stdout} tmp.matches"
+ run_test "#{$bin}gt seed_extend -v -ii at1MB -l 783 -outfmt alignment"
+ run "mv #{last_stdout} se.align"
+ run_test "#{$bin}gt dev show_seedext -f tmp.matches -outfmt alignment"
+ run "diff -I '^#' #{last_stdout} se.align"
+ end
+end
+
+# cam extension options
+Name "gt seed_extend: cam"
+Keywords "gt_seed_extend cam"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ $SPLT_LIST.each do |splt|
+ $CAM_LIST.each do |a_cam|
+ $CAM_LIST.each do |b_cam|
+ run_test "#{$bin}gt seed_extend -extendgreedy " +
+ "-cam #{a_cam},#{b_cam} -ii at1MB #{splt}", :retval => 0
+ run "grep -v '^#' #{last_stdout}"
+ run "sort #{last_stdout}"
+ run "mv #{last_stdout} see-ext-at1MB-#{a_cam}-#{b_cam}.matches"
+ run "diff -I '^#' see-ext-at1MB-#{a_cam}-#{b_cam}.matches #{$testdata}see-ext-at1MB.matches"
+ end
+ end
+ end
end
+if $gttestdata
+ Name "gt seed_extend: -splt bytestring for many short and some long seqs"
+ Keywords "gt_seed_extend bytestring"
+ Test do
+ indexname="manyshort-somelong"
+ run("#{$scriptsdir}manyshort-somelong.rb #{$gttestdata}DNA-mix/Grumbach.fna 10000")
+ run_test build_encseq(indexname, last_stdout)
+ run_test "#{$bin}gt seed_extend -no-reverse -l 50 -splt bytestring -ii #{indexname}"
+ run "grep -v '^#' #{last_stdout}"
+ run "mv #{last_stdout} splt-bytestring.matches"
+ run_test "#{$bin}gt seed_extend -no-reverse -l 50 -splt struct -ii #{indexname}"
+ run "diff -I '^#' #{last_stdout} splt-bytestring.matches"
+ end
+end
+
+# Threading
+Name "gt seed_extend: threading"
+Keywords "gt_seed_extend thread"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ run_test build_encseq("fastq_long", "#{$testdata}fastq_long.fastq")
+ run_test build_encseq("paired", "#{$testdata}readjoiner/paired_reads_1.fas")
+ run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
+ for dataset in ["at1MB", "paired", "fastq_long"] do
+ for query in ["", " -qii U89959_genomic"]
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -ii #{dataset}#{query} #{splt}"
+ run "sort #{last_stdout}"
+ run "mv #{last_stdout} default_run.out"
+ if query == ""
+ run "diff -I '^#' default_run.out #{$testdata}see-ext-#{dataset}.matches"
+ else
+ run "diff -I '^#' default_run.out #{$testdata}see-ext-#{dataset}-u8.matches"
+ end
+ run_test "#{$bin}gt -j 4 seed_extend -ii #{dataset}#{query} -parts 4"
+ run "sort #{last_stdout}"
+ run "diff -I '^#' default_run.out #{last_stdout}"
+ run_test "#{$bin}gt -j 2 seed_extend -ii #{dataset}#{query} -parts 5"
+ run "sort #{last_stdout}"
+ run "diff -I '^#' default_run.out #{last_stdout}"
+ run_test "#{$bin}gt -j 8 seed_extend -ii #{dataset}#{query} -parts 2"
+ run "sort #{last_stdout}"
+ run "diff -I '^#' default_run.out #{last_stdout}"
+ run_test "#{$bin}gt -j 3 seed_extend -ii #{dataset}#{query}"
+ run "sort #{last_stdout}"
+ run "diff -I '^#' default_run.out #{last_stdout}"
+ end
+ end
+ end
+end
+
+# KmerPos and SeedPair verification
+Name "gt seed_extend: small_poly, no extension, verify lists"
+Keywords "gt_seed_extend only-seeds verify debug-kmer debug-seedpair small_poly"
+Test do
+ run_test build_encseq("small_poly", "#{$testdata}small_poly.fas")
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -only-seeds -verify -seedlength 10 " +
+ "-debug-kmer -debug-seedpair -ii small_poly -kmerfile no #{splt} "
+ run "gunzip -c #{$testdata}seedextend1.out.gz | diff -I '^#' - #{last_stdout}"
+ run_test "#{$bin}gt seed_extend -only-seeds -verify -kmerfile no " +
+ "-debug-kmer -debug-seedpair -ii small_poly #{splt}"
+ run "cat #{last_stdout} | wc -l"
+ run "grep 793 #{last_stdout}"
+ run_test "#{$bin}gt seed_extend -only-seeds -verify -seedlength 13 " +
+ "-debug-seedpair -ii small_poly #{splt}"
+ grep last_stdout, /\# SeedPair \(0,2,12,12\)/
+ grep last_stdout, /\# SeedPair \(0,2,13,12\)/
+ end
+end
+
+# Compare xdrop and greedy extension
+Name "gt seed_extend: small_poly, xdrop vs greedy extension"
+Keywords "gt_seed_extend extendgreedy extendxdrop small_poly"
+Test do
+ run_test build_encseq("small_poly", "#{$testdata}small_poly.fas")
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -extendxdrop 97 " +
+ "-l 10 -ii small_poly -verify-alignment #{splt}"
+ run "diff -I '^#' #{last_stdout} #{$testdata}seedextend3.out"
+ run_test "#{$bin}gt seed_extend -extendgreedy 97 " +
+ "-l 10 -ii small_poly -verify-alignment #{splt}"
+ run "diff -I '^#' #{last_stdout} #{$testdata}seedextend3.out"
+ end
+end
+
+# Memlimit and maxfreq options (filter)
+Name "gt seed_extend: at1MB, no extension, memlimit, maxfreq"
+Keywords "gt_seed_extend at1MB memlimit maxfreq"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ run_test "#{$bin}gt seed_extend -verify -debug-seedpair -memlimit 10MB " +
+ "-ii at1MB -only-seeds -no-reverse -seedlength 14 -splt struct"
+ grep last_stderr, /only k-mers occurring <= 3 times will be considered, /
+ /due to small memlimit. Expect 50496 seeds./
+ run "gunzip -c #{$testdata}seedextend2.out.gz | diff -I '^#' - #{last_stdout}"
+ run_test "#{$bin}gt seed_extend -only-seeds -v -maxfreq 5 -ii at1MB"
+ grep last_stdout, /... collected 622939 10-mers/
+ grep last_stdout, /... collected 305756 seeds/
+ grep last_stdout, /... collected 235705 seeds/
+ run_test "#{$bin}gt seed_extend -only-seeds -v -maxfreq 11 -memlimit 1GB " +
+ "-ii at1MB"
+ grep last_stdout, /set k-mer maximum frequency to 11, expect 460986 seed/
+end
+
+# Filter options
+Name "gt seed_extend: diagbandwidth, mincoverage, seedlength"
+Keywords "gt_seed_extend filter diagbandwidth mincoverage memlimit"
+Test do
+ run_test build_encseq("gt_bioseq_succ_3", "#{$testdata}gt_bioseq_succ_3.fas")
+ for diagbandwidth in [0, 1, 5, 10] do
+ for seedlength in [2, 5, 14, 32] do
+ for factor in [1,2,3] do
+ mincoverage = factor * seedlength
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -seedlength #{seedlength} " +
+ "-diagbandwidth #{diagbandwidth} " +
+ "-mincoverage #{mincoverage} " +
+ "-ii gt_bioseq_succ_3 #{splt}", :retval => 0
+ end
+ end
+ end
+ end
+end
+
+# Extension options
+Name "gt seed_extend: greedy sensitivity, l, minidentity"
+Keywords "gt_seed_extend extendgreedy sensitivity alignlength history"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ for splt in $SPLT_LIST do
+ for sensitivity in [90, 97, 100] do
+ for alignlength in [2, 80] do
+ for minidentity in [70, 80, 99] do
+ run_test "#{$bin}gt seed_extend -extendgreedy #{sensitivity} " +
+ "-minidentity #{minidentity} -l #{alignlength} " +
+ "-outfmt alignment=70 seed.len seed.s seed.q -ii at1MB -verify-alignment #{splt}", :retval => 0
+ end
+ end
+ end
+ run_test "#{$bin}gt seed_extend -extendgreedy -bias-parameters -verify " +
+ "-overlappingseeds -outfmt alignment=70 seed -ii at1MB #{splt}",:retval => 0
+ end
+end
+
+# Greedy extension options
+Name "gt seed_extend: history, percmathistory, maxalilendiff"
+Keywords "gt_seed_extend extendgreedy history percmathistory maxalilendiff"
+Test do
+ run_test build_encseq("at1MB", "#{$testdata}at1MB")
+ for splt in $SPLT_LIST do
+ for history in [10, 50, 64] do
+ for percmathistory in [70, 80, 99] do
+ for maxalilendiff in [1, 10, 30] do
+ run_test "#{$bin}gt seed_extend -maxalilendiff #{maxalilendiff} " +
+ "-history #{history} -percmathistory #{percmathistory} " +
+ "-ii at1MB -outfmt alignment=70 #{splt}", :retval => 0
+ end
+ end
+ end
+ run_test "#{$bin}gt seed_extend -bias-parameters -seedpairdistance 10 20 " +
+ "-outfmt seed -ii at1MB #{splt}", :retval => 0
+ end
+end
+
+
# Find synthetic alignments
Name "gt seed_extend: artificial sequences"
Keywords "gt_seed_extend artificial"
@@ -191,16 +470,18 @@ Test do
"--seedlength 14 --length 1000 --mode seeded --seed #{seed} " +
"--seedcoverage 35 --long 10000 --reverse-complement > longseeded.fasta"
run_test build_encseq("longseeded", "longseeded.fasta")
- run_test "#{$bin}gt seed_extend -extendgreedy -l 900 " +
- "-minidentity #{minidentity} -ii longseeded -kmerfile no"
- # Check whether the correct number of alignments are found.
- numalignments = `wc -l #{last_stdout}`.to_i
- # split db fasta header by '|' and add 1 for number of seeds
- run "head -1 longseeded.fasta"
- run "grep -o '|' #{last_stdout}"
- numseeds = `wc -l #{last_stdout}`.to_i + 1
- if numalignments < numseeds then
- raise TestFailed, "did not find all alignments"
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -extendgreedy -l 900 -kmerfile no " +
+ "-minidentity #{minidentity} -ii longseeded #{splt}"
+ # Check whether the correct number of alignments are found.
+ numalignments = `wc -l #{last_stdout}`.to_i
+ # split db fasta header by '|' and add 1 for number of seeds
+ run "head -1 longseeded.fasta"
+ run "grep -o '|' #{last_stdout}"
+ numseeds = `wc -l #{last_stdout}`.to_i + 1
+ if numalignments < numseeds then
+ raise TestFailed, "did not find all alignments"
+ end
end
end
end
@@ -221,20 +502,25 @@ Test do
run_test build_encseq("db", "db.fna")
run_test build_encseq("all", "db.fna query.fna")
["xdrop","greedy"].each do |ext|
- run_test "#{$bin}gt seed_extend -extend#{ext} 100 -l #{extendlength-20}" +
- " -minidentity #{minid} -seedlength #{seedlength} -no-reverse " +
- "-mincoverage #{seedlength} -seed-display -ii all -kmerfile no"
- grep last_stdout, /^\d+ \d+ \d+ . \d+ \d+ \d+ \d+ \d+ \d+/
- run "mv #{last_stdout} combined.out"
- split_output("combined")
- run_test "#{$bin}gt seed_extend -extend#{ext} 100 -l #{extendlength-20}" +
- " -minidentity #{minid} -seedlength #{seedlength} -no-reverse " +
- "-mincoverage #{seedlength} -seed-display -ii db -qii query " +
- "-kmerfile no"
- grep last_stdout, /^\d+ \d+ \d+ . \d+ \d+ \d+ \d+ \d+ \d+/
- run "mv #{last_stdout} separated.out"
- split_output("separated")
- run "cmp separated.coords combined.coords"
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -extend#{ext} 100 -l " +
+ "#{extendlength-20} -minidentity #{minid} " +
+ "-seedlength #{seedlength} -no-reverse -kmerfile no " +
+ "-mincoverage #{seedlength} -outfmt seed.len seed.s seed.q -ii all #{splt}"
+ grep last_stdout, /^\d+ \d+ \d+ . \d+ \d+ \d+ \d+ \d+ \d+/
+ run "mv #{last_stdout} combined.out"
+ split_output("combined")
+ run_test "#{$bin}gt seed_extend -extend#{ext} 100 " +
+ "-l #{extendlength-20} -kmerfile no " +
+ "-minidentity #{minid} -seedlength #{seedlength} " +
+ "-no-reverse -mincoverage #{seedlength} " +
+ "-outfmt seed " +
+ "-ii db -qii query #{splt}"
+ grep last_stdout, /^\d+ \d+ \d+ . \d+ \d+ \d+ \d+ \d+ \d+/
+ run "mv #{last_stdout} separated.out"
+ split_output("separated")
+ run "cmp separated.coords combined.coords"
+ end
end
end
end
@@ -244,44 +530,17 @@ Name "gt seed_extend: parts"
Keywords "gt_seed_extend parts pick"
Test do
run_test build_encseq("at1MB", "#{$testdata}at1MB")
- run_test build_encseq("gt_bioseq_succ_3", "#{$testdata}gt_bioseq_succ_3.fas")
- run_test "#{$bin}gt seed_extend -ii at1MB"
- run "sort #{last_stdout}"
- run "mv #{last_stdout} default.out"
- run_test "#{$bin}gt seed_extend -ii at1MB -parts 4"
- run "sort #{last_stdout}"
- run "cmp -s default.out #{last_stdout}"
- run_test "#{$bin}gt seed_extend -ii at1MB -qii gt_bioseq_succ_3 " +
- "-parts 2 -pick 1,2"
- grep last_stdout, /24 209 15 P 26 2 248 35 5 80.00/
- grep last_stdout, /23 418 127 P 24 2 68 35 4 82.98/
-end
-
-# Threading
-Name "gt seed_extend: threading"
-Keywords "gt_seed_extend thread"
-Test do
- run_test build_encseq("at1MB", "#{$testdata}at1MB")
- run_test build_encseq("fastq_long", "#{$testdata}fastq_long.fastq")
- run_test build_encseq("paired", "#{$testdata}readjoiner/paired_reads_1.fas")
- run_test build_encseq("U89959_genomic", "#{$testdata}U89959_genomic.fas")
- for dataset in ["at1MB", "paired", "fastq_long"] do
- for query in ["", " -qii U89959_genomic"]
- run_test "#{$bin}gt seed_extend -ii #{dataset}#{query}"
- run "sort #{last_stdout}"
- run "mv #{last_stdout} default_run.out"
- run_test "#{$bin}gt -j 4 seed_extend -ii #{dataset}#{query} -parts 4"
- run "sort #{last_stdout}"
- run "cmp -s default_run.out #{last_stdout}"
- run_test "#{$bin}gt -j 2 seed_extend -ii #{dataset}#{query} -parts 5"
- run "sort #{last_stdout}"
- run "cmp -s default_run.out #{last_stdout}"
- run_test "#{$bin}gt -j 8 seed_extend -ii #{dataset}#{query} -parts 2"
- run "sort #{last_stdout}"
- run "cmp -s default_run.out #{last_stdout}"
- run_test "#{$bin}gt -j 3 seed_extend -ii #{dataset}#{query}"
- run "sort #{last_stdout}"
- run "cmp -s default_run.out #{last_stdout}"
- end
+ run_test build_encseq("gt_bioseq_succ_3","#{$testdata}gt_bioseq_succ_3.fas")
+ for splt in $SPLT_LIST do
+ run_test "#{$bin}gt seed_extend -ii at1MB -verify-alignment #{splt}"
+ run "sort #{last_stdout}"
+ run "mv #{last_stdout} default.out"
+ run_test "#{$bin}gt seed_extend -ii at1MB -parts 4 -verify-alignment #{splt}"
+ run "sort #{last_stdout}"
+ run "diff -I '^#' default.out #{last_stdout}"
+ run_test "#{$bin}gt seed_extend -ii at1MB -qii gt_bioseq_succ_3 " +
+ "-parts 2 -pick 1,2 -verify-alignment #{splt}"
+ grep last_stdout, /24 209 15 P 26 2 248 35 5 80.00/
+ grep last_stdout, /23 418 127 P 24 2 68 35 4 82.98/
end
end
diff --git a/testsuite/gt_seqorder_include.rb b/testsuite/gt_seqorder_include.rb
index 8a75084..1921fbc 100644
--- a/testsuite/gt_seqorder_include.rb
+++ b/testsuite/gt_seqorder_include.rb
@@ -16,6 +16,15 @@ Test do
run "diff #{last_stdout} #{$testdata}gt_seqorder_test_sorthdr.fas"
end
+Name "gt seqorder -sortlength test"
+Keywords "gt_seqorder"
+Test do
+ seq = "gt_seqorder_test.fas"
+ run "#{$bin}gt encseq encode #$testdata#{seq}"
+ run_test "#{$bin}gt seqorder -sortlength #{seq}"
+ run "diff #{last_stdout} #{$testdata}gt_seqorder_test_sortlength.fas"
+end
+
Name "gt seqorder -sorthdrnum test"
Keywords "gt_seqorder"
Test do
diff --git a/testsuite/gt_sortbench_include.rb b/testsuite/gt_sortbench_include.rb
index c1d9e3a..da05352 100644
--- a/testsuite/gt_sortbench_include.rb
+++ b/testsuite/gt_sortbench_include.rb
@@ -1,6 +1,6 @@
methods = ["radixinplace","radixlsb",
"thomas","system","inlinedptr","inlinedarr","direct","dual-pivot",
- "radixkeypair"]
+ "radixkeypair","radixflba"]
lenlist=[10,20,30,1000,2000,4000,1000000,2000000]
@@ -17,6 +17,7 @@ methods.each do |met|
else
run "#{$bin}gt dev sortbench -verify -impl #{met} -size #{len}"
run "#{$bin}gt dev sortbench -verify -impl #{met} -size #{len} -maxval 10000"
+ run "#{$bin}gt dev sortbench -verify -impl #{met} -size #{len} -maxval 512"
end
end
end
diff --git a/testsuite/gt_suffixerator_include.rb b/testsuite/gt_suffixerator_include.rb
index 144f31e..3526ef4 100644
--- a/testsuite/gt_suffixerator_include.rb
+++ b/testsuite/gt_suffixerator_include.rb
@@ -112,7 +112,7 @@ Test do
run_test "#{$bin}/gt encseq2spm -parts 3 -l #{minlen} -spm show " + \
"-ii #{indexname}", :maxtime => 1000
run "mv #{last_stdout} result.firstcodes"
- run "cmp result.repfind result.firstcodes"
+ run "diff -I '^#' result.repfind result.firstcodes"
end
allfiles = []
diff --git a/www/genometools.org/htdocs/annotationsketch.html b/www/genometools.org/htdocs/annotationsketch.html
index fca19a5..9a5a61a 100644
--- a/www/genometools.org/htdocs/annotationsketch.html
+++ b/www/genometools.org/htdocs/annotationsketch.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a id="current" href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/cgi-bin/annotationsketch_demo.cgi b/www/genometools.org/htdocs/cgi-bin/annotationsketch_demo.cgi
index 0769da1..dd6661f 100755
--- a/www/genometools.org/htdocs/cgi-bin/annotationsketch_demo.cgi
+++ b/www/genometools.org/htdocs/cgi-bin/annotationsketch_demo.cgi
@@ -79,7 +79,6 @@ HTML_HEADER = <<END
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<li><a href="../annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/cgi-bin/gff3validator.cgi b/www/genometools.org/htdocs/cgi-bin/gff3validator.cgi
index 19cc793..07a58a8 100644
--- a/www/genometools.org/htdocs/cgi-bin/gff3validator.cgi
+++ b/www/genometools.org/htdocs/cgi-bin/gff3validator.cgi
@@ -63,7 +63,6 @@ table.padded-table td {
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<li><a href="../annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/contract.html b/www/genometools.org/htdocs/contract.html
index c92b941..b4c6595 100644
--- a/www/genometools.org/htdocs/contract.html
+++ b/www/genometools.org/htdocs/contract.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/contribute.html b/www/genometools.org/htdocs/contribute.html
index 3a407ad..4f41701 100644
--- a/www/genometools.org/htdocs/contribute.html
+++ b/www/genometools.org/htdocs/contribute.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/customtracks.html b/www/genometools.org/htdocs/customtracks.html
index 0ae5bfd..09cf5aa 100644
--- a/www/genometools.org/htdocs/customtracks.html
+++ b/www/genometools.org/htdocs/customtracks.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/design.html b/www/genometools.org/htdocs/design.html
index 7899e9b..514a1de 100644
--- a/www/genometools.org/htdocs/design.html
+++ b/www/genometools.org/htdocs/design.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a id="current" href="design.html">Design</a></li>
<li><a href="tools.html">Tools</a></li>
diff --git a/www/genometools.org/htdocs/docs.html b/www/genometools.org/htdocs/docs.html
index 76521f8..4a6838e 100644
--- a/www/genometools.org/htdocs/docs.html
+++ b/www/genometools.org/htdocs/docs.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -1387,7 +1386,7 @@ Returns translated <code>dna</code>.
<div id="footer">
Copyright © 2008-2016
The <i>GenomeTools</i> authors.
-Last update: 2016-07-21
+Last update: 2017-08-03
</div>
</div>
<!-- Piwik -->
diff --git a/www/genometools.org/htdocs/documentation.html b/www/genometools.org/htdocs/documentation.html
index 873a630..dc9418a 100644
--- a/www/genometools.org/htdocs/documentation.html
+++ b/www/genometools.org/htdocs/documentation.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a id="current" href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/examples_tmpl.html b/www/genometools.org/htdocs/examples_tmpl.html
index 0697340..dcac3ba 100644
--- a/www/genometools.org/htdocs/examples_tmpl.html
+++ b/www/genometools.org/htdocs/examples_tmpl.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/index.html b/www/genometools.org/htdocs/index.html
index c339381..2e0db4c 100644
--- a/www/genometools.org/htdocs/index.html
+++ b/www/genometools.org/htdocs/index.html
@@ -14,7 +14,6 @@ annotation drawing, AnnotationSketch, LTR prediction, bioinformatics, computatio
<li><a id="current" href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
- <li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="annotationsketch.html"><em>AnnotationSketch</em></a></li>
diff --git a/www/genometools.org/htdocs/libgenometools.html b/www/genometools.org/htdocs/libgenometools.html
index 80c6d0b..321e37d 100644
--- a/www/genometools.org/htdocs/libgenometools.html
+++ b/www/genometools.org/htdocs/libgenometools.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -5488,6 +5487,30 @@ Creates a new <code>GtMatch</code> object meant to store results in the BLAST
and <code>end_seq2</code>.
</p>
<hr>
+<a name="gt_match_blast_new_extended"></a>
+
+<code>GtMatch* gt_match_blast_new_extended(char *seqid1,
+ char *seqid2,
+ GtUword start_seq1,
+ GtUword end_seq1,
+ GtUword start_seq2,
+ GtUword end_seq2,
+ double evalue,
+ float bitscore,
+ GtUword length,
+ double similarity,
+ GtUword mm_num,
+ GtUword gap_open_num,
+ GtMatchDirection dir)</code>
+<p>
+Creates a new <code>GtMatch</code> object meant to store results in the BLAST
+ format. That is, it stores double values <code>evalue</code> for match E-values,
+ <code>bitscore</code>s and the alignment length <code>ali_l</code> in addition to the generic
+ match contents <code>seqid1</code>, <code>seqid2</code>, <code>start_seq1</code>, <code>start_seq2</code>, <code>end_seq1</code>,
+ and <code>end_seq2</code>. In addition to <code>gt_match_blast_new</code> it also stores
+ the number of mismatches and the number of gap
+</p>
+<hr>
<a name="gt_match_blast_set_evalue"></a>
<code>void gt_match_blast_set_evalue(GtMatchBlast *mb, double evalue)</code>
@@ -5516,6 +5539,20 @@ Sets <code>length</code> to be the alignment length in <code>mb</code>.
Sets <code>similarity</code> to be the match similarity in <code>mb</code>.
</p>
<hr>
+<a name="gt_match_blast_set_mismatches"></a>
+
+<code>void gt_match_blast_set_mismatches(GtMatchBlast *mb, GtUword mm_num)</code>
+<p>
+Sets <code>num to be the number of mismatches in <mb</code>.
+</p>
+<hr>
+<a name="gt_match_blast_set_gapopen"></a>
+
+<code>void gt_match_blast_set_gapopen(GtMatchBlast *mb, GtUword gap_open_num)</code>
+<p>
+Sets <code>num</code> to be the number of gap openings in <code>mb</code>.
+</p>
+<hr>
<a name="gt_match_blast_get_evalue"></a>
<code>double gt_match_blast_get_evalue(GtMatchBlast *mb)</code>
@@ -5544,6 +5581,20 @@ Returns the alignment length stored in <code>mb</code>.
Returns the alignment similarity stored in <code>mb</code>.
</p>
<hr>
+<a name="gt_match_blast_get_mismatches"></a>
+
+<code>GtUword gt_match_blast_get_mismatches(GtMatchBlast *mb)</code>
+<p>
+Returns the number of mismatches stored in <code>mb</code>.
+</p>
+<hr>
+<a name="gt_match_blast_get_gapopen"></a>
+
+<code>GtUword gt_match_blast_get_gapopen(GtMatchBlast *mb)</code>
+<p>
+Returns the number of gap openings stored in <code>mb</code>.
+</p>
+<hr>
<a name="GtMatchIterator"></a>
<h2>Class GtMatchIterator</h2>
<a name="gt_match_iterator_next"></a>
@@ -8500,6 +8551,14 @@ Output the current state of <code>timer</code> in a user-defined format given by
time in seconds. The output is written to <code>fp</code>. The timer is then stopped.
</p>
<hr>
+<a name="gt_timer_elapsed_usec"></a>
+
+<code>GtWord gt_timer_elapsed_usec(GtTimer *t)</code>
+<p>
+return usec of time from start to stop of giben timer. The timer is then
+ stopped.
+</p>
+<hr>
<a name="gt_timer_get_formatted"></a>
<code>void gt_timer_get_formatted(GtTimer *t, const char *fmt, GtStr *str)</code>
@@ -11295,16 +11354,26 @@ Similar to <code>vsnprintf(3)</code>, terminates on error.
<a href="#gt_match_blast_get_evalue"><code>gt_match_blast_get_evalue</code></a><br>
+ <a href="#gt_match_blast_get_gapopen"><code>gt_match_blast_get_gapopen</code></a><br>
+
+ <a href="#gt_match_blast_get_mismatches"><code>gt_match_blast_get_mismatches</code></a><br>
+
<a href="#gt_match_blast_get_similarity"><code>gt_match_blast_get_similarity</code></a><br>
<a href="#gt_match_blast_new"><code>gt_match_blast_new</code></a><br>
+ <a href="#gt_match_blast_new_extended"><code>gt_match_blast_new_extended</code></a><br>
+
<a href="#gt_match_blast_set_align_length"><code>gt_match_blast_set_align_length</code></a><br>
<a href="#gt_match_blast_set_bitscore"><code>gt_match_blast_set_bitscore</code></a><br>
<a href="#gt_match_blast_set_evalue"><code>gt_match_blast_set_evalue</code></a><br>
+ <a href="#gt_match_blast_set_gapopen"><code>gt_match_blast_set_gapopen</code></a><br>
+
+ <a href="#gt_match_blast_set_mismatches"><code>gt_match_blast_set_mismatches</code></a><br>
+
<a href="#gt_match_blast_set_similarity"><code>gt_match_blast_set_similarity</code></a><br>
<a href="#gt_match_delete"><code>gt_match_delete</code></a><br>
@@ -11915,6 +11984,8 @@ Similar to <code>vsnprintf(3)</code>, terminates on error.
<a href="#gt_timer_delete"><code>gt_timer_delete</code></a><br>
+ <a href="#gt_timer_elapsed_usec"><code>gt_timer_elapsed_usec</code></a><br>
+
<a href="#gt_timer_get_formatted"><code>gt_timer_get_formatted</code></a><br>
<a href="#gt_timer_new"><code>gt_timer_new</code></a><br>
@@ -12076,7 +12147,7 @@ Similar to <code>vsnprintf(3)</code>, terminates on error.
<div id="footer">
Copyright © 2008-2016
The <i>GenomeTools</i> authors.
-Last update: 2016-07-21
+Last update: 2017-08-03
</div>
</div>
<!-- Piwik -->
diff --git a/www/genometools.org/htdocs/license.html b/www/genometools.org/htdocs/license.html
index 7fd64be..e10f1d1 100644
--- a/www/genometools.org/htdocs/license.html
+++ b/www/genometools.org/htdocs/license.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
- <li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/manuals.html b/www/genometools.org/htdocs/manuals.html
index ef3e35b..a5f109c 100644
--- a/www/genometools.org/htdocs/manuals.html
+++ b/www/genometools.org/htdocs/manuals.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/style_options.html b/www/genometools.org/htdocs/style_options.html
index 4c6983e..230bf6b 100644
--- a/www/genometools.org/htdocs/style_options.html
+++ b/www/genometools.org/htdocs/style_options.html
@@ -23,7 +23,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a id="current" href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
diff --git a/www/genometools.org/htdocs/tool.conf b/www/genometools.org/htdocs/tool.conf
index 61703bc..9c86382 100644
--- a/www/genometools.org/htdocs/tool.conf
+++ b/www/genometools.org/htdocs/tool.conf
@@ -539,7 +539,6 @@ cellspacing="0" cellpadding="4">
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tool_list.conf b/www/genometools.org/htdocs/tool_list.conf
index 359ce48..76c38d7 100644
--- a/www/genometools.org/htdocs/tool_list.conf
+++ b/www/genometools.org/htdocs/tool_list.conf
@@ -539,7 +539,6 @@ cellspacing="0" cellpadding="4">
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools.html b/www/genometools.org/htdocs/tools.html
index 6545418..f2a7a7f 100644
--- a/www/genometools.org/htdocs/tools.html
+++ b/www/genometools.org/htdocs/tools.html
@@ -13,7 +13,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt.html b/www/genometools.org/htdocs/tools/gt.html
index 84fb185..860fdf7 100644
--- a/www/genometools.org/htdocs/tools/gt.html
+++ b/www/genometools.org/htdocs/tools/gt.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -498,7 +497,7 @@ shows all possible "environment options".</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_bed_to_gff3.html b/www/genometools.org/htdocs/tools/gt_bed_to_gff3.html
index 3d343ff..62037a7 100644
--- a/www/genometools.org/htdocs/tools/gt_bed_to_gff3.html
+++ b/www/genometools.org/htdocs/tools/gt_bed_to_gff3.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -123,7 +122,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_cds.html b/www/genometools.org/htdocs/tools/gt_cds.html
index ce78fb0..013c2af 100644
--- a/www/genometools.org/htdocs/tools/gt_cds.html
+++ b/www/genometools.org/htdocs/tools/gt_cds.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -212,7 +211,7 @@ sequence file name when it is called with the <tt>sequence_region</tt> as argume
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_chain2dim.html b/www/genometools.org/htdocs/tools/gt_chain2dim.html
index 3ba95be..e4651b0 100644
--- a/www/genometools.org/htdocs/tools/gt_chain2dim.html
+++ b/www/genometools.org/htdocs/tools/gt_chain2dim.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_chseqids.html b/www/genometools.org/htdocs/tools/gt_chseqids.html
index f6dfa02..333d28c 100644
--- a/www/genometools.org/htdocs/tools/gt_chseqids.html
+++ b/www/genometools.org/htdocs/tools/gt_chseqids.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -129,7 +128,7 @@ and all sequence ids “chr2” to “seq2”.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_clean.html b/www/genometools.org/htdocs/tools/gt_clean.html
index 1b6addb..2c0977c 100644
--- a/www/genometools.org/htdocs/tools/gt_clean.html
+++ b/www/genometools.org/htdocs/tools/gt_clean.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_compreads.html b/www/genometools.org/htdocs/tools/gt_compreads.html
index a68fee7..03d3f9c 100644
--- a/www/genometools.org/htdocs/tools/gt_compreads.html
+++ b/www/genometools.org/htdocs/tools/gt_compreads.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -90,7 +89,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_compreads_compress.html b/www/genometools.org/htdocs/tools/gt_compreads_compress.html
index 177dce7..68f1952 100644
--- a/www/genometools.org/htdocs/tools/gt_compreads_compress.html
+++ b/www/genometools.org/htdocs/tools/gt_compreads_compress.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -124,7 +123,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_compreads_decompress.html b/www/genometools.org/htdocs/tools/gt_compreads_decompress.html
index f533a40..d412dc8 100644
--- a/www/genometools.org/htdocs/tools/gt_compreads_decompress.html
+++ b/www/genometools.org/htdocs/tools/gt_compreads_decompress.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -123,7 +122,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_compreads_refcompress.html b/www/genometools.org/htdocs/tools/gt_compreads_refcompress.html
index e86f040..f7b6348 100644
--- a/www/genometools.org/htdocs/tools/gt_compreads_refcompress.html
+++ b/www/genometools.org/htdocs/tools/gt_compreads_refcompress.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -139,7 +138,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_compreads_refdecompress.html b/www/genometools.org/htdocs/tools/gt_compreads_refdecompress.html
index e05d9ad..c64971a 100644
--- a/www/genometools.org/htdocs/tools/gt_compreads_refdecompress.html
+++ b/www/genometools.org/htdocs/tools/gt_compreads_refdecompress.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -107,7 +106,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_condenseq.html b/www/genometools.org/htdocs/tools/gt_condenseq.html
index 0380a54..caff74e 100644
--- a/www/genometools.org/htdocs/tools/gt_condenseq.html
+++ b/www/genometools.org/htdocs/tools/gt_condenseq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -90,7 +89,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_congruence.html b/www/genometools.org/htdocs/tools/gt_congruence.html
index 48443be..f588222 100644
--- a/www/genometools.org/htdocs/tools/gt_congruence.html
+++ b/www/genometools.org/htdocs/tools/gt_congruence.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -81,7 +80,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_congruence_spacedseed.html b/www/genometools.org/htdocs/tools/gt_congruence_spacedseed.html
index ae16fb3..807325b 100644
--- a/www/genometools.org/htdocs/tools/gt_congruence_spacedseed.html
+++ b/www/genometools.org/htdocs/tools/gt_congruence_spacedseed.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_convertseq.html b/www/genometools.org/htdocs/tools/gt_convertseq.html
index 5cc8f04..525f8ac 100644
--- a/www/genometools.org/htdocs/tools/gt_convertseq.html
+++ b/www/genometools.org/htdocs/tools/gt_convertseq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -155,7 +154,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_csa.html b/www/genometools.org/htdocs/tools/gt_csa.html
index 12deb14..5072b70 100644
--- a/www/genometools.org/htdocs/tools/gt_csa.html
+++ b/www/genometools.org/htdocs/tools/gt_csa.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -176,7 +175,7 @@ shorter than the corresponding exon from the second alternative splice form.</p>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_dot.html b/www/genometools.org/htdocs/tools/gt_dot.html
index 5270271..9f6fd49 100644
--- a/www/genometools.org/htdocs/tools/gt_dot.html
+++ b/www/genometools.org/htdocs/tools/gt_dot.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_dupfeat.html b/www/genometools.org/htdocs/tools/gt_dupfeat.html
index 0b0e2f9..67da065 100644
--- a/www/genometools.org/htdocs/tools/gt_dupfeat.html
+++ b/www/genometools.org/htdocs/tools/gt_dupfeat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq.html b/www/genometools.org/htdocs/tools/gt_encseq.html
index 6f47a50..fb282dc 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -110,7 +109,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq2spm.html b/www/genometools.org/htdocs/tools/gt_encseq2spm.html
index ef59128..9457d6b 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq2spm.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq2spm.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -123,7 +122,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_bench.html b/www/genometools.org/htdocs/tools/gt_encseq_bench.html
index 327fad9..36bc0ae 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_bench.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_bench.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -91,7 +90,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_bitextract.html b/www/genometools.org/htdocs/tools/gt_encseq_bitextract.html
index 977414a..bd326c5 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_bitextract.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_bitextract.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -107,7 +106,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_check.html b/www/genometools.org/htdocs/tools/gt_encseq_check.html
index 336e9fe..ee5b2eb 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_check.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_check.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_decode.html b/www/genometools.org/htdocs/tools/gt_encseq_decode.html
index c920969..89adb4a 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_decode.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_decode.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -147,7 +146,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_encode.html b/www/genometools.org/htdocs/tools/gt_encseq_encode.html
index ecef726..317d8d5 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_encode.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_encode.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -188,7 +187,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_info.html b/www/genometools.org/htdocs/tools/gt_encseq_info.html
index 5130aaa..0eebdf2 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_info.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_info.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -139,7 +138,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_md5.html b/www/genometools.org/htdocs/tools/gt_encseq_md5.html
index d61c6cf..7000fb9 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_md5.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_md5.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -107,7 +106,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_encseq_sample.html b/www/genometools.org/htdocs/tools/gt_encseq_sample.html
index e8046be..efec67f 100644
--- a/www/genometools.org/htdocs/tools/gt_encseq_sample.html
+++ b/www/genometools.org/htdocs/tools/gt_encseq_sample.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -139,7 +138,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_eval.html b/www/genometools.org/htdocs/tools/gt_eval.html
index 84d0b28..e66fb59 100644
--- a/www/genometools.org/htdocs/tools/gt_eval.html
+++ b/www/genometools.org/htdocs/tools/gt_eval.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -139,7 +138,7 @@ that type from the “reference”.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_extractfeat.html b/www/genometools.org/htdocs/tools/gt_extractfeat.html
index 87eaec9..3b8c388 100644
--- a/www/genometools.org/htdocs/tools/gt_extractfeat.html
+++ b/www/genometools.org/htdocs/tools/gt_extractfeat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -281,7 +280,7 @@ sequence file name when it is called with the <tt>sequence_region</tt> as argume
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_extractseq.html b/www/genometools.org/htdocs/tools/gt_extractseq.html
index 7273f71..7765d21 100644
--- a/www/genometools.org/htdocs/tools/gt_extractseq.html
+++ b/www/genometools.org/htdocs/tools/gt_extractseq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -266,7 +265,7 @@ they have to appear in lexicographic order
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_fastq_sample.html b/www/genometools.org/htdocs/tools/gt_fastq_sample.html
index 3392419..6344842 100644
--- a/www/genometools.org/htdocs/tools/gt_fastq_sample.html
+++ b/www/genometools.org/htdocs/tools/gt_fastq_sample.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -76,7 +75,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_featureindex.html b/www/genometools.org/htdocs/tools/gt_featureindex.html
index 41828bd..16913f3 100644
--- a/www/genometools.org/htdocs/tools/gt_featureindex.html
+++ b/www/genometools.org/htdocs/tools/gt_featureindex.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -116,7 +115,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_fingerprint.html b/www/genometools.org/htdocs/tools/gt_fingerprint.html
index dba0d62..5ac77b3 100644
--- a/www/genometools.org/htdocs/tools/gt_fingerprint.html
+++ b/www/genometools.org/htdocs/tools/gt_fingerprint.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -186,7 +185,7 @@ CAACGTAATGGGAGCTTAAAAATA</tt></pre>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_genomediff.html b/www/genometools.org/htdocs/tools/gt_genomediff.html
index 235fb0c..9caa9d5 100644
--- a/www/genometools.org/htdocs/tools/gt_genomediff.html
+++ b/www/genometools.org/htdocs/tools/gt_genomediff.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_gff3.html b/www/genometools.org/htdocs/tools/gt_gff3.html
index 5844220..975cb31 100644
--- a/www/genometools.org/htdocs/tools/gt_gff3.html
+++ b/www/genometools.org/htdocs/tools/gt_gff3.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -261,7 +260,7 @@ given GFF3 files must be defined.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_gff3_to_gtf.html b/www/genometools.org/htdocs/tools/gt_gff3_to_gtf.html
index 748c1a2..dbe3023 100644
--- a/www/genometools.org/htdocs/tools/gt_gff3_to_gtf.html
+++ b/www/genometools.org/htdocs/tools/gt_gff3_to_gtf.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -99,7 +98,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_gff3validator.html b/www/genometools.org/htdocs/tools/gt_gff3validator.html
index 2e5f9b4..1ff346e 100644
--- a/www/genometools.org/htdocs/tools/gt_gff3validator.html
+++ b/www/genometools.org/htdocs/tools/gt_gff3validator.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -89,7 +88,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_gtf_to_gff3.html b/www/genometools.org/htdocs/tools/gt_gtf_to_gff3.html
index 00b32d3..611674d 100644
--- a/www/genometools.org/htdocs/tools/gt_gtf_to_gff3.html
+++ b/www/genometools.org/htdocs/tools/gt_gtf_to_gff3.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -107,7 +106,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_hop.html b/www/genometools.org/htdocs/tools/gt_hop.html
index 55287aa..dbbc127 100644
--- a/www/genometools.org/htdocs/tools/gt_hop.html
+++ b/www/genometools.org/htdocs/tools/gt_hop.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -299,7 +298,7 @@ as cognate sequence and outputs an ideal list of corrections.)</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_id_to_md5.html b/www/genometools.org/htdocs/tools/gt_id_to_md5.html
index ac0937e..18a247a 100644
--- a/www/genometools.org/htdocs/tools/gt_id_to_md5.html
+++ b/www/genometools.org/htdocs/tools/gt_id_to_md5.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -196,7 +195,7 @@ sequence file name when it is called with the <tt>sequence_region</tt> as argume
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_inlineseq_add.html b/www/genometools.org/htdocs/tools/gt_inlineseq_add.html
index 43631ca..31765a2 100644
--- a/www/genometools.org/htdocs/tools/gt_inlineseq_add.html
+++ b/www/genometools.org/htdocs/tools/gt_inlineseq_add.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -157,7 +156,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_inlineseq_split.html b/www/genometools.org/htdocs/tools/gt_inlineseq_split.html
index 575cc4d..abcfb52 100644
--- a/www/genometools.org/htdocs/tools/gt_inlineseq_split.html
+++ b/www/genometools.org/htdocs/tools/gt_inlineseq_split.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -83,7 +82,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_interfeat.html b/www/genometools.org/htdocs/tools/gt_interfeat.html
index e941d48..324f28c 100644
--- a/www/genometools.org/htdocs/tools/gt_interfeat.html
+++ b/www/genometools.org/htdocs/tools/gt_interfeat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_loccheck.html b/www/genometools.org/htdocs/tools/gt_loccheck.html
index 9df371d..0e3bd71 100644
--- a/www/genometools.org/htdocs/tools/gt_loccheck.html
+++ b/www/genometools.org/htdocs/tools/gt_loccheck.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_ltrclustering.html b/www/genometools.org/htdocs/tools/gt_ltrclustering.html
index 5cf65b5..3b33cb6 100644
--- a/www/genometools.org/htdocs/tools/gt_ltrclustering.html
+++ b/www/genometools.org/htdocs/tools/gt_ltrclustering.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_ltrdigest.html b/www/genometools.org/htdocs/tools/gt_ltrdigest.html
index 7bca63d..32871be 100644
--- a/www/genometools.org/htdocs/tools/gt_ltrdigest.html
+++ b/www/genometools.org/htdocs/tools/gt_ltrdigest.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -434,7 +433,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_ltrharvest.html b/www/genometools.org/htdocs/tools/gt_ltrharvest.html
index 777709d..0b5c39e 100644
--- a/www/genometools.org/htdocs/tools/gt_ltrharvest.html
+++ b/www/genometools.org/htdocs/tools/gt_ltrharvest.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -313,7 +312,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_matchtool.html b/www/genometools.org/htdocs/tools/gt_matchtool.html
index cfc4b2a..d440c1b 100644
--- a/www/genometools.org/htdocs/tools/gt_matchtool.html
+++ b/www/genometools.org/htdocs/tools/gt_matchtool.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -123,7 +122,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_matstat.html b/www/genometools.org/htdocs/tools/gt_matstat.html
index 66a89e2..640f703 100644
--- a/www/genometools.org/htdocs/tools/gt_matstat.html
+++ b/www/genometools.org/htdocs/tools/gt_matstat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_md5_to_id.html b/www/genometools.org/htdocs/tools/gt_md5_to_id.html
index 364a3f9..2f48abf 100644
--- a/www/genometools.org/htdocs/tools/gt_md5_to_id.html
+++ b/www/genometools.org/htdocs/tools/gt_md5_to_id.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -107,7 +106,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_merge.html b/www/genometools.org/htdocs/tools/gt_merge.html
index fe465d7..c5caff4 100644
--- a/www/genometools.org/htdocs/tools/gt_merge.html
+++ b/www/genometools.org/htdocs/tools/gt_merge.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -116,7 +115,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_mergefeat.html b/www/genometools.org/htdocs/tools/gt_mergefeat.html
index 93db9e9..1ccaa2b 100644
--- a/www/genometools.org/htdocs/tools/gt_mergefeat.html
+++ b/www/genometools.org/htdocs/tools/gt_mergefeat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -99,7 +98,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_mkfeatureindex.html b/www/genometools.org/htdocs/tools/gt_mkfeatureindex.html
index 3258dac..d096d18 100644
--- a/www/genometools.org/htdocs/tools/gt_mkfeatureindex.html
+++ b/www/genometools.org/htdocs/tools/gt_mkfeatureindex.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -109,7 +108,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_mmapandread.html b/www/genometools.org/htdocs/tools/gt_mmapandread.html
index 6e1df70..27a8d08 100644
--- a/www/genometools.org/htdocs/tools/gt_mmapandread.html
+++ b/www/genometools.org/htdocs/tools/gt_mmapandread.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_orffinder.html b/www/genometools.org/htdocs/tools/gt_orffinder.html
index cc7a943..dcc3e8d 100644
--- a/www/genometools.org/htdocs/tools/gt_orffinder.html
+++ b/www/genometools.org/htdocs/tools/gt_orffinder.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -198,7 +197,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_packedindex.html b/www/genometools.org/htdocs/tools/gt_packedindex.html
index d94bf42..000d991 100644
--- a/www/genometools.org/htdocs/tools/gt_packedindex.html
+++ b/www/genometools.org/htdocs/tools/gt_packedindex.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -101,7 +100,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_prebwt.html b/www/genometools.org/htdocs/tools/gt_prebwt.html
index f807cf4..f5d7549 100644
--- a/www/genometools.org/htdocs/tools/gt_prebwt.html
+++ b/www/genometools.org/htdocs/tools/gt_prebwt.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_readjoiner.html b/www/genometools.org/htdocs/tools/gt_readjoiner.html
index b3e53de..a6c5dce 100644
--- a/www/genometools.org/htdocs/tools/gt_readjoiner.html
+++ b/www/genometools.org/htdocs/tools/gt_readjoiner.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -86,7 +85,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_readjoiner_assembly.html b/www/genometools.org/htdocs/tools/gt_readjoiner_assembly.html
index 73ecb15..8076f70 100644
--- a/www/genometools.org/htdocs/tools/gt_readjoiner_assembly.html
+++ b/www/genometools.org/htdocs/tools/gt_readjoiner_assembly.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -164,7 +163,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_readjoiner_overlap.html b/www/genometools.org/htdocs/tools/gt_readjoiner_overlap.html
index 864e8a8..f5ebf6e 100644
--- a/www/genometools.org/htdocs/tools/gt_readjoiner_overlap.html
+++ b/www/genometools.org/htdocs/tools/gt_readjoiner_overlap.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_readjoiner_prefilter.html b/www/genometools.org/htdocs/tools/gt_readjoiner_prefilter.html
index 7149782..6c06022 100644
--- a/www/genometools.org/htdocs/tools/gt_readjoiner_prefilter.html
+++ b/www/genometools.org/htdocs/tools/gt_readjoiner_prefilter.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -160,7 +159,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_repfind.html b/www/genometools.org/htdocs/tools/gt_repfind.html
index 1cb1741..f8b45b7 100644
--- a/www/genometools.org/htdocs/tools/gt_repfind.html
+++ b/www/genometools.org/htdocs/tools/gt_repfind.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -127,19 +126,93 @@ as integer in the range from 70 to 99 (for xdrop and greedy extension) (default:
</p>
</dd>
<dt class="hdlist1">
-<strong>-a</strong> [<em>value</em>]
+<strong>-ii</strong> [<em>string</em>]
</dt>
<dd>
<p>
-show alignments/sequences for exact matches (optional argument is number of columns per line) (default: 70)
+Specify input index (default: undefined)
</p>
</dd>
<dt class="hdlist1">
-<strong>-ii</strong> [<em>string</em>]
+<strong>-outfmt</strong>
</dt>
<dd>
<p>
-Specify input index (default: undefined)
+specify what information about the matches to display
+alignment: show alignment (possibly followed by
+ =<number> to specify width of alignment
+ columns, default is )
+seed_in_algn: mark the seed in alignment
+polinfo: add polishing information for shown
+ alignment
+seed: abbreviation for seed.len seed.s seed.q
+failed_seed: show the coordinates of a seed extension,
+ which does not satisfy the filter conditions
+fstperquery: output only the first found match per query
+tabsep: separate columns by tabulator, instead of
+ space as default
+blast: output matches in blast format 7 (tabular with
+ comment lines; instead of gap opens, indels are
+ displayed)
+gfa2: output matches in gfa2 format
+custom: output matches in custom format, i.e. no
+ columns are pre-defined; all columns have to be
+ specified by the user
+cigar: display cigar string representing alignment
+ (no distinction between match and mismatch)
+cigarX: display cigar string representing alignment
+ (distinction between match (=) and mismatch
+ (X))
+trace: display trace, i.e. a compact representation
+ of an alignment (possibly followed by =<delta>)
+ to specify the delta-value; default value of
+ delta is 50
+dtrace: display trace as differences; like trace, but
+ instead of an absolute value x, report the
+ difference delta-x. This leads to smaller
+ numbers and thus a more compact representation
+s.len: display length of match on subject sequence
+s.seqnum: display sequence number of subject sequence
+subject id: display sequence description of subject
+ sequence
+s.start: display start position of match on subject
+ sequence
+s.end: display end position of match on subject
+ sequence
+strand: display strand of match using symbols F
+ (forward) and P (reverse complement)
+q.len: display length of match on query sequence
+q.seqnum: display sequence number of query sequence
+query id: display sequence description of query
+ sequence
+q.start: display start position of match on query
+ sequence
+q.end: display end position of match on query
+ sequence
+alignment length: display length of alignment
+mismatches: display number of mismatches in alignment
+indels: display number of indels in alignment
+gap opens: display number of indels in alignment
+score: display score of match
+editdist: display unit edit distance
+identity: display percent identity of match
+seed.len: display length seed of the match
+seed.s: display start position of seed in subject
+seed.q: display start position of seed in query
+s.seqlen: display length of subject sequence in which
+ match occurs
+q.seqlen: display length of query sequence in which
+ match occurs
+evalue: display evalue
+bit score: display bit score
+</p>
+</dd>
+<dt class="hdlist1">
+<strong>-evalue</strong> [<em>value</em>]
+</dt>
+<dd>
+<p>
+switch on evalue filtering of matches (optional argument specifies evalue threshold) (default: 10.000000)
</p>
</dd>
<dt class="hdlist1">
diff --git a/www/genometools.org/htdocs/tools/gt_scriptfilter.html b/www/genometools.org/htdocs/tools/gt_scriptfilter.html
index b6edd6a..d664d09 100644
--- a/www/genometools.org/htdocs/tools/gt_scriptfilter.html
+++ b/www/genometools.org/htdocs/tools/gt_scriptfilter.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -99,7 +98,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seed_extend.html b/www/genometools.org/htdocs/tools/gt_seed_extend.html
index 41515cf..2e05349 100644
--- a/www/genometools.org/htdocs/tools/gt_seed_extend.html
+++ b/www/genometools.org/htdocs/tools/gt_seed_extend.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,15 @@ Query input index (encseq)
<dd>
<p>
Minimum length of a seed
-default: logarithm of input length to the basis alphabet size
+default: logarithm of input length with alphabet size as log-base
+</p>
+</dd>
+<dt class="hdlist1">
+<strong>-spacedseed</strong> [<em>yes|no</em>]
+</dt>
+<dd>
+<p>
+use spaced seed of length specified by option -seedlength (default: no)
</p>
</dd>
<dt class="hdlist1">
@@ -75,7 +82,8 @@ default: logarithm of input length to the basis alphabet size
</dt>
<dd>
<p>
-Logarithm of diagonal band width (for filter) (default: 6)
+Logarithm of diagonal band width in the range
+from 0 to 10 (for filter) (default: 6)
</p>
</dd>
<dt class="hdlist1">
@@ -88,6 +96,15 @@ default: 2.5 x seedlength
</p>
</dd>
<dt class="hdlist1">
+<strong>-diagband-stat</strong> [<em>…</em>]
+</dt>
+<dd>
+<p>
+Compute statistics from diagonal band scores; parameter specifies kind of statistics, possible choices are
+sum (default: sum)
+</p>
+</dd>
+<dt class="hdlist1">
<strong>-maxfreq</strong> [<em>value</em>]
</dt>
<dd>
@@ -108,7 +125,8 @@ Maximum memory usage to determine the maximum frequency of a k-mer (for filter)
</dt>
<dd>
<p>
-Extend seed to both sides using xdrop algorithm, /noptional parameter specifies sensitivity (default: 97)
+Extend seed to both sides using xdrop algorithm,
+optional parameter specifies sensitivity (default: 97)
</p>
</dd>
<dt class="hdlist1">
@@ -129,11 +147,19 @@ optional parameter specifies sensitivity (default: 97)
</p>
</dd>
<dt class="hdlist1">
+<strong>-maxmat</strong> [<em>value</em>]
+</dt>
+<dd>
+<p>
+compute maximal matches of minimum length specified by option -l (default: 1)
+</p>
+</dd>
+<dt class="hdlist1">
<strong>-l</strong> [<em>value</em>]
</dt>
<dd>
<p>
-Minimum alignment length (for seed extension) (default: undefined)
+Minimum length of aligned sequences (default: undefined)
</p>
</dd>
<dt class="hdlist1">
@@ -145,11 +171,93 @@ Minimum identity of matches (for seed extension) (default: 80)
</p>
</dd>
<dt class="hdlist1">
-<strong>-a</strong> [<em>value</em>]
+<strong>-evalue</strong> [<em>value</em>]
</dt>
<dd>
<p>
-show alignments/sequences (optional argument is number of columns per line) (default: 70)
+switch on evalue filtering of matches (optional argument specifies evalue threshold) (default: 10.000000)
+</p>
+</dd>
+<dt class="hdlist1">
+<strong>-outfmt</strong>
+</dt>
+<dd>
+<p>
+specify what information about the matches to display
+alignment: show alignment (possibly followed by
+ =<number> to specify width of alignment
+ columns, default is )
+seed_in_algn: mark the seed in alignment
+polinfo: add polishing information for shown
+ alignment
+seed: abbreviation for seed.len seed.s seed.q
+failed_seed: show the coordinates of a seed extension,
+ which does not satisfy the filter conditions
+fstperquery: output only the first found match per query
+tabsep: separate columns by tabulator, instead of
+ space as default
+blast: output matches in blast format 7 (tabular with
+ comment lines; instead of gap opens, indels are
+ displayed)
+gfa2: output matches in gfa2 format
+custom: output matches in custom format, i.e. no
+ columns are pre-defined; all columns have to be
+ specified by the user
+cigar: display cigar string representing alignment
+ (no distinction between match and mismatch)
+cigarX: display cigar string representing alignment
+ (distinction between match (=) and mismatch
+ (X))
+trace: display trace, i.e. a compact representation
+ of an alignment (possibly followed by =<delta>)
+ to specify the delta-value; default value of
+ delta is 50
+dtrace: display trace as differences; like trace, but
+ instead of an absolute value x, report the
+ difference delta-x. This leads to smaller
+ numbers and thus a more compact representation
+s.len: display length of match on subject sequence
+s.seqnum: display sequence number of subject sequence
+subject id: display sequence description of subject
+ sequence
+s.start: display start position of match on subject
+ sequence
+s.end: display end position of match on subject
+ sequence
+strand: display strand of match using symbols F
+ (forward) and P (reverse complement)
+q.len: display length of match on query sequence
+q.seqnum: display sequence number of query sequence
+query id: display sequence description of query
+ sequence
+q.start: display start position of match on query
+ sequence
+q.end: display end position of match on query
+ sequence
+alignment length: display length of alignment
+mismatches: display number of mismatches in alignment
+indels: display number of indels in alignment
+gap opens: display number of indels in alignment
+score: display score of match
+editdist: display unit edit distance
+identity: display percent identity of match
+seed.len: display length seed of the match
+seed.s: display start position of seed in subject
+seed.q: display start position of seed in query
+s.seqlen: display length of subject sequence in which
+ match occurs
+q.seqlen: display length of query sequence in which
+ match occurs
+evalue: display evalue
+bit score: display bit score
+</p>
+</dd>
+<dt class="hdlist1">
+<strong>-ani</strong> [<em>yes|no</em>]
+</dt>
+<dd>
+<p>
+output average nucleotide identity determined from the computed matches (which are not output) (default: no)
</p>
</dd>
<dt class="hdlist1">
@@ -169,6 +277,14 @@ do not compute matches on forward strand (default: no)
</p>
</dd>
<dt class="hdlist1">
+<strong>-use-apos</strong> [<em>yes|no</em>]
+</dt>
+<dd>
+<p>
+Discard a seed only if both apos and bpos overlap with a previous successful alignment (default: no)
+</p>
+</dd>
+<dt class="hdlist1">
<strong>-parts</strong> [<em>value</em>]
</dt>
<dd>
@@ -214,7 +330,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_select.html b/www/genometools.org/htdocs/tools/gt_select.html
index 5d6e3e7..a9e2dcd 100644
--- a/www/genometools.org/htdocs/tools/gt_select.html
+++ b/www/genometools.org/htdocs/tools/gt_select.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -268,7 +267,7 @@ indicating that the node survived the filtering process.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seq.html b/www/genometools.org/htdocs/tools/gt_seq.html
index e756fd6..a4ac2a0 100644
--- a/www/genometools.org/htdocs/tools/gt_seq.html
+++ b/www/genometools.org/htdocs/tools/gt_seq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -180,7 +179,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqfilter.html b/www/genometools.org/htdocs/tools/gt_seqfilter.html
index d0a9f0d..be4f49f 100644
--- a/www/genometools.org/htdocs/tools/gt_seqfilter.html
+++ b/www/genometools.org/htdocs/tools/gt_seqfilter.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -156,7 +155,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqids.html b/www/genometools.org/htdocs/tools/gt_seqids.html
index 3611bd1..8f7cb07 100644
--- a/www/genometools.org/htdocs/tools/gt_seqids.html
+++ b/www/genometools.org/htdocs/tools/gt_seqids.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -67,7 +66,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqmutate.html b/www/genometools.org/htdocs/tools/gt_seqmutate.html
index 29c8fa1..3b81e02 100644
--- a/www/genometools.org/htdocs/tools/gt_seqmutate.html
+++ b/www/genometools.org/htdocs/tools/gt_seqmutate.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -125,7 +124,7 @@ mRNA and EST sequences. Bioinformatics, 21(9):1859-1875, 2005.</em></p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqorder.html b/www/genometools.org/htdocs/tools/gt_seqorder.html
index 01b138d..206ed6c 100644
--- a/www/genometools.org/htdocs/tools/gt_seqorder.html
+++ b/www/genometools.org/htdocs/tools/gt_seqorder.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -94,6 +93,14 @@ shuffle sequences pseudo-randomly (default: no)
</p>
</dd>
<dt class="hdlist1">
+<strong>-sortlength</strong> [<em>yes|no</em>]
+</dt>
+<dd>
+<p>
+sort by decreasing length (default: no)
+</p>
+</dd>
+<dt class="hdlist1">
<strong>-help</strong>
</dt>
<dd>
@@ -115,7 +122,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqstat.html b/www/genometools.org/htdocs/tools/gt_seqstat.html
index 7bd2c67..2a50fcc 100644
--- a/www/genometools.org/htdocs/tools/gt_seqstat.html
+++ b/www/genometools.org/htdocs/tools/gt_seqstat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -88,6 +87,14 @@ summary of contigs set statistics (default: yes)
</p>
</dd>
<dt class="hdlist1">
+<strong>-nstats</strong>
+</dt>
+<dd>
+<p>
+list of N-values to calculate statistics for, terminated by <em>--</em>; if none given, N50 and N80 will be calculated
+</p>
+</dd>
+<dt class="hdlist1">
<strong>-astretch</strong> [<em>yes|no</em>]
</dt>
<dd>
@@ -133,7 +140,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqtransform.html b/www/genometools.org/htdocs/tools/gt_seqtransform.html
index 2b1e0cf..ee615b2 100644
--- a/www/genometools.org/htdocs/tools/gt_seqtransform.html
+++ b/www/genometools.org/htdocs/tools/gt_seqtransform.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -116,7 +115,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_seqtranslate.html b/www/genometools.org/htdocs/tools/gt_seqtranslate.html
index ce13fb2..2e00c55 100644
--- a/www/genometools.org/htdocs/tools/gt_seqtranslate.html
+++ b/www/genometools.org/htdocs/tools/gt_seqtranslate.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -115,7 +114,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_sequniq.html b/www/genometools.org/htdocs/tools/gt_sequniq.html
index 1d9c5f8..ab9feb5 100644
--- a/www/genometools.org/htdocs/tools/gt_sequniq.html
+++ b/www/genometools.org/htdocs/tools/gt_sequniq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -126,7 +125,7 @@ contained within other sequences.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_shredder.html b/www/genometools.org/htdocs/tools/gt_shredder.html
index 2d00a4e..78e1cbb 100644
--- a/www/genometools.org/htdocs/tools/gt_shredder.html
+++ b/www/genometools.org/htdocs/tools/gt_shredder.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -184,7 +183,7 @@ To get rid of such fragments use <tt>gt seqfilter</tt> (see example below).</p><
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_shulengthdist.html b/www/genometools.org/htdocs/tools/gt_shulengthdist.html
index 66b2ce8..0e7c624 100644
--- a/www/genometools.org/htdocs/tools/gt_shulengthdist.html
+++ b/www/genometools.org/htdocs/tools/gt_shulengthdist.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_simreads.html b/www/genometools.org/htdocs/tools/gt_simreads.html
index 95bf4ea..b593e35 100644
--- a/www/genometools.org/htdocs/tools/gt_simreads.html
+++ b/www/genometools.org/htdocs/tools/gt_simreads.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_sketch.html b/www/genometools.org/htdocs/tools/gt_sketch.html
index 222cca5..ec5f1e7 100644
--- a/www/genometools.org/htdocs/tools/gt_sketch.html
+++ b/www/genometools.org/htdocs/tools/gt_sketch.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -176,7 +175,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_sketch_page.html b/www/genometools.org/htdocs/tools/gt_sketch_page.html
index 7916585..ad35d4f 100644
--- a/www/genometools.org/htdocs/tools/gt_sketch_page.html
+++ b/www/genometools.org/htdocs/tools/gt_sketch_page.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -160,7 +159,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_snpper.html b/www/genometools.org/htdocs/tools/gt_snpper.html
index f0f0beb..7b1d5c5 100644
--- a/www/genometools.org/htdocs/tools/gt_snpper.html
+++ b/www/genometools.org/htdocs/tools/gt_snpper.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -285,7 +284,7 @@ sequence file name when it is called with the <tt>sequence_region</tt> as argume
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_speck.html b/www/genometools.org/htdocs/tools/gt_speck.html
index 6171f69..006ead0 100644
--- a/www/genometools.org/htdocs/tools/gt_speck.html
+++ b/www/genometools.org/htdocs/tools/gt_speck.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -225,7 +224,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_splicesiteinfo.html b/www/genometools.org/htdocs/tools/gt_splicesiteinfo.html
index 1e7aa99..ab43668 100644
--- a/www/genometools.org/htdocs/tools/gt_splicesiteinfo.html
+++ b/www/genometools.org/htdocs/tools/gt_splicesiteinfo.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -189,7 +188,7 @@ sequence file name when it is called with the <tt>sequence_region</tt> as argume
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_splitfasta.html b/www/genometools.org/htdocs/tools/gt_splitfasta.html
index 61af6e8..8beba89 100644
--- a/www/genometools.org/htdocs/tools/gt_splitfasta.html
+++ b/www/genometools.org/htdocs/tools/gt_splitfasta.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -108,7 +107,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_stat.html b/www/genometools.org/htdocs/tools/gt_stat.html
index 8d894ff..19803e0 100644
--- a/www/genometools.org/htdocs/tools/gt_stat.html
+++ b/www/genometools.org/htdocs/tools/gt_stat.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -171,7 +170,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_tagerator.html b/www/genometools.org/htdocs/tools/gt_tagerator.html
index 83c8673..c962c94 100644
--- a/www/genometools.org/htdocs/tools/gt_tagerator.html
+++ b/www/genometools.org/htdocs/tools/gt_tagerator.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_tallymer.html b/www/genometools.org/htdocs/tools/gt_tallymer.html
index 6af84a8..861dcbd 100644
--- a/www/genometools.org/htdocs/tools/gt_tallymer.html
+++ b/www/genometools.org/htdocs/tools/gt_tallymer.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -91,7 +90,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_tallymer_mkindex.html b/www/genometools.org/htdocs/tools/gt_tallymer_mkindex.html
index 3203d6e..fc13a20 100644
--- a/www/genometools.org/htdocs/tools/gt_tallymer_mkindex.html
+++ b/www/genometools.org/htdocs/tools/gt_tallymer_mkindex.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_tallymer_occratio.html b/www/genometools.org/htdocs/tools/gt_tallymer_occratio.html
index 2d6e656..b644044 100644
--- a/www/genometools.org/htdocs/tools/gt_tallymer_occratio.html
+++ b/www/genometools.org/htdocs/tools/gt_tallymer_occratio.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_tallymer_search.html b/www/genometools.org/htdocs/tools/gt_tallymer_search.html
index 5003f1f..3f8b9b9 100644
--- a/www/genometools.org/htdocs/tools/gt_tallymer_search.html
+++ b/www/genometools.org/htdocs/tools/gt_tallymer_search.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_tirvish.html b/www/genometools.org/htdocs/tools/gt_tirvish.html
index da40da4..eeafa02 100644
--- a/www/genometools.org/htdocs/tools/gt_tirvish.html
+++ b/www/genometools.org/htdocs/tools/gt_tirvish.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -262,7 +261,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_uniq.html b/www/genometools.org/htdocs/tools/gt_uniq.html
index 6377f6a..f970e31 100644
--- a/www/genometools.org/htdocs/tools/gt_uniq.html
+++ b/www/genometools.org/htdocs/tools/gt_uniq.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -119,7 +118,7 @@ score, this one is kept.</p></div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/tools/gt_uniquesub.html b/www/genometools.org/htdocs/tools/gt_uniquesub.html
index 92864c4..89c7138 100644
--- a/www/genometools.org/htdocs/tools/gt_uniquesub.html
+++ b/www/genometools.org/htdocs/tools/gt_uniquesub.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
diff --git a/www/genometools.org/htdocs/tools/gt_wtree.html b/www/genometools.org/htdocs/tools/gt_wtree.html
index f0d5353..d4096ec 100644
--- a/www/genometools.org/htdocs/tools/gt_wtree.html
+++ b/www/genometools.org/htdocs/tools/gt_wtree.html
@@ -12,7 +12,6 @@
<li><a href="../index.html">Overview</a></li>
<li><a href="../pub/">Download</a></li>
<li><a href="https://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="../mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="../documentation.html">Documentation</a></li>
<ul class="submenu">
@@ -75,7 +74,7 @@ display version information and exit
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
-<div class="paragraph"><p>Report bugs to <<a href="mailto:gt-users at genometools.org">gt-users at genometools.org</a>>.</p></div>
+<div class="paragraph"><p>Report bugs to <a href="https://github.com/genometools/genometools/issues">https://github.com/genometools/genometools/issues</a>.</p></div>
</div>
</div>
<div id="footer">
diff --git a/www/genometools.org/htdocs/trackselectors.html b/www/genometools.org/htdocs/trackselectors.html
index 774302c..b7fe33e 100644
--- a/www/genometools.org/htdocs/trackselectors.html
+++ b/www/genometools.org/htdocs/trackselectors.html
@@ -11,7 +11,6 @@
<li><a href="index.html">Overview</a></li>
<li><a href="pub/">Download</a></li>
<li><a href="http://github.com/genometools/genometools">Browse source</a></li>
-<li><a href="mailman/listinfo/gt-users">Mailing list</a></li>
<li><a href="http://github.com/genometools/genometools/issues/">Issue tracker</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="annotationsketch.html"><tt>AnnotationSketch</tt></a></li>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/genometools.git
More information about the debian-med-commit
mailing list