diff --git a/OBIPRIMERS_NOTES.md b/OBIPRIMERS_NOTES.md index 20b1712..551b60d 100644 --- a/OBIPRIMERS_NOTES.md +++ b/OBIPRIMERS_NOTES.md @@ -471,5 +471,64 @@ taxonomie après `AssignTaxa`, régler le GC de la commande. Avertissements `Taxid ... has to be updated` : viennent du mécanisme existant d'obitools (taxids fusionnés dans le FASTA) ; `--update-taxid` les corrige à la lecture. -Reste à faire : mode B, `-U`, `-R`, tests shell `obitests/obitools/obiprimers` (données dans le dépôt), +Reste à faire : mode B, tests shell `obitests/obitools/obiprimers` (données dans le dépôt), documentation, réduction de la mémoire, comparaison systématique `--rank` autre que species. +(`-U` et `-R` : faits, section 15.) + +## 15. Options `-U` (no multi-match) et `-R` (référence) (2026-11-03) + +Code : `pkg/obiprimer/multimatch.go` (`DropRepeatedWords`, `DropMultiMatch`), `reference.go` +(`referenceSites`, `span`), `Corpus.IndexOfExample`, champs `SearchParams.NoMultiMatch/Reference`, +`PairStats.RefLocation/RefAmplicon`, options CLI `-U/--no-multi-match` et `-R/--reference`, colonnes CSV +`reference_location` et `reference_amplicon` (présentes seulement avec `-R`, `NA` pour une paire qui +n'amplifie pas la référence). Tests : `search_test.go` (synthétiques), `search_real_test.go` (opt-in). + +### -U + +Sémantique lue dans le C (`aproxpattern.c` et `ahocorasick.c`, qui donnent la même règle) : un mot est +écarté s'il a >= 2 occurrences approchées, **deux brins confondus**, dans **une** séquence quelconque du +corpus (exemple ou contre-exemple). Le drapeau « multi-mot » du comptage strict (`Repeated`, mot présent +plusieurs fois dans un exemple) n'en est qu'un cas particulier ; ecoPrimers l'applique d'abord pour +alléger la recherche, nous aussi (`DropRepeatedWords` puis `DropMultiMatch`). + +**Contrôle contre ecoPrimers `-U`** (Cyprinidae, 98,7 s, 1,18 Go) : **1 366 paires, identiques sur tous les +champs** (primers, good, séquences, taxons, Bc, Bs, Yule, longueurs, GC, Tm). Notre journal : +34 mots stricts écartés comme répétés, 469 écartés pour multi-match, 703 amorces conservées. +`testdata/ecoprimers_Cyprinidae_U.pairs.tsv` garde les valeurs de référence (test opt-in +`TestNoMultiMatchAgainstEcoPrimers`). + +Détail sans conséquence sur les résultats : avec `-e 0`, ecoPrimers (chemin Aho-Corasick) ne filtre pas les +amorces par le quorum de sensibilité et définit « good » par les seuls contre-exemples ; nous appliquons le +même filtre qu'avec `-e > 0`. Une amorce sous le quorum ne peut pas figurer dans une paire retenue +(une paire amplifie au plus autant d'exemples que ses amorces en touchent), donc les tables finales +sont les mêmes ; seuls les décomptes du journal peuvent différer. Non vérifié par une exécution `-e 0`. + +### -R + +Contrairement à `-U`, **le `-R` d'ecoPrimers est faux** : `refsequence` reçoit le numéro de la séquence +(`pairs.c`) puis sert d'indice dans la liste des amplicons de la paire (`ecoprimer.c`, `printapair`). +Mesuré sur Cyprinidae : avec la référence `NC_022183` ecoPrimers coïncide avec nous sur les coordonnées +des 3 448 paires (coïncidence : l'indice tombe juste) ; avec `NC_083213`, **seuls 382 de ses 3 405 +emplacements sont de vrais sites d'amorces dans la séquence, contre 3 405 sur 3 405 pour obiprimers** +(vérifié par un script indépendant et par `TestReferenceSitesAreRealSites`). Nous implémentons donc +l'intention, pas le C : + +- `reference_location` : emplacement GenBank 1-based des deux sites, de gauche à droite, + `join(a..b,c..d)`, entouré de `complement()` quand `primer1` (tel qu'écrit dans le CSV) se fixe sur le brin + moins. Fenêtre à cheval sur la jonction circulaire : coupée en deux (`a..n,1..m`). +- `reference_amplicon` : région entre les sites, amorces exclues, en minuscules, lue depuis `primer1`. +- **Orientation** : ecoPrimers oriente l'amplicon par rapport à l'ordre canonique des mots, nous par rapport + à `primer1` du CSV (plus lisible). Sur NC_022183 : coordonnées identiques pour les 3 448 paires, + amplicon identique pour 2 572 et complémenté-inversé pour 836, tout le reste égal. +- Plusieurs amplicons de la paire sur la référence : on garde le plus à gauche (le C garde le dernier, + par écrasement, mais ses valeurs sont de toute façon indéfinies). +- Référence introuvable ou contre-exemple : **erreur** (le C ignore silencieusement). +- Vérifications : 3 408 paires sur NC_022183 et 3 405 sur NC_083213, sites à <= 3 erreurs, amplicon égal à + la séquence (ou son complément inverse), orientation cohérente (2 184 paires `primer1` sur le brin +, + 1 224 sur le brin -). + +### Autres constats + +- `obiutils` : `TestSetString` est **instable** (échoue ~4 fois sur 6) : `Set.String()` parcourt une map Go + et le test attend `[1 2 3]`. Sans rapport avec obiprimers, non corrigé. +- Un défaut de mon test précédent (`TestCLISearchParams` laissait `_salt = -1`) a été corrigé. diff --git a/cmd/obitools/obiprimers/main.go b/cmd/obitools/obiprimers/main.go index 29f095e..14cb7ba 100644 --- a/cmd/obitools/obiprimers/main.go +++ b/cmd/obitools/obiprimers/main.go @@ -35,7 +35,7 @@ func main() { log.Fatalf("%v", err) } - obicsv.CLICSVWriter(obiprimers.PairsToCSVIterator(pairs), true) + obicsv.CLICSVWriter(obiprimers.PairsToCSVIterator(pairs, obiprimers.CLIReference() != ""), true) obiutils.WaitForLastPipe() } diff --git a/pkg/obiprimer/corpus.go b/pkg/obiprimer/corpus.go index 0796dd2..489bf36 100644 --- a/pkg/obiprimer/corpus.go +++ b/pkg/obiprimer/corpus.go @@ -106,3 +106,18 @@ func LoadCorpus(seqs obiiter.IBioSequence, sel Selection) (*Corpus, error) { } return c, nil } + +// IndexOfExample returns the index of the example sequence with the given +// identifier. It is an error if there is none, or if the sequence is a +// counterexample. +func (c *Corpus) IndexOfExample(id string) (int, error) { + for i, s := range c.Seqs { + if s.Id() == id { + if c.Roles[i] != Example { + return -1, fmt.Errorf("obiprimer: reference sequence %q is a counterexample, it must be an example", id) + } + return i, nil + } + } + return -1, fmt.Errorf("obiprimer: reference sequence %q is not among the selected example sequences", id) +} diff --git a/pkg/obiprimer/multimatch.go b/pkg/obiprimer/multimatch.go new file mode 100644 index 0000000..c06713f --- /dev/null +++ b/pkg/obiprimer/multimatch.go @@ -0,0 +1,41 @@ +package obiprimer + +import "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + +// DropRepeatedWords removes the strict words found more than once (on either +// strand) in at least one example sequence. It is the first half of the +// ecoPrimers -U option (no multi-match). +func DropRepeatedWords(words []obikmer.SeqKmerCount) (kept []obikmer.SeqKmerCount, dropped int) { + kept = make([]obikmer.SeqKmerCount, 0, len(words)) + for _, w := range words { + if w.Repeated { + dropped++ + continue + } + kept = append(kept, w) + } + return kept, dropped +} + +// DropMultiMatch removes the words having two or more approximate occurrences, +// both strands counted, in at least one sequence of the corpus, whatever its +// role. It is the second half of the ecoPrimers -U option: the primers that +// can anneal at several places of a sequence are discarded. +func DropMultiMatch(wm []WordMatches) (kept []WordMatches, dropped int) { + kept = make([]WordMatches, 0, len(wm)) + for _, w := range wm { + multi := false + for i := 1; i < len(w.Matches); i++ { + if w.Matches[i].Seq == w.Matches[i-1].Seq { + multi = true + break + } + } + if multi { + dropped++ + continue + } + kept = append(kept, w) + } + return kept, dropped +} diff --git a/pkg/obiprimer/pairs.go b/pkg/obiprimer/pairs.go index 2582bf0..eaa2142 100644 --- a/pkg/obiprimer/pairs.go +++ b/pkg/obiprimer/pairs.go @@ -22,6 +22,8 @@ type PairParams struct { FalsePositive float64 // -x: and less than this fraction of the counterexamples (0.1) MinSpecificity float64 // -T: pairs with a lower Bs are dropped (0.6) Circular bool // -c + Reference int // -R: corpus index of the reference sequence (used when HasReference) + HasReference bool } func (p PairParams) validate() error { diff --git a/pkg/obiprimer/pairs_eval.go b/pkg/obiprimer/pairs_eval.go index cd37864..51c5189 100644 --- a/pkg/obiprimer/pairs_eval.go +++ b/pkg/obiprimer/pairs_eval.go @@ -31,6 +31,14 @@ type PairStats struct { Tm1, Tm2 float64 // melting temperature of the primers against their perfect target MinTm1, MinTm2 float64 // lowest melting temperature over the example amplicons GC1, GC2 int + + // With a reference sequence (-R): where the pair amplifies it. RefLocation + // is the GenBank location of the two primer sites (1-based, left to right), + // wrapped in complement() when Primer1 binds the other strand; RefAmplicon + // is the amplified region, primers excluded, read from Primer1 to Primer2. + // Both are empty when the pair does not amplify the reference. + RefLocation string + RefAmplicon string } // Score is the ranking criterion of ecoPrimers. @@ -52,6 +60,12 @@ type ampRecord struct { tm1, tm2 float32 // NaN when unavailable } +// refHit is an amplicon of a retained pair on the reference sequence. +type refHit struct { + up, down seqMatch + swapped bool +} + // ampHash hashes the amplicon between the two primers read from the side of // the first primer of the pair (reverse complemented when the upstream match is // the second primer), so that identical amplicons give the same value @@ -132,7 +146,7 @@ func FindPairs(c *Corpus, taxa *Taxa, wm []WordMatches, p PairParams, model *obi } // Phase 2: the amplicons of the retained pairs only. - records := ps.collectAmplicons(c, p, index, model) + records, refs := ps.collectAmplicons(c, p, index, model) byPair := make([][]ampRecord, len(kept)) for _, r := range records { byPair[r.pair] = append(byPair[r.pair], r) @@ -142,6 +156,12 @@ func FindPairs(c *Corpus, taxa *Taxa, wm []WordMatches, p PairParams, model *obi for i, k := range kept { st, ok := ps.evaluate(c, taxa, p, k, acc[k], byPair[i], model) if ok { + if h, found := refs[int32(i)]; found { + // evaluate orders the primers by string; the amplicon is read from the first one + s1 := orientedWord(ps.primers[k.p1].Word, p.PrimerLength, k.a1) + s2 := orientedWord(ps.primers[k.p2].Word, p.PrimerLength, k.a2) + st.RefLocation, st.RefAmplicon = referenceSites(c.Seqs[p.Reference].Sequence(), h, p, s2 < s1) + } out = append(out, st) } } @@ -162,7 +182,7 @@ func boolCmp(a, b bool) int { } // collectAmplicons gathers, in parallel, one record per amplicon of a retained pair. -func (ps *primerSet) collectAmplicons(c *Corpus, p PairParams, index map[pairKey]int32, model *obithermo.Model) []ampRecord { +func (ps *primerSet) collectAmplicons(c *Corpus, p PairParams, index map[pairKey]int32, model *obithermo.Model) ([]ampRecord, map[int32]refHit) { lp := p.PrimerLength workers := obidefault.ParallelWorkers() parts := make([][]ampRecord, workers) @@ -175,6 +195,10 @@ func (ps *primerSet) collectAmplicons(c *Corpus, p PairParams, index map[pairKey } nan := float32(math.NaN()) + // The reference sequence is handled by a single worker, which is the only + // writer of refs; the first (leftmost) amplicon of each pair is kept. + refs := map[int32]refHit{} + jobs := make(chan int) var wg sync.WaitGroup for w := range workers { @@ -191,6 +215,11 @@ func (ps *primerSet) collectAmplicons(c *Corpus, p PairParams, index map[pairKey if !ok { return } + if p.HasReference && s == p.Reference { + if old, seen := refs[pi]; !seen || o.up.pos < old.up.pos { + refs[pi] = refHit{o.up, o.down, o.swapped} + } + } rec := ampRecord{pair: pi, seq: int32(s), tm1: nan, tm2: nan} if isExample { rec.hash = ampHash(raw, int(o.up.pos)+lp, int(o.down.pos), o.swapped) @@ -233,7 +262,7 @@ func (ps *primerSet) collectAmplicons(c *Corpus, p PairParams, index map[pairKey for _, part := range parts { all = append(all, part...) } - return all + return all, refs } func b2i(b bool) int { diff --git a/pkg/obiprimer/reference.go b/pkg/obiprimer/reference.go new file mode 100644 index 0000000..a2f6b31 --- /dev/null +++ b/pkg/obiprimer/reference.go @@ -0,0 +1,44 @@ +package obiprimer + +import ( + "fmt" + "strings" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" +) + +// span writes the 1-based GenBank range of the lp bases starting at the 0-based +// position pos. On a circular sequence a range running over the junction is +// split in two. +func span(pos, lp, n int, circular bool) string { + end := pos + lp + if end > n && circular { + return fmt.Sprintf("%d..%d,1..%d", pos+1, n, end-n) + } + return fmt.Sprintf("%d..%d", pos+1, end) +} + +// referenceSites describes an amplicon of a pair on the reference sequence raw. +// +// The location lists the two primer sites left to right as join(a..b,c..d), +// inside complement() when the first primer of the pair (Primer1 once the pair +// is in string order) binds the reverse strand. The amplicon is the region +// between the sites, read 5'->3' from the first primer, in lower case. +// +// swappedByOrder says whether putting the pair in string order exchanged the +// two primers of the key. +func referenceSites(raw []byte, h refHit, p PairParams, swappedByOrder bool) (location, amplicon string) { + lp, n := p.PrimerLength, len(raw) + + // The key slot 1 is the upstream primer unless the match order was swapped; + // the exchange due to the string order flips it again. + firstIsUpstream := h.swapped == swappedByOrder + + location = "join(" + span(int(h.up.pos), lp, n, p.Circular) + "," + span(int(h.down.pos), lp, n, p.Circular) + ")" + region := []byte(strings.ToLower(string(raw[int(h.up.pos)+lp : int(h.down.pos)]))) + if firstIsUpstream { + return location, string(region) + } + rc := obiseq.NewBioSequence("", region, "").ReverseComplement(true) + return "complement(" + location + ")", string(rc.Sequence()) +} diff --git a/pkg/obiprimer/search.go b/pkg/obiprimer/search.go index 3a48567..61d14fc 100644 --- a/pkg/obiprimer/search.go +++ b/pkg/obiprimer/search.go @@ -19,6 +19,8 @@ type SearchParams struct { FalsePositive float64 // -x: fraction of the counterexamples it may match (0.1) MinSpecificity float64 // -T: pairs with a lower Bs are dropped (0.6) Circular bool // -c: sequences are circular + NoMultiMatch bool // -U: discard the primers matching several times in a sequence + Reference string // -R: identifier of an example sequence on which the amplicons are located ("" = none) Partitions int // partitions of the k-mer counter (default 256) TmpDir string @@ -41,6 +43,8 @@ type SearchInfo struct { StrictWords int // words found without error in at least StrictQuorum of the examples MinStrict int // that quorum, in sequences Matches int // approximate occurrences of those words + Repeated int // strict words dropped because repeated in an example (-U) + MultiMatch int // words dropped because matching several times in a sequence (-U) Pair PairInfo } @@ -63,6 +67,16 @@ func Search(c *Corpus, taxa *Taxa, p SearchParams) ([]PairStats, *SearchInfo, er return nil, nil, err } info := &SearchInfo{Counts: sw.Counts, StrictWords: len(sw.Words), MinStrict: sw.MinSequences} + if p.NoMultiMatch { + sw.Words, info.Repeated = DropRepeatedWords(sw.Words) + } + + refIndex := -1 + if p.Reference != "" { + if refIndex, err = c.IndexOfExample(p.Reference); err != nil { + return nil, info, err + } + } words := make([]uint64, len(sw.Words)) for i, w := range sw.Words { @@ -72,6 +86,9 @@ func Search(c *Corpus, taxa *Taxa, p SearchParams) ([]PairStats, *SearchInfo, er if err != nil { return nil, info, err } + if p.NoMultiMatch { + wm, info.MultiMatch = DropMultiMatch(wm) + } for _, w := range wm { info.Matches += len(w.Matches) } @@ -85,6 +102,8 @@ func Search(c *Corpus, taxa *Taxa, p SearchParams) ([]PairStats, *SearchInfo, er FalsePositive: p.FalsePositive, MinSpecificity: p.MinSpecificity, Circular: p.Circular, + Reference: refIndex, + HasReference: refIndex >= 0, }, p.Model) info.Pair = pinfo return pairs, info, err diff --git a/pkg/obiprimer/search_real_test.go b/pkg/obiprimer/search_real_test.go new file mode 100644 index 0000000..babb400 --- /dev/null +++ b/pkg/obiprimer/search_real_test.go @@ -0,0 +1,175 @@ +package obiprimer + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + "regexp" + "strings" + "testing" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiformats" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitax" +) + +// loadTutorial reads the Cyprinidae examples of the tutorial data (the opt-in +// tests need OBIPRIMERS_TUTORIAL, see TestStrictWordsAgainstEcoPrimers). +func loadTutorial(t *testing.T) (*Corpus, *Taxa, *obitax.Taxonomy) { + t.Helper() + dir := os.Getenv("OBIPRIMERS_TUTORIAL") + if dir == "" { + t.Skip("OBIPRIMERS_TUTORIAL not set") + } + taxonomy, err := obiformats.LoadTaxonomy(filepath.Join(dir, "ncbitaxo_20250211.tgz"), false, false) + if err != nil { + t.Fatal(err) + } + restrict, err := BelongingTo(taxonomy, []string{"7953"}) + if err != nil { + t.Fatal(err) + } + seqs, err := obiformats.ReadSequencesFromFile(filepath.Join(dir, "mito.vert.fasta.gz")) + if err != nil { + t.Fatal(err) + } + corpus, err := LoadCorpus(seqs, Selection{Restrict: restrict}) + if err != nil { + t.Fatal(err) + } + taxa, err := corpus.AssignTaxa(taxonomy, "species") + if err != nil { + t.Fatal(err) + } + return corpus, taxa, taxonomy +} + +func tutorialParams(t *testing.T) SearchParams { + p := DefaultSearchParams() + p.MinLength, p.MaxLength, p.ThreePrime, p.Circular = 30, 150, 2, true + p.TmpDir = t.TempDir() + return p +} + +// ecoPrimers -U on the Cyprinidae tutorial case (-e 3 -3 2 -l 30 -L 150 -c -r 7953 -U) +// keeps 1366 pairs. testdata/ecoprimers_Cyprinidae_U.pairs.tsv holds, for each, +// the primers, the amplified example and counterexample sequences, the amplified +// example and counterexample taxa, and the identified taxa. +func TestNoMultiMatchAgainstEcoPrimers(t *testing.T) { + corpus, taxa, _ := loadTutorial(t) + p := tutorialParams(t) + p.NoMultiMatch = true + pairs, info, err := Search(corpus, taxa, p) + if err != nil { + t.Fatal(err) + } + t.Logf("%+v", *info) + + f, err := os.Open(filepath.Join("testdata", "ecoprimers_Cyprinidae_U.pairs.tsv")) + if err != nil { + t.Fatal(err) + } + defer f.Close() + want := map[string][5]int{} + sc := bufio.NewScanner(f) + for sc.Scan() { + var p1, p2 string + var v [5]int + if _, err := fmt.Sscanf(sc.Text(), "%s\t%s\t%d\t%d\t%d\t%d\t%d", &p1, &p2, &v[0], &v[1], &v[2], &v[3], &v[4]); err != nil { + t.Fatal(err) + } + want[p1+"/"+p2] = v + } + + if len(pairs) != len(want) { + t.Errorf("%d pairs, ecoPrimers -U reports %d", len(pairs), len(want)) + } + bad := 0 + for _, g := range pairs { + v, ok := want[g.Primer1+"/"+g.Primer2] + if !ok { + t.Errorf("pair %s/%s is not in the ecoPrimers -U result", g.Primer1, g.Primer2) + continue + } + got := [5]int{g.Examples, g.CounterExamples, g.ExampleTaxa, g.CounterTaxa, g.Identified} + if got != v { + if bad++; bad <= 3 { + t.Errorf("pair %s/%s: got %v, ecoPrimers %v", g.Primer1, g.Primer2, got, v) + } + } + } +} + +var locRE = regexp.MustCompile(`(\d+)\.\.(\d+)`) + +// ecoPrimers -R is only right for the references that happen to come first: it +// indexes the amplicons of a pair by sequence number. On NC_083213 only 382 of +// its 3405 locations are real primer sites, against all 3405 for obiprimers. +// Here the locations are checked against the sequence itself, so no +// ecoPrimers output is needed: each location must give two real primer sites +// (at most 3 substitutions) and the amplicon must be the region between them, +// read from the first primer. +func TestReferenceSitesAreRealSites(t *testing.T) { + corpus, taxa, _ := loadTutorial(t) + + for _, ref := range []string{"NC_022183", "NC_083213"} { + t.Run(ref, func(t *testing.T) { + p := tutorialParams(t) + p.Reference = ref + pairs, _, err := Search(corpus, taxa, p) + if err != nil { + t.Fatal(err) + } + idx, err := corpus.IndexOfExample(ref) + if err != nil { + t.Fatal(err) + } + seq := strings.ToLower(string(corpus.Seqs[idx].Sequence())) + + hamming := func(a, b string) int { + d := 0 + for i := range a { + if a[i] != b[i] { + d++ + } + } + return d + } + located, bad := 0, 0 + for _, pr := range pairs { + if pr.RefLocation == "" { + continue + } + located++ + m := locRE.FindAllStringSubmatch(pr.RefLocation, -1) + if len(m) != 2 { + t.Fatalf("location %q", pr.RefLocation) + } + var a1, b1, a2, b2 int + fmt.Sscanf(m[0][0], "%d..%d", &a1, &b1) + fmt.Sscanf(m[1][0], "%d..%d", &a2, &b2) + left, right := seq[a1-1:b1], seq[a2-1:b2] + between := seq[b1 : a2-1] + + p1, p2 := strings.ToLower(pr.Primer1), strings.ToLower(pr.Primer2) + var ok bool + if strings.HasPrefix(pr.RefLocation, "complement(") { + ok = hamming(strings.ToLower(revcomp(strings.ToUpper(right))), p1) <= 3 && hamming(left, p2) <= 3 && + pr.RefAmplicon == strings.ToLower(revcomp(strings.ToUpper(between))) + } else { + ok = hamming(left, p1) <= 3 && hamming(strings.ToLower(revcomp(strings.ToUpper(right))), p2) <= 3 && + pr.RefAmplicon == between + } + if !ok { + if bad++; bad <= 3 { + t.Errorf("pair %s/%s: %s is not a real location", pr.Primer1, pr.Primer2, pr.RefLocation) + } + } + } + t.Logf("%d of %d pairs amplify %s; %d wrong locations", located, len(pairs), ref, bad) + if located == 0 { + t.Error("no pair amplifies the reference") + } + }) + } +} diff --git a/pkg/obiprimer/search_test.go b/pkg/obiprimer/search_test.go new file mode 100644 index 0000000..9bcc92e --- /dev/null +++ b/pkg/obiprimer/search_test.go @@ -0,0 +1,199 @@ +package obiprimer + +import ( + "fmt" + "math/rand" + "strings" + "testing" + + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obikmer" + "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" +) + +// synthetic builds nseq example sequences sharing the block F + insert + rc(R), +// each with its own flanks and its own substitution inside the insert (so that +// every sequence has a distinct amplicon, hence Bs = 1, with one taxon each). +// extraF, if not empty, is appended to the flank of sequence extraIn: that +// sequence then holds the forward site twice. +type synthetic struct { + corpus *Corpus + taxa *Taxa + f, r, i string // forward primer, reverse primer (5'->3'), insert of sequence 0 + pos int // 0-based start of the block in every sequence +} + +func newSynthetic(nseq int, repeatForwardIn int, seed int64) synthetic { + rng := rand.New(rand.NewSource(seed)) + f := randDNA(rng, 18) + r := randDNA(rng, 18) + ins := randDNA(rng, 40) + const pos = 60 + + c := &Corpus{} + taxa := &Taxa{Rank: "species", ExampleTaxa: nseq} + for k := 0; k < nseq; k++ { + in := []byte(ins) + in[3+k] = "ACGT"[(strings.IndexByte("ACGT", in[3+k])+1)%4] // one private substitution + s := randDNA(rng, pos) + f + string(in) + revcomp(r) + randDNA(rng, 60) + if k == repeatForwardIn { + s += randDNA(rng, 20) + f // the forward site a second time + } + c.Seqs = append(c.Seqs, obiseq.NewBioSequence(fmt.Sprintf("s%d", k), []byte(strings.ToLower(s)), "")) + c.Roles = append(c.Roles, Example) + taxa.Of = append(taxa.Of, int32(k)) + } + return synthetic{c, taxa, f, r, ins, pos} +} + +func (s synthetic) params() SearchParams { + p := DefaultSearchParams() + p.MaxErrors = 1 + p.MinLength, p.MaxLength = 20, 100 + p.Partitions = 8 + p.TmpDir = "" + return p +} + +// find returns the pair made of the primers f and r, whatever their order. +func find(pairs []PairStats, f, r string) *PairStats { + for i := range pairs { + if (pairs[i].Primer1 == f && pairs[i].Primer2 == r) || (pairs[i].Primer1 == r && pairs[i].Primer2 == f) { + return &pairs[i] + } + } + return nil +} + +func TestSearchFindsThePlantedPair(t *testing.T) { + s := newSynthetic(8, -1, 11) + pairs, info, err := Search(s.corpus, s.taxa, s.params()) + if err != nil { + t.Fatal(err) + } + p := find(pairs, s.f, s.r) + if p == nil { + t.Fatalf("the planted pair was not found among %d pairs (%+v)", len(pairs), info) + } + if p.Examples != 8 || p.MinLen != 40 || p.MaxLen != 40 || p.Bs != 1 || p.Bc != 1 { + t.Errorf("unexpected indices %+v", *p) + } + if p.RefLocation != "" { + t.Error("no reference was asked: no location expected") + } +} + +func TestReferenceLocation(t *testing.T) { + forwardFirst, reverseFirst := 0, 0 + for seed := int64(1); seed <= 24; seed++ { + s := newSynthetic(8, -1, seed) + p := s.params() + p.Reference = "s3" + pairs, _, err := Search(s.corpus, s.taxa, p) + if err != nil { + t.Fatal(err) + } + pair := find(pairs, s.f, s.r) + if pair == nil { + t.Fatalf("seed %d: planted pair not found", seed) + } + + // 1-based sites: forward primer at 61..78, then 40 bases of insert, then the reverse site + wantLoc := "join(61..78,119..136)" + insert := strings.ToLower(string(s.corpus.Seqs[3].Sequence()[s.pos+18 : s.pos+58])) + if pair.Primer1 == s.f { // the amplicon is read from the first primer + forwardFirst++ + if pair.RefLocation != wantLoc || pair.RefAmplicon != insert { + t.Errorf("seed %d, forward first: got %s %s", seed, pair.RefLocation, pair.RefAmplicon) + } + } else { + reverseFirst++ + rc := strings.ToLower(revcomp(strings.ToUpper(insert))) + if pair.RefLocation != "complement("+wantLoc+")" || pair.RefAmplicon != rc { + t.Errorf("seed %d, reverse first: got %s %s", seed, pair.RefLocation, pair.RefAmplicon) + } + } + if len(pair.RefAmplicon) != pair.MinLen { + t.Errorf("seed %d: amplicon length %d, pair length %d", seed, len(pair.RefAmplicon), pair.MinLen) + } + } + if forwardFirst == 0 || reverseFirst == 0 { + t.Errorf("both orientations must be exercised: %d forward first, %d reverse first", forwardFirst, reverseFirst) + } +} + +func TestReferenceErrors(t *testing.T) { + s := newSynthetic(8, -1, 11) + p := s.params() + p.Reference = "nope" + if _, _, err := Search(s.corpus, s.taxa, p); err == nil { + t.Error("an unknown reference must be refused") + } + s.corpus.Roles[2] = CounterExample + p.Reference = "s2" + if _, _, err := Search(s.corpus, s.taxa, p); err == nil { + t.Error("a counterexample cannot be the reference") + } +} + +func TestReferenceOnACircularJunction(t *testing.T) { + // span writes a range running over the end of a circular sequence in two parts + if got := span(95, 10, 100, true); got != "96..100,1..5" { + t.Errorf("circular span %q", got) + } + if got := span(95, 10, 100, false); got != "96..105" { + t.Errorf("linear span %q", got) + } + if got := span(10, 18, 100, true); got != "11..28" { + t.Errorf("inner span %q", got) + } +} + +func TestNoMultiMatchDropsRepeatedPrimers(t *testing.T) { + // the forward primer is found twice in sequence 2 + s := newSynthetic(8, 2, 11) + + with, infoWith, err := Search(s.corpus, s.taxa, s.params()) + if err != nil { + t.Fatal(err) + } + if find(with, s.f, s.r) == nil { + t.Fatalf("without -U the pair must be found (%+v)", infoWith) + } + + p := s.params() + p.NoMultiMatch = true + without, info, err := Search(s.corpus, s.taxa, p) + if err != nil { + t.Fatal(err) + } + if find(without, s.f, s.r) != nil { + t.Error("with -U the repeated forward primer must be discarded, and its pair with it") + } + if info.Repeated == 0 { + t.Errorf("the repeated word was not counted: %+v", info) + } + if len(without) >= len(with) { + t.Errorf("-U must not add pairs: %d with, %d without", len(with), len(without)) + } +} + +func TestDropMultiMatch(t *testing.T) { + wm := []WordMatches{ + {Word: 1, Matches: []Match{{0, 5, 0, false}, {1, 9, 0, true}}}, // one per sequence: kept + {Word: 2, Matches: []Match{{0, 5, 0, false}, {0, 50, 1, false}}}, // two in sequence 0 + {Word: 3, Matches: []Match{{2, 5, 0, false}, {2, 5, 0, true}}}, // both strands of one sequence + {Word: 4}, // no match at all: kept + } + kept, dropped := DropMultiMatch(wm) + if dropped != 2 || len(kept) != 2 || kept[0].Word != 1 || kept[1].Word != 4 { + t.Errorf("kept %v, dropped %d", kept, dropped) + } +} + +func TestDropRepeatedWords(t *testing.T) { + words := []obikmer.SeqKmerCount{{Kmer: 1}, {Kmer: 2, Repeated: true}, {Kmer: 3}} + kept, dropped := DropRepeatedWords(words) + if dropped != 1 || len(kept) != 2 || kept[0].Kmer != 1 || kept[1].Kmer != 3 { + t.Errorf("kept %v, dropped %d", kept, dropped) + } +} diff --git a/pkg/obiprimer/testdata/ecoprimers_Cyprinidae_U.pairs.tsv b/pkg/obiprimer/testdata/ecoprimers_Cyprinidae_U.pairs.tsv new file mode 100644 index 0000000..678b908 --- /dev/null +++ b/pkg/obiprimer/testdata/ecoprimers_Cyprinidae_U.pairs.tsv @@ -0,0 +1,1366 @@ +ACATAACCACTCTGTCAC TTCTATAACGGGTGATGC 317 0 309 0 235 +CACATAACCACTCTGTCA TTCTATAACGGGTGATGC 317 0 309 0 235 +AAAAGAGTGGGAAGAGCT TGTTAAAGGGGCTGTACC 321 0 312 0 234 +AAAGAGTGGGAAGAGCTC TGTTAAAGGGGCTGTACC 320 0 311 0 233 +ACCTACCGAACCTGGTGA TGTTAAAGGGGCTGTACC 323 0 314 0 233 +CTACCGAACCTGGTGATA TGTTAAAGGGGCTGTACC 325 0 316 0 233 +AACCTGGTGATAGCTGGT TGTTAAAGGGGCTGTACC 325 0 316 0 233 +CCTACCGAACCTGGTGAT TGTTAAAGGGGCTGTACC 325 0 316 0 233 +CAGCCACATAACCACTCT TTCTATAACGGGTGATGC 315 0 307 0 233 +AGCCACATAACCACTCTG TTCTATAACGGGTGATGC 315 0 307 0 233 +GTAGAAGTGACAGACCTA TGTTAAAGGGGCTGTACC 322 0 313 0 232 +AGACCTACCGAACCTGGT TGTTAAAGGGGCTGTACC 322 0 313 0 232 +ACCTACCGAACCTGGTGA CCTTTGTTAAAGGGGCTG 322 0 313 0 232 +AACCTGGTGATAGCTGGT CCTTTGTTAAAGGGGCTG 324 0 315 0 232 +GAACCTGGTGATAGCTGG TGTTAAAGGGGCTGTACC 324 0 315 0 232 +CCGAACCTGGTGATAGCT TGTTAAAGGGGCTGTACC 324 0 315 0 232 +CGAACCTGGTGATAGCTG TGTTAAAGGGGCTGTACC 324 0 315 0 232 +CCTACCGAACCTGGTGAT CCTTTGTTAAAGGGGCTG 324 0 315 0 232 +CCTTTGTTAAAGGGGCTG CTACCGAACCTGGTGATA 324 0 315 0 232 +AACGGCGTAAAGGGTGGT AGCATAGTGGGGTATCTA 323 0 315 0 232 +AACGGCGTAAAGGGTGGT GGGGTATCTAATCCCAGT 323 0 315 0 232 +AACGGCGTAAAGGGTGGT CATAGTGGGGTATCTAAT 323 0 315 0 232 +AACGGCGTAAAGGGTGGT GCATAGTGGGGTATCTAA 323 0 315 0 232 +TGGTTTCAAGCCAGCCAC TTCTATAACGGGTGATGC 297 0 291 0 233 +AGTGACAGACCTACCGAA TGTTAAAGGGGCTGTACC 317 0 308 0 231 +AGACCTACCGAACCTGGT CCTTTGTTAAAGGGGCTG 321 0 312 0 231 +CCTTTGTTAAAGGGGCTG GTAGAAGTGACAGACCTA 321 0 312 0 231 +ACCTGGTGATAGCTGGTT TGTTAAAGGGGCTGTACC 323 0 314 0 231 +CCGAACCTGGTGATAGCT CCTTTGTTAAAGGGGCTG 323 0 314 0 231 +CCTTTGTTAAAGGGGCTG GAACCTGGTGATAGCTGG 323 0 314 0 231 +CCTTTGTTAAAGGGGCTG CGAACCTGGTGATAGCTG 323 0 314 0 231 +AACGGCGTAAAGGGTGGT GAGCATAGTGGGGTATCT 322 0 314 0 231 +AACGGCGTAAAGGGTGGT ATAGTGGGGTATCTAATC 322 0 314 0 231 +AACGGCGTAAAGGGTGGT TGGGGTATCTAATCCCAG 322 0 314 0 231 +AGTGACAGACCTACCGAA CCTTTGTTAAAGGGGCTG 316 0 307 0 230 +AAAGAGTGGGAAGAGCTC CCTTTGTTAAAGGGGCTG 317 0 308 0 230 +AAAAGAGTGGGAAGAGCT CCTTTGTTAAAGGGGCTG 317 0 308 0 230 +GACCTACCGAACCTGGTG TGTTAAAGGGGCTGTACC 320 0 311 0 230 +ACAGACCTACCGAACCTG TGTTAAAGGGGCTGTACC 320 0 311 0 230 +GAAGTGACAGACCTACCG TGTTAAAGGGGCTGTACC 320 0 311 0 230 +ACCTGGTGATAGCTGGTT CCTTTGTTAAAGGGGCTG 322 0 313 0 230 +CCTTTGTTAAAGGGGCTG GAAGTGACAGACCTACCG 319 0 310 0 229 +CCTTTGTTAAAGGGGCTG GACCTACCGAACCTGGTG 319 0 310 0 229 +GTGACAGACCTACCGAAC TGTTAAAGGGGCTGTACC 314 0 305 0 228 +AAAAGAGTGGGAAGAGCT AAGGGGCTGTACCCCCTT 315 0 306 0 228 +AAAAGAGTGGGAAGAGCT GTTAAAGGGGCTGTACCC 315 0 306 0 228 +GGTAGAAGTGACAGACCT TGTTAAAGGGGCTGTACC 318 0 309 0 228 +ACAGACCTACCGAACCTG CCTTTGTTAAAGGGGCTG 318 0 309 0 228 +AAAGAGTGGGAAGAGCTC AAGGGGCTGTACCCCCTT 314 0 305 0 227 +AAAGAGTGGGAAGAGCTC GTTAAAGGGGCTGTACCC 314 0 305 0 227 +CCTTTGTTAAAGGGGCTG GGTAGAAGTGACAGACCT 317 0 308 0 227 +ACCTACCGAACCTGGTGA GTTAAAGGGGCTGTACCC 317 0 308 0 227 +CTACCGAACCTGGTGATA GTTAAAGGGGCTGTACCC 319 0 310 0 227 +AACCTGGTGATAGCTGGT GTTAAAGGGGCTGTACCC 319 0 310 0 227 +CCTACCGAACCTGGTGAT GTTAAAGGGGCTGTACCC 319 0 310 0 227 +CGGGTAGAAGTGACAGAC TGTTAAAGGGGCTGTACC 314 0 306 0 227 +AGTGACAGACCTACCGAA GTTAAAGGGGCTGTACCC 312 0 303 0 226 +CCTTTGTTAAAGGGGCTG GTGACAGACCTACCGAAC 312 0 303 0 226 +AGACCTACCGAACCTGGT GTTAAAGGGGCTGTACCC 316 0 307 0 226 +AAGGGGCTGTACCCCCTT ACCTACCGAACCTGGTGA 316 0 307 0 226 +GTAGAAGTGACAGACCTA GTTAAAGGGGCTGTACCC 316 0 307 0 226 +AAGGGGCTGTACCCCCTT CCTACCGAACCTGGTGAT 318 0 309 0 226 +AACCTGGTGATAGCTGGT AAGGGGCTGTACCCCCTT 318 0 309 0 226 +GAACCTGGTGATAGCTGG GTTAAAGGGGCTGTACCC 318 0 309 0 226 +CGAACCTGGTGATAGCTG GTTAAAGGGGCTGTACCC 318 0 309 0 226 +CCGAACCTGGTGATAGCT GTTAAAGGGGCTGTACCC 318 0 309 0 226 +AAGGGGCTGTACCCCCTT CTACCGAACCTGGTGATA 318 0 309 0 226 +CCTTTGTTAAAGGGGCTG CGGGTAGAAGTGACAGAC 313 0 305 0 226 +AAGGGGCTGTACCCCCTT AGTGACAGACCTACCGAA 311 0 302 0 225 +AAGGGGCTGTACCCCCTT TCTCTGTGGCAAAAGAGT 312 0 303 0 225 +AAGGGGCTGTACCCCCTT CTCTGTGGCAAAAGAGTG 312 0 303 0 225 +AAGGGGCTGTACCCCCTT GTAGAAGTGACAGACCTA 315 0 306 0 225 +AAGGGGCTGTACCCCCTT AGACCTACCGAACCTGGT 315 0 306 0 225 +AAGGGGCTGTACCCCCTT CCGAACCTGGTGATAGCT 317 0 308 0 225 +ACCTGGTGATAGCTGGTT GTTAAAGGGGCTGTACCC 317 0 308 0 225 +AAGGGGCTGTACCCCCTT GAACCTGGTGATAGCTGG 317 0 308 0 225 +AAGGGGCTGTACCCCCTT CGAACCTGGTGATAGCTG 317 0 308 0 225 +AGAAGTGACAGACCTACC TGTTAAAGGGGCTGTACC 314 0 305 0 224 +GAAGTGACAGACCTACCG GTTAAAGGGGCTGTACCC 314 0 305 0 224 +AAGGGGCTGTACCCCCTT GAAGTGACAGACCTACCG 314 0 305 0 224 +TAGAAGTGACAGACCTAC TGTTAAAGGGGCTGTACC 314 0 305 0 224 +ACAGACCTACCGAACCTG GTTAAAGGGGCTGTACCC 314 0 305 0 224 +GACCTACCGAACCTGGTG GTTAAAGGGGCTGTACCC 314 0 305 0 224 +TGAGCCAAACAGCTAGCT TTCAGCTTTCCCTTGCGG 315 0 306 0 224 +TGAGCCAAACAGCTAGCT TTCTCTTTCAGCTTTCCC 315 0 306 0 224 +CAGCTTTCCCTTGCGGTA TGAGCCAAACAGCTAGCT 315 0 306 0 224 +TCAGCTTTCCCTTGCGGT TGAGCCAAACAGCTAGCT 315 0 306 0 224 +AAGGGGCTGTACCCCCTT ACCTGGTGATAGCTGGTT 316 0 307 0 224 +AAGGGGCTGTACCCCCTT GTCTCTGTGGCAAAAGAG 308 0 299 0 223 +TGTGGCAAAAGAGTGGGA TGTTAAAGGGGCTGTACC 308 0 299 0 223 +AGCCCCGAAGACAGAGGT TTAACAGCTAAGCGCTCA 313 0 304 0 223 +AGCCCCGAAGACAGAGGT TAACAGCTAAGCGCTCAA 313 0 304 0 223 +AGAAGTGACAGACCTACC CCTTTGTTAAAGGGGCTG 313 0 304 0 223 +CCTTTGTTAAAGGGGCTG TAGAAGTGACAGACCTAC 313 0 304 0 223 +AAGGGGCTGTACCCCCTT ACAGACCTACCGAACCTG 313 0 304 0 223 +AAGGGGCTGTACCCCCTT GACCTACCGAACCTGGTG 313 0 304 0 223 +TAACAGCTAAGCGCTCAA TAGCCCCGAAGACAGAGG 311 0 303 0 223 +GTAGCCCCGAAGACAGAG TAACAGCTAAGCGCTCAA 311 0 303 0 223 +TAGCCCCGAAGACAGAGG TTAACAGCTAAGCGCTCA 311 0 303 0 223 +GTAGCCCCGAAGACAGAG TTAACAGCTAAGCGCTCA 311 0 303 0 223 +GAGAAGACATCCATGCAA GCTTTCCCTTGCGGTACT 300 0 291 0 222 +GTGACAGACCTACCGAAC GTTAAAGGGGCTGTACCC 308 0 299 0 222 +AAGGGGCTGTACCCCCTT TCTGTGGCAAAAGAGTGG 309 0 300 0 222 +GCCCCGAAGACAGAGGTT TTAACAGCTAAGCGCTCA 312 0 303 0 222 +GCCCCGAAGACAGAGGTT TAACAGCTAAGCGCTCAA 312 0 303 0 222 +GGTAGAAGTGACAGACCT GTTAAAGGGGCTGTACCC 312 0 303 0 222 +GCTTTCCCTTGCGGTACT TGAGCCAAACAGCTAGCT 313 0 304 0 222 +AGCTTTCCCTTGCGGTAC TGAGCCAAACAGCTAGCT 313 0 304 0 222 +GAATAGAAGTTCAGCCTC TGTTAAAGGGGCTGTACC 316 0 307 0 222 +AAGGGGCTGTACCCCCTT GTGACAGACCTACCGAAC 307 0 298 0 221 +AAGGGGCTGTACCCCCTT GGTAGAAGTGACAGACCT 311 0 302 0 221 +CCTTTGTTAAAGGGGCTG GAATAGAAGTTCAGCCTC 315 0 306 0 221 +CGGGTAGAAGTGACAGAC GTTAAAGGGGCTGTACCC 308 0 300 0 221 +AACGGCGTAAAGGGTGGT GTGGGGTATCTAATCCCA 310 0 302 0 221 +TGAGCCAAACAGCTAGCT TTTCATTTCTCTTTCAGC 309 0 300 0 220 +AGCCCCGAAGACAGAGGT TAGTTAACAGCTAAGCGC 310 0 301 0 220 +ACCTTCGGTTGGGGCGAC GACTCTGGGAGAGGATTG 324 0 315 0 220 +ACCTTCGGTTGGGGCGAC ACTCTGGGAGAGGATTGC 324 0 315 0 220 +AAGGGGCTGTACCCCCTT CGGGTAGAAGTGACAGAC 307 0 299 0 220 +TAGCCCCGAAGACAGAGG TAGTTAACAGCTAAGCGC 308 0 300 0 220 +GTAGCCCCGAAGACAGAG TAGTTAACAGCTAAGCGC 308 0 300 0 220 +ACTCTTAGTTAACAGCTA GCCCCGAAGACAGAGGTT 308 0 299 0 219 +GCCCCGAAGACAGAGGTT TAGTTAACAGCTAAGCGC 309 0 300 0 219 +ACCTTCGGTTGGGGCGAC TCTGGGAGAGGATTGCGC 323 0 314 0 219 +ACCTTCGGTTGGGGCGAC CTCTGGGAGAGGATTGCG 323 0 314 0 219 +ACCTTCGGTTGGGGCGAC GGGAGAGGATTGCGCTGT 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC AGAGGATTGCGCTGTTAT 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC GAGGATTGCGCTGTTATC 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC AGGATTGCGCTGTTATCC 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC GGATTGCGCTGTTATCCC 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC GATTGCGCTGTTATCCCT 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC TAACTTGGTTCGTTGATC 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC CTGGGAGAGGATTGCGCT 324 0 315 0 219 +ACCTTCGGTTGGGGCGAC TGGGAGAGGATTGCGCTG 324 0 315 0 219 +AAGGGGCTGTACCCCCTT CGTCTCTGTGGCAAAAGA 303 0 294 0 218 +TCTGTGGCAAAAGAGTGG TGTTAAAGGGGCTGTACC 303 0 294 0 218 +CTTTTAGGCCCACTAGAA GAATAGAAGTTCAGCCTC 304 0 295 0 218 +AAGGGGCTGTACCCCCTT TGTGGCAAAAGAGTGGGA 305 0 296 0 218 +GTTAAAGGGGCTGTACCC TGTGGCAAAAGAGTGGGA 305 0 296 0 218 +GTTAAAGGGGCTGTACCC TAGAAGTGACAGACCTAC 308 0 299 0 218 +GTGATAGCTGGTTGCCTA TGTTAAAGGGGCTGTACC 308 0 299 0 218 +AGAAGTGACAGACCTACC GTTAAAGGGGCTGTACCC 308 0 299 0 218 +ACTCTGGGAGAGGATTGC TACCTTCGGTTGGGGCGA 322 0 313 0 218 +AACTTGGTTCGTTGATCG ACCTTCGGTTGGGGCGAC 323 0 314 0 218 +AAGGACCACTTTGATAGA CCGTCATGTTCGGGGTAT 324 0 315 0 218 +AAGGACCACTTTGATAGA CGTCATGTTCGGGGTATG 324 0 315 0 218 +AGGACCACTTTGATAGAG CGTCATGTTCGGGGTATG 324 0 315 0 218 +AAGGACCACTTTGATAGA ACCGTCATGTTCGGGGTA 324 0 315 0 218 +ACCGTCATGTTCGGGGTA AGGACCACTTTGATAGAG 324 0 315 0 218 +AGGACCACTTTGATAGAG CCGTCATGTTCGGGGTAT 324 0 315 0 218 +GCCAGCCACATAACCACT TTCTATAACGGGTGATGC 297 0 289 0 218 +AAGGGGCTGTACCCCCTT CCGTCTCTGTGGCAAAAG 302 0 293 0 217 +GCACAAAGGCATGGTCCC TATCACTGCTGAATTCCC 321 0 313 0 218 +TATCACTGCTGAATTCCC TGCACAAAGGCATGGTCC 321 0 313 0 218 +AAGGGGCTGTACCCCCTT TAGAAGTGACAGACCTAC 307 0 298 0 217 +AAGGGGCTGTACCCCCTT AGAAGTGACAGACCTACC 307 0 298 0 217 +CCTTTGTTAAAGGGGCTG GTGATAGCTGGTTGCCTA 307 0 298 0 217 +GCACAAAGGCATGGTCCC TTATCACTGCTGAATTCC 321 0 312 0 217 +CCTTCGGTTGGGGCGACC GACTCTGGGAGAGGATTG 321 0 312 0 217 +TCTGGGAGAGGATTGCGC TTTACCTTCGGTTGGGGC 321 0 312 0 217 +ACTCTGGGAGAGGATTGC CCTTCGGTTGGGGCGACC 321 0 312 0 217 +ACCTTCGGTTGGGGCGAC TGGACTCTGGGAGAGGAT 321 0 312 0 217 +ACCTTCGGTTGGGGCGAC GGACTCTGGGAGAGGATT 321 0 312 0 217 +CTCTGGGAGAGGATTGCG TACCTTCGGTTGGGGCGA 321 0 312 0 217 +TACCTTCGGTTGGGGCGA TCTGGGAGAGGATTGCGC 321 0 312 0 217 +CCTTCGGTTGGGGCGACC GGACTCTGGGAGAGGATT 321 0 312 0 217 +AATTCCCTTGGGGGTGTG GCACAAAGGCATGGTCCC 322 0 313 0 217 +TAACTTGGTTCGTTGATC TACCTTCGGTTGGGGCGA 322 0 313 0 217 +GATTGCGCTGTTATCCCT TACCTTCGGTTGGGGCGA 322 0 313 0 217 +GGATTGCGCTGTTATCCC TACCTTCGGTTGGGGCGA 322 0 313 0 217 +AGGATTGCGCTGTTATCC TACCTTCGGTTGGGGCGA 322 0 313 0 217 +GAGGATTGCGCTGTTATC TACCTTCGGTTGGGGCGA 322 0 313 0 217 +AGAGGATTGCGCTGTTAT TACCTTCGGTTGGGGCGA 322 0 313 0 217 +CTGGGAGAGGATTGCGCT TTTACCTTCGGTTGGGGC 322 0 313 0 217 +TGGGAGAGGATTGCGCTG TTTACCTTCGGTTGGGGC 322 0 313 0 217 +GGGAGAGGATTGCGCTGT TTTACCTTCGGTTGGGGC 322 0 313 0 217 +AGAGGATTGCGCTGTTAT TTTACCTTCGGTTGGGGC 322 0 313 0 217 +GAGGATTGCGCTGTTATC TTTACCTTCGGTTGGGGC 322 0 313 0 217 +AGGATTGCGCTGTTATCC TTTACCTTCGGTTGGGGC 322 0 313 0 217 +GGATTGCGCTGTTATCCC TTTACCTTCGGTTGGGGC 322 0 313 0 217 +GATTGCGCTGTTATCCCT TTTACCTTCGGTTGGGGC 322 0 313 0 217 +GGGAGAGGATTGCGCTGT TACCTTCGGTTGGGGCGA 322 0 313 0 217 +TAACTTGGTTCGTTGATC TTTACCTTCGGTTGGGGC 322 0 313 0 217 +TACCTTCGGTTGGGGCGA TGGGAGAGGATTGCGCTG 322 0 313 0 217 +CTGGGAGAGGATTGCGCT TACCTTCGGTTGGGGCGA 322 0 313 0 217 +AATTCCCTTGGGGGTGTG TGCACAAAGGCATGGTCC 322 0 313 0 217 +CTCTGTGGCAAAAGAGTG GTTAAAGGGGCTGTACCC 301 0 292 0 216 +CTGTGGCAAAAGAGTGGG TGTTAAAGGGGCTGTACC 301 0 292 0 216 +GTTAAAGGGGCTGTACCC TCTGTGGCAAAAGAGTGG 301 0 292 0 216 +AAGGGGCTGTACCCCCTT CTGTGGCAAAAGAGTGGG 303 0 294 0 216 +GCACAAAGGCATGGTCCC GCTGAATTCCCTTGGGGG 321 0 313 0 217 +GAATTCCCTTGGGGGTGT TGCACAAAGGCATGGTCC 321 0 313 0 217 +GCTGAATTCCCTTGGGGG TGCACAAAGGCATGGTCC 321 0 313 0 217 +GAATTCCCTTGGGGGTGT GCACAAAGGCATGGTCCC 321 0 313 0 217 +GAATAGAAGTTCAGCCTC GTTAAAGGGGCTGTACCC 310 0 301 0 216 +CCTTCGGTTGGGGCGACC TCTGGGAGAGGATTGCGC 320 0 311 0 216 +TGCACAAAGGCATGGTCC TTATCACTGCTGAATTCC 320 0 311 0 216 +CCTTCGGTTGGGGCGACC CTCTGGGAGAGGATTGCG 320 0 311 0 216 +CCTTCGGTTGGGGCGACC CTGGGAGAGGATTGCGCT 321 0 312 0 216 +CCTTCGGTTGGGGCGACC TGGGAGAGGATTGCGCTG 321 0 312 0 216 +AACTTGGTTCGTTGATCG TTTACCTTCGGTTGGGGC 321 0 312 0 216 +AACTTGGTTCGTTGATCG TACCTTCGGTTGGGGCGA 321 0 312 0 216 +CCTTCGGTTGGGGCGACC GGGAGAGGATTGCGCTGT 321 0 312 0 216 +AACTTGGTTCGTTGATCG CCTTCGGTTGGGGCGACC 321 0 312 0 216 +CCTTCGGTTGGGGCGACC TAACTTGGTTCGTTGATC 321 0 312 0 216 +CTGCTGAATTCCCTTGGG GCACAAAGGCATGGTCCC 321 0 312 0 216 +CCTTCGGTTGGGGCGACC GATTGCGCTGTTATCCCT 321 0 312 0 216 +CCTTCGGTTGGGGCGACC GGATTGCGCTGTTATCCC 321 0 312 0 216 +CTGCTGAATTCCCTTGGG TGCACAAAGGCATGGTCC 321 0 312 0 216 +AGGATTGCGCTGTTATCC CCTTCGGTTGGGGCGACC 321 0 312 0 216 +CCTTCGGTTGGGGCGACC GAGGATTGCGCTGTTATC 321 0 312 0 216 +AGAGGATTGCGCTGTTAT CCTTCGGTTGGGGCGACC 321 0 312 0 216 +ATGGACTCTGGGAGAGGA CGGTTGGGGCGACCACGG 325 0 316 0 216 +CGGTTGGGGCGACCACGG TATGGACTCTGGGAGAGG 325 0 316 0 216 +ACTCTGGGAGAGGATTGC CGGTTGGGGCGACCACGG 325 0 316 0 216 +CGGTTGGGGCGACCACGG GACTCTGGGAGAGGATTG 325 0 316 0 216 +CGGTTGGGGCGACCACGG GGACTCTGGGAGAGGATT 325 0 316 0 216 +CGGTTGGGGCGACCACGG TGGACTCTGGGAGAGGAT 325 0 316 0 216 +CTGTGGCAAAAGAGTGGG GTTAAAGGGGCTGTACCC 300 0 291 0 215 +CTGGTGATAGCTGGTTGC TGTTAAAGGGGCTGTACC 303 0 294 0 215 +GTGATAGCTGGTTGCCTA GTTAAAGGGGCTGTACCC 305 0 296 0 215 +AAGGGGCTGTACCCCCTT GAATAGAAGTTCAGCCTC 309 0 300 0 215 +CTCTGGGAGAGGATTGCG TTACCTTCGGTTGGGGCG 319 0 310 0 215 +GGACTCTGGGAGAGGATT TACCTTCGGTTGGGGCGA 319 0 310 0 215 +ACTCTGGGAGAGGATTGC TTTACCTTCGGTTGGGGC 319 0 310 0 215 +TCTGGGAGAGGATTGCGC TTACCTTCGGTTGGGGCG 319 0 310 0 215 +GACTCTGGGAGAGGATTG TACCTTCGGTTGGGGCGA 319 0 310 0 215 +GGGAGAGGATTGCGCTGT TTTTACCTTCGGTTGGGG 320 0 311 0 215 +TGGGAGAGGATTGCGCTG TTTTACCTTCGGTTGGGG 320 0 311 0 215 +CTGGGAGAGGATTGCGCT TTTTACCTTCGGTTGGGG 320 0 311 0 215 +TAACTTGGTTCGTTGATC TTACCTTCGGTTGGGGCG 320 0 311 0 215 +GAGGATTGCGCTGTTATC TTTTACCTTCGGTTGGGG 320 0 311 0 215 +TAACTTGGTTCGTTGATC TTTTACCTTCGGTTGGGG 320 0 311 0 215 +AGGATTGCGCTGTTATCC TTTTACCTTCGGTTGGGG 320 0 311 0 215 +CTGGGAGAGGATTGCGCT TTACCTTCGGTTGGGGCG 320 0 311 0 215 +TGGGAGAGGATTGCGCTG TTACCTTCGGTTGGGGCG 320 0 311 0 215 +GGATTGCGCTGTTATCCC TTTTACCTTCGGTTGGGG 320 0 311 0 215 +GGGAGAGGATTGCGCTGT TTACCTTCGGTTGGGGCG 320 0 311 0 215 +AGAGGATTGCGCTGTTAT TTACCTTCGGTTGGGGCG 320 0 311 0 215 +GGATTGCGCTGTTATCCC TTACCTTCGGTTGGGGCG 320 0 311 0 215 +GATTGCGCTGTTATCCCT TTTTACCTTCGGTTGGGG 320 0 311 0 215 +GAGGATTGCGCTGTTATC TTACCTTCGGTTGGGGCG 320 0 311 0 215 +AGGATTGCGCTGTTATCC TTACCTTCGGTTGGGGCG 320 0 311 0 215 +GATTGCGCTGTTATCCCT TTACCTTCGGTTGGGGCG 320 0 311 0 215 +AGAGGATTGCGCTGTTAT TTTTACCTTCGGTTGGGG 320 0 311 0 215 +CGTCATGTTCGGGGTATG GACCACTTTGATAGAGTG 321 0 312 0 215 +CCGTCATGTTCGGGGTAT GACCACTTTGATAGAGTG 321 0 312 0 215 +ACCGTCATGTTCGGGGTA GACCACTTTGATAGAGTG 321 0 312 0 215 +GGTTGGGGCGACCACGGA TATGGACTCTGGGAGAGG 324 0 315 0 215 +CGCCGTCGTCAGCTTACC TTACTACTAAATCCTCCT 324 0 315 0 215 +CGGTTGGGGCGACCACGG TCTGGGAGAGGATTGCGC 324 0 315 0 215 +CGGTTGGGGCGACCACGG CTCTGGGAGAGGATTGCG 324 0 315 0 215 +ACTCTGGGAGAGGATTGC GGTTGGGGCGACCACGGA 324 0 315 0 215 +GACTCTGGGAGAGGATTG GGTTGGGGCGACCACGGA 324 0 315 0 215 +GGACTCTGGGAGAGGATT GGTTGGGGCGACCACGGA 324 0 315 0 215 +GGTTGGGGCGACCACGGA TGGACTCTGGGAGAGGAT 324 0 315 0 215 +ATGGACTCTGGGAGAGGA GGTTGGGGCGACCACGGA 324 0 315 0 215 +CGGTTGGGGCGACCACGG GATTGCGCTGTTATCCCT 325 0 316 0 215 +CGGTTGGGGCGACCACGG TAACTTGGTTCGTTGATC 325 0 316 0 215 +AGGATTGCGCTGTTATCC CGGTTGGGGCGACCACGG 325 0 316 0 215 +CGGTTGGGGCGACCACGG GAGGATTGCGCTGTTATC 325 0 316 0 215 +AGAGGATTGCGCTGTTAT CGGTTGGGGCGACCACGG 325 0 316 0 215 +CGGTTGGGGCGACCACGG GGGAGAGGATTGCGCTGT 325 0 316 0 215 +CGGTTGGGGCGACCACGG TGGGAGAGGATTGCGCTG 325 0 316 0 215 +CGGTTGGGGCGACCACGG CTGGGAGAGGATTGCGCT 325 0 316 0 215 +CGGTTGGGGCGACCACGG GGATTGCGCTGTTATCCC 325 0 316 0 215 +CTCTGTGGCAAAAGAGTG TGTTAAAGGGGCTGTACC 297 0 288 0 214 +CCTTTGTTAAAGGGGCTG CTGGTGATAGCTGGTTGC 302 0 293 0 214 +CCTGGTGATAGCTGGTTG TGTTAAAGGGGCTGTACC 302 0 293 0 214 +AAGGGGCTGTACCCCCTT GTGATAGCTGGTTGCCTA 304 0 295 0 214 +ATTCCCTTGGGGGTGTGG TGCACAAAGGCATGGTCC 320 0 312 0 215 +ATTCCCTTGGGGGTGTGG GCACAAAGGCATGGTCCC 320 0 312 0 215 +AGCCAGCCACATAACCAC TTCTATAACGGGTGATGC 293 0 286 0 215 +CTCTGGGAGAGGATTGCG TTTACCTTCGGTTGGGGC 318 0 309 0 214 +CCTTCGGTTGGGGCGACC TGGACTCTGGGAGAGGAT 318 0 309 0 214 +ATGGACTCTGGGAGAGGA CCTTCGGTTGGGGCGACC 318 0 309 0 214 +ACTGCTGAATTCCCTTGG TGCACAAAGGCATGGTCC 318 0 309 0 214 +AACTTGGTTCGTTGATCG TTTTACCTTCGGTTGGGG 319 0 310 0 214 +CGATATGGACTCTGGGAG GTTGGGGCGACCACGGAG 319 0 310 0 214 +ACCTTCGGTTGGGGCGAC CCTAGGGTAACTTGGTTC 319 0 310 0 214 +AACTTGGTTCGTTGATCG TTACCTTCGGTTGGGGCG 319 0 310 0 214 +CGATATGGACTCTGGGAG CGGTTGGGGCGACCACGG 321 0 312 0 214 +GGTTGGGGCGACCACGGA TCTGGGAGAGGATTGCGC 323 0 314 0 214 +CTCTGGGAGAGGATTGCG GGTTGGGGCGACCACGGA 323 0 314 0 214 +GGTTGGGGCGACCACGGA TGGGAGAGGATTGCGCTG 324 0 315 0 214 +GGTTGGGGCGACCACGGA TAACTTGGTTCGTTGATC 324 0 315 0 214 +AACTTGGTTCGTTGATCG CGGTTGGGGCGACCACGG 324 0 315 0 214 +GGGAGAGGATTGCGCTGT GGTTGGGGCGACCACGGA 324 0 315 0 214 +CTGGGAGAGGATTGCGCT GGTTGGGGCGACCACGGA 324 0 315 0 214 +AGAGGATTGCGCTGTTAT GGTTGGGGCGACCACGGA 324 0 315 0 214 +GAGGATTGCGCTGTTATC GGTTGGGGCGACCACGGA 324 0 315 0 214 +AGGATTGCGCTGTTATCC GGTTGGGGCGACCACGGA 324 0 315 0 214 +GGATTGCGCTGTTATCCC GGTTGGGGCGACCACGGA 324 0 315 0 214 +GATTGCGCTGTTATCCCT GGTTGGGGCGACCACGGA 324 0 315 0 214 +CCTGGTGATAGCTGGTTG CCTTTGTTAAAGGGGCTG 301 0 292 0 213 +CACTGCTGAATTCCCTTG TGCACAAAGGCATGGTCC 317 0 309 0 214 +ACCTTCGGTTGGGGCGAC GTAACTTGGTTCGTTGAT 314 0 305 0 213 +ACTGCTGAATTCCCTTGG GCACAAAGGCATGGTCCC 317 0 308 0 213 +ACTCTGGGAGAGGATTGC TTACCTTCGGTTGGGGCG 317 0 308 0 213 +GACTCTGGGAGAGGATTG TTACCTTCGGTTGGGGCG 317 0 308 0 213 +AAGGACCACTTTGATAGA TCATGTTCGGGGTATGGG 319 0 310 0 213 +AGGACCACTTTGATAGAG TCATGTTCGGGGTATGGG 319 0 310 0 213 +GTTGGGGCGACCACGGAG TGGACTCTGGGAGAGGAT 320 0 311 0 213 +GTTGGGGCGACCACGGAG TATGGACTCTGGGAGAGG 320 0 311 0 213 +ATGGACTCTGGGAGAGGA GTTGGGGCGACCACGGAG 320 0 311 0 213 +CGATATGGACTCTGGGAG GGTTGGGGCGACCACGGA 320 0 311 0 213 +GACTCTGGGAGAGGATTG GTTGGGGCGACCACGGAG 320 0 311 0 213 +ACTCTGGGAGAGGATTGC GTTGGGGCGACCACGGAG 320 0 311 0 213 +GGACTCTGGGAGAGGATT GTTGGGGCGACCACGGAG 320 0 311 0 213 +AAGGACCACTTTGATAGA GGGGTATGGGCCCGAAAG 321 0 312 0 213 +AGGACCACTTTGATAGAG GGGGTATGGGCCCGAAAG 321 0 312 0 213 +AAGGACCACTTTGATAGA GGGTATGGGCCCGAAAGC 322 0 313 0 213 +AGGACCACTTTGATAGAG GGGTATGGGCCCGAAAGC 322 0 313 0 213 +AGGACCACTTTGATAGAG GTATGGGCCCGAAAGCTT 322 0 313 0 213 +AAGGACCACTTTGATAGA GTATGGGCCCGAAAGCTT 322 0 313 0 213 +TCGTCAGCTTACCCTGTG TTACTACTAAATCCTCCT 323 0 314 0 213 +AACTTGGTTCGTTGATCG GGTTGGGGCGACCACGGA 323 0 314 0 213 +CGTCAGCTTACCCTGTGA TTACTACTAAATCCTCCT 323 0 314 0 213 +ATCACTGCTGAATTCCCT GCACAAAGGCATGGTCCC 317 0 310 0 214 +ATCACTGCTGAATTCCCT TGCACAAAGGCATGGTCC 317 0 310 0 214 +GCACAAAGGCATGGTCCC TCACTGCTGAATTCCCTT 317 0 310 0 214 +TCACTGCTGAATTCCCTT TGCACAAAGGCATGGTCC 317 0 310 0 214 +CACTGCTGAATTCCCTTG GCACAAAGGCATGGTCCC 316 0 308 0 213 +TGCACAAAGGCATGGTCC TTCCCTTGGGGGTGTGGC 318 0 310 0 213 +GCACAAAGGCATGGTCCC TTCCCTTGGGGGTGTGGC 318 0 310 0 213 +TCCGGGTAGAAGTGACAG TGTTAAAGGGGCTGTACC 294 0 288 0 214 +CCGGGTAGAAGTGACAGA TGTTAAAGGGGCTGTACC 294 0 288 0 214 +AGGCATGGTCCCGACCTT TATCACTGCTGAATTCCC 321 0 313 0 213 +AAAGGCATGGTCCCGACC TATCACTGCTGAATTCCC 321 0 313 0 213 +AAGGCATGGTCCCGACCT TATCACTGCTGAATTCCC 321 0 313 0 213 +GTAACTTGGTTCGTTGAT TACCTTCGGTTGGGGCGA 313 0 304 0 212 +TCTGGGAGAGGATTGCGC TTTTACCTTCGGTTGGGG 316 0 307 0 212 +CTCTGGGAGAGGATTGCG TTTTACCTTCGGTTGGGG 316 0 307 0 212 +CCTAGGGTAACTTGGTTC TACCTTCGGTTGGGGCGA 317 0 308 0 212 +CCTAGGGTAACTTGGTTC TTTACCTTCGGTTGGGGC 317 0 308 0 212 +GTTGGGGCGACCACGGAG TCTGGGAGAGGATTGCGC 319 0 310 0 212 +CTCTGGGAGAGGATTGCG GTTGGGGCGACCACGGAG 319 0 310 0 212 +GGATTGCGCTGTTATCCC GTTGGGGCGACCACGGAG 320 0 311 0 212 +GGGAGAGGATTGCGCTGT GTTGGGGCGACCACGGAG 320 0 311 0 212 +GTTGGGGCGACCACGGAG TGGGAGAGGATTGCGCTG 320 0 311 0 212 +GTTGGGGCGACCACGGAG TAACTTGGTTCGTTGATC 320 0 311 0 212 +CTGGGAGAGGATTGCGCT GTTGGGGCGACCACGGAG 320 0 311 0 212 +AGAGGATTGCGCTGTTAT GTTGGGGCGACCACGGAG 320 0 311 0 212 +GAGGATTGCGCTGTTATC GTTGGGGCGACCACGGAG 320 0 311 0 212 +AGGATTGCGCTGTTATCC GTTGGGGCGACCACGGAG 320 0 311 0 212 +GATTGCGCTGTTATCCCT GTTGGGGCGACCACGGAG 320 0 311 0 212 +AGCCTATATACCGCCGTC TTACTACTAAATCCTCCT 321 0 312 0 212 +AGGCATGGTCCCGACCTT TTATCACTGCTGAATTCC 321 0 312 0 212 +GCCTATATACCGCCGTCG TTACTACTAAATCCTCCT 321 0 312 0 212 +AAAGGCATGGTCCCGACC TTATCACTGCTGAATTCC 321 0 312 0 212 +AAGGCATGGTCCCGACCT TTATCACTGCTGAATTCC 321 0 312 0 212 +AAAGGCATGGTCCCGACC AATTCCCTTGGGGGTGTG 322 0 313 0 212 +AAGGCATGGTCCCGACCT AATTCCCTTGGGGGTGTG 322 0 313 0 212 +AATTCCCTTGGGGGTGTG AGGCATGGTCCCGACCTT 322 0 313 0 212 +ACAAGACGAGAAGACCCT GTGGTCGCCCCAACCGAA 325 0 316 0 212 +CCTCCGTGGTCGCCCCAA CGAGAAGACCCTTTGGAG 325 0 316 0 212 +CGAGAAGACCCTTTGGAG CTCCGTGGTCGCCCCAAC 325 0 316 0 212 +CGAGAAGACCCTTTGGAG CGTGGTCGCCCCAACCGA 325 0 316 0 212 +CGAGAAGACCCTTTGGAG GTGGTCGCCCCAACCGAA 325 0 316 0 212 +ACGAGAAGACCCTTTGGA CCTCCGTGGTCGCCCCAA 325 0 316 0 212 +ACGAGAAGACCCTTTGGA CTCCGTGGTCGCCCCAAC 325 0 316 0 212 +ACGAGAAGACCCTTTGGA CGTGGTCGCCCCAACCGA 325 0 316 0 212 +ACGAGAAGACCCTTTGGA GTGGTCGCCCCAACCGAA 325 0 316 0 212 +ACAAGACGAGAAGACCCT CCTCCGTGGTCGCCCCAA 325 0 316 0 212 +ACAAGACGAGAAGACCCT CTCCGTGGTCGCCCCAAC 325 0 316 0 212 +ACAAGACGAGAAGACCCT CGTGGTCGCCCCAACCGA 325 0 316 0 212 +CCTCCGTGGTCGCCCCAA TACAAGACGAGAAGACCC 325 0 316 0 212 +CTCCGTGGTCGCCCCAAC TACAAGACGAGAAGACCC 325 0 316 0 212 +CGTGGTCGCCCCAACCGA TACAAGACGAGAAGACCC 325 0 316 0 212 +GTGGTCGCCCCAACCGAA TACAAGACGAGAAGACCC 325 0 316 0 212 +CCTCCGTGGTCGCCCCAA GAGAAGACCCTTTGGAGC 325 0 316 0 212 +ATACAAGACGAGAAGACC CCTCCGTGGTCGCCCCAA 325 0 316 0 212 +ATACAAGACGAGAAGACC CTCCGTGGTCGCCCCAAC 325 0 316 0 212 +ATACAAGACGAGAAGACC CGTGGTCGCCCCAACCGA 325 0 316 0 212 +ATACAAGACGAGAAGACC GTGGTCGCCCCAACCGAA 325 0 316 0 212 +AGAAGACCCTTTGGAGCT GTGGTCGCCCCAACCGAA 325 0 316 0 212 +AGAAGACCCTTTGGAGCT CGTGGTCGCCCCAACCGA 325 0 316 0 212 +AGAAGACCCTTTGGAGCT CTCCGTGGTCGCCCCAAC 325 0 316 0 212 +AGAAGACCCTTTGGAGCT CCTCCGTGGTCGCCCCAA 325 0 316 0 212 +GAAGACCCTTTGGAGCTT GTGGTCGCCCCAACCGAA 325 0 316 0 212 +CGTGGTCGCCCCAACCGA GAAGACCCTTTGGAGCTT 325 0 316 0 212 +CTCCGTGGTCGCCCCAAC GAAGACCCTTTGGAGCTT 325 0 316 0 212 +CCTCCGTGGTCGCCCCAA GAAGACCCTTTGGAGCTT 325 0 316 0 212 +CTCCGTGGTCGCCCCAAC GAGAAGACCCTTTGGAGC 325 0 316 0 212 +CGTGGTCGCCCCAACCGA GAGAAGACCCTTTGGAGC 325 0 316 0 212 +GAGAAGACCCTTTGGAGC GTGGTCGCCCCAACCGAA 325 0 316 0 212 +ACTCTTAGTTAACAGCTA AGCCCCGAAGACAGAGGT 300 0 291 0 211 +CCTTTGTTAAAGGGGCTG TCCGGGTAGAAGTGACAG 293 0 287 0 213 +CCGGGTAGAAGTGACAGA CCTTTGTTAAAGGGGCTG 293 0 287 0 213 +AAGGCATGGTCCCGACCT GAATTCCCTTGGGGGTGT 321 0 313 0 212 +AGGCATGGTCCCGACCTT GCTGAATTCCCTTGGGGG 321 0 313 0 212 +AGGCATGGTCCCGACCTT GAATTCCCTTGGGGGTGT 321 0 313 0 212 +AAAGGCATGGTCCCGACC GCTGAATTCCCTTGGGGG 321 0 313 0 212 +AAAGGCATGGTCCCGACC GAATTCCCTTGGGGGTGT 321 0 313 0 212 +AAGGCATGGTCCCGACCT GCTGAATTCCCTTGGGGG 321 0 313 0 212 +GTAACTTGGTTCGTTGAT TTTACCTTCGGTTGGGGC 312 0 303 0 211 +CCTAGGGTAACTTGGTTC CCTTCGGTTGGGGCGACC 316 0 307 0 211 +GACCACTTTGATAGAGTG TCATGTTCGGGGTATGGG 317 0 308 0 211 +GGTTGGGGCGACCACGGA TCGATATGGACTCTGGGA 318 0 309 0 211 +AACTTGGTTCGTTGATCG GTTGGGGCGACCACGGAG 319 0 310 0 211 +AGGACCACTTTGATAGAG GGTATGGGCCCGAAAGCT 320 0 311 0 211 +AAGGACCACTTTGATAGA GGTATGGGCCCGAAAGCT 320 0 311 0 211 +AAGGCATGGTCCCGACCT CTGCTGAATTCCCTTGGG 321 0 312 0 211 +AAAGGCATGGTCCCGACC CTGCTGAATTCCCTTGGG 321 0 312 0 211 +AGGCATGGTCCCGACCTT CTGCTGAATTCCCTTGGG 321 0 312 0 211 +TACAAGACGAGAAGACCC TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +TACAAGACGAGAAGACCC TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +ACCCTTTGGAGCTTAAGG CCTCCGTGGTCGCCCCAA 324 0 315 0 211 +ACCCTTTGGAGCTTAAGG CTCCGTGGTCGCCCCAAC 324 0 315 0 211 +ACCCTTTGGAGCTTAAGG CGTGGTCGCCCCAACCGA 324 0 315 0 211 +ACCCTTTGGAGCTTAAGG GTGGTCGCCCCAACCGAA 324 0 315 0 211 +CCTCCGTGGTCGCCCCAA GACCCTTTGGAGCTTAAG 324 0 315 0 211 +CTCCGTGGTCGCCCCAAC GACCCTTTGGAGCTTAAG 324 0 315 0 211 +CGTGGTCGCCCCAACCGA GACCCTTTGGAGCTTAAG 324 0 315 0 211 +GACCCTTTGGAGCTTAAG GTGGTCGCCCCAACCGAA 324 0 315 0 211 +GAAGACCCTTTGGAGCTT TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +GAAGACCCTTTGGAGCTT TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +AGGGCTTAGGCCTTTCGC TTTTCCTAGTACGAAAGG 324 0 315 0 211 +GGGCTTAGGCCTTTCGCA TTTTCCTAGTACGAAAGG 324 0 315 0 211 +AGAAGACCCTTTGGAGCT TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +AGAAGACCCTTTGGAGCT TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +GAGAAGACCCTTTGGAGC TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +GAGAAGACCCTTTGGAGC TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +ATACAAGACGAGAAGACC TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +ATACAAGACGAGAAGACC TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +CGAGAAGACCCTTTGGAG TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +ACAAGACGAGAAGACCCT TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +ACAAGACGAGAAGACCCT TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +ACGAGAAGACCCTTTGGA TCCTCCGTGGTCGCCCCA 324 0 315 0 211 +CGAGAAGACCCTTTGGAG TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +ACGAGAAGACCCTTTGGA TTCCTCCGTGGTCGCCCC 324 0 315 0 211 +TAACAGCTAAGCGCTCAA TGGGTTGTAGCCCCGAAG 299 0 291 0 211 +ACCTTCGGTTGGGGCGAC GGGTAACTTGGTTCGTTG 309 0 300 0 210 +CCTTCGGTTGGGGCGACC GTAACTTGGTTCGTTGAT 311 0 302 0 210 +GTAACTTGGTTCGTTGAT TTACCTTCGGTTGGGGCG 311 0 302 0 210 +CCTAGGGTAACTTGGTTC TTTTACCTTCGGTTGGGG 315 0 306 0 210 +CCTAGGGTAACTTGGTTC TTACCTTCGGTTGGGGCG 315 0 306 0 210 +CCTAGGGTAACTTGGTTC CGGTTGGGGCGACCACGG 320 0 311 0 210 +ATACAAGACGAGAAGACC TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +ATACAAGACGAGAAGACC GGTCGCCCCAACCGAAGG 323 0 314 0 210 +ATACAAGACGAGAAGACC TGGTCGCCCCAACCGAAG 323 0 314 0 210 +GGTCGCCCCAACCGAAGG TACAAGACGAGAAGACCC 323 0 314 0 210 +TACAAGACGAGAAGACCC TGGTCGCCCCAACCGAAG 323 0 314 0 210 +TACAAGACGAGAAGACCC TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +ACAAGACGAGAAGACCCT GGTCGCCCCAACCGAAGG 323 0 314 0 210 +ACAAGACGAGAAGACCCT TGGTCGCCCCAACCGAAG 323 0 314 0 210 +ACAAGACGAGAAGACCCT TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +GACGAGAAGACCCTTTGG GTGGTCGCCCCAACCGAA 323 0 314 0 210 +CGTGGTCGCCCCAACCGA GACGAGAAGACCCTTTGG 323 0 314 0 210 +CTCCGTGGTCGCCCCAAC GACGAGAAGACCCTTTGG 323 0 314 0 210 +CCTCCGTGGTCGCCCCAA GACGAGAAGACCCTTTGG 323 0 314 0 210 +ACGAGAAGACCCTTTGGA GGTCGCCCCAACCGAAGG 323 0 314 0 210 +ACGAGAAGACCCTTTGGA TGGTCGCCCCAACCGAAG 323 0 314 0 210 +ACGAGAAGACCCTTTGGA TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +CGAGAAGACCCTTTGGAG GGTCGCCCCAACCGAAGG 323 0 314 0 210 +CGAGAAGACCCTTTGGAG TGGTCGCCCCAACCGAAG 323 0 314 0 210 +CGAGAAGACCCTTTGGAG TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +GAGAAGACCCTTTGGAGC GGTCGCCCCAACCGAAGG 323 0 314 0 210 +GAGAAGACCCTTTGGAGC TGGTCGCCCCAACCGAAG 323 0 314 0 210 +GAGAAGACCCTTTGGAGC TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +AGAAGACCCTTTGGAGCT GGTCGCCCCAACCGAAGG 323 0 314 0 210 +AGAAGACCCTTTGGAGCT TGGTCGCCCCAACCGAAG 323 0 314 0 210 +AGAAGACCCTTTGGAGCT TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +GAAGACCCTTTGGAGCTT GGTCGCCCCAACCGAAGG 323 0 314 0 210 +GAAGACCCTTTGGAGCTT TGGTCGCCCCAACCGAAG 323 0 314 0 210 +GAAGACCCTTTGGAGCTT TTTCCTCCGTGGTCGCCC 323 0 314 0 210 +GACCCTTTGGAGCTTAAG GGTCGCCCCAACCGAAGG 323 0 314 0 210 +GACCCTTTGGAGCTTAAG TGGTCGCCCCAACCGAAG 323 0 314 0 210 +GACCCTTTGGAGCTTAAG TCCTCCGTGGTCGCCCCA 323 0 314 0 210 +GACCCTTTGGAGCTTAAG TTCCTCCGTGGTCGCCCC 323 0 314 0 210 +ACCCTTTGGAGCTTAAGG GGTCGCCCCAACCGAAGG 323 0 314 0 210 +ACCCTTTGGAGCTTAAGG TGGTCGCCCCAACCGAAG 323 0 314 0 210 +ACCCTTTGGAGCTTAAGG TCCTCCGTGGTCGCCCCA 323 0 314 0 210 +ACCCTTTGGAGCTTAAGG TTCCTCCGTGGTCGCCCC 323 0 314 0 210 +CTGGTGATAGCTGGTTGC GTTAAAGGGGCTGTACCC 297 0 288 0 209 +TGAATTCCCTTGGGGGTG TGCACAAAGGCATGGTCC 314 0 306 0 210 +CTGAATTCCCTTGGGGGT TGCACAAAGGCATGGTCC 314 0 306 0 210 +AAAGGCATGGTCCCGACC ATTCCCTTGGGGGTGTGG 320 0 312 0 210 +AGGCATGGTCCCGACCTT ATTCCCTTGGGGGTGTGG 320 0 312 0 210 +AAGGCATGGTCCCGACCT ATTCCCTTGGGGGTGTGG 320 0 312 0 210 +GGGTAACTTGGTTCGTTG TACCTTCGGTTGGGGCGA 308 0 299 0 209 +GTAACTTGGTTCGTTGAT TTTTACCTTCGGTTGGGG 310 0 301 0 209 +GTTGGGGCGACCACGGAG TCGATATGGACTCTGGGA 314 0 305 0 209 +ACCACTTTGATAGAGTGA CCGTCATGTTCGGGGTAT 315 0 306 0 209 +CGGTTGGGGCGACCACGG GTAACTTGGTTCGTTGAT 315 0 306 0 209 +ACCACTTTGATAGAGTGA CGTCATGTTCGGGGTATG 315 0 306 0 209 +ACCACTTTGATAGAGTGA ACCGTCATGTTCGGGGTA 315 0 306 0 209 +GACCACTTTGATAGAGTG GGGGTATGGGCCCGAAAG 317 0 308 0 209 +GACCACTTTGATAGAGTG GGGTATGGGCCCGAAAGC 318 0 309 0 209 +GACCACTTTGATAGAGTG GTATGGGCCCGAAAGCTT 318 0 309 0 209 +CCTAGGGTAACTTGGTTC GGTTGGGGCGACCACGGA 319 0 310 0 209 +ATACAAGACGAGAAGACC TCCGTGGTCGCCCCAACC 322 0 313 0 209 +GACGAGAAGACCCTTTGG GGTCGCCCCAACCGAAGG 322 0 313 0 209 +GACCCTTTGGAGCTTAAG TTTCCTCCGTGGTCGCCC 322 0 313 0 209 +TACAAGACGAGAAGACCC TCCGTGGTCGCCCCAACC 322 0 313 0 209 +AGACCCTTTGGAGCTTAA CCTCCGTGGTCGCCCCAA 322 0 313 0 209 +AGACCCTTTGGAGCTTAA CTCCGTGGTCGCCCCAAC 322 0 313 0 209 +AGACCCTTTGGAGCTTAA CGTGGTCGCCCCAACCGA 322 0 313 0 209 +AGACCCTTTGGAGCTTAA GTGGTCGCCCCAACCGAA 322 0 313 0 209 +AAGACCCTTTGGAGCTTA CCTCCGTGGTCGCCCCAA 322 0 313 0 209 +AAGACCCTTTGGAGCTTA CTCCGTGGTCGCCCCAAC 322 0 313 0 209 +AAGACCCTTTGGAGCTTA CGTGGTCGCCCCAACCGA 322 0 313 0 209 +AAGACCCTTTGGAGCTTA GTGGTCGCCCCAACCGAA 322 0 313 0 209 +GAAGACCCTTTGGAGCTT TCCGTGGTCGCCCCAACC 322 0 313 0 209 +CCGTGGTCGCCCCAACCG GAAGACCCTTTGGAGCTT 322 0 313 0 209 +TAAAAGGGCTTAGGCCTT TTTTCCTAGTACGAAAGG 322 0 313 0 209 +ACCCTTTGGAGCTTAAGG TTTCCTCCGTGGTCGCCC 322 0 313 0 209 +AGAAGACCCTTTGGAGCT TCCGTGGTCGCCCCAACC 322 0 313 0 209 +ACAAGACGAGAAGACCCT CCGTGGTCGCCCCAACCG 322 0 313 0 209 +ACAAGACGAGAAGACCCT TCCGTGGTCGCCCCAACC 322 0 313 0 209 +AGAAGACCCTTTGGAGCT CCGTGGTCGCCCCAACCG 322 0 313 0 209 +GAGAAGACCCTTTGGAGC TCCGTGGTCGCCCCAACC 322 0 313 0 209 +CCGTGGTCGCCCCAACCG GAGAAGACCCTTTGGAGC 322 0 313 0 209 +CGAGAAGACCCTTTGGAG TCCGTGGTCGCCCCAACC 322 0 313 0 209 +CCGTGGTCGCCCCAACCG CGAGAAGACCCTTTGGAG 322 0 313 0 209 +GACGAGAAGACCCTTTGG TGGTCGCCCCAACCGAAG 322 0 313 0 209 +ATACAAGACGAGAAGACC CCGTGGTCGCCCCAACCG 322 0 313 0 209 +CCGTGGTCGCCCCAACCG TACAAGACGAGAAGACCC 322 0 313 0 209 +ACGAGAAGACCCTTTGGA TCCGTGGTCGCCCCAACC 322 0 313 0 209 +ACGAGAAGACCCTTTGGA CCGTGGTCGCCCCAACCG 322 0 313 0 209 +GACGAGAAGACCCTTTGG TTCCTCCGTGGTCGCCCC 322 0 313 0 209 +GACGAGAAGACCCTTTGG TCCTCCGTGGTCGCCCCA 322 0 313 0 209 +AAGGGGCTGTACCCCCTT CTGGTGATAGCTGGTTGC 296 0 287 0 208 +CCTGGTGATAGCTGGTTG GTTAAAGGGGCTGTACCC 296 0 287 0 208 +CTGAATTCCCTTGGGGGT GCACAAAGGCATGGTCCC 313 0 305 0 209 +GCACAAAGGCATGGTCCC TGAATTCCCTTGGGGGTG 313 0 305 0 209 +GGGTAACTTGGTTCGTTG TTTACCTTCGGTTGGGGC 307 0 298 0 208 +GGTTGGGGCGACCACGGA GTAACTTGGTTCGTTGAT 314 0 305 0 208 +AAGGCATGGTCCCGACCT ACTGCTGAATTCCCTTGG 317 0 308 0 208 +ACTGCTGAATTCCCTTGG AGGCATGGTCCCGACCTT 317 0 308 0 208 +AAAGGCATGGTCCCGACC ACTGCTGAATTCCCTTGG 317 0 308 0 208 +TTAGATTGTGATTCTAAA TTTTTGGTTCCTAAGACC 318 0 309 0 208 +TTAGATTGTGATTCTAAA TTTTGGTTCCTAAGACCA 318 0 309 0 208 +AAGACCCTTTGGAGCTTA TCCTCCGTGGTCGCCCCA 321 0 312 0 208 +GACCCTTTGGAGCTTAAG TCCGTGGTCGCCCCAACC 321 0 312 0 208 +CAAGACGAGAAGACCCTT GTGGTCGCCCCAACCGAA 321 0 312 0 208 +CAAGACGAGAAGACCCTT CCTCCGTGGTCGCCCCAA 321 0 312 0 208 +GACGAGAAGACCCTTTGG TTTCCTCCGTGGTCGCCC 321 0 312 0 208 +AGACCCTTTGGAGCTTAA TCCTCCGTGGTCGCCCCA 321 0 312 0 208 +CAAGACGAGAAGACCCTT CGTGGTCGCCCCAACCGA 321 0 312 0 208 +AGACCCTTTGGAGCTTAA TTCCTCCGTGGTCGCCCC 321 0 312 0 208 +ACCCTTTGGAGCTTAAGG TCCGTGGTCGCCCCAACC 321 0 312 0 208 +CCGTGGTCGCCCCAACCG GACCCTTTGGAGCTTAAG 321 0 312 0 208 +ACCCTTTGGAGCTTAAGG CCGTGGTCGCCCCAACCG 321 0 312 0 208 +AAGACCCTTTGGAGCTTA TTCCTCCGTGGTCGCCCC 321 0 312 0 208 +CAAGACGAGAAGACCCTT CTCCGTGGTCGCCCCAAC 321 0 312 0 208 +AGGTCAGTTTCTATCTGT ATTTACCATGCTCTGCCA 323 0 314 0 208 +ATTTACCATGCTCTGCCA GGTCAGTTTCTATCTGTA 323 0 314 0 208 +GCGTACACACCGCCCGTC TTGCATGGATGTCTTCTC 324 0 315 0 208 +ACACCGCCCGTCACTCTC TTGCATGGATGTCTTCTC 324 0 315 0 208 +CACACCGCCCGTCACTCT TTGCATGGATGTCTTCTC 324 0 315 0 208 +AAAGGCATGGTCCCGACC TCACTGCTGAATTCCCTT 317 0 310 0 209 +AAGGCATGGTCCCGACCT ATCACTGCTGAATTCCCT 317 0 310 0 209 +AAGGCATGGTCCCGACCT TCACTGCTGAATTCCCTT 317 0 310 0 209 +AGGCATGGTCCCGACCTT TCACTGCTGAATTCCCTT 317 0 310 0 209 +AAAGGCATGGTCCCGACC ATCACTGCTGAATTCCCT 317 0 310 0 209 +AGGCATGGTCCCGACCTT ATCACTGCTGAATTCCCT 317 0 310 0 209 +AAGGGGCTGTACCCCCTT CCTGGTGATAGCTGGTTG 295 0 286 0 207 +AAGGCATGGTCCCGACCT CACTGCTGAATTCCCTTG 316 0 308 0 208 +AGGCATGGTCCCGACCTT CACTGCTGAATTCCCTTG 316 0 308 0 208 +AAAGGCATGGTCCCGACC CACTGCTGAATTCCCTTG 316 0 308 0 208 +AGGCATGGTCCCGACCTT TTCCCTTGGGGGTGTGGC 318 0 310 0 208 +AAAGGCATGGTCCCGACC TTCCCTTGGGGGTGTGGC 318 0 310 0 208 +AAGGCATGGTCCCGACCT TTCCCTTGGGGGTGTGGC 318 0 310 0 208 +CCTTCGGTTGGGGCGACC GGGTAACTTGGTTCGTTG 306 0 297 0 207 +GGGTAACTTGGTTCGTTG TTACCTTCGGTTGGGGCG 306 0 297 0 207 +CCTAGGGTAACTTGGTTC GTTGGGGCGACCACGGAG 315 0 306 0 207 +GACCACTTTGATAGAGTG GGTATGGGCCCGAAAGCT 316 0 307 0 207 +TGCACCAAGAGTTTTTGG TTAGATTGTGATTCTAAA 317 0 308 0 207 +AGAGTTTTTGGTTCCTAA TTAGATTGTGATTCTAAA 317 0 308 0 207 +GAGTTTTTGGTTCCTAAG TTAGATTGTGATTCTAAA 317 0 308 0 207 +AAGACCCTTTGGAGCTTA TGGTCGCCCCAACCGAAG 320 0 311 0 207 +CAAGACGAGAAGACCCTT GGTCGCCCCAACCGAAGG 320 0 311 0 207 +CAAGACGAGAAGACCCTT TGGTCGCCCCAACCGAAG 320 0 311 0 207 +CAAGACGAGAAGACCCTT TCCTCCGTGGTCGCCCCA 320 0 311 0 207 +CAAGACGAGAAGACCCTT TTCCTCCGTGGTCGCCCC 320 0 311 0 207 +CCGTGGTCGCCCCAACCG GACGAGAAGACCCTTTGG 320 0 311 0 207 +GACGAGAAGACCCTTTGG TCCGTGGTCGCCCCAACC 320 0 311 0 207 +AAGACCCTTTGGAGCTTA GGTCGCCCCAACCGAAGG 320 0 311 0 207 +AAGACCCTTTGGAGCTTA TTTCCTCCGTGGTCGCCC 320 0 311 0 207 +AGACCCTTTGGAGCTTAA GGTCGCCCCAACCGAAGG 320 0 311 0 207 +AGACCCTTTGGAGCTTAA TGGTCGCCCCAACCGAAG 320 0 311 0 207 +AGACCCTTTGGAGCTTAA TTTCCTCCGTGGTCGCCC 320 0 311 0 207 +AATTTACCATGCTCTGCC GGTCAGTTTCTATCTGTA 322 0 313 0 207 +CGTACACACCGCCCGTCA TTGCATGGATGTCTTCTC 323 0 314 0 207 +CTTTCAGCTTTCCCTTGC TGAGCCAAACAGCTAGCT 297 0 288 0 206 +ACCTTCGGTTGGGGCGAC GGTAACTTGGTTCGTTGA 305 0 296 0 206 +GGGTAACTTGGTTCGTTG TTTTACCTTCGGTTGGGG 305 0 296 0 206 +GTAACTTGGTTCGTTGAT GTTGGGGCGACCACGGAG 310 0 301 0 206 +CGGTTGGGGCGACCACGG GGGTAACTTGGTTCGTTG 310 0 301 0 206 +AAGACCCTTTGGAGCTTA TCCGTGGTCGCCCCAACC 319 0 310 0 206 +AAGACCCTTTGGAGCTTA CCGTGGTCGCCCCAACCG 319 0 310 0 206 +AGACCCTTTGGAGCTTAA CCGTGGTCGCCCCAACCG 319 0 310 0 206 +CAAGACGAGAAGACCCTT TTTCCTCCGTGGTCGCCC 319 0 310 0 206 +AGACCCTTTGGAGCTTAA TCCGTGGTCGCCCCAACC 319 0 310 0 206 +GGGCTTAGGCCTTTCGCA TACGAAAGGATCGGAAAA 320 0 311 0 206 +AGGGCTTAGGCCTTTCGC TACGAAAGGATCGGAAAA 320 0 311 0 206 +ACACCGCCCGTCACTCTC CTTCTCGGTGTAAGTGAG 322 0 313 0 206 +ACACCGCCCGTCACTCTC TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +ACGCGTACACACCGCCCG GGATGTCTTCTCGGTGTA 322 0 313 0 206 +CACACCGCCCGTCACTCT TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +GTACACACCGCCCGTCAC TTGCATGGATGTCTTCTC 322 0 313 0 206 +CACACCGCCCGTCACTCT CTTCTCGGTGTAAGTGAG 322 0 313 0 206 +CACACCGCCCGTCACTCT GGATGTCTTCTCGGTGTA 322 0 313 0 206 +CTTCTCGGTGTAAGTGAG GACGCGTACACACCGCCC 322 0 313 0 206 +CGCGTACACACCGCCCGT TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +CGCGTACACACCGCCCGT CTTCTCGGTGTAAGTGAG 322 0 313 0 206 +GACGCGTACACACCGCCC TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +GACGCGTACACACCGCCC GGATGTCTTCTCGGTGTA 322 0 313 0 206 +GCGTACACACCGCCCGTC GGATGTCTTCTCGGTGTA 322 0 313 0 206 +GCGTACACACCGCCCGTC TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +CTTCTCGGTGTAAGTGAG GCGTACACACCGCCCGTC 322 0 313 0 206 +CGCGTACACACCGCCCGT GGATGTCTTCTCGGTGTA 322 0 313 0 206 +ACGCGTACACACCGCCCG CTTCTCGGTGTAAGTGAG 322 0 313 0 206 +ACGCGTACACACCGCCCG TCTTCTCGGTGTAAGTGA 322 0 313 0 206 +ACACCGCCCGTCACTCTC GGATGTCTTCTCGGTGTA 322 0 313 0 206 +GGCATGGTCCCGACCTTA TATCACTGCTGAATTCCC 315 0 308 0 207 +GGCATGGTCCCGACCTTA TTATCACTGCTGAATTCC 315 0 307 0 206 +AATTCCCTTGGGGGTGTG GGCATGGTCCCGACCTTA 316 0 308 0 206 +GGTAACTTGGTTCGTTGA TACCTTCGGTTGGGGCGA 304 0 295 0 205 +GGGTAACTTGGTTCGTTG GGTTGGGGCGACCACGGA 309 0 300 0 205 +GTCGATATGGACTCTGGG GTTGGGGCGACCACGGAG 310 0 301 0 205 +ACCACTTTGATAGAGTGA TCATGTTCGGGGTATGGG 311 0 302 0 205 +ACCACTTTGATAGAGTGA GTATGGGCCCGAAAGCTT 314 0 305 0 205 +CAAGACGAGAAGACCCTT TCCGTGGTCGCCCCAACC 318 0 309 0 205 +CAAGACGAGAAGACCCTT CCGTGGTCGCCCCAACCG 318 0 309 0 205 +CTTCTCGGTGTAAGTGAG TGAGACGCGTACACACCG 321 0 312 0 205 +CTGAGACGCGTACACACC TCTTCTCGGTGTAAGTGA 321 0 312 0 205 +ACACCGCCCGTCACTCTC GCATGGATGTCTTCTCGG 321 0 312 0 205 +CGTACACACCGCCCGTCA GGATGTCTTCTCGGTGTA 321 0 312 0 205 +CGCGTACACACCGCCCGT GCATGGATGTCTTCTCGG 321 0 312 0 205 +ACACCGCCCGTCACTCTC TGCATGGATGTCTTCTCG 321 0 312 0 205 +CTGAGACGCGTACACACC CTTCTCGGTGTAAGTGAG 321 0 312 0 205 +AGACGCGTACACACCGCC GGATGTCTTCTCGGTGTA 321 0 312 0 205 +ACACCGCCCGTCACTCTC GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +ACGCGTACACACCGCCCG GCATGGATGTCTTCTCGG 321 0 312 0 205 +GGATGTCTTCTCGGTGTA TGAGACGCGTACACACCG 321 0 312 0 205 +ACGCGTACACACCGCCCG GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +TCTGAGACGCGTACACAC TCTTCTCGGTGTAAGTGA 321 0 312 0 205 +AGACGCGTACACACCGCC CTTCTCGGTGTAAGTGAG 321 0 312 0 205 +TCTTCTCGGTGTAAGTGA TGAGACGCGTACACACCG 321 0 312 0 205 +CTTCTCGGTGTAAGTGAG GAGACGCGTACACACCGC 321 0 312 0 205 +GCGTACACACCGCCCGTC TGCATGGATGTCTTCTCG 321 0 312 0 205 +CGGCTCTGAGACGCGTAC CTTCTCGGTGTAAGTGAG 321 0 312 0 205 +GCGTACACACCGCCCGTC GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +CGCGTACACACCGCCCGT TTGCATGGATGTCTTCTC 321 0 312 0 205 +CTTCTCGGTGTAAGTGAG GGCTCTGAGACGCGTACA 321 0 312 0 205 +GGCTCTGAGACGCGTACA TCTTCTCGGTGTAAGTGA 321 0 312 0 205 +GACGCGTACACACCGCCC GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +GCATGGATGTCTTCTCGG GCGTACACACCGCCCGTC 321 0 312 0 205 +GAGACGCGTACACACCGC TCTTCTCGGTGTAAGTGA 321 0 312 0 205 +CGCGTACACACCGCCCGT TGCATGGATGTCTTCTCG 321 0 312 0 205 +CGCGTACACACCGCCCGT GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +CACACCGCCCGTCACTCT TGCATGGATGTCTTCTCG 321 0 312 0 205 +CACACCGCCCGTCACTCT GCATGGATGTCTTCTCGG 321 0 312 0 205 +AGACGCGTACACACCGCC TCTTCTCGGTGTAAGTGA 321 0 312 0 205 +GAGACGCGTACACACCGC GGATGTCTTCTCGGTGTA 321 0 312 0 205 +CACACCGCCCGTCACTCT GTCTTCTCGGTGTAAGTG 321 0 312 0 205 +CTTCTCGGTGTAAGTGAG TCTGAGACGCGTACACAC 321 0 312 0 205 +ATTTACCATGCTCTGCCA TTTTCCTAGTACGAAAGG 324 0 315 0 205 +GCTGAATTCCCTTGGGGG GGCATGGTCCCGACCTTA 315 0 308 0 206 +GAATTCCCTTGGGGGTGT GGCATGGTCCCGACCTTA 315 0 308 0 206 +AAGGCATGGTCCCGACCT CTGAATTCCCTTGGGGGT 314 0 306 0 205 +AAAGGCATGGTCCCGACC CTGAATTCCCTTGGGGGT 314 0 306 0 205 +AAAGGCATGGTCCCGACC TGAATTCCCTTGGGGGTG 314 0 306 0 205 +AGGCATGGTCCCGACCTT CTGAATTCCCTTGGGGGT 314 0 306 0 205 +AGGCATGGTCCCGACCTT TGAATTCCCTTGGGGGTG 314 0 306 0 205 +AAGGCATGGTCCCGACCT TGAATTCCCTTGGGGGTG 314 0 306 0 205 +ATTCCCTTGGGGGTGTGG GGCATGGTCCCGACCTTA 315 0 307 0 205 +CTGCTGAATTCCCTTGGG GGCATGGTCCCGACCTTA 315 0 307 0 205 +AGGGCTTAACTGTCTCCC GGTCGCCCCAACCGAAGG 300 0 291 0 204 +AGGGCTTAACTGTCTCCC GTCGCCCCAACCGAAGGT 300 0 291 0 204 +GGTAACTTGGTTCGTTGA TTTACCTTCGGTTGGGGC 303 0 294 0 204 +AGGAGGATTTAGTAGTAA GCACCTTCCGGTACACTT 324 0 316 0 205 +ACCTTCCGGTACACTTAC AGGAGGATTTAGTAGTAA 324 0 316 0 205 +AGGAGGATTTAGTAGTAA CACCTTCCGGTACACTTA 324 0 316 0 205 +AGGAGGATTTAGTAGTAA CCTTCCGGTACACTTACC 324 0 316 0 205 +CGATATGGACTCTGGGAG GGGGCGACCACGGAGGAA 311 0 302 0 204 +CAAAGGCATGGTCCCGAC TTATCACTGCTGAATTCC 311 0 302 0 204 +CGATATGGACTCTGGGAG GGGCGACCACGGAGGAAA 311 0 302 0 204 +GTCGTCAGCTTACCCTGT TTACTACTAAATCCTCCT 313 0 304 0 204 +TATTAGATTGTGATTCTA TTTTGGTTCCTAAGACCA 314 0 305 0 204 +TATTAGATTGTGATTCTA TTTTTGGTTCCTAAGACC 314 0 305 0 204 +TAAAAGGGCTTAGGCCTT TACGAAAGGATCGGAAAA 318 0 309 0 204 +ATTTACCATGCTCTGCCA CAGGTCAGTTTCTATCTG 319 0 310 0 204 +CTCTGAGACGCGTACACA CTTCTCGGTGTAAGTGAG 320 0 311 0 204 +GTCTTCTCGGTGTAAGTG TCTGAGACGCGTACACAC 320 0 311 0 204 +CTCTGAGACGCGTACACA TCTTCTCGGTGTAAGTGA 320 0 311 0 204 +GGATGTCTTCTCGGTGTA GTACACACCGCCCGTCAC 320 0 311 0 204 +GCTCTGAGACGCGTACAC TCTTCTCGGTGTAAGTGA 320 0 311 0 204 +CTTCTCGGTGTAAGTGAG GCTCTGAGACGCGTACAC 320 0 311 0 204 +GAGACGCGTACACACCGC GTCTTCTCGGTGTAAGTG 320 0 311 0 204 +CGTACACACCGCCCGTCA TGCATGGATGTCTTCTCG 320 0 311 0 204 +CGTACACACCGCCCGTCA GCATGGATGTCTTCTCGG 320 0 311 0 204 +CTGAGACGCGTACACACC GTCTTCTCGGTGTAAGTG 320 0 311 0 204 +CGTACACACCGCCCGTCA TCTTCTCGGTGTAAGTGA 320 0 311 0 204 +CGTACACACCGCCCGTCA CTTCTCGGTGTAAGTGAG 320 0 311 0 204 +GTCTTCTCGGTGTAAGTG TGAGACGCGTACACACCG 320 0 311 0 204 +AGACGCGTACACACCGCC GTCTTCTCGGTGTAAGTG 320 0 311 0 204 +AATTTACCATGCTCTGCC TTTTCCTAGTACGAAAGG 323 0 314 0 204 +CAAAGGCATGGTCCCGAC TATCACTGCTGAATTCCC 310 0 302 0 204 +GATTTGCACCAAGAGTTT TTAGATTGTGATTCTAAA 312 0 304 0 204 +ACCTTCGGTTGGGGCGAC CTAGGGTAACTTGGTTCG 300 0 291 0 203 +CAGGTCAGTTTCTATCTG CCATGCTCTGCCACCCCA 318 0 310 0 204 +ATCCAGGTCAGTTTCTAT CCATGCTCTGCCACCCCA 318 0 310 0 204 +CCATGCTCTGCCACCCCA TCCAGGTCAGTTTCTATC 318 0 310 0 204 +CCATGCTCTGCCACCCCA GGTCAGTTTCTATCTGTA 318 0 310 0 204 +AATCCAGGTCAGTTTCTA CCATGCTCTGCCACCCCA 318 0 310 0 204 +CCAGGTCAGTTTCTATCT CCATGCTCTGCCACCCCA 318 0 310 0 204 +AGGTCAGTTTCTATCTGT CCATGCTCTGCCACCCCA 318 0 310 0 204 +CCTTCGGTTGGGGCGACC GGTAACTTGGTTCGTTGA 302 0 293 0 203 +GGTAACTTGGTTCGTTGA TTACCTTCGGTTGGGGCG 302 0 293 0 203 +AGGAGGATTTAGTAGTAA TGCACCTTCCGGTACACT 323 0 315 0 204 +GGGTAACTTGGTTCGTTG GTTGGGGCGACCACGGAG 305 0 296 0 203 +ACCTTCGGTTGGGGCGAC ATGGACTCTGGGAGAGGA 307 0 298 0 203 +ACCACTTTGATAGAGTGA GGGGTATGGGCCCGAAAG 311 0 302 0 203 +AATTCCCTTGGGGGTGTG CAAAGGCATGGTCCCGAC 311 0 302 0 203 +ACCACTTTGATAGAGTGA GGTATGGGCCCGAAAGCT 312 0 303 0 203 +ACTCTGGGAGAGGATTGC GGGCGACCACGGAGGAAA 312 0 303 0 203 +GACTCTGGGAGAGGATTG GGGCGACCACGGAGGAAA 312 0 303 0 203 +GGACTCTGGGAGAGGATT GGGCGACCACGGAGGAAA 312 0 303 0 203 +GGGCGACCACGGAGGAAA TGGACTCTGGGAGAGGAT 312 0 303 0 203 +ATGGACTCTGGGAGAGGA GGGCGACCACGGAGGAAA 312 0 303 0 203 +GGGCGACCACGGAGGAAA TATGGACTCTGGGAGAGG 312 0 303 0 203 +ACCACTTTGATAGAGTGA GGGTATGGGCCCGAAAGC 312 0 303 0 203 +ACTCTGGGAGAGGATTGC GGGGCGACCACGGAGGAA 312 0 303 0 203 +GACTCTGGGAGAGGATTG GGGGCGACCACGGAGGAA 312 0 303 0 203 +GGACTCTGGGAGAGGATT GGGGCGACCACGGAGGAA 312 0 303 0 203 +GGGGCGACCACGGAGGAA TGGACTCTGGGAGAGGAT 312 0 303 0 203 +ATGGACTCTGGGAGAGGA GGGGCGACCACGGAGGAA 312 0 303 0 203 +GGGGCGACCACGGAGGAA TATGGACTCTGGGAGAGG 312 0 303 0 203 +TATTAGATTGTGATTCTA TGCACCAAGAGTTTTTGG 313 0 304 0 203 +GAGTTTTTGGTTCCTAAG TATTAGATTGTGATTCTA 313 0 304 0 203 +AGAGTTTTTGGTTCCTAA TATTAGATTGTGATTCTA 313 0 304 0 203 +CTTAGGCCTTTCGCAATT TTTTCCTAGTACGAAAGG 316 0 307 0 203 +GGCTTAGGCCTTTCGCAA TTTTCCTAGTACGAAAGG 316 0 307 0 203 +ACGCGTACACACCGCCCG TTGCATGGATGTCTTCTC 317 0 308 0 203 +AATTTACCATGCTCTGCC AGGTCAGTTTCTATCTGT 318 0 309 0 203 +CTGAGACGCGTACACACC GGATGTCTTCTCGGTGTA 319 0 310 0 203 +GTACACACCGCCCGTCAC TGCATGGATGTCTTCTCG 319 0 310 0 203 +GCATGGATGTCTTCTCGG GTACACACCGCCCGTCAC 319 0 310 0 203 +GTACACACCGCCCGTCAC TCTTCTCGGTGTAAGTGA 319 0 310 0 203 +CTTCTCGGTGTAAGTGAG GTACACACCGCCCGTCAC 319 0 310 0 203 +CGTACACACCGCCCGTCA GTCTTCTCGGTGTAAGTG 319 0 310 0 203 +GCTCTGAGACGCGTACAC GTCTTCTCGGTGTAAGTG 319 0 310 0 203 +CTCTGAGACGCGTACACA GTCTTCTCGGTGTAAGTG 319 0 310 0 203 +CGCGTACACACCGCCCGT CGGTGTAAGTGAGATGCT 321 0 312 0 203 +ACGCGTACACACCGCCCG CGGTGTAAGTGAGATGCT 321 0 312 0 203 +ACACCGCCCGTCACTCTC CGGTGTAAGTGAGATGCT 321 0 312 0 203 +CGGTGTAAGTGAGATGCT GACGCGTACACACCGCCC 321 0 312 0 203 +CACACCGCCCGTCACTCT CGGTGTAAGTGAGATGCT 321 0 312 0 203 +CGGTGTAAGTGAGATGCT GCGTACACACCGCCCGTC 321 0 312 0 203 +CAATTTACCATGCTCTGC TTTTCCTAGTACGAAAGG 322 0 313 0 203 +AGGAGGATTTAGTAGTAA CACTTACCGTGTTACGAC 325 0 316 0 203 +AGGAGGATTTAGTAGTAA CTTACCGTGTTACGACTT 325 0 316 0 203 +ACTTACCGTGTTACGACT AGGAGGATTTAGTAGTAA 325 0 316 0 203 +ACACTTACCGTGTTACGA AGGAGGATTTAGTAGTAA 325 0 316 0 203 +AGGAGGATTTAGTAGTAA TACACTTACCGTGTTACG 325 0 316 0 203 +AGGAGGATTTAGTAGTAA GTACACTTACCGTGTTAC 325 0 316 0 203 +ATCACTGCTGAATTCCCT GGCATGGTCCCGACCTTA 312 0 305 0 204 +GGCATGGTCCCGACCTTA TCACTGCTGAATTCCCTT 312 0 305 0 204 +CAAAGGCATGGTCCCGAC GAATTCCCTTGGGGGTGT 310 0 302 0 203 +CAAAGGCATGGTCCCGAC GCTGAATTCCCTTGGGGG 310 0 302 0 203 +AGTCAGTGAAATTGATCT CCTCCGTGGTCGCCCCAA 295 0 286 0 202 +AGTCAGTGAAATTGATCT CGTGGTCGCCCCAACCGA 295 0 286 0 202 +AGTCAGTGAAATTGATCT GTGGTCGCCCCAACCGAA 295 0 286 0 202 +AGTCAGTGAAATTGATCT CTCCGTGGTCGCCCCAAC 295 0 286 0 202 +CGAGGGCTTAACTGTCTC GTCGCCCCAACCGAAGGT 296 0 287 0 202 +GGCATGGTCCCGACCTTA TTCCCTTGGGGGTGTGGC 313 0 305 0 203 +AGGGCTTAACTGTCTCCC TCGCCCCAACCGAAGGTA 298 0 289 0 202 +GGTAACTTGGTTCGTTGA TTTTACCTTCGGTTGGGG 301 0 292 0 202 +AAGTGCACCTTCCGGTAC AGGAGGATTTAGTAGTAA 322 0 314 0 203 +AGGAGGATTTAGTAGTAA GTGCACCTTCCGGTACAC 322 0 314 0 203 +AGGAGGATTTAGTAGTAA AGTGCACCTTCCGGTACA 322 0 314 0 203 +AGGAGGATTTAGTAGTAA CGGTACACTTACCGTGTT 324 0 316 0 203 +AGGAGGATTTAGTAGTAA GGTACACTTACCGTGTTA 324 0 316 0 203 +AGGAGGATTTAGTAGTAA CCGGTACACTTACCGTGT 324 0 316 0 203 +AGGAGGATTTAGTAGTAA TCCGGTACACTTACCGTG 324 0 316 0 203 +TACCTTCGGTTGGGGCGA TGGACTCTGGGAGAGGAT 306 0 297 0 202 +CGGTTGGGGCGACCACGG GGTAACTTGGTTCGTTGA 306 0 297 0 202 +GGGCGACCACGGAGGAAA TCGATATGGACTCTGGGA 309 0 300 0 202 +GGGGCGACCACGGAGGAA TCGATATGGACTCTGGGA 309 0 300 0 202 +AGGACCACTTTGATAGAG TTCGGGGTATGGGCCCGA 310 0 301 0 202 +CAAAGGCATGGTCCCGAC CTGCTGAATTCCCTTGGG 310 0 301 0 202 +AAGGACCACTTTGATAGA TTCGGGGTATGGGCCCGA 310 0 301 0 202 +CTCTGGGAGAGGATTGCG GGGGCGACCACGGAGGAA 311 0 302 0 202 +ATTTGCACCAAGAGTTTT TTAGATTGTGATTCTAAA 311 0 302 0 202 +TATATACCGCCGTCGTCA TTACTACTAAATCCTCCT 311 0 302 0 202 +GGGGCGACCACGGAGGAA TCTGGGAGAGGATTGCGC 311 0 302 0 202 +CTCTGGGAGAGGATTGCG GGGCGACCACGGAGGAAA 311 0 302 0 202 +GGGCGACCACGGAGGAAA TCTGGGAGAGGATTGCGC 311 0 302 0 202 +CTGGGAGAGGATTGCGCT GGGGCGACCACGGAGGAA 312 0 303 0 202 +GATTGCGCTGTTATCCCT GGGCGACCACGGAGGAAA 312 0 303 0 202 +AGAGGATTGCGCTGTTAT GGGCGACCACGGAGGAAA 312 0 303 0 202 +GGGGCGACCACGGAGGAA TGGGAGAGGATTGCGCTG 312 0 303 0 202 +GGGAGAGGATTGCGCTGT GGGGCGACCACGGAGGAA 312 0 303 0 202 +AGAGGATTGCGCTGTTAT GGGGCGACCACGGAGGAA 312 0 303 0 202 +GAGGATTGCGCTGTTATC GGGCGACCACGGAGGAAA 312 0 303 0 202 +AGGATTGCGCTGTTATCC GGGCGACCACGGAGGAAA 312 0 303 0 202 +GAGGATTGCGCTGTTATC GGGGCGACCACGGAGGAA 312 0 303 0 202 +AGGATTGCGCTGTTATCC GGGGCGACCACGGAGGAA 312 0 303 0 202 +GGATTGCGCTGTTATCCC GGGGCGACCACGGAGGAA 312 0 303 0 202 +GGATTGCGCTGTTATCCC GGGCGACCACGGAGGAAA 312 0 303 0 202 +GATTGCGCTGTTATCCCT GGGGCGACCACGGAGGAA 312 0 303 0 202 +GGGGCGACCACGGAGGAA TAACTTGGTTCGTTGATC 312 0 303 0 202 +CTGGGAGAGGATTGCGCT GGGCGACCACGGAGGAAA 312 0 303 0 202 +GGGAGAGGATTGCGCTGT GGGCGACCACGGAGGAAA 312 0 303 0 202 +GGGCGACCACGGAGGAAA TGGGAGAGGATTGCGCTG 312 0 303 0 202 +GGGCGACCACGGAGGAAA TAACTTGGTTCGTTGATC 312 0 303 0 202 +CCCTTTGGAGCTTAAGGT GTGGTCGCCCCAACCGAA 315 0 306 0 202 +CCCTTTGGAGCTTAAGGT CTCCGTGGTCGCCCCAAC 315 0 306 0 202 +CCCTTTGGAGCTTAAGGT CCTCCGTGGTCGCCCCAA 315 0 306 0 202 +CCCTTTGGAGCTTAAGGT CGTGGTCGCCCCAACCGA 315 0 306 0 202 +CAATTTACCATGCTCTGC GGTCAGTTTCTATCTGTA 317 0 308 0 202 +ATTTACCATGCTCTGCCA CCAGGTCAGTTTCTATCT 317 0 308 0 202 +ACGCGTACACACCGCCCG TGCATGGATGTCTTCTCG 318 0 309 0 202 +GTACACACCGCCCGTCAC GTCTTCTCGGTGTAAGTG 318 0 309 0 202 +GACGCGTACACACCGCCC GCATGGATGTCTTCTCGG 318 0 309 0 202 +CGGCTCTGAGACGCGTAC TCTTCTCGGTGTAAGTGA 318 0 309 0 202 +CGGCTCTGAGACGCGTAC CGGTGTAAGTGAGATGCT 320 0 311 0 202 +CGGTGTAAGTGAGATGCT TCTGAGACGCGTACACAC 320 0 311 0 202 +CGGTGTAAGTGAGATGCT GAGACGCGTACACACCGC 320 0 311 0 202 +CGGTGTAAGTGAGATGCT TGAGACGCGTACACACCG 320 0 311 0 202 +CGGTGTAAGTGAGATGCT CTGAGACGCGTACACACC 320 0 311 0 202 +CGGTGTAAGTGAGATGCT GGCTCTGAGACGCGTACA 320 0 311 0 202 +AGACGCGTACACACCGCC CGGTGTAAGTGAGATGCT 320 0 311 0 202 +GCACAAAGGCATGGTCCC TCCCTTGGGGGTGTGGCT 301 0 293 0 202 +ATTCCCTTGGGGGTGTGG CAAAGGCATGGTCCCGAC 310 0 302 0 202 +AGTCAGTGAAATTGATCT TCCTCCGTGGTCGCCCCA 294 0 285 0 201 +AGTCAGTGAAATTGATCT TTCCTCCGTGGTCGCCCC 294 0 285 0 201 +ACTGCTGAATTCCCTTGG GGCATGGTCCCGACCTTA 311 0 303 0 202 +CGAGGGCTTAACTGTCTC TCGCCCCAACCGAAGGTA 297 0 288 0 201 +CTAGGGTAACTTGGTTCG TTTACCTTCGGTTGGGGC 298 0 289 0 201 +CTAGGGTAACTTGGTTCG TACCTTCGGTTGGGGCGA 298 0 289 0 201 +AGGAGGATTTAGTAGTAA CCAAGTGCACCTTCCGGT 321 0 313 0 202 +GACTCTGGGAGAGGATTG TTTACCTTCGGTTGGGGC 305 0 296 0 201 +GGTAACTTGGTTCGTTGA GGTTGGGGCGACCACGGA 305 0 296 0 201 +CCTTCGGTTGGGGCGACC TATGGACTCTGGGAGAGG 305 0 296 0 201 +AAGGACCACTTTGATAGA CGGGGTATGGGCCCGAAA 309 0 300 0 201 +AGGACCACTTTGATAGAG CGGGGTATGGGCCCGAAA 309 0 300 0 201 +AACTTGGTTCGTTGATCG GGGCGACCACGGAGGAAA 311 0 302 0 201 +AACTTGGTTCGTTGATCG GGGGCGACCACGGAGGAA 311 0 302 0 201 +CCCTTTGGAGCTTAAGGT TTCCTCCGTGGTCGCCCC 314 0 305 0 201 +ATTTACCATGCTCTGCCA GTCAGTTTCTATCTGTAA 314 0 305 0 201 +ACGAGAAGACCCTTTGGA GTCGCCCCAACCGAAGGT 314 0 305 0 201 +ACAAGACGAGAAGACCCT GTCGCCCCAACCGAAGGT 314 0 305 0 201 +GTCGCCCCAACCGAAGGT TACAAGACGAGAAGACCC 314 0 305 0 201 +GAGAAGACCCTTTGGAGC GTCGCCCCAACCGAAGGT 314 0 305 0 201 +AGAAGACCCTTTGGAGCT GTCGCCCCAACCGAAGGT 314 0 305 0 201 +ATACAAGACGAGAAGACC GTCGCCCCAACCGAAGGT 314 0 305 0 201 +CCTCCGTGGTCGCCCCAA CCTTTGGAGCTTAAGGTA 314 0 305 0 201 +CCTTTGGAGCTTAAGGTA CTCCGTGGTCGCCCCAAC 314 0 305 0 201 +GCTTAGGCCTTTCGCAAT TTTTCCTAGTACGAAAGG 314 0 305 0 201 +CCTTTGGAGCTTAAGGTA CGTGGTCGCCCCAACCGA 314 0 305 0 201 +CCTTTGGAGCTTAAGGTA GTGGTCGCCCCAACCGAA 314 0 305 0 201 +CCCTTTGGAGCTTAAGGT TCCTCCGTGGTCGCCCCA 314 0 305 0 201 +CGAGAAGACCCTTTGGAG GTCGCCCCAACCGAAGGT 314 0 305 0 201 +GAAGACCCTTTGGAGCTT GTCGCCCCAACCGAAGGT 314 0 305 0 201 +GGATGTCTTCTCGGTGTA TCTGAGACGCGTACACAC 315 0 306 0 201 +AATTTACCATGCTCTGCC CAGGTCAGTTTCTATCTG 316 0 307 0 201 +ACCGCCCGTCACTCTCCC TTGCATGGATGTCTTCTC 317 0 308 0 201 +CACACCGCCCGTCACTCT TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +ACACCGCCCGTCACTCTC TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +ACGCGTACACACCGCCCG TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +CACCGCCCGTCACTCTCC TTGCATGGATGTCTTCTC 317 0 308 0 201 +GGCTCTGAGACGCGTACA GTCTTCTCGGTGTAAGTG 317 0 308 0 201 +GACGCGTACACACCGCCC TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +GCGTACACACCGCCCGTC TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +CGCGTACACACCGCCCGT TGTCTTCTCGGTGTAAGT 317 0 308 0 201 +CGGTGTAAGTGAGATGCT GCTCTGAGACGCGTACAC 319 0 310 0 201 +CGGTGTAAGTGAGATGCT CTCTGAGACGCGTACACA 319 0 310 0 201 +CGGTGTAAGTGAGATGCT CGTACACACCGCCCGTCA 319 0 310 0 201 +ACCCGGCTCTGAGACGCG CGGTGTAAGTGAGATGCT 319 0 310 0 201 +CACTGCTGAATTCCCTTG GGCATGGTCCCGACCTTA 310 0 303 0 202 +TCCCTTGGGGGTGTGGCT TGCACAAAGGCATGGTCC 300 0 292 0 201 +AGTCAGTGAAATTGATCT TTTCCTCCGTGGTCGCCC 293 0 284 0 200 +AGTCAGTGAAATTGATCT GGTCGCCCCAACCGAAGG 293 0 284 0 200 +AGTCAGTGAAATTGATCT TGGTCGCCCCAACCGAAG 293 0 284 0 200 +AGGGCTTAACTGTCTCCC TGGTCGCCCCAACCGAAG 294 0 285 0 200 +CCTTCGGTTGGGGCGACC CTAGGGTAACTTGGTTCG 297 0 288 0 200 +CCATGCTCTGCCACCCCA TTTTCCTAGTACGAAAGG 319 0 311 0 201 +CTTCGGTTGGGGCGACCA GGACTCTGGGAGAGGATT 301 0 292 0 200 +CTTCGGTTGGGGCGACCA GACTCTGGGAGAGGATTG 301 0 292 0 200 +ACTCTGGGAGAGGATTGC CTTCGGTTGGGGCGACCA 301 0 292 0 200 +CTTCGGTTGGGGCGACCA TGGACTCTGGGAGAGGAT 301 0 292 0 200 +GGACTCTGGGAGAGGATT TTACCTTCGGTTGGGGCG 304 0 295 0 200 +ACTGCTGAATTCCCTTGG CAAAGGCATGGTCCCGAC 307 0 298 0 200 +CTCGTCGATATGGACTCT GGGCGACCACGGAGGAAA 307 0 298 0 200 +GGGCGACCACGGAGGAAA GTCGATATGGACTCTGGG 307 0 298 0 200 +GGGGCGACCACGGAGGAA GTCGATATGGACTCTGGG 307 0 298 0 200 +CTCGTCGATATGGACTCT GGGGCGACCACGGAGGAA 307 0 298 0 200 +AGGACCACTTTGATAGAG TCGGGGTATGGGCCCGAA 308 0 299 0 200 +AAGGACCACTTTGATAGA TCGGGGTATGGGCCCGAA 308 0 299 0 200 +TTAGATTGTGATTCTAAA TTTGCACCAAGAGTTTTT 309 0 300 0 200 +CCCTTTGGAGCTTAAGGT TGGTCGCCCCAACCGAAG 313 0 304 0 200 +CCCTTTGGAGCTTAAGGT TTTCCTCCGTGGTCGCCC 313 0 304 0 200 +ACCCTTTGGAGCTTAAGG GTCGCCCCAACCGAAGGT 313 0 304 0 200 +CCTTTGGAGCTTAAGGTA TCCTCCGTGGTCGCCCCA 313 0 304 0 200 +CCTTTGGAGCTTAAGGTA TTCCTCCGTGGTCGCCCC 313 0 304 0 200 +GACCCTTTGGAGCTTAAG GTCGCCCCAACCGAAGGT 313 0 304 0 200 +CCCTTTGGAGCTTAAGGT GTCGCCCCAACCGAAGGT 313 0 304 0 200 +AATTTACCATGCTCTGCC GTCAGTTTCTATCTGTAA 313 0 304 0 200 +CCCTTTGGAGCTTAAGGT GGTCGCCCCAACCGAAGG 313 0 304 0 200 +GACGCGTACACACCGCCC TGCATGGATGTCTTCTCG 314 0 305 0 200 +GGTCAGTTTCTATCTGTA TTACCATGCTCTGCCACC 315 0 306 0 200 +ATTTACCATGCTCTGCCA TCCAGGTCAGTTTCTATC 315 0 306 0 200 +CCAGGTCAGTTTCTATCT TTACCATGCTCTGCCACC 315 0 306 0 200 +CAGGTCAGTTTCTATCTG TTACCATGCTCTGCCACC 315 0 306 0 200 +CAGGTCAGTTTCTATCTG TTTACCATGCTCTGCCAC 315 0 306 0 200 +AGGTCAGTTTCTATCTGT TTACCATGCTCTGCCACC 315 0 306 0 200 +AGGTCAGTTTCTATCTGT TTTACCATGCTCTGCCAC 315 0 306 0 200 +AGGTCAGTTTCTATCTGT CAATTTACCATGCTCTGC 315 0 306 0 200 +GGTCAGTTTCTATCTGTA TTTACCATGCTCTGCCAC 315 0 306 0 200 +ACCGCCCGTCACTCTCCC GCATGGATGTCTTCTCGG 316 0 307 0 200 +ACACCGCCCGTCACTCTC ATGTCTTCTCGGTGTAAG 316 0 307 0 200 +CTGAGACGCGTACACACC TGTCTTCTCGGTGTAAGT 316 0 307 0 200 +ATGTCTTCTCGGTGTAAG GCGTACACACCGCCCGTC 316 0 307 0 200 +TGAGACGCGTACACACCG TGTCTTCTCGGTGTAAGT 316 0 307 0 200 +ATGTCTTCTCGGTGTAAG CACACCGCCCGTCACTCT 316 0 307 0 200 +CACCGCCCGTCACTCTCC GCATGGATGTCTTCTCGG 316 0 307 0 200 +ATGTCTTCTCGGTGTAAG CGCGTACACACCGCCCGT 316 0 307 0 200 +ATGTCTTCTCGGTGTAAG GACGCGTACACACCGCCC 316 0 307 0 200 +CACCGCCCGTCACTCTCC TGCATGGATGTCTTCTCG 316 0 307 0 200 +GAGACGCGTACACACCGC TGTCTTCTCGGTGTAAGT 316 0 307 0 200 +ACGCGTACACACCGCCCG ATGTCTTCTCGGTGTAAG 316 0 307 0 200 +AGACGCGTACACACCGCC TGTCTTCTCGGTGTAAGT 316 0 307 0 200 +TCTGAGACGCGTACACAC TGTCTTCTCGGTGTAAGT 316 0 307 0 200 +ACCGCCCGTCACTCTCCC TGCATGGATGTCTTCTCG 316 0 307 0 200 +CGCGTACACACCGCCCGT CTCGGTGTAAGTGAGATG 318 0 309 0 200 +CGGTGTAAGTGAGATGCT GTACACACCGCCCGTCAC 318 0 309 0 200 +CACACCGCCCGTCACTCT CTCGGTGTAAGTGAGATG 318 0 309 0 200 +CTCGGTGTAAGTGAGATG GACGCGTACACACCGCCC 318 0 309 0 200 +ACACCGCCCGTCACTCTC CTCGGTGTAAGTGAGATG 318 0 309 0 200 +CTCGGTGTAAGTGAGATG GCGTACACACCGCCCGTC 318 0 309 0 200 +ACGCGTACACACCGCCCG CTCGGTGTAAGTGAGATG 318 0 309 0 200 +ATTTACCATGCTCTGCCA TACGAAAGGATCGGAAAA 320 0 311 0 200 +CAAAGGCATGGTCCCGAC CACTGCTGAATTCCCTTG 306 0 298 0 200 +GATTTGCACCAAGAGTTT TATTAGATTGTGATTCTA 308 0 300 0 200 +CAAAGGCATGGTCCCGAC TTCCCTTGGGGGTGTGGC 308 0 300 0 200 +AGGGCTTAACTGTCTCCC GTGGTCGCCCCAACCGAA 293 0 284 0 199 +CGAGGGCTTAACTGTCTC GGTCGCCCCAACCGAAGG 293 0 284 0 199 +CTAGGGTAACTTGGTTCG TTACCTTCGGTTGGGGCG 296 0 287 0 199 +CTAGGGTAACTTGGTTCG TTTTACCTTCGGTTGGGG 296 0 287 0 199 +CAATCCAGGTCAGTTTCT CCATGCTCTGCCACCCCA 314 0 306 0 200 +CTCTGGGAGAGGATTGCG CTTCGGTTGGGGCGACCA 300 0 291 0 199 +CTTCGGTTGGGGCGACCA TCTGGGAGAGGATTGCGC 300 0 291 0 199 +AGGAGGATTTAGTAGTAA TCCAAGTGCACCTTCCGG 319 0 311 0 200 +AGGATTGCGCTGTTATCC CTTCGGTTGGGGCGACCA 301 0 292 0 199 +CTGGGAGAGGATTGCGCT CTTCGGTTGGGGCGACCA 301 0 292 0 199 +AACTTGGTTCGTTGATCG CTTCGGTTGGGGCGACCA 301 0 292 0 199 +CTTCGGTTGGGGCGACCA TAACTTGGTTCGTTGATC 301 0 292 0 199 +CTTCGGTTGGGGCGACCA TGGGAGAGGATTGCGCTG 301 0 292 0 199 +CTTCGGTTGGGGCGACCA GGGAGAGGATTGCGCTGT 301 0 292 0 199 +CGGTTGGGGCGACCACGG CTAGGGTAACTTGGTTCG 301 0 292 0 199 +AGAGGATTGCGCTGTTAT CTTCGGTTGGGGCGACCA 301 0 292 0 199 +CTTCGGTTGGGGCGACCA GAGGATTGCGCTGTTATC 301 0 292 0 199 +CTTCGGTTGGGGCGACCA GATTGCGCTGTTATCCCT 301 0 292 0 199 +GGTAACTTGGTTCGTTGA GTTGGGGCGACCACGGAG 301 0 292 0 199 +CTTCGGTTGGGGCGACCA GGATTGCGCTGTTATCCC 301 0 292 0 199 +ACTCTGGGAGAGGATTGC TTTTACCTTCGGTTGGGG 303 0 294 0 199 +ATTTGCACCAAGAGTTTT TATTAGATTGTGATTCTA 308 0 299 0 199 +CCCTTTGGAGCTTAAGGT CCGTGGTCGCCCCAACCG 312 0 303 0 199 +CCCTTTGGAGCTTAAGGT TCCGTGGTCGCCCCAACC 312 0 303 0 199 +CCTTTGGAGCTTAAGGTA GTCGCCCCAACCGAAGGT 312 0 303 0 199 +CCTTTGGAGCTTAAGGTA GGTCGCCCCAACCGAAGG 312 0 303 0 199 +CCTTTGGAGCTTAAGGTA TGGTCGCCCCAACCGAAG 312 0 303 0 199 +CCGTGGTCGCCCCAACCG CCTTTGGAGCTTAAGGTA 312 0 303 0 199 +GACGAGAAGACCCTTTGG GTCGCCCCAACCGAAGGT 312 0 303 0 199 +CCTTTGGAGCTTAAGGTA TTTCCTCCGTGGTCGCCC 312 0 303 0 199 +CCTTTGGAGCTTAAGGTA TCCGTGGTCGCCCCAACC 312 0 303 0 199 +CAATTTACCATGCTCTGC GTCAGTTTCTATCTGTAA 312 0 303 0 199 +AGACGCGTACACACCGCC GCATGGATGTCTTCTCGG 313 0 304 0 199 +CGGCTCTGAGACGCGTAC GTCTTCTCGGTGTAAGTG 313 0 304 0 199 +AATTTACCATGCTCTGCC CCAGGTCAGTTTCTATCT 314 0 305 0 199 +CACCGCCCGTCACTCTCC CTTCTCGGTGTAAGTGAG 315 0 306 0 199 +CGTACACACCGCCCGTCA TGTCTTCTCGGTGTAAGT 315 0 306 0 199 +ATGTCTTCTCGGTGTAAG CGTACACACCGCCCGTCA 315 0 306 0 199 +ACCGCCCGTCACTCTCCC GGATGTCTTCTCGGTGTA 315 0 306 0 199 +ACCGCCCGTCACTCTCCC TCTTCTCGGTGTAAGTGA 315 0 306 0 199 +ACCGCCCGTCACTCTCCC CTTCTCGGTGTAAGTGAG 315 0 306 0 199 +CTCTGAGACGCGTACACA TGTCTTCTCGGTGTAAGT 315 0 306 0 199 +ATGTCTTCTCGGTGTAAG TCTGAGACGCGTACACAC 315 0 306 0 199 +CACCGCCCGTCACTCTCC GGATGTCTTCTCGGTGTA 315 0 306 0 199 +ATGTCTTCTCGGTGTAAG TGAGACGCGTACACACCG 315 0 306 0 199 +CACCGCCCGTCACTCTCC TCTTCTCGGTGTAAGTGA 315 0 306 0 199 +AGACGCGTACACACCGCC ATGTCTTCTCGGTGTAAG 315 0 306 0 199 +ATGTCTTCTCGGTGTAAG CTGAGACGCGTACACACC 315 0 306 0 199 +ATGTCTTCTCGGTGTAAG GAGACGCGTACACACCGC 315 0 306 0 199 +CTCGGTGTAAGTGAGATG TGAGACGCGTACACACCG 317 0 308 0 199 +CTCGGTGTAAGTGAGATG TCTGAGACGCGTACACAC 317 0 308 0 199 +CTCGGTGTAAGTGAGATG CTGAGACGCGTACACACC 317 0 308 0 199 +AGACGCGTACACACCGCC CTCGGTGTAAGTGAGATG 317 0 308 0 199 +AACCCGGCTCTGAGACGC CGGTGTAAGTGAGATGCT 317 0 308 0 199 +CTCGGTGTAAGTGAGATG GGCTCTGAGACGCGTACA 317 0 308 0 199 +CTCGGTGTAAGTGAGATG GAGACGCGTACACACCGC 317 0 308 0 199 +ACTGAGTCAAGTTTTCAC CAACTTACACATGCAAGT 317 0 308 0 199 +CGGCTCTGAGACGCGTAC CTCGGTGTAAGTGAGATG 317 0 308 0 199 +AATTTACCATGCTCTGCC TACGAAAGGATCGGAAAA 319 0 310 0 199 +ATCACTGCTGAATTCCCT CAAAGGCATGGTCCCGAC 306 0 299 0 200 +CAAAGGCATGGTCCCGAC TCACTGCTGAATTCCCTT 306 0 299 0 200 +CAACTTACACATGCAAGT CTGAGTCAAGTTTTCACT 317 0 309 0 199 +CTAGGGTAACTTGGTTCG GGTTGGGGCGACCACGGA 300 0 291 0 198 +CGGTTGGGGCGACCACGG TCGATATGGACTCTGGGA 305 0 296 0 198 +GACCACTTTGATAGAGTG TTCGGGGTATGGGCCCGA 306 0 297 0 198 +AAGACCCTTTGGAGCTTA GTCGCCCCAACCGAAGGT 311 0 302 0 198 +AGACCCTTTGGAGCTTAA GTCGCCCCAACCGAAGGT 311 0 302 0 198 +GGCTTAGGCCTTTCGCAA TACGAAAGGATCGGAAAA 312 0 303 0 198 +CTTAGGCCTTTCGCAATT TACGAAAGGATCGGAAAA 312 0 303 0 198 +CAATTTACCATGCTCTGC CAGGTCAGTTTCTATCTG 313 0 304 0 198 +ATCCAGGTCAGTTTCTAT ATTTACCATGCTCTGCCA 313 0 304 0 198 +CACCGCCCGTCACTCTCC GTCTTCTCGGTGTAAGTG 314 0 305 0 198 +ACCGCCCGTCACTCTCCC GTCTTCTCGGTGTAAGTG 314 0 305 0 198 +ATGTCTTCTCGGTGTAAG GTACACACCGCCCGTCAC 314 0 305 0 198 +GTACACACCGCCCGTCAC TGTCTTCTCGGTGTAAGT 314 0 305 0 198 +ACCCGGCTCTGAGACGCG CTCGGTGTAAGTGAGATG 316 0 307 0 198 +CGTACACACCGCCCGTCA CTCGGTGTAAGTGAGATG 316 0 307 0 198 +CTCGGTGTAAGTGAGATG CTCTGAGACGCGTACACA 316 0 307 0 198 +CTCGGTGTAAGTGAGATG GCTCTGAGACGCGTACAC 316 0 307 0 198 +TTACCATGCTCTGCCACC TTTTCCTAGTACGAAAGG 317 0 308 0 198 +TTTACCATGCTCTGCCAC TTTTCCTAGTACGAAAGG 317 0 308 0 198 +CAATTTACCATGCTCTGC TACGAAAGGATCGGAAAA 318 0 309 0 198 +CTGAATTCCCTTGGGGGT GGCATGGTCCCGACCTTA 308 0 301 0 199 +GGCATGGTCCCGACCTTA TGAATTCCCTTGGGGGTG 308 0 301 0 199 +AGCAATCCAGGTCAGTTT CCATGCTCTGCCACCCCA 312 0 304 0 198 +ATGGACTCTGGGAGAGGA CTTCGGTTGGGGCGACCA 298 0 289 0 197 +CTTCGGTTGGGGCGACCA TATGGACTCTGGGAGAGG 298 0 289 0 197 +CGGGGTATGGGCCCGAAA GACCACTTTGATAGAGTG 305 0 296 0 197 +GGACTCTGGGAGAGGATT TCGGTTGGGGCGACCACG 306 0 297 0 197 +TATTAGATTGTGATTCTA TTTGCACCAAGAGTTTTT 306 0 297 0 197 +ACTCTGGGAGAGGATTGC TCGGTTGGGGCGACCACG 306 0 297 0 197 +GACTCTGGGAGAGGATTG TCGGTTGGGGCGACCACG 306 0 297 0 197 +TATGGACTCTGGGAGAGG TCGGTTGGGGCGACCACG 306 0 297 0 197 +ATGGACTCTGGGAGAGGA TCGGTTGGGGCGACCACG 306 0 297 0 197 +TCGGTTGGGGCGACCACG TGGACTCTGGGAGAGGAT 306 0 297 0 197 +CCTAGGGTAACTTGGTTC GGGGCGACCACGGAGGAA 307 0 298 0 197 +CCTAGGGTAACTTGGTTC GGGCGACCACGGAGGAAA 307 0 298 0 197 +TACAAGACGAGAAGACCC TCGCCCCAACCGAAGGTA 310 0 301 0 197 +GAGAAGACCCTTTGGAGC TCGCCCCAACCGAAGGTA 310 0 301 0 197 +GAAGACCCTTTGGAGCTT TCGCCCCAACCGAAGGTA 310 0 301 0 197 +AGAAGACCCTTTGGAGCT TCGCCCCAACCGAAGGTA 310 0 301 0 197 +ACAAGACGAGAAGACCCT TCGCCCCAACCGAAGGTA 310 0 301 0 197 +CAAGACGAGAAGACCCTT GTCGCCCCAACCGAAGGT 310 0 301 0 197 +ACGAGAAGACCCTTTGGA TCGCCCCAACCGAAGGTA 310 0 301 0 197 +ATACAAGACGAGAAGACC TCGCCCCAACCGAAGGTA 310 0 301 0 197 +CGAGAAGACCCTTTGGAG TCGCCCCAACCGAAGGTA 310 0 301 0 197 +AATTTACCATGCTCTGCC TCCAGGTCAGTTTCTATC 312 0 303 0 197 +GCTCTGAGACGCGTACAC TGTCTTCTCGGTGTAAGT 313 0 304 0 197 +CTCGGTGTAAGTGAGATG GTACACACCGCCCGTCAC 315 0 306 0 197 +CAAAGGCATGGTCCCGAC TGAATTCCCTTGGGGGTG 304 0 296 0 197 +CAAAGGCATGGTCCCGAC CTGAATTCCCTTGGGGGT 304 0 296 0 197 +AGCAATCCAGGTCAGTTT TGCCACCCCAGTATGTCC 309 0 301 0 197 +CCATGCTCTGCCACCCCA GTCAGTTTCTATCTGTAA 309 0 301 0 197 +ACCTTCGGTTGGGGCGAC TAGGGTAACTTGGTTCGT 293 0 284 0 196 +CTTCGGTTGGGGCGACCA GTAACTTGGTTCGTTGAT 294 0 285 0 196 +CTAGGGTAACTTGGTTCG GTTGGGGCGACCACGGAG 296 0 287 0 196 +GGGCGACCACGGAGGAAA GTAACTTGGTTCGTTGAT 302 0 293 0 196 +GGGGCGACCACGGAGGAA GTAACTTGGTTCGTTGAT 302 0 293 0 196 +GGGCGACCACGGAGGAAA TCGTCGATATGGACTCTG 303 0 294 0 196 +GGTTGGGGCGACCACGGA GTCGATATGGACTCTGGG 303 0 294 0 196 +GACCACTTTGATAGAGTG TCGGGGTATGGGCCCGAA 304 0 295 0 196 +TCGGTTGGGGCGACCACG TCTGGGAGAGGATTGCGC 305 0 296 0 196 +CTCTGGGAGAGGATTGCG TCGGTTGGGGCGACCACG 305 0 296 0 196 +GAGGATTGCGCTGTTATC TCGGTTGGGGCGACCACG 306 0 297 0 196 +GGGAGAGGATTGCGCTGT TCGGTTGGGGCGACCACG 306 0 297 0 196 +TCGGTTGGGGCGACCACG TGGGAGAGGATTGCGCTG 306 0 297 0 196 +TAACTTGGTTCGTTGATC TCGGTTGGGGCGACCACG 306 0 297 0 196 +GATTGCGCTGTTATCCCT TCGGTTGGGGCGACCACG 306 0 297 0 196 +GGATTGCGCTGTTATCCC TCGGTTGGGGCGACCACG 306 0 297 0 196 +AGGATTGCGCTGTTATCC TCGGTTGGGGCGACCACG 306 0 297 0 196 +AACTTGGTTCGTTGATCG TCGGTTGGGGCGACCACG 306 0 297 0 196 +CTGGGAGAGGATTGCGCT TCGGTTGGGGCGACCACG 306 0 297 0 196 +AGAGGATTGCGCTGTTAT TCGGTTGGGGCGACCACG 306 0 297 0 196 +CCTTTGGAGCTTAAGGTA TCGCCCCAACCGAAGGTA 309 0 300 0 196 +ACCCTTTGGAGCTTAAGG TCGCCCCAACCGAAGGTA 309 0 300 0 196 +CCCTTTGGAGCTTAAGGT TCGCCCCAACCGAAGGTA 309 0 300 0 196 +GACCCTTTGGAGCTTAAG TCGCCCCAACCGAAGGTA 309 0 300 0 196 +GGCTCTGAGACGCGTACA TGTCTTCTCGGTGTAAGT 310 0 301 0 196 +GCTTAGGCCTTTCGCAAT TACGAAAGGATCGGAAAA 310 0 301 0 196 +TCCAGGTCAGTTTCTATC TTACCATGCTCTGCCACC 311 0 302 0 196 +CAATTTACCATGCTCTGC CCAGGTCAGTTTCTATCT 311 0 302 0 196 +CCAGGTCAGTTTCTATCT TTTACCATGCTCTGCCAC 311 0 302 0 196 +ATGTCTTCTCGGTGTAAG CTCTGAGACGCGTACACA 312 0 303 0 196 +ACCGCCCGTCACTCTCCC CGGTGTAAGTGAGATGCT 314 0 305 0 196 +CGGTGTAAGTGAGATGCT GAACCCGGCTCTGAGACG 314 0 305 0 196 +CACCGCCCGTCACTCTCC CGGTGTAAGTGAGATGCT 314 0 305 0 196 +ACACATGCAAGTCTCCGC ACTGAGTCAAGTTTTCAC 323 0 314 0 196 +AGGCATGGTCCCGACCTT TCCCTTGGGGGTGTGGCT 300 0 292 0 196 +AAAGGCATGGTCCCGACC TCCCTTGGGGGTGTGGCT 300 0 292 0 196 +AAGGCATGGTCCCGACCT TCCCTTGGGGGTGTGGCT 300 0 292 0 196 +ACCGGAGCAATCCAGGTC TGCCACCCCAGTATGTCC 308 0 300 0 196 +GAGCAATCCAGGTCAGTT TGCCACCCCAGTATGTCC 308 0 300 0 196 +CCATGCTCTGCCACCCCA TACGAAAGGATCGGAAAA 315 0 307 0 196 +ACACATGCAAGTCTCCGC CTGAGTCAAGTTTTCACT 323 0 315 0 196 +GACGAGAAGACCCTTTGG TCGCCCCAACCGAAGGTA 308 0 299 0 195 +CACCGCCCGTCACTCTCC TGTCTTCTCGGTGTAAGT 311 0 302 0 195 +ACCGCCCGTCACTCTCCC TGTCTTCTCGGTGTAAGT 311 0 302 0 195 +ACCGCCCGTCACTCTCCC ATGTCTTCTCGGTGTAAG 311 0 302 0 195 +ATGTCTTCTCGGTGTAAG CACCGCCCGTCACTCTCC 311 0 302 0 195 +AGGAGGATTTAGTAGTAA TTACCGTGTTACGACTTG 315 0 306 0 195 +ACAGAGACGGGTTGGCCC CCGCAAGGGAAAGCTGAA 318 0 309 0 195 +TCTAGTGGGCCTAAAAGC TTCTTGTTACTCATTTTA 320 0 311 0 195 +ACTGAGTCAAGTTTTCAC CTTACACATGCAAGTCTC 322 0 313 0 195 +CAGGTCAGTTTCTATCTG TGCCACCCCAGTATGTCC 307 0 299 0 195 +GGAGCAATCCAGGTCAGT TGCCACCCCAGTATGTCC 307 0 299 0 195 +CAATCCAGGTCAGTTTCT TGCCACCCCAGTATGTCC 307 0 299 0 195 +AATCCAGGTCAGTTTCTA TGCCACCCCAGTATGTCC 307 0 299 0 195 +ATCCAGGTCAGTTTCTAT TGCCACCCCAGTATGTCC 307 0 299 0 195 +TCCAGGTCAGTTTCTATC TGCCACCCCAGTATGTCC 307 0 299 0 195 +CCAGGTCAGTTTCTATCT TGCCACCCCAGTATGTCC 307 0 299 0 195 +AGGTCAGTTTCTATCTGT TGCCACCCCAGTATGTCC 307 0 299 0 195 +GGTCAGTTTCTATCTGTA TGCCACCCCAGTATGTCC 307 0 299 0 195 +CCATGCTCTGCCACCCCA GAGCAATCCAGGTCAGTT 309 0 301 0 195 +CCTAGGGTAACTTGGTTC CTTCGGTTGGGGCGACCA 296 0 287 0 194 +ATATGGACTCTGGGAGAG CGGTTGGGGCGACCACGG 296 0 287 0 194 +CGTCGATATGGACTCTGG GGGGCGACCACGGAGGAA 301 0 292 0 194 +CGTCGATATGGACTCTGG GGGCGACCACGGAGGAAA 301 0 292 0 194 +CTGAGTCAAGTTTTCACT CTTACACATGCAAGTCTC 322 0 314 0 195 +GTCAGTTTCTATCTGTAA TTTACCATGCTCTGCCAC 307 0 298 0 194 +GTCAGTTTCTATCTGTAA TTACCATGCTCTGCCACC 307 0 298 0 194 +AGACCCTTTGGAGCTTAA TCGCCCCAACCGAAGGTA 307 0 298 0 194 +AAGACCCTTTGGAGCTTA TCGCCCCAACCGAAGGTA 307 0 298 0 194 +ATGTCTTCTCGGTGTAAG GCTCTGAGACGCGTACAC 308 0 299 0 194 +TCCAGGTCAGTTTCTATC TTTACCATGCTCTGCCAC 309 0 300 0 194 +ATCCAGGTCAGTTTCTAT TTACCATGCTCTGCCACC 309 0 300 0 194 +AGGAGGATTTAGTAGTAA GTTACGACTTGCCTCCCC 316 0 307 0 194 +ATATGGACTCTGGGAGAG GGTTGGGGCGACCACGGA 295 0 286 0 193 +GATATGGACTCTGGGAGA GGTTGGGGCGACCACGGA 295 0 286 0 193 +GGGGCGACCACGGAGGAA GGGTAACTTGGTTCGTTG 297 0 288 0 193 +GGGCGACCACGGAGGAAA GGGTAACTTGGTTCGTTG 297 0 288 0 193 +CCTATATACCGCCGTCGT TTACTACTAAATCCTCCT 298 0 289 0 193 +GGGGCGACCACGGAGGAA TCGTCGATATGGACTCTG 300 0 291 0 193 +CAAGACGAGAAGACCCTT TCGCCCCAACCGAAGGTA 306 0 297 0 193 +ACCGCCCGTCACTCTCCC CTCGGTGTAAGTGAGATG 311 0 302 0 193 +CGGTGTAAGTGAGATGCT TGAACCCGGCTCTGAGAC 311 0 302 0 193 +CACCGCCCGTCACTCTCC CTCGGTGTAAGTGAGATG 311 0 302 0 193 +AGTCAAGTTTTCACTTAT CAACTTACACATGCAAGT 318 0 309 0 193 +ACTCTTTTGCCACAGAGA GCTGAAAGAGAAATGAAA 325 0 316 0 193 +AGCAATCCAGGTCAGTTT CTGCCACCCCAGTATGTC 305 0 297 0 193 +CGGTTGGGGCGACCACGG TAGGGTAACTTGGTTCGT 294 0 285 0 192 +CGGTTGGGGCGACCACGG GATATGGACTCTGGGAGA 294 0 285 0 192 +ACCACTTTGATAGAGTGA TTCGGGGTATGGGCCCGA 300 0 291 0 192 +CCTAGGGTAACTTGGTTC TCGGTTGGGGCGACCACG 302 0 293 0 192 +CCGGCTCTGAGACGCGTA CTTCTCGGTGTAAGTGAG 306 0 297 0 192 +AATCCAGGTCAGTTTCTA ATTTACCATGCTCTGCCA 307 0 298 0 192 +AATCCAGGTCAGTTTCTA TTACCATGCTCTGCCACC 307 0 298 0 192 +ATCCAGGTCAGTTTCTAT TTTACCATGCTCTGCCAC 307 0 298 0 192 +CCGGCTCTGAGACGCGTA CGGTGTAAGTGAGATGCT 308 0 299 0 192 +CGGTGTAAGTGAGATGCT TTGAACCCGGCTCTGAGA 308 0 299 0 192 +AACCCGGCTCTGAGACGC CTCGGTGTAAGTGAGATG 310 0 301 0 192 +TACGAAAGGATCGGAAAA TTTACCATGCTCTGCCAC 312 0 303 0 192 +TACGAAAGGATCGGAAAA TTACCATGCTCTGCCACC 312 0 303 0 192 +CGGAGCAATCCAGGTCAG TGCCACCCCAGTATGTCC 304 0 296 0 192 +GACCGGAGCAATCCAGGT TGCCACCCCAGTATGTCC 304 0 296 0 192 +CCGGAGCAATCCAGGTCA TGCCACCCCAGTATGTCC 304 0 296 0 192 +CTGCCACCCCAGTATGTC GAGCAATCCAGGTCAGTT 304 0 296 0 192 +TGCCACCCCAGTATGTCC TTTTCCTAGTACGAAAGG 308 0 300 0 192 +GGTTGGGGCGACCACGGA TAGGGTAACTTGGTTCGT 293 0 284 0 191 +CTTCTTGTTACTCATTTT TCTAGTGGGCCTAAAAGC 317 0 309 0 192 +GTAACTTGGTTCGTTGAT TCGGTTGGGGCGACCACG 297 0 288 0 191 +ACCACTTTGATAGAGTGA CGGGGTATGGGCCCGAAA 299 0 290 0 191 +AATCCAGGTCAGTTTCTA TTTACCATGCTCTGCCAC 306 0 297 0 191 +CAATCCAGGTCAGTTTCT TTACCATGCTCTGCCACC 306 0 297 0 191 +AATTTACCATGCTCTGCC ATCCAGGTCAGTTTCTAT 306 0 297 0 191 +CCCGGCTCTGAGACGCGT CGGTGTAAGTGAGATGCT 307 0 298 0 191 +CTTTTGCCACAGAGACGG GCTGAAAGAGAAATGAAA 323 0 314 0 191 +CACTCTTTTGCCACAGAG GCTGAAAGAGAAATGAAA 323 0 314 0 191 +GGCATGGTCCCGACCTTA TCCCTTGGGGGTGTGGCT 295 0 287 0 191 +CTGCCACCCCAGTATGTC GGTCAGTTTCTATCTGTA 303 0 295 0 191 +CTGCCACCCCAGTATGTC GGAGCAATCCAGGTCAGT 303 0 295 0 191 +CAATCCAGGTCAGTTTCT CTGCCACCCCAGTATGTC 303 0 295 0 191 +AATCCAGGTCAGTTTCTA CTGCCACCCCAGTATGTC 303 0 295 0 191 +ATCCAGGTCAGTTTCTAT CTGCCACCCCAGTATGTC 303 0 295 0 191 +CTGCCACCCCAGTATGTC TCCAGGTCAGTTTCTATC 303 0 295 0 191 +CCAGGTCAGTTTCTATCT CTGCCACCCCAGTATGTC 303 0 295 0 191 +CAGGTCAGTTTCTATCTG CTGCCACCCCAGTATGTC 303 0 295 0 191 +AGGTCAGTTTCTATCTGT CTGCCACCCCAGTATGTC 303 0 295 0 191 +GGGTAACTTGGTTCGTTG TCGGTTGGGGCGACCACG 294 0 285 0 190 +ACCACTTTGATAGAGTGA TCGGGGTATGGGCCCGAA 298 0 289 0 190 +GCTGAAAGAGAAATGAAA TTGCCACAGAGACGGGTT 323 0 315 0 191 +GCTGAAAGAGAAATGAAA TTTGCCACAGAGACGGGT 323 0 315 0 191 +CCGGCTCTGAGACGCGTA TCTTCTCGGTGTAAGTGA 302 0 293 0 190 +CAATTTACCATGCTCTGC TCCAGGTCAGTTTCTATC 305 0 296 0 190 +CTGTCTCGGGGTAGCTCA TACCGCAAGGGAAAGCTG 321 0 312 0 190 +CCGCAAGGGAAAGCTGAA CTGTCTCGGGGTAGCTCA 321 0 312 0 190 +ACCGCAAGGGAAAGCTGA CTGTCTCGGGGTAGCTCA 321 0 312 0 190 +AGGCTGTCTCGGGGTAGC TACCGCAAGGGAAAGCTG 322 0 313 0 190 +ACCGCAAGGGAAAGCTGA AGGCTGTCTCGGGGTAGC 322 0 313 0 190 +AGGCTGTCTCGGGGTAGC CCGCAAGGGAAAGCTGAA 322 0 313 0 190 +GCTGAAAGAGAAATGAAA TTTTGCCACAGAGACGGG 322 0 313 0 190 +GGCTGTCTCGGGGTAGCT TACCGCAAGGGAAAGCTG 323 0 314 0 190 +ACCGCAAGGGAAAGCTGA GGCTGTCTCGGGGTAGCT 323 0 314 0 190 +GCTGTCTCGGGGTAGCTC TACCGCAAGGGAAAGCTG 323 0 314 0 190 +CCGCAAGGGAAAGCTGAA GGCTGTCTCGGGGTAGCT 323 0 314 0 190 +CCGCAAGGGAAAGCTGAA GCTGTCTCGGGGTAGCTC 323 0 314 0 190 +ACCGCAAGGGAAAGCTGA GCTGTCTCGGGGTAGCTC 323 0 314 0 190 +ACACATGCAAGTCTCCGC AGTCAAGTTTTCACTTAT 324 0 315 0 190 +AGACCGGAGCAATCCAGG TGCCACCCCAGTATGTCC 302 0 294 0 190 +GTCAGTTTCTATCTGTAA TGCCACCCCAGTATGTCC 302 0 294 0 190 +GGGAAAGCTGAAAGAGAA TTGCCACAGAGACGGGTT 309 0 301 0 190 +GGGGCGACCACGGAGGAA GGTAACTTGGTTCGTTGA 293 0 284 0 189 +GGGCGACCACGGAGGAAA GGTAACTTGGTTCGTTGA 293 0 284 0 189 +CGTCGATATGGACTCTGG GTTGGGGCGACCACGGAG 294 0 285 0 189 +CCACAGAGACGGGTTGGC GCTGAAAGAGAAATGAAA 322 0 314 0 190 +CCCGGCTCTGAGACGCGT CTTCTCGGTGTAAGTGAG 301 0 292 0 189 +CCGGCTCTGAGACGCGTA CTCGGTGTAAGTGAGATG 305 0 296 0 189 +GCAATTTACCATGCTCTG TTTTCCTAGTACGAAAGG 308 0 299 0 189 +AGGAGGATTTAGTAGTAA TGTTACGACTTGCCTCCC 311 0 302 0 189 +ACCGCAAGGGAAAGCTGA ATAGGCTGTCTCGGGGTA 321 0 312 0 189 +AATAGGCTGTCTCGGGGT TACCGCAAGGGAAAGCTG 321 0 312 0 189 +ATAGGCTGTCTCGGGGTA TACCGCAAGGGAAAGCTG 321 0 312 0 189 +TACCGCAAGGGAAAGCTG TAGGCTGTCTCGGGGTAG 321 0 312 0 189 +AATAGGCTGTCTCGGGGT ACCGCAAGGGAAAGCTGA 321 0 312 0 189 +ACCGCAAGGGAAAGCTGA TAATAGGCTGTCTCGGGG 321 0 312 0 189 +CCGCAAGGGAAAGCTGAA TAGGCTGTCTCGGGGTAG 321 0 312 0 189 +AATAGGCTGTCTCGGGGT CCGCAAGGGAAAGCTGAA 321 0 312 0 189 +ACCGCAAGGGAAAGCTGA TAGGCTGTCTCGGGGTAG 321 0 312 0 189 +TAATAGGCTGTCTCGGGG TACCGCAAGGGAAAGCTG 321 0 312 0 189 +CCGCAAGGGAAAGCTGAA TAATAGGCTGTCTCGGGG 321 0 312 0 189 +ATAGGCTGTCTCGGGGTA CCGCAAGGGAAAGCTGAA 321 0 312 0 189 +AGTCAAGTTTTCACTTAT CTTACACATGCAAGTCTC 323 0 314 0 189 +CCACAGAGACGGGTTGGC GGGAAAGCTGAAAGAGAA 308 0 300 0 189 +GGGAAAGCTGAAAGAGAA TTTGCCACAGAGACGGGT 308 0 300 0 189 +AGTTTCTATCTGTAACGC ATTTACCATGCTCTGCCA 299 0 290 0 188 +GACGCGTACACACCGCCC TTGCATGGATGTCTTCTC 302 0 293 0 188 +CCCGGCTCTGAGACGCGT CTCGGTGTAAGTGAGATG 304 0 295 0 188 +ACTGAGTCAAGTTTTCAC CACATGCAAGTCTCCGCA 315 0 306 0 188 +ACAGAGACGGGTTGGCCC GCTGAAAGAGAAATGAAA 320 0 311 0 188 +CAGGTCAGTTTCTATCTG CATGCTCTGCCACCCCAG 296 0 288 0 188 +CATGCTCTGCCACCCCAG CCAGGTCAGTTTCTATCT 296 0 288 0 188 +CATGCTCTGCCACCCCAG TCCAGGTCAGTTTCTATC 296 0 288 0 188 +ATCCAGGTCAGTTTCTAT CATGCTCTGCCACCCCAG 296 0 288 0 188 +AATCCAGGTCAGTTTCTA CATGCTCTGCCACCCCAG 296 0 288 0 188 +CAATCCAGGTCAGTTTCT CATGCTCTGCCACCCCAG 296 0 288 0 188 +AGGTCAGTTTCTATCTGT CATGCTCTGCCACCCCAG 296 0 288 0 188 +CATGCTCTGCCACCCCAG GGTCAGTTTCTATCTGTA 296 0 288 0 188 +CAGACCGGAGCAATCCAG TGCCACCCCAGTATGTCC 300 0 292 0 188 +ACCGGAGCAATCCAGGTC CTGCCACCCCAGTATGTC 300 0 292 0 188 +CCGGAGCAATCCAGGTCA CTGCCACCCCAGTATGTC 300 0 292 0 188 +CGGAGCAATCCAGGTCAG CTGCCACCCCAGTATGTC 300 0 292 0 188 +CCATGCTCTGCCACCCCA GGAGCAATCCAGGTCAGT 302 0 294 0 188 +CTGCCACCCCAGTATGTC TTTTCCTAGTACGAAAGG 304 0 296 0 188 +CGATATGGACTCTGGGAG TCGGTTGGGGCGACCACG 294 0 285 0 187 +CACATGCAAGTCTCCGCA CTGAGTCAAGTTTTCACT 315 0 307 0 188 +AATTTACCATGCTCTGCC AGTTTCTATCTGTAACGC 298 0 289 0 187 +AGTTTCTATCTGTAACGC CAATTTACCATGCTCTGC 298 0 289 0 187 +CTCGGTGTAAGTGAGATG GAACCCGGCTCTGAGACG 303 0 294 0 187 +ACAGAGACGGGTTGGCCC GGGAAAGCTGAAAGAGAA 306 0 297 0 187 +ATGCTCTGCCACCCCAGT GGTCAGTTTCTATCTGTA 295 0 287 0 187 +AATCCAGGTCAGTTTCTA ATGCTCTGCCACCCCAGT 295 0 287 0 187 +ATGCTCTGCCACCCCAGT CAATCCAGGTCAGTTTCT 295 0 287 0 187 +ATGCTCTGCCACCCCAGT CCAGGTCAGTTTCTATCT 295 0 287 0 187 +ATGCTCTGCCACCCCAGT CAGGTCAGTTTCTATCTG 295 0 287 0 187 +AGGTCAGTTTCTATCTGT ATGCTCTGCCACCCCAGT 295 0 287 0 187 +ATGCTCTGCCACCCCAGT TCCAGGTCAGTTTCTATC 295 0 287 0 187 +ATCCAGGTCAGTTTCTAT ATGCTCTGCCACCCCAGT 295 0 287 0 187 +CTGCCACCCCAGTATGTC GTCAGTTTCTATCTGTAA 299 0 291 0 187 +TACGAAAGGATCGGAAAA TGCCACCCCAGTATGTCC 304 0 296 0 187 +CCTCCGTGGTCGCCCCAA CTTTGGAGCTTAAGGTAC 295 0 286 0 186 +CTCCGTGGTCGCCCCAAC CTTTGGAGCTTAAGGTAC 295 0 286 0 186 +CTTTGGAGCTTAAGGTAC GTGGTCGCCCCAACCGAA 295 0 286 0 186 +CTCCGTGGTCGCCCCAAC TTTGGAGCTTAAGGTACA 295 0 286 0 186 +CCTCCGTGGTCGCCCCAA TTTGGAGCTTAAGGTACA 295 0 286 0 186 +GTGGTCGCCCCAACCGAA TTTGGAGCTTAAGGTACA 295 0 286 0 186 +CGTGGTCGCCCCAACCGA TTTGGAGCTTAAGGTACA 295 0 286 0 186 +CGTGGTCGCCCCAACCGA CTTTGGAGCTTAAGGTAC 295 0 286 0 186 +CACAGAGACGGGTTGGCC GCTGAAAGAGAAATGAAA 319 0 311 0 187 +CTCTGAGACGCGTACACA GGATGTCTTCTCGGTGTA 300 0 291 0 186 +GCAATTTACCATGCTCTG GGTCAGTTTCTATCTGTA 301 0 292 0 186 +CAATCCAGGTCAGTTTCT TTTACCATGCTCTGCCAC 301 0 292 0 186 +TCGCAATTTACCATGCTC TTTTCCTAGTACGAAAGG 305 0 296 0 186 +TTCGCAATTTACCATGCT TTTTCCTAGTACGAAAGG 305 0 296 0 186 +CTCTTTTGCCACAGAGAC GCTGAAAGAGAAATGAAA 318 0 309 0 186 +GCTGAAAGAGAAATGAAA TCTTTTGCCACAGAGACG 318 0 309 0 186 +CTGCCACCCCAGTATGTC GACCGGAGCAATCCAGGT 298 0 290 0 186 +TCAGACCGGAGCAATCCA TGCCACCCCAGTATGTCC 298 0 290 0 186 +CACAGAGACGGGTTGGCC GGGAAAGCTGAAAGAGAA 305 0 297 0 186 +CAACTTACACATGCAAGT CAAGTTTTCACTTATGGC 311 0 303 0 186 +TTTCCTCCGTGGTCGCCC TTTGGAGCTTAAGGTACA 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC GTCGCCCCAACCGAAGGT 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC GGTCGCCCCAACCGAAGG 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC TGGTCGCCCCAACCGAAG 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC TCCTCCGTGGTCGCCCCA 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC TTCCTCCGTGGTCGCCCC 294 0 285 0 185 +CTTTGGAGCTTAAGGTAC TTTCCTCCGTGGTCGCCC 294 0 285 0 185 +GTCGCCCCAACCGAAGGT TTTGGAGCTTAAGGTACA 294 0 285 0 185 +GGTCGCCCCAACCGAAGG TTTGGAGCTTAAGGTACA 294 0 285 0 185 +TGGTCGCCCCAACCGAAG TTTGGAGCTTAAGGTACA 294 0 285 0 185 +TCCTCCGTGGTCGCCCCA TTTGGAGCTTAAGGTACA 294 0 285 0 185 +TTCCTCCGTGGTCGCCCC TTTGGAGCTTAAGGTACA 294 0 285 0 185 +ACCCGGCTCTGAGACGCG CTTCTCGGTGTAAGTGAG 299 0 290 0 185 +TTTCGCAATTTACCATGC TTTTCCTAGTACGAAAGG 304 0 295 0 185 +CTGTTCTAGTGGGCCTAA TTCTTGTTACTCATTTTA 309 0 300 0 185 +CTGTCTCGGGGTAGCTCA GTACCGCAAGGGAAAGCT 316 0 307 0 185 +AGGCTGTCTCGGGGTAGC GTACCGCAAGGGAAAGCT 317 0 308 0 185 +CATGCTCTGCCACCCCAG GTCAGTTTCTATCTGTAA 293 0 285 0 185 +ATGCTCTGCCACCCCAGT GTCAGTTTCTATCTGTAA 293 0 285 0 185 +AGCAATCCAGGTCAGTTT ATGCTCTGCCACCCCAGT 293 0 285 0 185 +AGTTTCTATCTGTAACGC CCATGCTCTGCCACCCCA 295 0 287 0 185 +CATGCTCTGCCACCCCAG TTTTCCTAGTACGAAAGG 297 0 289 0 185 +CTTTGGAGCTTAAGGTAC TCGCCCCAACCGAAGGTA 293 0 284 0 184 +CCGTGGTCGCCCCAACCG CTTTGGAGCTTAAGGTAC 293 0 284 0 184 +CTTTGGAGCTTAAGGTAC TCCGTGGTCGCCCCAACC 293 0 284 0 184 +TCGCCCCAACCGAAGGTA TTTGGAGCTTAAGGTACA 293 0 284 0 184 +TCCGTGGTCGCCCCAACC TTTGGAGCTTAAGGTACA 293 0 284 0 184 +CCGTGGTCGCCCCAACCG TTTGGAGCTTAAGGTACA 293 0 284 0 184 +GAGACGCGTACACACCGC GCATGGATGTCTTCTCGG 298 0 289 0 184 +AGACGCGTACACACCGCC TGCATGGATGTCTTCTCG 298 0 289 0 184 +AGGTCAGTTTCTATCTGT GCAATTTACCATGCTCTG 299 0 290 0 184 +GCAATTTACCATGCTCTG TACGAAAGGATCGGAAAA 304 0 295 0 184 +AGGAGGATTTAGTAGTAA TACGACTTGCCTCCCCTT 304 0 295 0 184 +TAAGTAGAAGTGAAAATC TGAGCGCTTAGCTGTTAA 311 0 302 0 184 +TAAGTAGAAGTGAAAATC TTGAGCGCTTAGCTGTTA 311 0 302 0 184 +AGACCGGAGCAATCCAGG CTGCCACCCCAGTATGTC 296 0 288 0 184 +ATGCTCTGCCACCCCAGT TTTTCCTAGTACGAAAGG 296 0 288 0 184 +GGCCTTTCGCAATTTACC TTTTCCTAGTACGAAAGG 302 0 293 0 183 +AGCGCTTAGCTGTTAACT TAAGTAGAAGTGAAAATC 310 0 301 0 183 +GCGCTTAGCTGTTAACTA TAAGTAGAAGTGAAAATC 310 0 301 0 183 +GAGCGCTTAGCTGTTAAC TAAGTAGAAGTGAAAATC 310 0 301 0 183 +AGTACCGCAAGGGAAAGC CTGTCTCGGGGTAGCTCA 314 0 305 0 183 +CTGCCACCCCAGTATGTC TACGAAAGGATCGGAAAA 300 0 292 0 183 +CCACAGAGACGGGTTGGC GCAAGGGAAAGCTGAAAG 304 0 296 0 183 +GCAATTTACCATGCTCTG GTCAGTTTCTATCTGTAA 295 0 286 0 182 +CGGCTCTGAGACGCGTAC TGTCTTCTCGGTGTAAGT 296 0 287 0 182 +CAGGTCAGTTTCTATCTG GCAATTTACCATGCTCTG 297 0 288 0 182 +ACAGAGACGGGTTGGCCC GCAAGGGAAAGCTGAAAG 303 0 294 0 182 +CTGTCTCGGGGTAGCTCA GGGAAAGCTGAAAGAGAA 308 0 299 0 182 +AATAGGCTGTCTCGGGGT GGGAAAGCTGAAAGAGAA 309 0 300 0 182 +AGGCTGTCTCGGGGTAGC GGGAAAGCTGAAAGAGAA 309 0 300 0 182 +GGGAAAGCTGAAAGAGAA TAATAGGCTGTCTCGGGG 309 0 300 0 182 +ATAGGCTGTCTCGGGGTA GGGAAAGCTGAAAGAGAA 309 0 300 0 182 +GCTGTCTCGGGGTAGCTC GGGAAAGCTGAAAGAGAA 310 0 301 0 182 +GGCTGTCTCGGGGTAGCT GGGAAAGCTGAAAGAGAA 310 0 301 0 182 +CAGACCGGAGCAATCCAG CTGCCACCCCAGTATGTC 294 0 286 0 182 +AAGTTTTCACTTATGGCT CAACTTACACATGCAAGT 307 0 299 0 182 +CTGTTCTAGTGGGCCTAA CTTCTTGTTACTCATTTT 308 0 300 0 182 +ATGTCTTCTCGGTGTAAG GGCTCTGAGACGCGTACA 295 0 286 0 181 +TACGAAAGGATCGGAAAA TCGCAATTTACCATGCTC 301 0 292 0 181 +TACGAAAGGATCGGAAAA TTCGCAATTTACCATGCT 301 0 292 0 181 +GGGAAAGCTGAAAGAGAA TAGGCTGTCTCGGGGTAG 308 0 299 0 181 +CACAGAGACGGGTTGGCC GCAAGGGAAAGCTGAAAG 302 0 294 0 181 +AACTTACACATGCAAGTC ACTGAGTCAAGTTTTCAC 293 0 284 0 180 +CGGTGTAAGTGAGATGCT TTTGAACCCGGCTCTGAG 296 0 287 0 180 +AGGCCTTTCGCAATTTAC TTTTCCTAGTACGAAAGG 299 0 290 0 180 +GCCTTTCGCAATTTACCA TTTTCCTAGTACGAAAGG 299 0 290 0 180 +TACGAAAGGATCGGAAAA TTTCGCAATTTACCATGC 300 0 291 0 180 +AACTTACACATGCAAGTC CTGAGTCAAGTTTTCACT 293 0 285 0 180 +CATGCTCTGCCACCCCAG TACGAAAGGATCGGAAAA 293 0 285 0 180 +GGTCAGTTTCTATCTGTA TCGCAATTTACCATGCTC 294 0 285 0 179 +CCAGGTCAGTTTCTATCT GCAATTTACCATGCTCTG 294 0 285 0 179 +CTTTCGCAATTTACCATG TTTTCCTAGTACGAAAGG 298 0 289 0 179 +GGCCTTTCGCAATTTACC TACGAAAGGATCGGAAAA 298 0 289 0 178 +CAACTTACACATGCAAGT GTCAAGTTTTCACTTATG 303 0 294 0 178 +CAACTTACACATGCAAGT TCAAGTTTTCACTTATGG 302 0 293 0 177 +ACCTTCGGTTGGGGCGAC TCAGATGTTCTGTGGCTT 296 0 291 0 179 +AGGAGGATTTAGTAGTAA CGACTTGCCTCCCCTTGT 295 0 286 0 176 +CCTTTCGCAATTTACCAT TTTTCCTAGTACGAAAGG 295 0 286 0 176 +AGGCCTTTCGCAATTTAC TACGAAAGGATCGGAAAA 295 0 286 0 175 +GCCTTTCGCAATTTACCA TACGAAAGGATCGGAAAA 295 0 286 0 175 +CTTTCGCAATTTACCATG TACGAAAGGATCGGAAAA 295 0 286 0 175 +TACCTTCGGTTGGGGCGA TCAGATGTTCTGTGGCTT 294 0 289 0 177 +CCTTCGGTTGGGGCGACC TCAGATGTTCTGTGGCTT 294 0 289 0 177 +TCAGATGTTCTGTGGCTT TTTACCTTCGGTTGGGGC 294 0 289 0 177 +AACTTACACATGCAAGTC AGTCAAGTTTTCACTTAT 294 0 285 0 174 +TCAGATGTTCTGTGGCTT TTTTACCTTCGGTTGGGG 293 0 288 0 176 +CGGTTGGGGCGACCACGG TCAGATGTTCTGTGGCTT 297 0 292 0 176 +GGTTGGGGCGACCACGGA TCAGATGTTCTGTGGCTT 296 0 291 0 175 diff --git a/pkg/obitools/obiprimers/obiprimers.go b/pkg/obitools/obiprimers/obiprimers.go index 0362434..399d212 100644 --- a/pkg/obitools/obiprimers/obiprimers.go +++ b/pkg/obitools/obiprimers/obiprimers.go @@ -53,6 +53,10 @@ func CLIPrimerPairs(sequences obiiter.IBioSequence) ([]obiprimer.PairStats, erro pairs, info, err := obiprimer.Search(corpus, taxa, params) if info != nil { log.Infof("%d strict words (found without error in at least %d examples)", info.StrictWords, info.MinStrict) + if params.NoMultiMatch { + log.Infof("no multi-match: %d strict words dropped as repeated, %d words dropped for matching several times in a sequence", + info.Repeated, info.MultiMatch) + } log.Infof("%d approximate occurrences; %d conserved primers, %d good", info.Matches, info.Pair.Primers, info.Pair.GoodPrimers) log.Infof("%d candidate pairs, %d amplifying enough examples, %d retained", diff --git a/pkg/obitools/obiprimers/obiprimers_test.go b/pkg/obitools/obiprimers/obiprimers_test.go index 9c33a27..b31474f 100644 --- a/pkg/obitools/obiprimers/obiprimers_test.go +++ b/pkg/obitools/obiprimers/obiprimers_test.go @@ -20,7 +20,7 @@ func samplePairs() []obiprimer.PairStats { } func TestPairsToCSVIterator(t *testing.T) { - it := PairsToCSVIterator(samplePairs()) + it := PairsToCSVIterator(samplePairs(), false) header := it.Header() if len(header) != len(csvColumns) || header[0] != "index" || header[1] != "primer1" { @@ -60,7 +60,7 @@ func TestPairsToCSVIterator(t *testing.T) { } func TestEmptyResultStillHasAHeader(t *testing.T) { - it := PairsToCSVIterator(nil) + it := PairsToCSVIterator(nil, false) if len(it.Header()) != len(csvColumns) { t.Fatalf("header %v", it.Header()) } @@ -88,6 +88,9 @@ func TestEveryColumnIsProduced(t *testing.T) { } func TestCLISearchParams(t *testing.T) { + savedMethod, savedSalt := _saltMethod, _salt + defer func() { _saltMethod, _salt = savedMethod, savedSalt }() + p, err := CLISearchParams() if err != nil { t.Fatal(err) @@ -113,3 +116,47 @@ func TestCLISearchParams(t *testing.T) { t.Error("a negative salt concentration must be refused") } } + +func TestReferenceColumns(t *testing.T) { + pairs := samplePairs() + pairs[0].RefLocation = "join(61..78,119..136)" + pairs[0].RefAmplicon = "acgt" + + it := PairsToCSVIterator(pairs, true) + header := it.Header() + n := len(csvColumns) + if len(header) != n+2 || header[n] != "reference_location" || header[n+1] != "reference_amplicon" { + t.Fatalf("header %v", header) + } + + var records []map[string]interface{} + for it.Next() { + batch := it.Get() + for _, r := range batch.Slice() { + records = append(records, r) + } + } + if records[0]["reference_location"] != "join(61..78,119..136)" || records[0]["reference_amplicon"] != "acgt" { + t.Errorf("reference columns of the first pair: %v", records[0]) + } + if _, present := records[1]["reference_location"]; present { + t.Error("a pair that does not amplify the reference must have no location (NA)") + } + + // without a reference the columns are absent + if got := len(PairsToCSVIterator(pairs, false).Header()); got != n { + t.Errorf("%d columns without reference, want %d", got, n) + } +} + +func TestSearchParamsCarryTheNewOptions(t *testing.T) { + _noMultiMatch, _reference = true, "NC_000001" + defer func() { _noMultiMatch, _reference = false, "" }() + p, err := CLISearchParams() + if err != nil { + t.Fatal(err) + } + if !p.NoMultiMatch || p.Reference != "NC_000001" || CLIReference() != "NC_000001" { + t.Errorf("-U/-R not carried: %+v", p) + } +} diff --git a/pkg/obitools/obiprimers/options.go b/pkg/obitools/obiprimers/options.go index 84cb611..985b505 100644 --- a/pkg/obitools/obiprimers/options.go +++ b/pkg/obitools/obiprimers/options.go @@ -28,6 +28,8 @@ var _minLength = 0 var _maxLength = 1000 var _threePrime = 0 var _circular = false +var _noMultiMatch = false +var _reference = "" var _strictQuorum = 0.7 var _sensitivity = 0.9 @@ -72,6 +74,17 @@ func OptionSet(options *getoptions.GetOpt) { options.Alias("c"), options.Description("Considers the sequences as circular (whole organelle genomes).")) + options.BoolVar(&_noMultiMatch, "no-multi-match", _noMultiMatch, + options.Alias("U"), + options.Description("Discards the primers that match, with the allowed mismatches, more than once "+ + "in any sequence (examples and counterexamples, both strands).")) + + options.StringVar(&_reference, "reference", _reference, + options.Alias("R"), + options.ArgName("SEQUENCE_ID"), + options.Description("Identifier of an example sequence taken as reference: for each pair amplifying it, "+ + "adds the location of the primer sites and the amplified sequence.")) + options.IntVar(&_primerLength, "primer-length", _primerLength, options.ArgName("LENGTH"), options.Description("Size of the primers, from 2 to 31.")) @@ -146,6 +159,9 @@ func CLIIgnoreTaxa() []string { return _ignore } // CLIExceptionTaxa returns the taxids of the sub-clades turned into counterexamples. func CLIExceptionTaxa() []string { return _except } +// CLIReference returns the identifier of the reference sequence, or "". +func CLIReference() string { return _reference } + // CLIRank returns the taxonomic rank of the coverage and specificity indices. func CLIRank() string { return _rank } @@ -176,6 +192,8 @@ func CLISearchParams() (obiprimer.SearchParams, error) { FalsePositive: _falsePositive, MinSpecificity: _specificity, Circular: _circular, + NoMultiMatch: _noMultiMatch, + Reference: _reference, Partitions: _partitions, Model: model, }, nil diff --git a/pkg/obitools/obiprimers/output.go b/pkg/obitools/obiprimers/output.go index 49c3dc6..c2f987d 100644 --- a/pkg/obitools/obiprimers/output.go +++ b/pkg/obitools/obiprimers/output.go @@ -24,6 +24,9 @@ var csvColumns = []string{ "min_length", "max_length", "mean_length", // 19-21 } +// referenceColumns are added when a reference sequence is given. +var referenceColumns = []string{"reference_location", "reference_amplicon"} + // round returns x rounded to the given number of decimals; the CSV writer // prints it with its shortest representation. func round(x float64, decimals int) float64 { @@ -43,6 +46,10 @@ func pairRecord(index int, p obiprimer.PairStats) obiitercsv.CSVRecord { "bc": round(float64(p.Bc), 4), "identified_taxa": p.Identified, "bs": round(float64(p.Bs), 4), "min_length": p.MinLen, "max_length": p.MaxLen, "mean_length": round(p.MeanLen, 2), } + if p.RefLocation != "" { + r["reference_location"] = p.RefLocation + r["reference_amplicon"] = p.RefAmplicon + } for key, v := range map[string]float64{"tm1": p.Tm1, "tm1_min": p.MinTm1, "tm2": p.Tm2, "tm2_min": p.MinTm2} { if !math.IsNaN(v) { r[key] = round(v, 1) @@ -51,13 +58,20 @@ func pairRecord(index int, p obiprimer.PairStats) obiitercsv.CSVRecord { return r } -// PairsToCSVIterator streams the pairs, in order, as CSV records. -func PairsToCSVIterator(pairs []obiprimer.PairStats) *obiitercsv.ICSVRecord { +// PairsToCSVIterator streams the pairs, in order, as CSV records. With +// withReference the two reference columns are written (NA for the pairs that +// do not amplify the reference sequence). +func PairsToCSVIterator(pairs []obiprimer.PairStats, withReference bool) *obiitercsv.ICSVRecord { iterator := obiitercsv.NewICSVRecord() iterator.Add(1) for _, column := range csvColumns { iterator.AppendField(column) } + if withReference { + for _, column := range referenceColumns { + iterator.AppendField(column) + } + } go func() { defer iterator.Done()