Refactor similarity engine and implement parallel clustering

Introduces parallel processing for clustering, refines scoring mechanisms, and expands test coverage for the alignment functionality.

This change introduces parallel processing capabilities within the clustering logic, updates the core similarity engine with new data structures and scoring methods, and implements a comprehensive test suite for the alignment tool. It also adds new command-line options for configuring alignment parameters and reference lengths.
This commit is contained in:
Eric Coissac committed 2026-11-03 14:04:32 +11:00
1 parent 49225030ca
commit e511650f5b
61 files changed
+13397 -801

No files matched your search

+10 -5
View File
@@ -44,13 +44,18 @@ OBITOOLS_DIRS:=$(sort $(patsubst %/,%,$(dir $(OBITOOLS_SRC))))
OBITOOLS:=$(notdir $(OBITOOLS_DIRS)) OBITOOLS:=$(notdir $(OBITOOLS_DIRS))
# Name of the target of a package: its path under pkg/, so that two packages of
# the same name in different directories (pkg/obialign and
# pkg/obitools/obialign) do not share a target.
pkgname=$(subst /,-,$(patsubst pkg/%,%,$(1)))
define MAKE_PKG_RULE define MAKE_PKG_RULE
pkg-$(notdir $(1)): $(1) pkg/obioptions/version.go pkg-$(call pkgname,$(1)): $(1) pkg/obioptions/version.go
@echo -n - Building package $(notdir $(1))... @echo -n - Building package $(call pkgname,$(1))...
@$(GOBUILD) ./$(1) \ @$(GOBUILD) ./$(1) \
2> pkg-$(notdir $(1)).log \ 2> pkg-$(call pkgname,$(1)).log \
|| cat pkg-$(notdir $(1)).log || cat pkg-$(call pkgname,$(1)).log
@rm -f pkg-$(notdir $(1)).log @rm -f pkg-$(call pkgname,$(1)).log
@echo Done. @echo Done.
endef endef
+183
View File
@@ -0,0 +1,183 @@
# obiprimers — notes de travail
Ré-implémentation d'ecoPrimers dans obitools4. Ce fichier garde l'état des recherches,
des mesures et de l'avancement. Dernière mise à jour : 2026-11-03.
Sources de référence :
- Article : `~/Sync/travail/__MOI__/ecoprimers/Documents/Riaz et al. 2011 ... .pdf` (NAR 39:e145)
- Code C : `~/Sync/travail/__MOI__/ecoprimers/src/` (binaire : `/usr/local/bin/ecoprimers`)
- Tutoriel et données : `~/Documents/Enseignement/DNA metabarcoding spring school/ecoPrimers-Fish/`
(`fish-primers.qmd`, `vertebrata.*` au format ecoPCR, `mito.vert.fasta.gz`,
`ncbitaxo_20250211.tgz`, sorties de référence `Teleostei.ecoprimers`, `Cyprinidae.ecoprimers`)
## 1. Algorithme d'ecoPrimers (lu dans le code)
1. **Mots stricts** (`strictprimers.c`, `filtering.c`) : mots de longueur `lp` (18 par défaut, <= 31)
encodés 2 bits/base, forme canonique `min(D,R)`, dédupliqués par séquence, présents sans
erreur dans >= 70 % des séquences exemples (`-q`). Pré-filtre : table de comptage des 13-mers
(4^13 entrées) qui écarte la plupart des mots avant la fusion triée (smoothsort + merge).
2. **Recherche approchée** (`aproxpattern.c`, `apat_search.c`) : chaque mot strict est cherché sur
les 2 brins, <= `e` substitutions (Manber/agrep bit-parallèle), dans toutes les séquences
(exemples et contre-exemples). Une amorce est « good » si elle touche >= 90 % des exemples
(`-s`) et <= 10 % des contre-exemples (`-x`). Les amorces seulement « conservées » restent
utilisables : une paire n'a besoin que d'une amorce « good ». `omask` vaut 0 dans cette
recherche : l'option `-3` est vérifiée plus tard, au niveau de la paire.
3. **Appariement** (`pairs.c`) : par séquence, occurrences triées par position ; paires de
distance dans (`lmin`, `lmax`) avec au moins une amorce « good » ; clé de paire canonique,
stockage dans un arbre (`tsearch`) avec un amplicon par occurrence.
4. **Indices** (`taxstats.c`) : Bc = taxons exemples amplifiés / taxons exemples (au rang `-t`,
espèce par défaut) ; Bs = taxons dont l'amplicon n'est partagé avec aucun autre taxon /
taxons exemples ; yule = in/|E| - out/|C| ; tri sur yule x Bs ; seuil `-T` sur Bs (0,6).
5. **Tm** (`libthermo`) : plus proches voisins, sel SantaLucia ou Owczarzy ; Tm exact et pire cas.
Faiblesses relevées (à ne pas reproduire) :
- Recherche approchée mot par mot sur toutes les séquences : c'est le goulot en temps.
- Un amplicon stocké par occurrence et par paire : c'est le goulot en mémoire.
- `taxonomycoverage` et `taxonomyspecificity` rebalayent toute la base à chaque paire.
- Mots <= 31 bases ; sortie en tableau figé de 21 colonnes.
Non lus (à vérifier avant de les porter ou de les écarter) : `merge.c`, `smothsort.c`,
`ahocorasick.c`, `thermostats.c`, `nnparams.c`, `PrimerSets.c` (sets d'amorces, désactivé dans le
`main` : l'option `-p` est commentée).
## 2. Briques obitools4 réutilisables
| Besoin | Brique |
|---|---|
| Lecture, formats, batch, parallélisme | `obiformats`, `obiiter`, `obidefault` |
| Taxonomie, rangs, sous-clades | `obitax`, `obiseq/taxonomy_*`, options `--taxonomy`, `--restrict-to-taxon`, `--ignore-taxon` |
| K-mers canoniques (k <= 31) | `obikmer.EncodeCanonicalKmers`, `IterCanonicalKmers`, `ReverseComplement` |
| Comptage par partition, quorum, différence | `obikmer.KmerSetGroupBuilder`, `QuorumAtLeast/AtMost`, `Difference` |
| Contraintes sur amorces (GC, runs, IUPAC) | `obikmer.KmerConstraints` |
| Recherche approchée (indels, 2 brins) | `obiapat.ApatPattern` (cgo) |
| Distances entre mots | `obikmer.HammingDistance`, `KmerLCSBatch` (SIMD) |
| Alignement borné | `obialign.BandedLCS` |
| Patterns de CLI | `obipcr`, `obioligotag`, `obiclust` |
**Aucun calcul de Tm n'existe** dans obitools4 (grep santalucia / nearest-neighbor / meltingtemp :
rien). D'où le nouveau paquet générique `pkg/obithermo`.
SIMD : opt-in (`GOEXPERIMENT=simd`), repli scalaire portable. Même règle pour tout nouveau noyau.
## 3. Mesures de référence d'ecoPrimers (cette machine)
Commande : `ecoprimers -d vertebrata -e 3 -3 2 -l 30 -L 150 -c -r <taxid>`, deux processus
lancés en parallèle, un cœur chacun. Sorties dans `/tmp/ecoprimers-bench/` (temporaire).
| Jeu | Séquences | Paires totales | Paires retenues | Temps CPU | Mémoire max |
|---|---|---|---|---|---|
| Cyprinidae (`-r 7953`) | 325 | 42 682 | 3 448 | 134 s | 1,86 Go |
| Teleostei (`-r 32443`) | 3 909 | 9 407 | 407 | 350 s | 2,11 Go |
Les sorties sont **identiques** (diff sur les lignes hors commentaires) à
`Cyprinidae.ecoprimers` et `Teleostei.ecoprimers` du tutoriel. Ce sont les cibles de non-régression du
mode A.
Observation : Cyprinidae a 12 fois moins de séquences mais 4,5 fois plus de paires que
Teleostei, pour une mémoire comparable. Le goulot mémoire est donc le nombre de paires et le
stockage des amplicons, pas la taille de la base.
## 4. Sémantique de `-r`, `-i`, `-E` (testée, cas Salmo, taxid 8028)
`readdnadb.c` ne garde que les séquences qui sont exemples ou contre-exemples.
| Options | Exemples | Contre-exemples |
|---|---|---|
| `-r 8028` | 7 (6 espèces) | 0 : tout le reste est **supprimé** |
| `-r 8028 -i 7742` | 7 | 7 815 (7 697 espèces) : tous les autres vertébrés |
| `-r 8028 -i 8015` | 7 | 76 (69 espèces) : les autres Salmonidae |
| `-r 8015 -E 8028` | 76 | 7 : sens inverse, Salmo devient contre-exemple |
Avec `-r 8028 -i 8015` : 15 534 mots stricts (quorum 4/7 sur 7 séquences seulement), et un quorum
de contre-exemples de 7/76 (le défaut `-x 0,1` laisse passer 9 % du groupe proche, trop peu
exigeant pour une amorce spécifique). Les runs *Salmo* n'ont pas été menés jusqu'au bout (arrêtés
après l'en-tête).
Pièges de la base : *Salmostoma bacalia* est un cyprinidé (nom en « Salmo », taxid différent) : filtrer
par taxid, jamais par nom. Le tutoriel annonce 7 823 génomes ; `mito.vert.fasta.gz` en contient 7 822.
## 5. Plan d'implémentation
Paquets prévus :
- `pkg/obithermo` : plus proches voisins, corrections de sel, Tm exact et pire cas. Générique.
- `pkg/obiprimer` : cœur (`words.go`, `match.go`, `pairs.go`, `score.go`, `types.go`).
- `pkg/obitools/obiprimers` : `options.go`, `obiprimers.go`, `output.go`.
- `cmd/obitools/obiprimers/main.go`.
Deux modes :
- **A, conservé** (ecoPrimers) : k-mers présents dans >= q séquences exemples, via les partitions
disque d'obikmer (remplace tri en place, smoothsort, table 4^13) ; recherche approchée par
`obiapat` d'abord (version fidèle), optimisation par index seulement si elle est mesurée plus
rapide.
- **B, spécifique** (une espèce ou quelques espèces proches) : ancres = k-mers de T absents de C
(`Difference`) plus k-mers à distance de Hamming >= d de tout k-mer de C (mismatches en 3'
plus discriminants) ; paires entre ancres spécifiques, ou ancre spécifique + amorce conservée.
Le critère « good » est inversé. Définition précise de « spécifique » à valider avant le code.
Cas de test : *Salmo* (cible) contre le reste des Salmonidae.
Sortie : **CSV** comme tous les obitools, ordre des colonnes d'ecoPrimers, en-têtes nommés.
Génomes circulaires (`-c`) gérés de bout en bout. Validation aval : `obipcr -e 5` sur chaque
paire, comme dans le tutoriel.
Ordre :
1. `obithermo` (tests contre `CalculTM.xls` et colonnes Tm de `Teleostei.ecoprimers`)
2. Mode A, mots stricts sur `KmerSetGroup` (liste identique à ecoPrimers)
3. Recherche approchée (`obiapat`, puis index si mesuré utile)
4. Appariement + indices (index taxon -> séquences calculé une fois)
5. CLI et sortie CSV
6. Mode B (spécification validée d'abord)
7. Parallélisme (`Split()`, `obidefault.ParallelWorkers()`)
8. Hors v1 : sets d'amorces (`PrimerSets.c`), options `-b/-M/-k`.
Règles du projet à respecter : fichiers < 500 lignes, pas de commit sans demande, pas de
matérialisation complète en mémoire quand le flux suffit, pas de réimplémentation de l'existant.
## 6. Avancement
- [x] Lecture de l'article et des sources C principales
- [x] Inventaire des briques obitools4
- [x] Mesures de référence ecoPrimers (Cyprinidae, Teleostei) : identiques aux références
- [x] Sémantique `-r/-i/-E` testée sur *Salmo*
- [x] `obithermo` (`pkg/obithermo`) : terminé, tests verts, voir section 8
- [ ] Mode A
- [ ] Mode B
## 7. Questions ouvertes
- Mode B : critère « spécifique » strict (T contre C) ou score continu (distance minimale en 3' à C) ?
- Mode B : valeur par défaut de `-x` (0,1 d'ecoPrimers trop permissive pour une cible étroite) ?
- Recherche approchée : l'index par voisinage bat-il agrep ? À mesurer, pas à supposer.
## 8. `pkg/obithermo` (étape 1, terminée)
Fichiers : `model.go` (modèle, ~230 lignes), `nn_table.go` (112 paramètres, **généré** depuis
`nnparams.c` par un script jetable hors dépôt : `/tmp/obithermo-gen/gen.py`), `model_test.go`,
`testdata/c_reference.tsv` (400 cas calculés par la vraie libthermo C compilée),
`testdata/ecoprimers_tm.tsv` (13 amorces et Tm imprimés par ecoPrimers sur Teleostei).
API : `NewModel(primerConc, targetConc, salt, method)`, `DefaultModel()`, `(*Model).SelfTm(primer)`,
`(*Model).Tm(primer, site)` (site = segment de la cible lu dans l'orientation de l'amorce),
`GCCount(seq)`. Retour en degrés Celsius, `NaN` si le modèle ne prédit aucun duplex stable.
Modèle immuable, sans allocation (17,7 ns par appel `Tm`, M3 Max), sûr en concurrence.
Validation :
- 400 cas aléatoires (amorces de 12 à 25 b, 0 à n mismatches, deux jeux de conditions) :
écart maximal avec le C ~5e-6 K. Cause vérifiée : le C écrit ses constantes en `float`
(`-21.3f`, `1.987f`, `-5.9f`). En émulant ces arrondis en float32, l'écart tombe à 7e-13 K.
Le port est donc fidèle ; il utilise des constantes décimales exactes. Tolérance de test : 1e-4 K.
- Les 13 Tm imprimés par ecoPrimers sont retrouvés à +/- 0,05 °C près.
Écarts volontaires avec ecoPrimers (à confirmer) :
1. **273,15 au lieu de 273,0** : ecoPrimers calcule `Tm(K) - 273.0`. Les Tm de `obithermo` sont donc
0,15 °C plus bas que ceux d'ecoPrimers (le test tient compte du décalage). Une constante,
facile à inverser si la compatibilité exacte des colonnes Tm prime.
2. **Owczarzy corrigé** : dans ecoPrimers, `gcContent` n'est jamais affecté (grep sur tout `src/`),
donc `-m 2` lit de la mémoire non initialisée (`CNNParams` est sur la pile dans `main`).
`obithermo` utilise la fraction GC de l'amorce. Non comparable au C ; testé par invariants
(les deux corrections s'annulent à 1 M, le sel augmente la Tm).
3. **Pas de gaps, bulges ni extrémités pendantes** : jamais atteints par `SelfTM`/`TwoTM` (les
séquences sont nettoyées en ACGT). Bases non ACGT : erreur, alors que le C lit hors tableau.
4. Tm minimale d'un modèle en échec : `NaN`, là où le C renvoie 0 K (soit -273 °C affiché).
Pour plus tard : les k-mers d'obikmer sont codés A,C,G,T = 0..3, comme les tables de `obithermo` ;
une variante `TmCode(uint64, k)` évitera le décodage quand le cœur appellera Tm par paire.
+26
View File
@@ -0,0 +1,26 @@
package main
import (
"os"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obioptions"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obialign"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
)
func main() {
optionParser := obioptions.GenerateOptionParser(
"obialign",
"pairwise similarity of nucleotide sequences, as a CSV table (the principle of sumatra)",
obialign.OptionSet)
_, args := optionParser(os.Args)
fs, err := obiconvert.CLIReadBioSequences(args...)
obiconvert.OpenSequenceDataErrorMessage(args, err)
obialign.CLIWriteTable(obialign.CLIOBIAlign(fs))
obiutils.WaitForLastPipe()
}
+206
View File
@@ -0,0 +1,206 @@
#!/bin/bash
#
# Here give the name of the test serie
#
TEST_NAME=obialign
CMD=obialign
######
#
# Some variable and function definitions: please don't change them
#
######
TEST_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
OBITOOLS_DIR="${TEST_DIR/obitest*/}build"
export PATH="${OBITOOLS_DIR}:${PATH}"
MCMD="$(echo "${CMD:0:4}" | tr '[:lower:]' '[:upper:]')$(echo "${CMD:4}" | tr '[:upper:]' '[:lower:]')"
TMPDIR="$(mktemp -d)"
ntest=0
success=0
failed=0
cleanup() {
echo "========================================" 1>&2
echo "## Results of the $TEST_NAME tests:" 1>&2
echo 1>&2
echo "- $ntest tests run" 1>&2
echo "- $success successfully completed" 1>&2
echo "- $failed failed tests" 1>&2
echo 1>&2
echo "Cleaning up the temporary directory..." 1>&2
echo 1>&2
echo "========================================" 1>&2
rm -rf "$TMPDIR" # Suppress the temporary directory
if [ $failed -gt 0 ]; then
log "$TEST_NAME tests failed"
log
log
exit 1
fi
log
log
exit 0
}
log() {
echo -e "[$TEST_NAME @ $(date)] $*" 1>&2
}
log "Testing $TEST_NAME..."
log "Test directory is $TEST_DIR"
log "obitools directory is $OBITOOLS_DIR"
log "Temporary directory is $TMPDIR"
log "files: $(find $TEST_DIR | awk -F'/' '{print $NF}' | tail -n +2)"
######################################################################
####
#### Below are the tests
####
#### Before each test :
#### - increment the variable ntest
####
#### Run the command as the condition of an if / then /else
#### - The command must return 0 on success
#### - The command must return an exit code different from 0 on failure
#### - The datafiles are stored in the same directory than the test script
#### - The test script directory is stored in the TEST_DIR variable
#### - If result files have to be produced they must be stored
#### in the temporary directory (TMPDIR variable)
####
#### then clause is executed on success of the command
#### - Write a success message using the log function
#### - increment the variable success
####
#### else clause is executed on failure of the command
#### - Write a failure message using the log function
#### - increment the variable failed
####
######################################################################
((ntest++))
if $CMD -h > "${TMPDIR}/help.txt" 2>&1
then
log "$MCMD: printing help OK"
((success++))
else
log "$MCMD: printing help failed"
((failed++))
fi
#
# Dataset used by the following tests: two families of similar sequences, a
# sequence identical to another one, and a sequence with an ambiguous
# nucleotide that is discarded.
#
cat > "${TMPDIR}/data.fasta" <<DATA
>a1 count=20;
acgtacgtacgtaacctagcctagcctagggatcgatcgatcgatcgaatcg
>a2 count=3;
acgtacgtacgtaacctagcctagcctagggatcgatcgatcgttcgaatcg
>a3 count=2;
acgtacgtacgtaacctagcctagcctagggatcgatcgatcgatcgaatcg
>b1 count=15;
ttgcatgcatgctagctagctagcatgcatcgatcgatgctagctagtagct
>b2 count=1;
ttgcatgcatgctagctagctagcatgcatcgatcgatgctagctagtaact
>x1 count=4;
ttgcatgcatgctangctagctagcatgcatcgatcgatgctagctagtagc
DATA
cat > "${TMPDIR}/ref.fasta" <<DATA
>r1
acgtacgtacgtaacctagcctagcctagggatcgatcgatcgatcgaatcg
>r2
ttgcatgcatgctagctagctagcatgcatcgatcgatgctagctagtagct
>r3
ggggccccggggccccggggccccggggccccggggccccggggcccc
DATA
((ntest++))
if $CMD --max-cpu 2 "${TMPDIR}/data.fasta" > "${TMPDIR}/all.csv" 2> /dev/null &&
[ "$(head -n 1 "${TMPDIR}/all.csv")" = "id1,id2,score" ] &&
[ "$(tail -n +2 "${TMPDIR}/all.csv" | wc -l | tr -d ' ')" = "10" ]
then
log "$MCMD: without threshold all the pairs of the 5 usable sequences are written OK"
((success++))
else
log "$MCMD: the table without threshold is wrong"
((failed++))
fi
((ntest++))
if $CMD --max-cpu 2 -t 0.95 "${TMPDIR}/data.fasta" > "${TMPDIR}/t95.csv" 2> /dev/null &&
[ "$(tail -n +2 "${TMPDIR}/t95.csv" | cut -d, -f1,2 | tr '\n' ' ')" = "a1,a2 a1,a3 a2,a3 b1,b2 " ] &&
grep -q '^a1,a3,1$' "${TMPDIR}/t95.csv"
then
log "$MCMD: only the pairs reaching the threshold are written, in order OK"
((success++))
else
log "$MCMD: the table with a threshold is wrong"
((failed++))
fi
((ntest++))
if $CMD --max-cpu 2 -t 0.95 -x "${TMPDIR}/data.fasta" 2> /dev/null | head -n 2 | tail -n 1 | grep -q '^a1,a2,[0-9.]*,20,3,52,52$'
then
log "$MCMD: extra columns OK"
((success++))
else
log "$MCMD: extra columns failed"
((failed++))
fi
((ntest++))
if $CMD --max-cpu 2 -g -t 0.9 "${TMPDIR}/data.fasta" 2> /dev/null | grep -q '^b1,x1,'
then
log "$MCMD: a sequence with an IUPAC letter is kept with --accept-ambiguous OK"
((success++))
else
log "$MCMD: --accept-ambiguous failed"
((failed++))
fi
((ntest++))
if $CMD --max-cpu 2 -R "${TMPDIR}/ref.fasta" -t 0.95 "${TMPDIR}/data.fasta" 2> /dev/null | tail -n +2 | cut -d, -f1,2 | tr '\n' ' ' > "${TMPDIR}/two.txt" &&
[ "$(cat "${TMPDIR}/two.txt")" = "a1,r1 a2,r1 a3,r1 b1,r2 b2,r2 " ]
then
log "$MCMD: comparison with a reference file OK"
((success++))
else
log "$MCMD: comparison with a reference file failed"
((failed++))
fi
((ntest++))
if $CMD --max-cpu 1 "${TMPDIR}/data.fasta" 2> /dev/null > "${TMPDIR}/cpu1.csv" &&
$CMD --max-cpu 8 "${TMPDIR}/data.fasta" 2> /dev/null > "${TMPDIR}/cpu8.csv" &&
cmp -s "${TMPDIR}/cpu1.csv" "${TMPDIR}/cpu8.csv"
then
log "$MCMD: the table does not depend on the number of threads OK"
((success++))
else
log "$MCMD: the table depends on the number of threads"
((failed++))
fi
#########################################
#
# At the end of the tests
# the cleanup function is called
#
#########################################
cleanup
+3 -2
View File
@@ -62,8 +62,9 @@ func bandedLCSAtLeast(a, b []byte, minLCS int, ws *bandedLCSWorkspace, useSIMD b
} }
// The score alone is much cheaper than the score with the length of the // The score alone is much cheaper than the score with the length of the
// alignment: the latter is only computed when the pair reaches minLCS. // alignment: the latter is only computed when the pair reaches minLCS. With
if lcsScoreSIMD(a, b, kmin, kmax, minLCS, ws) < minLCS { // no minimum there is nothing to reject, and the pass would be wasted.
if minLCS > 0 && lcsScoreSIMD(a, b, kmin, kmax, minLCS, ws) < minLCS {
return -1, -1 return -1, -1
} }
encodeBases(ws, a, b) encodeBases(ws, a, b)
+8
View File
@@ -48,6 +48,14 @@ func ReadSequencesBatchFromFiles(filenames []string,
log.Printf("Start reading of file : %s", filename) log.Printf("Start reading of file : %s", filename)
// The batches of a file reach us in any order (parallel parsing
// of the headers). They are numbered here in arrival order, so
// the order of the file must be restored first, unless the
// order of the data is not wanted (several concurrent readers).
if concurrent_readers == 1 {
iter = iter.SortBatches()
}
for iter.Next() { for iter.Next() {
batch := iter.Get() batch := iter.Get()
batchiter.Push(batch.Reorder(nextCounter())) batchiter.Push(batch.Reorder(nextCounter()))
@@ -0,0 +1,38 @@
package obiformats
import (
"fmt"
"os"
"path/filepath"
"strings"
"testing"
)
// With a single reader, the sequences of several files must come out in the
// order of the files, whatever the order in which the batches are parsed.
func TestReadSequencesBatchFromFilesKeepsOrder(t *testing.T) {
dir := t.TempDir()
var names []string
for _, prefix := range []string{"a", "b"} {
var sb strings.Builder
for i := 0; i < 25000; i++ {
fmt.Fprintf(&sb, ">%s%07d {\"k\":%d}\n%s\n", prefix, i, i, strings.Repeat("acgt", 40))
}
name := filepath.Join(dir, prefix+".fasta")
if err := os.WriteFile(name, []byte(sb.String()), 0o600); err != nil {
t.Fatal(err)
}
names = append(names, name)
}
it := ReadSequencesBatchFromFiles(names, nil, 1)
_, db := it.Load()
if len(db) != 50000 {
t.Fatalf("expected 50000 sequences, got %d", len(db))
}
for i := 1; i < len(db); i++ {
if db[i-1].Id() >= db[i].Id() {
t.Fatalf("out of order at %d: %s then %s", i, db[i-1].Id(), db[i].Id())
}
}
}
@@ -1,10 +1,10 @@
package obiclust package obisimilarity
// A block stores the 4-mer tables of a few centers, transposed: the counter // A block stores the 4-mer tables of a few sequences, transposed: the counter
// of the word w for the lane j is data[w*width+j]. A vector instruction then // of the word w for the lane j is data[w*width+j]. A vector instruction then
// handles the same word for all the centers of the block, and only the words // handles the same word for all the sequences of the block, and only the words
// that a sequence contains (a hundred for a short amplicon, out of 256) need // that a sequence contains (a hundred for a short amplicon, out of 256) need
// to be visited to compare it with all the centers of the block. // to be visited to compare it with all the sequences of the block.
type tableBlock struct { type tableBlock struct {
data []uint8 data []uint8
} }
@@ -14,9 +14,9 @@ func newTableBlock(width int) tableBlock {
} }
// set stores the table t as the lane `lane` of the block. // set stores the table t as the lane `lane` of the block.
func (b *tableBlock) set(width, lane int, t *table4) { func (b *tableBlock) set(width, lane int, t *Table4) {
for w := range t.count { for w := range t.Count {
b.data[w*width+lane] = t.count[w] b.data[w*width+lane] = t.Count[w]
} }
} }
@@ -26,14 +26,14 @@ func (b *tableBlock) common(width int, words []uint16, out []uint8) {
blockCommon(b.data, width, words, out) blockCommon(b.data, width, words, out)
} }
// sparseWords lists the words of a table as w<<8|count, so that the visit of // SparseWords lists the words of a table as w<<8|count, so that the visit of
// a block only goes through the words present in the sequence. nil is // a block only goes through the words present in the sequence. nil is
// returned when the counters add up to more than 255, which would overflow the // returned when the counters add up to more than 255, which would overflow the
// 8-bit sums of the blocks. // 8-bit sums of the blocks.
func sparseWords(t *table4) []uint16 { func SparseWords(t *Table4) []uint16 {
words := make([]uint16, 0, 128) words := make([]uint16, 0, 128)
mass := 0 mass := 0
for w, c := range t.count { for w, c := range t.Count {
if c > 0 { if c > 0 {
words = append(words, uint16(w)<<8|uint16(c)) words = append(words, uint16(w)<<8|uint16(c))
mass += int(c) mass += int(c)
@@ -1,10 +1,10 @@
//go:build !goexperiment.simd //go:build !goexperiment.simd
package obiclust package obisimilarity
// simdBlockWidth is 0 without SIMD: the blocks are not used. // simdBlockWidth is 0 without SIMD: the blocks are not used.
func simdBlockWidth() int { return 0 } func simdBlockWidth() int { return 0 }
func blockCommon(data []uint8, width int, words []uint16, out []uint8) { func blockCommon(data []uint8, width int, words []uint16, out []uint8) {
panic("obiclust: blocks of tables require GOEXPERIMENT=simd") panic("obisimilarity: blocks of tables require GOEXPERIMENT=simd")
} }
@@ -1,10 +1,10 @@
//go:build goexperiment.simd //go:build goexperiment.simd
package obiclust package obisimilarity
import "simd" import "simd"
// simdBlockWidth is the number of centers in a block: one per lane of a // simdBlockWidth is the number of sequences in a block: one per lane of a
// vector of bytes. // vector of bytes.
func simdBlockWidth() int { func simdBlockWidth() int {
var probe simd.Uint8s var probe simd.Uint8s
@@ -14,7 +14,7 @@ func simdBlockWidth() int {
// blockCommon computes, for the sequence whose words are given, the sum of // blockCommon computes, for the sequence whose words are given, the sum of
// the minima of the counters with every lane of the block. It is the value of // the minima of the counters with every lane of the block. It is the value of
// commonWords without the overflow term, as the sums fit in 8 bits (see // commonWords without the overflow term, as the sums fit in 8 bits (see
// sparseWords). out must hold at least `width` bytes. // SparseWords). out must hold at least `width` bytes.
func blockCommon(data []uint8, width int, words []uint16, out []uint8) { func blockCommon(data []uint8, width int, words []uint16, out []uint8) {
acc := simd.BroadcastUint8s(0) acc := simd.BroadcastUint8s(0)
for _, e := range words { for _, e := range words {
+95
View File
@@ -0,0 +1,95 @@
package obisimilarity
import (
"sync"
"sync/atomic"
)
// Entry is a distinct sequence of a dataset, with what the comparisons need.
type Entry struct {
Seq []byte
Length int
Count int // count of the sequence (cumulated for identical sequences)
Table *Table4
Sparse []uint16 // words of the table (see SparseWords), nil if unusable
// Ambiguous sequences contain IUPAC letters other than a, c, g and t: they
// have no 4-mer table, and the filter does not apply to them.
Ambiguous bool
}
const (
notNucleotide = iota
plainNucleotide
ambiguousNucleotide
)
var nucleotideClass = func() (t [256]uint8) {
for _, c := range "acgt" {
t[c] = plainNucleotide
}
for _, c := range "umrwsykvhdbn" {
t[c] = ambiguousNucleotide
}
return t
}()
// Classify tells if a sequence (in lower case) can be compared. It returns
// ok=false for an empty sequence and for a sequence with anything else than
// IUPAC letters; IUPAC letters other than a, c, g and t are only accepted if
// acceptAmbiguous is set, and then ambiguous is true.
func Classify(s []byte, acceptAmbiguous bool) (ok, ambiguous bool) {
if len(s) == 0 {
return false, false
}
for _, c := range s {
switch nucleotideClass[c] {
case notNucleotide:
return false, false
case ambiguousNucleotide:
if !acceptAmbiguous {
return false, false
}
ambiguous = true
}
}
return true, ambiguous
}
// BuildEntries describes n sequences, their 4-mer tables being computed in
// parallel. get returns the sequence i, its count, and whether it is
// ambiguous. The tables are stored contiguously.
func BuildEntries(n int, get func(i int) (seq []byte, count int, ambiguous bool), workers int) []Entry {
entries := make([]Entry, n)
tables := make([]Table4, n)
var next atomic.Int64
var wg sync.WaitGroup
for w := 0; w < max(workers, 1); w++ {
wg.Add(1)
go func() {
defer wg.Done()
for {
i := int(next.Add(1)) - 1
if i >= n {
return
}
seq, count, ambiguous := get(i)
var sparse []uint16
if !ambiguous {
tables[i].Fill(seq)
sparse = SparseWords(&tables[i])
}
entries[i] = Entry{
Seq: seq,
Length: len(seq),
Count: count,
Table: &tables[i],
Sparse: sparse,
Ambiguous: ambiguous,
}
}
}()
}
wg.Wait()
return entries
}
+106
View File
@@ -0,0 +1,106 @@
package obisimilarity
import "sort"
// Member is a copy of the entry of a sequence in an Index, with its own table.
type Member struct {
Entry
ID int // identifier given by the caller
Rank int // rank in the order of insertion
}
const tabChunk = 1024
// A Bucket holds the members of one length, in the order of insertion, and
// their tables by blocks (see tableBlock).
type Bucket struct {
Members []Member
blocks []tableBlock
width int
}
// Commons caches the result of the filter on one block of a bucket.
type Commons struct {
v [64]uint8
blk int
}
// Reset must be called when changing of bucket.
func (c *Commons) Reset() { c.blk = -1 }
// Common returns the sum of the minima of the 4-mer counters of the sequence
// whose Sparse words are given and of the member k of the bucket (without the
// overflow term), or -1 if it is not available, in which case PairScore
// computes it.
func (b *Bucket) Common(k int, sparse []uint16, c *Commons) int {
if b.width == 0 || sparse == nil {
return -1
}
if blk := k / b.width; blk != c.blk {
b.blocks[blk].common(b.width, sparse, c.v[:])
c.blk = blk
}
return int(c.v[k%b.width])
}
// Index stores sequences by length. A sequence can only be similar to the ones
// whose length is compatible with its own (see Scoring.LengthCompatible), so
// it only visits the buckets of these lengths, instead of all the sequences,
// and the filter works on blocks of sequences at once.
//
// An Index can grow, but not while it is read.
type Index struct {
width int // sequences per block of transposed tables, 0 if unused
byLen map[int]*Bucket
lens []int // lengths that have a bucket, increasing
tabs [][]Table4 // chunks holding the tables of the members
n int
}
// NewIndex returns an empty index.
func NewIndex() *Index {
return &Index{width: simdBlockWidth(), byLen: make(map[int]*Bucket)}
}
// Len is the number of sequences in the index.
func (x *Index) Len() int { return x.n }
// Lengths returns the lengths that have a bucket, in increasing order.
func (x *Index) Lengths() []int { return x.lens }
// Bucket returns the bucket of the sequences of the given length.
func (x *Index) Bucket(length int) *Bucket { return x.byLen[length] }
// Add stores a copy of the entry e as the next member of the index, with the
// identifier id, and returns it.
func (x *Index) Add(e Entry, id int) Member {
if x.n%tabChunk == 0 {
x.tabs = append(x.tabs, make([]Table4, tabChunk))
}
tab := &x.tabs[len(x.tabs)-1][x.n%tabChunk]
if e.Table != nil {
*tab = *e.Table
}
e.Table = tab
b := x.byLen[e.Length]
if b == nil {
b = &Bucket{width: x.width}
x.byLen[e.Length] = b
x.lens = append(x.lens, e.Length)
sort.Ints(x.lens)
}
if w := x.width; w > 0 && !e.Ambiguous {
if len(b.Members)%w == 0 {
b.blocks = append(b.blocks, newTableBlock(w))
}
b.blocks[len(b.blocks)-1].set(w, len(b.Members)%w, tab)
} else if w > 0 && len(b.Members)%w == 0 {
b.blocks = append(b.blocks, newTableBlock(w))
}
m := Member{Entry: e, ID: id, Rank: x.n}
b.Members = append(b.Members, m)
x.n++
return m
}
+233
View File
@@ -0,0 +1,233 @@
package obisimilarity
import (
"math/rand"
"testing"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
)
func randomSeq(rng *rand.Rand, n int, alpha string) []byte {
s := make([]byte, n)
for i := range s {
s[i] = alpha[rng.Intn(len(alpha))]
}
return s
}
// commonWordsRef is the definition of commonWords, spelled out.
func commonWordsRef(t1, t2 *Table4) int {
total := 0
for i := range t1.Count {
total += int(min(t1.Count[i], t2.Count[i]))
}
return total + min(t1.Overflow, t2.Overflow)
}
func TestCommonWords(t *testing.T) {
rng := rand.New(rand.NewSource(3))
for it := 0; it < 3000; it++ {
alpha := []string{"acgt", "ac", "a"}[it%3]
t1 := NewTable4(randomSeq(rng, rng.Intn(1200), alpha))
t2 := NewTable4(randomSeq(rng, rng.Intn(1200), alpha))
if got, want := commonWords(t1, t2), commonWordsRef(t1, t2); got != want {
t.Fatalf("commonWords = %d, want %d", got, want)
}
}
}
// TestNewTable4 checks the table against the 4-mers counted the long way,
// including the saturation of the counters.
func TestNewTable4(t *testing.T) {
code := map[byte]int{'a': 0, 'c': 1, 't': 2, 'g': 3}
rng := rand.New(rand.NewSource(4))
for it := 0; it < 500; it++ {
alpha := []string{"acgt", "a", "ac"}[it%3]
s := randomSeq(rng, rng.Intn(900), alpha)
var counts [256]int
for i := 0; i+4 <= len(s); i++ {
w := 0
for _, c := range s[i : i+4] {
w = w<<2 | code[c]
}
counts[w]++
}
tab := NewTable4(s)
over := 0
for w, c := range counts {
if c > 255 {
over += c - 255
c = 255
}
if int(tab.Count[w]) != c {
t.Fatalf("word %d: got %d, want %d", w, tab.Count[w], c)
}
}
if tab.Overflow != over {
t.Fatalf("overflow = %d, want %d", tab.Overflow, over)
}
}
}
// TestBlockCommon checks the sums of a block of transposed tables against
// commonWords.
func TestBlockCommon(t *testing.T) {
width := simdBlockWidth()
if width == 0 {
t.Skip("blocks of tables are used with GOEXPERIMENT=simd only")
}
rng := rand.New(rand.NewSource(8))
for it := 0; it < 200; it++ {
alpha := []string{"acgt", "ac", "a"}[it%3]
block := newTableBlock(width)
tabs := make([]*Table4, width)
for j := range tabs {
tabs[j] = NewTable4(randomSeq(rng, rng.Intn(600), alpha))
block.set(width, j, tabs[j])
}
q := NewTable4(randomSeq(rng, rng.Intn(260), alpha))
words := SparseWords(q)
if words == nil {
continue
}
out := make([]uint8, 64)
block.common(width, words, out)
for j, tab := range tabs {
want := commonWordsRef(q, tab) - min(q.Overflow, tab.Overflow)
if int(out[j]) != want {
t.Fatalf("lane %d: %d, want %d", j, out[j], want)
}
}
}
}
func TestClassify(t *testing.T) {
cases := []struct {
in string
accept bool
kept bool
ambiguous bool
}{
{"acgt", false, true, false}, {"acgt", true, true, false},
{"acgtn", false, false, false}, {"acgtn", true, true, true},
{"acgtx", true, false, false}, {"nacgt", false, false, false},
{"acgt-", true, false, false}, {"acgu", true, true, true},
{"ACGT", true, false, false}, {"", true, false, false},
{"rykmswbdhvn", true, true, true}, {"rykmswbdhvn", false, false, false},
}
for _, c := range cases {
kept, amb := Classify([]byte(c.in), c.accept)
if kept != c.kept || amb != c.ambiguous {
t.Errorf("Classify(%q, %v) = (%v, %v), want kept=%v ambiguous=%v", c.in, c.accept, kept, amb, c.kept, c.ambiguous)
}
}
}
func randomEntries(rng *rand.Rand, n int) []Entry {
return BuildEntries(n, func(int) ([]byte, int, bool) {
return randomSeq(rng, 8+rng.Intn(80), "acgt"), 1 + rng.Intn(20), false
}, 2)
}
// TestLengthTable checks that the values precomputed by length give the
// scores of the direct computation, in every mode.
func TestLengthTable(t *testing.T) {
rng := rand.New(rand.NewSource(33))
// sequences made of the same few roots, so that many pairs are similar
roots := [][]byte{randomSeq(rng, 70, "acgt"), randomSeq(rng, 55, "acgt")}
entries := BuildEntries(120, func(i int) ([]byte, int, bool) {
var s []byte
for _, c := range roots[i%2] {
switch r := rng.Intn(30); {
case r == 0:
s = append(s, "acgt"[rng.Intn(4)])
case r == 1:
default:
s = append(s, c)
}
}
if i < 20 { // very short sequences skip the filter
s = s[:8+rng.Intn(10)]
}
return s, 1 + rng.Intn(20), false
}, 2)
var buf obialign.BandedLCSBuffer
for _, ref := range []Reference{RefAlignment, RefLongest, RefShortest} {
for _, p := range []Params{
{Threshold: 0.9, Normalized: true},
{Threshold: 0.8, Normalized: true, Distance: true},
{Threshold: 30},
{Threshold: 6, Distance: true},
{Normalized: true}, // no threshold
} {
p.Reference, p.Ratio = ref, 3
table, err := NewScoring(p, entries)
if err != nil {
t.Fatal(err)
}
direct := *table
direct.byLength = nil // forces the direct computation
if (ref == RefShortest) != (table.byLength == nil) {
t.Fatalf("ref %v: table presence is wrong", ref)
}
for i := range entries {
for j := range entries {
a, aok := direct.PairScore(&entries[i], &entries[j], -1, &buf)
b, bok := table.PairScore(&entries[i], &entries[j], -1, &buf)
if a != b || aok != bok {
t.Fatalf("ref %v params %+v pair %d,%d: (%v,%v) with the table, (%v,%v) directly", ref, p, i, j, b, bok, a, aok)
}
}
}
}
}
}
// TestIndexCommon checks that the filter computed by blocks gives the same
// scores as the direct computation, for every pair, whatever the order the
// members are read in.
func TestIndexCommon(t *testing.T) {
rng := rand.New(rand.NewSource(7))
entries := randomEntries(rng, 150)
sc, err := NewScoring(Params{Threshold: 0.6, Normalized: true, Reference: RefAlignment, Ratio: 100}, entries)
if err != nil {
t.Fatal(err)
}
index := NewIndex()
for i := range entries {
index.Add(entries[i], i)
}
if index.Len() != len(entries) {
t.Fatalf("Len = %d", index.Len())
}
var buf obialign.BandedLCSBuffer
var commons Commons
for i := range entries {
q := &entries[i]
for _, length := range index.Lengths() {
b := index.Bucket(length)
commons.Reset()
for k := len(b.Members) - 1; k >= 0; k-- { // backwards: blocks are not read in order
m := &b.Members[k]
got, gok := sc.PairScore(q, &m.Entry, b.Common(k, q.Sparse, &commons), &buf)
want, wok := sc.PairScore(q, &entries[m.ID], -1, &buf)
if got != want || gok != wok {
t.Fatalf("pair %d,%d: (%v,%v) with the blocks, (%v,%v) directly", i, m.ID, got, gok, want, wok)
}
}
}
}
}
func TestNewScoringChecks(t *testing.T) {
for _, p := range []Params{{Threshold: -1}, {Threshold: 1.5, Normalized: true}} {
if _, err := NewScoring(p, nil); err == nil {
t.Errorf("%+v must be rejected", p)
}
}
if _, err := NewScoring(Params{Threshold: 12}, nil); err != nil {
t.Errorf("a raw threshold above 1 is valid: %v", err)
}
}
+284
View File
@@ -0,0 +1,284 @@
package obisimilarity
import (
"errors"
"math"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
log "github.com/sirupsen/logrus"
)
// Reference is the length used to normalize a score (or to express a raw
// distance): the alignment length, the longest or the shortest sequence.
type Reference int
const (
RefAlignment Reference = iota
RefLongest
RefShortest
)
// Params describe how a pair of sequences is scored and compared to a threshold.
type Params struct {
// Threshold: with a normalized similarity an identity (0.95 for 95%), with
// a normalized distance 1 - identity, with a raw similarity the length of
// the LCS, with a raw distance the number of differences with the
// reference length. 0 means no threshold: all the pairs are reported.
Threshold float64
Normalized bool // the score is divided by the reference length
Distance bool // the score is a distance, not a similarity
Reference Reference
// Ratio is the maximum ratio between the counts of a sequence and of the
// one it is compared to (clustering only): a larger ratio gives no match.
Ratio float64
}
// Scoring scores the pairs of sequences and decides whether they pass the
// threshold. It must not be modified once built.
type Scoring struct {
threshold float64 // threshold as used for the comparison (1 - t for a normalized distance)
normalize bool
lcsmode bool // true: score is a similarity, false: it is a distance
ref Reference
ratio float64
worst float64 // score of a pair that does not pass
all bool // no threshold: every pair is reported
// byLength gives, for the pairs whose longest sequence has a length l,
// the values that depend on l only. It is built when the reference is not
// the shortest sequence, otherwise those values depend on both lengths.
byLength []lengthInfo
}
type lengthInfo struct {
lcsMin int32 // see lcsMin
minCommon int32 // see minCommon
}
// NewScoring builds the scoring of the sequences `entries`, which are the
// ones to be compared (the longest of them is needed for a raw distance).
func NewScoring(p Params, entries []Entry) (*Scoring, error) {
if p.Threshold < 0 || (p.Normalized && p.Threshold > 1.0) {
return nil, errors.New("the threshold must not be negative, and must be at most 1 when scores are normalized")
}
sc := &Scoring{
normalize: p.Normalized,
lcsmode: !p.Distance,
ref: p.Reference,
ratio: p.Ratio,
}
sc.threshold = p.Threshold
sc.all = p.Threshold == 0
if !sc.lcsmode && sc.normalize && p.Threshold > 0 {
sc.threshold = 1.0 - p.Threshold
}
lmax := 0
for i := range entries {
lmax = max(lmax, entries[i].Length)
}
if !sc.similarityLike() {
sc.worst = float64(lmax)
}
if sc.ref != RefShortest {
sc.byLength = make([]lengthInfo, lmax+1)
for l := range sc.byLength {
sc.byLength[l] = lengthInfo{int32(sc.lcsMin(l, l)), int32(sc.minCommon(l, l))}
}
}
return sc, nil
}
// Worst is the score of a pair that does not pass the threshold.
func (sc *Scoring) Worst() float64 { return sc.worst }
// Threshold is the threshold the scores are compared to.
func (sc *Scoring) Threshold() float64 { return sc.threshold }
// SimilarityLike tells if the comparison with the threshold is "score >= threshold".
func (sc *Scoring) SimilarityLike() bool { return sc.similarityLike() }
func (sc *Scoring) similarityLike() bool { return sc.lcsmode || sc.normalize }
// lcsMin is the smallest LCS score that a pair of lengths l1 >= l2 can have
// and still pass the threshold.
func (sc *Scoring) lcsMin(l1, l2 int) int {
switch {
case sc.threshold <= 0:
return 0
case sc.normalize:
if sc.ref == RefShortest {
return int(sc.threshold * float64(l2))
}
return int(sc.threshold * float64(l1))
case sc.lcsmode:
return int(sc.threshold)
case sc.ref == RefShortest:
return int(float64(l2) - sc.threshold)
default:
return int(float64(l1) - sc.threshold)
}
}
// minCommon is the number of 4-mers that two sequences of lengths l1 >= l2
// must share to be possibly similar enough.
func (sc *Scoring) minCommon(l1, l2 int) int {
if sc.all {
return 0 // no threshold, no filter
}
reflen := l2
if sc.ref == RefAlignment || sc.ref == RefLongest {
reflen = l1
}
var lcs int
if sc.normalize {
lcs = int(math.Ceil(float64(reflen) * sc.threshold))
} else {
th := sc.threshold
if !sc.lcsmode {
th = float64(reflen) - th
}
lcs = int(th)
}
return minCommonWords(l1, lcs)
}
// lcsMinFor is lcsMin for sequences of lengths l1 >= l2, from the table when it exists.
func (sc *Scoring) lcsMinFor(l1, l2 int) int {
if sc.byLength != nil {
return int(sc.byLength[l1].lcsMin)
}
return sc.lcsMin(l1, l2)
}
// LengthCompatible tells if two sequences of these lengths may be similar
// enough: the shortest cannot be shorter than the minimum LCS score of the pair.
func (sc *Scoring) LengthCompatible(la, lb int) bool {
l1, l2 := max(la, lb), min(la, lb)
return l2 >= sc.lcsMinFor(l1, l2)
}
// PairScore scores the pair (q, c). ok is false when the pair is known not to
// reach the threshold, in which case no score is given.
//
// common, if not negative, is the sum of the minima of the 4-mer counters of
// the two sequences, already computed by a block of tables (see Index).
func (sc *Scoring) PairScore(q, c *Entry, common int, buf *obialign.BandedLCSBuffer) (score float64, ok bool) {
// The quotient of two counts is not above 1 when the first is not above
// the second, which spares the division in the usual case.
if !(sc.ratio >= 1 && q.Count <= c.Count) && float64(q.Count)/float64(c.Count) > sc.ratio {
return 0, false
}
l1, l2 := q.Length, c.Length
long, short := q, c
if l1 < l2 {
l1, l2 = l2, l1
long, short = c, q
}
var lcsMin, minCommon int
if sc.byLength != nil {
info := sc.byLength[l1]
lcsMin, minCommon = int(info.lcsMin), int(info.minCommon)
} else {
lcsMin, minCommon = sc.lcsMin(l1, l2), sc.minCommon(l1, l2)
}
if l2 < lcsMin {
return 0, false
}
// The 4-mer filter counts identical words: it does not hold when IUPAC
// codes can match different letters. It lets short sequences pass.
if l1 >= 12 && l2 >= 12 && !long.Ambiguous && !short.Ambiguous {
if common >= 0 {
common += min(long.Table.Overflow, short.Table.Overflow)
} else {
common = commonWords(long.Table, short.Table)
}
if common < minCommon {
return 0, false
}
}
// The length of the alignment is needed only to normalize by it, or to
// express a distance with it; the score alone is much cheaper.
var lcs, alilen int
var err error
if sc.ref == RefAlignment && (sc.normalize || !sc.lcsmode) {
lcs, alilen, err = buf.AtLeast(q.Seq, c.Seq, lcsMin)
} else {
lcs, err = buf.ScoreAtLeast(q.Seq, c.Seq, lcsMin)
}
if err != nil {
log.Fatalf("Cannot align two sequences: %v", err)
}
if lcs < 0 {
// The best alignment has a score under lcsMin: the pair cannot pass.
return 0, false
}
id := float64(lcs)
if !sc.lcsmode && !sc.normalize {
switch sc.ref {
case RefAlignment:
id = float64(alilen) - id
case RefLongest:
id = float64(l1) - id
case RefShortest:
id = float64(l2) - id
}
}
if sc.normalize {
switch sc.ref {
case RefAlignment:
id /= float64(alilen)
case RefLongest:
id /= float64(l1)
case RefShortest:
id /= float64(l2)
}
}
return id, true
}
// Passes tells if the score s of a pair reaches the threshold.
func (sc *Scoring) Passes(s float64) bool {
if sc.all {
return true
}
if sc.similarityLike() {
return s >= sc.threshold
}
return s <= sc.threshold
}
// Beats tells if the score s is better than the score best (without any
// threshold).
func (sc *Scoring) Beats(s, best float64) bool {
if sc.similarityLike() {
return s > best
}
return s < best
}
// SelfScore is the score of a sequence with itself.
func (sc *Scoring) SelfScore(length int) float64 {
switch {
case sc.normalize && sc.lcsmode:
return 1.0
case !sc.lcsmode:
return 0.0
default:
return float64(length)
}
}
// Reported is the score to report for a pair whose score is s: a normalized
// distance is computed as a similarity against the converted threshold.
func (sc *Scoring) Reported(s float64) float64 {
if !sc.lcsmode && sc.normalize {
return 1.0 - s
}
return s
}
+54
View File
@@ -0,0 +1,54 @@
// Package obisimilarity holds what the tools that compare nucleotide sequences
// by the length of their longest common subsequence (obiclust, obialign) have
// in common: the scoring of a pair against a threshold, with the lossless
// 4-mer filter that avoids most of the alignments, and the index that finds
// the sequences a given one can be similar to.
//
// The scoring follows the arithmetic of sumaclust and sumatra (integer
// truncations, floating point comparisons) so that the same pairs are
// accepted with the same scores.
package obisimilarity
// Table4 is the 4-mer occurrence table of a sequence: one saturating counter
// per word, and the number of occurrences that did not fit in the counters.
type Table4 struct {
Count [256]uint8
Overflow int
}
// NewTable4 counts the 4-mers of a sequence made of the letters a, c, g
// and t. The 2-bit code of a base is (letter>>1)&3, i.e. a=0, c=1, t=2, g=3.
func NewTable4(seq []byte) *Table4 {
t := new(Table4)
t.Fill(seq)
return t
}
// Fill counts the 4-mers of seq in a zeroed table.
func (t *Table4) Fill(seq []byte) {
if len(seq) < 4 {
return
}
w := uint(0)
for i, c := range seq {
w = (w<<2 | uint(c>>1)&3) & 0xFF
if i < 3 {
continue
}
if t.Count[w] < 255 {
t.Count[w]++
} else {
t.Overflow++
}
}
}
// minCommonWords is the minimum number of 4-mers that two sequences must
// share when the longest has length reflen and they have a common
// subsequence of length lcs.
func minCommonWords(reflen, lcs int) int {
nbfrag := (reflen-lcs)*2 + 1
smin := lcs / nbfrag
r := lcs - smin*nbfrag
return max(smin-2, 0)*r + max(smin-3, 0)*(nbfrag-r)
}
+14
View File
@@ -0,0 +1,14 @@
//go:build !goexperiment.simd
package obisimilarity
// commonWords is the upper bound used for the number of 4-mers shared by two
// sequences: the sum of the minima of the counters, plus the minimum of the
// two overflows.
func commonWords(t1, t2 *Table4) int {
total := 0
for i := range t1.Count {
total += int(min(t1.Count[i], t2.Count[i]))
}
return total + min(t1.Overflow, t2.Overflow)
}
@@ -1,24 +1,24 @@
//go:build goexperiment.simd //go:build goexperiment.simd
package obiclust package obisimilarity
import "simd" import "simd"
// commonWords is the upper bound sumaclust uses for the number of 4-mers // commonWords is the upper bound used for the number of 4-mers shared by two
// shared by two sequences: the sum of the minima of the counters, plus the // sequences: the sum of the minima of the counters, plus the minimum of the
// minimum of the two overflows. // two overflows.
// //
// The minima of the 256 counters are computed by vectors of bytes, and summed // The minima of the 256 counters are computed by vectors of bytes, and summed
// in 16-bit lanes (at most 256*255 spread over the lanes, the lanes being at // in 16-bit lanes (at most 256*255 spread over the lanes, the lanes being at
// least 8 in number, so that none of them overflows). // least 8 in number, so that none of them overflows).
func commonWords(t1, t2 *table4) int { func commonWords(t1, t2 *Table4) int {
var probe simd.Uint8s var probe simd.Uint8s
vl := probe.Len() vl := probe.Len()
acc := simd.BroadcastUint16s(0) acc := simd.BroadcastUint16s(0)
low := simd.BroadcastUint16s(0x00FF) low := simd.BroadcastUint16s(0x00FF)
for i := 0; i < len(t1.count); i += vl { for i := 0; i < len(t1.Count); i += vl {
m := simd.LoadUint8s(t1.count[i:]).Min(simd.LoadUint8s(t2.count[i:])).ReshapeToUint16s() m := simd.LoadUint8s(t1.Count[i:]).Min(simd.LoadUint8s(t2.Count[i:])).ReshapeToUint16s()
acc = acc.Add(m.And(low)).Add(m.ShiftAllRight(8)) acc = acc.Add(m.And(low)).Add(m.ShiftAllRight(8))
} }
@@ -31,5 +31,5 @@ func commonWords(t1, t2 *table4) int {
for _, v := range lanes[:sums.Len()] { for _, v := range lanes[:sums.Len()] {
total += int(v) total += int(v)
} }
return total + min(t1.overflow, t2.overflow) return total + min(t1.Overflow, t2.Overflow)
} }
+222
View File
@@ -0,0 +1,222 @@
// Package obithermo computes DNA duplex melting temperatures with the
// nearest-neighbor model used by ecoPrimers (SantaLucia 1998 parameters, with
// the SantaLucia or Owczarzy 2008 salt corrections).
//
// Only the situations ecoPrimers actually evaluates are supported: a primer
// against its perfect complement (SelfTm), and a primer against a genomic site
// of the same length that may carry mismatches (Tm). Gaps, bulges and dangling
// ends are not modeled.
package obithermo
import (
"fmt"
"math"
)
// SaltMethod selects the monovalent salt correction.
type SaltMethod int
const (
// SantaLucia applies a per-step entropy correction 0.368*ln[Na+].
SantaLucia SaltMethod = 1
// Owczarzy applies the GC-dependent correction of Owczarzy et al. 2008.
Owczarzy SaltMethod = 2
)
// Default experimental conditions, those of ecoPrimers.
const (
DefaultPrimerConc = 8e-7 // total primer strand concentration (M)
DefaultTargetConc = 0.0 // target strand concentration (M)
DefaultSalt = 0.05 // monovalent cation concentration (M)
)
const (
gasConstant = 1.987 // cal/mol/K
initEntropy = -5.9 // duplex initiation, cal/mol/K
kelvinOffset = 273.15 // ecoPrimers subtracts 273.0 (see package notes)
owczarzyGCSlope = 4.29e-5 // (4.29*fGC - 3.95)e-5 * ln[Na]
owczarzyOffset = 3.95e-5
owczarzyQuadratic = 9.40e-6 // 9.4e-6 * ln[Na]^2
)
// Model holds the thermodynamic tables and the experimental conditions.
// A Model is immutable after NewModel and safe for concurrent use.
type Model struct {
method SaltMethod
rlogc float64 // R*ln(Ct factor), included in the initial entropy
logNa float64 // ln[Na+]
// Indexed by (top0<<6 | top1<<4 | bot0<<2 | bot1) with A,C,G,T = 0..3.
// dS already includes the SantaLucia salt term when that method is selected.
dH [256]float64
dS [256]float64
}
// NewModel builds a Model for the given strand concentrations (M), monovalent
// salt concentration (M) and salt correction method.
func NewModel(primerConc, targetConc, salt float64, method SaltMethod) (*Model, error) {
if method != SantaLucia && method != Owczarzy {
return nil, fmt.Errorf("obithermo: unknown salt method %d", method)
}
if salt <= 0 {
return nil, fmt.Errorf("obithermo: salt concentration must be positive, got %g", salt)
}
// Effective strand concentration, as in nparam_InitParams.
var ctFactor float64
switch {
case primerConc == targetConc:
ctFactor = primerConc / 2
case primerConc > targetConc:
ctFactor = primerConc - targetConc/2
default:
ctFactor = targetConc - primerConc/2
}
if ctFactor <= 0 {
return nil, fmt.Errorf("obithermo: strand concentrations must be positive (primer %g, target %g)",
primerConc, targetConc)
}
m := &Model{
method: method,
rlogc: gasConstant * math.Log(ctFactor),
logNa: math.Log(salt),
}
m.fillTables()
return m, nil
}
// DefaultModel returns a Model with the ecoPrimers default conditions and the
// SantaLucia salt correction.
func DefaultModel() *Model {
m, err := NewModel(DefaultPrimerConc, DefaultTargetConc, DefaultSalt, SantaLucia)
if err != nil {
panic(err) // the defaults are valid
}
return m
}
var baseCode = func() (t [256]int8) {
for i := range t {
t[i] = -1
}
for i, c := range "ACGT" {
t[c] = int8(i)
t[c+'a'-'A'] = int8(i)
}
return
}()
func stepIndex(t0, t1, b0, b1 int) int { return t0<<6 | t1<<4 | b0<<2 | b1 }
func (m *Model) fillTables() {
// Double mismatches (no Watson-Crick pair at either end of the step) are
// treated as interior-loop expansions. Complement of code c is 3-c.
const loopH, loopS = 0.0, -0.97
for x := range 4 {
for y := range 4 {
for a := range 4 {
for b := range 4 {
if x+a != 3 && y+b != 3 {
i := stepIndex(x, y, a, b)
m.dH[i], m.dS[i] = loopH, loopS
}
}
}
}
}
// Explicit parameters override the defaults (Watson-Crick and single mismatches).
for _, e := range nnEntries {
i := stepIndex(int(baseCode[e.top[0]]), int(baseCode[e.top[1]]),
int(baseCode[e.bottom[0]]), int(baseCode[e.bottom[1]]))
m.dH[i], m.dS[i] = e.dH, e.dS
}
// SantaLucia salt correction: 0.5*kfac per side of each step, i.e. kfac.
if m.method == SantaLucia {
kfac := 0.368 * m.logNa
for i := range m.dS {
m.dS[i] += kfac
}
}
}
// GCCount returns the number of G and C (upper or lower case) in seq.
func GCCount(seq []byte) int {
n := 0
for _, c := range seq {
switch c {
case 'G', 'C', 'g', 'c':
n++
}
}
return n
}
// SelfTm returns the melting temperature (degrees Celsius) of primer against
// its perfect complement. It returns NaN when the model predicts no stable duplex.
func (m *Model) SelfTm(primer []byte) (float64, error) {
return m.duplex(primer, primer, true)
}
// Tm returns the melting temperature (degrees Celsius) of primer against the
// site, a stretch of the target read in the same orientation as the primer
// (primer and site have the same length; mismatches are primer[i] != site[i]).
// It returns NaN when the model predicts no stable duplex.
func (m *Model) Tm(primer, site []byte) (float64, error) {
if len(site) != len(primer) {
return 0, fmt.Errorf("obithermo: primer (%d) and site (%d) lengths differ", len(primer), len(site))
}
return m.duplex(primer, site, false)
}
func (m *Model) duplex(primer, site []byte, perfect bool) (float64, error) {
n := len(primer)
if n < 2 {
return 0, fmt.Errorf("obithermo: primer too short (%d), need at least 2 bases", n)
}
dH := 0.0
dS := initEntropy + m.rlogc
p0 := int(baseCode[primer[0]])
s0 := p0
if !perfect {
s0 = int(baseCode[site[0]])
}
if p0 < 0 || s0 < 0 {
return 0, fmt.Errorf("obithermo: non-ACGT base at position 0")
}
for i := 1; i < n; i++ {
p1 := int(baseCode[primer[i]])
s1 := p1
if !perfect {
s1 = int(baseCode[site[i]])
}
if p1 < 0 || s1 < 0 {
return 0, fmt.Errorf("obithermo: non-ACGT base at position %d", i)
}
// The partner strand carries the complement of the site.
idx := stepIndex(p0, p1, 3-s0, 3-s1)
dH += m.dH[idx]
dS += m.dS[idx]
p0, s0 = p1, s1
}
if m.method == Owczarzy {
fgc := float64(GCCount(primer)) / float64(n)
dS += dH * ((owczarzyGCSlope*fgc-owczarzyOffset)*m.logNa + owczarzyQuadratic*m.logNa*m.logNa)
}
// One-state transition, as nparam_CalcTM: valid only for dS < 0 and Tm >= 0.
if dS >= 0 {
return math.NaN(), nil
}
tm := dH / dS
if tm < 0 {
return math.NaN(), nil
}
return tm - kelvinOffset, nil
}
+203
View File
@@ -0,0 +1,203 @@
package obithermo
import (
"bufio"
"math"
"os"
"strconv"
"strings"
"testing"
)
func readTSV(t *testing.T, path string) [][]string {
t.Helper()
f, err := os.Open(path)
if err != nil {
t.Fatal(err)
}
defer f.Close()
var rows [][]string
sc := bufio.NewScanner(f)
for sc.Scan() {
if line := strings.TrimSpace(sc.Text()); line != "" {
rows = append(rows, strings.Split(line, "\t"))
}
}
if err := sc.Err(); err != nil {
t.Fatal(err)
}
return rows
}
func mustFloat(t *testing.T, s string) float64 {
t.Helper()
v, err := strconv.ParseFloat(s, 64)
if err != nil {
t.Fatal(err)
}
return v
}
// checkAgainstC compares one Go result (Celsius) with the raw Kelvin value
// returned by the C library. The C code returns 0 when the model fails.
//
// The tolerance (1e-4 K) covers the single-precision literals of the C source
// (-21.3f, 1.987f, -5.9f ...): emulating them in float32 brings the gap down
// to 1e-12 K, so the Go port uses the same model with exact decimal constants.
func checkAgainstC(t *testing.T, what string, got float64, cKelvin float64) {
t.Helper()
if cKelvin <= 0 {
if !math.IsNaN(got) {
t.Errorf("%s: C model failed, Go returned %g", what, got)
}
return
}
if math.IsNaN(got) {
t.Errorf("%s: Go model failed, C returned %g K", what, cKelvin)
return
}
if d := math.Abs(got + 273.15 - cKelvin); d > 1e-4 {
t.Errorf("%s: Go %.9f C %.9f K (diff %g)", what, got+273.15, cKelvin, d)
}
}
// testdata/c_reference.tsv was produced by calling nparam_CalcSelfTM and
// nparam_CalcTwoTM of ecoPrimers' libthermo on random primers and sites with
// 0..n mismatches: primer, site, self Tm, two Tm (default conditions), and
// two Tm with 1e-6 M / 2e-7 M strands and 0.2 M salt.
func TestAgainstEcoPrimersC(t *testing.T) {
def := DefaultModel()
alt, err := NewModel(1e-6, 2e-7, 0.2, SantaLucia)
if err != nil {
t.Fatal(err)
}
rows := readTSV(t, "testdata/c_reference.tsv")
if len(rows) < 100 {
t.Fatalf("reference file too short: %d", len(rows))
}
for _, r := range rows {
primer, site := []byte(r[0]), []byte(r[1])
got, err := def.SelfTm(primer)
if err != nil {
t.Fatal(err)
}
checkAgainstC(t, "self "+r[0], got, mustFloat(t, r[2]))
got, err = def.Tm(primer, site)
if err != nil {
t.Fatal(err)
}
checkAgainstC(t, "two "+r[0]+"/"+r[1], got, mustFloat(t, r[3]))
got, err = alt.Tm(primer, site)
if err != nil {
t.Fatal(err)
}
checkAgainstC(t, "alt "+r[0]+"/"+r[1], got, mustFloat(t, r[4]))
}
}
// ecoPrimers prints Tm as (Kelvin - 273.0) with one decimal; obithermo uses the
// exact 273.15 offset, so the printed value is our result + 0.15.
func TestAgainstTutorialOutput(t *testing.T) {
m := DefaultModel()
rows := readTSV(t, "testdata/ecoprimers_tm.tsv")
if len(rows) == 0 {
t.Fatal("empty fixture")
}
for _, r := range rows {
got, err := m.SelfTm([]byte(r[0]))
if err != nil {
t.Fatal(err)
}
want := mustFloat(t, r[1])
if d := math.Abs(got + 0.15 - want); d > 0.0501 {
t.Errorf("%s: printed %.1f, got %.3f (+0.15 = %.3f)", r[0], want, got, got+0.15)
}
}
}
func TestSaltMethodsAgreeAtOneMolar(t *testing.T) {
sl, _ := NewModel(DefaultPrimerConc, DefaultTargetConc, 1.0, SantaLucia)
ow, _ := NewModel(DefaultPrimerConc, DefaultTargetConc, 1.0, Owczarzy)
p := []byte("ACACCGCCCGTCACTCTC")
a, _ := sl.SelfTm(p)
b, _ := ow.SelfTm(p)
if math.Abs(a-b) > 1e-9 {
t.Errorf("at 1 M both corrections vanish: %g vs %g", a, b)
}
}
func TestSaltRaisesTm(t *testing.T) {
p := []byte("ACACCGCCCGTCACTCTC")
for _, method := range []SaltMethod{SantaLucia, Owczarzy} {
low, _ := NewModel(DefaultPrimerConc, DefaultTargetConc, 0.02, method)
high, _ := NewModel(DefaultPrimerConc, DefaultTargetConc, 0.5, method)
a, _ := low.SelfTm(p)
b, _ := high.SelfTm(p)
if !(b > a) {
t.Errorf("method %d: Tm should grow with salt, got %g then %g", method, a, b)
}
}
}
func TestMismatchLowersTm(t *testing.T) {
m := DefaultModel()
p := []byte("ACACCGCCCGTCACTCTC")
perfect, _ := m.Tm(p, p)
mm, _ := m.Tm(p, []byte("ACACCGCCCGTGACTCTC"))
if !(mm < perfect) {
t.Errorf("a mismatch must lower Tm: perfect %g, mismatch %g", perfect, mm)
}
}
func TestInputErrors(t *testing.T) {
m := DefaultModel()
if _, err := m.SelfTm([]byte("A")); err == nil {
t.Error("expected error for a 1-base primer")
}
if _, err := m.SelfTm([]byte("ACGNT")); err == nil {
t.Error("expected error for a non-ACGT base")
}
if _, err := m.Tm([]byte("ACGT"), []byte("ACG")); err == nil {
t.Error("expected error for different lengths")
}
if _, err := NewModel(0, 0, 0.05, SantaLucia); err == nil {
t.Error("expected error for zero strand concentration")
}
if _, err := NewModel(1e-6, 0, -1, SantaLucia); err == nil {
t.Error("expected error for negative salt")
}
if _, err := NewModel(1e-6, 0, 0.05, SaltMethod(9)); err == nil {
t.Error("expected error for unknown salt method")
}
}
func TestLowerCaseAccepted(t *testing.T) {
m := DefaultModel()
a, _ := m.SelfTm([]byte("ACACCGCCCGTCACTCTC"))
b, _ := m.SelfTm([]byte("acaccgcccgtcactctc"))
if a != b {
t.Errorf("case must not matter: %g vs %g", a, b)
}
}
func TestGCCount(t *testing.T) {
if n := GCCount([]byte("ACgtCCaT")); n != 4 {
t.Errorf("GCCount = %d, want 4", n)
}
}
func BenchmarkTm(b *testing.B) {
m := DefaultModel()
p := []byte("ACACCGCCCGTCACTCTC")
s := []byte("ACACCGCCCGTGACTCTC")
b.ReportAllocs()
for b.Loop() {
if _, err := m.Tm(p, s); err != nil {
b.Fatal(err)
}
}
}
+126
View File
@@ -0,0 +1,126 @@
// Code generated from ecoPrimers libthermo/nnparams.c (nparam_InitParams); DO NOT EDIT.
package obithermo
// nnEntry is one explicit nearest-neighbor parameter: the 5'->3' dinucleotide of
// the top strand, the 3'->5' dinucleotide facing it, enthalpy (cal/mol) and
// entropy (cal/mol/K).
type nnEntry struct {
top, bottom string
dH, dS float64
}
var nnEntries = [...]nnEntry{
{"AA", "TT", -7600.0, -21.3}, // AA/TT
{"AC", "TG", -8400.0, -22.4}, // AC/TG
{"AG", "TC", -7800.0, -21.0}, // AG/TC
{"AT", "TA", -7200.0, -20.4}, // AT/TA
{"CA", "GT", -8500.0, -22.7}, // CA/GT
{"CC", "GG", -8000.0, -19.9}, // CC/GG
{"CG", "GC", -10600.0, -27.2}, // CG/GC
{"CT", "GA", -7800.0, -21.0}, // CT/GA
{"GA", "CT", -8200.0, -22.2}, // GA/CT
{"GC", "CG", -9800.0, -24.4}, // GC/CG
{"GG", "CC", -8000.0, -19.9}, // GG/CC
{"GT", "CA", -8400.0, -22.4}, // GT/CA
{"TA", "AT", -7200.0, -21.3}, // TA/AT
{"TC", "AG", -8200.0, -22.2}, // TC/AG
{"TG", "AC", -8500.0, -22.7}, // TG/AC
{"TT", "AA", -7600.0, -21.3}, // TT/AA
{"AA", "CT", 7600.0, 20.2}, // AA/CT
{"AA", "TC", 2300.0, 4.6}, // AA/TC
{"AC", "CG", -700.0, -3.8}, // AC/CG
{"AC", "TA", 5300.0, 14.6}, // AC/TA
{"AG", "CC", 600.0, -0.6}, // AG/CC
{"AT", "CA", 5300.0, 14.6}, // AT/CA
{"CA", "AT", 3400.0, 8.0}, // CA/AT
{"CA", "GC", 1900.0, 3.7}, // CA/GC
{"CC", "AG", 5200.0, 14.2}, // CC/AG
{"CC", "GA", 600.0, -0.6}, // CC/GA
{"CG", "AC", 1900.0, 3.7}, // CG/AC
{"CT", "AA", 2300.0, 4.6}, // CT/AA
{"GA", "CC", 5200.0, 14.2}, // GA/CC
{"GC", "CA", -700.0, -3.8}, // GC/CA
{"TA", "AC", 3400.0, 8.0}, // TA/AC
{"TC", "AA", 7600.0, 20.2}, // TC/AA
{"AC", "TT", 700.0, 0.2}, // AC/TT
{"AT", "TC", -1200.0, -6.2}, // AT/TC
{"CA", "TT", 1000.0, 0.7}, // CA/TT
{"CC", "GT", -800.0, -4.5}, // CC/GT
{"CC", "TG", 5200.0, 13.5}, // CC/TG
{"CG", "TC", -1500.0, -6.1}, // CG/TC
{"CT", "GC", -1500.0, -6.1}, // CT/GC
{"CT", "TA", -1200.0, -6.2}, // CT/TA
{"GC", "CT", 2300.0, 5.4}, // GC/CT
{"GT", "CC", 5200.0, 13.5}, // GT/CC
{"TA", "CT", 1200.0, 0.7}, // TA/CT
{"TC", "CG", 2300.0, 5.4}, // TC/CG
{"TC", "AT", 1200.0, 0.7}, // TC/AT
{"TG", "CC", -800.0, -4.5}, // TG/CC
{"TT", "CA", 700.0, 0.2}, // TT/CA
{"TT", "AC", 1000.0, 0.7}, // TT/AC
{"AA", "GT", 3000.0, 7.4}, // AA/GT
{"AA", "TG", -600.0, -2.3}, // AA/TG
{"AC", "GG", 500.0, 3.2}, // AC/GG
{"AG", "GC", -4000.0, -13.2}, // AG/GC
{"AG", "TA", -700.0, -2.3}, // AG/TA
{"AT", "GA", -700.0, -2.3}, // AT/GA
{"CA", "GG", -700.0, -2.3}, // CA/GG
{"CG", "GA", -4000.0, -13.2}, // CG/GA
{"GA", "AT", 700.0, 0.7}, // GA/AT
{"GA", "CG", -600.0, -1.0}, // GA/CG
{"GC", "AG", -600.0, -1.0}, // GC/AG
{"GG", "AC", -700.0, -2.3}, // GG/AC
{"GG", "CA", 500.0, 3.2}, // GG/CA
{"GT", "AA", -600.0, -2.3}, // GT/AA
{"TA", "AG", 700.0, 0.7}, // TA/AG
{"TG", "AA", 3000.0, 7.4}, // TG/AA
{"AG", "TT", 1000.0, 0.9}, // AG/TT
{"AT", "TG", -2500.0, -8.3}, // AT/TG
{"CG", "GT", -4100.0, -11.7}, // CG/GT
{"CT", "GG", -2800.0, -8.0}, // CT/GG
{"GA", "TT", -1300.0, -5.3}, // GA/TT
{"GC", "TG", -4400.0, -12.3}, // GC/TG
{"GG", "CT", 3300.0, 10.4}, // GG/CT
{"GG", "TC", -2800.0, -8.0}, // GG/TC
{"GT", "CG", -4400.0, -12.3}, // GT/CG
{"GT", "TA", -2500.0, -8.3}, // GT/TA
{"TA", "GT", -100.0, -1.7}, // TA/GT
{"TC", "GG", 3300.0, 10.4}, // TC/GG
{"TG", "AT", -100.0, -1.7}, // TG/AT
{"TG", "GC", -4100.0, -11.7}, // TG/GC
{"TT", "AG", -1300.0, -5.3}, // TT/AG
{"TT", "GA", 1000.0, 0.9}, // TT/GA
{"AA", "AT", 4700.0, 12.9}, // AA/AT
{"AA", "TA", 1200.0, 1.7}, // AA/TA
{"AC", "AG", -2900.0, -9.8}, // AC/AG
{"AG", "AC", -900.0, -4.2}, // AG/AC
{"AT", "AA", 1200.0, 1.7}, // AT/AA
{"CA", "GA", -900.0, -4.2}, // CA/GA
{"GA", "CA", -2900.0, -9.8}, // GA/CA
{"TA", "AA", 4700.0, 12.9}, // TA/AA
{"AC", "TC", 0.0, -4.4}, // AC/TC
{"CA", "CT", 6100.0, 16.4}, // CA/CT
{"CC", "CG", 3600.0, 8.9}, // CC/CG
{"CC", "GC", -1500.0, -7.2}, // CC/GC
{"CG", "CC", -1500.0, -7.2}, // CG/CC
{"CT", "CA", 0.0, -4.4}, // CT/CA
{"GC", "CC", 3600.0, 8.9}, // GC/CC
{"TC", "AC", 6100.0, 16.4}, // TC/AC
{"AG", "TG", -3100.0, -9.5}, // AG/TG
{"CG", "GG", -4900.0, -15.3}, // CG/GG
{"GA", "GT", 1600.0, 3.6}, // GA/GT
{"GC", "GG", -6000.0, -15.8}, // GC/GG
{"GG", "CG", -6000.0, -15.8}, // GG/CG
{"GG", "GC", -4900.0, -15.3}, // GG/GC
{"GT", "GA", -3100.0, -9.5}, // GT/GA
{"TG", "AG", 1600.0, 3.6}, // TG/AG
{"AT", "TT", -2700.0, -10.8}, // AT/TT
{"CT", "GT", -5000.0, -15.8}, // CT/GT
{"GT", "CT", -2200.0, -8.4}, // GT/CT
{"TA", "TT", 200.0, -1.5}, // TA/TT
{"TC", "TG", -2200.0, -8.4}, // TC/TG
{"TG", "TC", -5000.0, -15.8}, // TG/TC
{"TT", "AT", 200.0, -1.5}, // TT/AT
{"TT", "TA", -2700.0, -10.8}, // TT/TA
}
+400
View File
@@ -0,0 +1,400 @@
GATTCAAATGACGGCAGC GATTCAAATGACGGCAGC 328.590295502325 328.590295502325 335.520082032693
GCCGGGAGTCCCTGAGAG GCCGGGGGTCCCTTAGTG 335.202600908825 307.571309416976 317.582817372006
CCGGAAATGTGCCATCTGCGTGCGA CCGGAAATGTGCCATCTGCGTGCGA 341.857354066828 341.857354066828 349.067971091170
GCAGCGTAAGAGGAGGGC GCCGAGTGAGAGGACGGC 334.238236820572 292.689122005507 302.959373794547
ATCGGGATCTCAAAACCATC ATCCGGATCCCAAAACTATC 328.374164082672 303.012377993885 311.743534784977
TTTACTTCTCTCAAGGCC TTTACTTCGCTCACGGCC 324.870543621461 310.322643307651 318.434500513589
GATATTATCCGG TTCCTCATTAGG 306.633848409535 131.298936687567 140.958918657051
ACCAGATTCACCGTTAAA ACCAGATTCACCGTTAAA 324.666065281835 324.666065281835 331.625141334598
GCAGAAGGAATTCGTCTTAAAGTTT GCAGAAGGAATTCGTCTTAAAGTTT 330.221644057193 330.221644057193 337.429293354313
GTTACGCCCGTGGACAGA GTTACGCCCGTGGACAGA 333.152006826526 333.152006826526 340.131722535940
TACTGGCCAAGTGTTTCGGGCTACC TACTGGACAAGGGTTTCGAGCTACC 338.543873371072 317.159669988483 326.737809053749
CGGGCGAAAGACCTAACTCGTC GCCCATGTTTAAACGGTTCAAC 335.961664387167 99.726835837839 110.941608232133
ACCACAGAAGAGCCTCAG ACCACAGAAGAGCCTCAG 329.675966490972 329.675966490972 336.774887202068
TCCGTATCCGTGTGCTAT TCCGTATCCGTGTGCTAT 328.758681136274 328.758681136274 335.670742367360
AGCACAACCATCTTGCCA AACCAGCAATTGGGCAAC 330.726812945211 0.000000000000 0.000000000000
AAATCCGCGGTTACTTAG AAATCCCCGGATACTTAG 325.912290117405 310.432539561454 317.816914468819
TGGTTGCGGAATGGCGACACGCTAG TGGTTGCGGAATGGCGACACGCTAG 341.368691736083 341.368691736083 348.576311955777
CCACAAGGCACACCGAGGGCCCAAC CCACAAGGCACACCGAGGGCCCAAC 343.836245623632 343.836245623632 351.324029371624
TACCTTTGGTTAACCGCG TACCTTTGGTTGACCGCG 328.806445188317 321.784293018138 329.972272766148
ACCGCCAAACGGTAGTCCTT ACCGCCAAACGTTATTCCTT 334.638358155254 325.067933219113 333.495286023143
GGAATCACCGAATTC GGAATCACCAAATTC 319.872552670165 310.456121372350 317.724729105623
CGCTGGCGGGGACGCTTA CGCTGGCGGGGACGCTTA 338.850878426355 338.850878426355 345.870729715750
CCCAGAACCGAGTGCTGA CCCAGAACCTAGTGCTGA 332.759551850704 324.515696448123 332.085468128098
AGGACTATAGCC AGGACTATAGCC 311.340568942550 311.340568942550 317.961816433927
AAGTAAGCCAAACTC AAGTAAGCCAAACTC 318.374897033808 318.374897033808 325.174916603994
GGCAAACAGTGGCGTCTCTA GGCAAACATTGGCGTCTCGA 333.444435842161 322.587904260466 330.767259471616
GCGGGCTGGGCGACGCCT GCGGGCTGGGCGACGCCT 344.353158968164 344.353158968164 351.458901919666
AAAACCCGTTCTTGAGAA ATAACCCGTTCTTGAGAA 325.196643716015 318.373852240644 326.309549286768
TCTACGGGCAGG TCTACGGGCAGG 320.684836039138 320.684836039138 327.333083788784
CTGTATCATTCAAGACCTTGTG CTGGATCATTCATGACCTTCTA 327.587191928324 300.073898600295 309.615050320053
GAGACCTCGTTTATATGTGCCG GAGATCTCCTTTATATGTTCCG 331.709967011022 307.489712436204 316.778347789381
GATGCCATGCAACGCGGTCGAAATA GATGCCAAGCAACGCCGTCGAAATA 338.385858507321 328.510784583696 335.857144351146
CACCCATGGGTCGAGGAA CCTTCATGGGTCAAGGAA 332.434732686040 303.559662982167 313.037414209458
AACTTTACCACTTTGTCGGA AACTTTACCACTGTGTCGAA 327.854258269700 313.748415282978 322.159067997528
CTCCCAAGAATAAGGCCA CTCCCAAGAATAAGGCTA 327.279305268693 315.945719545119 323.849648970559
CTGCTCCCGACCTGCCGTTG CTGCTCCCGACCTGCAGTTG 339.148624544930 330.290260008245 337.867535931326
TTAGGAGACTCTTCAGCCTCCTTGT TTAGGACACTATTAAGCCTCCTTGT 334.398890499698 315.037835993209 323.891875192977
TGGACGATTGCG AGAATTGCGGCC 320.244905957781 146.501396490593 156.665817684297
ATTGTCAACTGTAGGTCA ATTGTCTAGTGTAGGTCA 323.939323737395 300.681567922172 308.863167608541
ACAATGTATTTTCTCGGG ACAATGTATTTTCTCGGG 323.362512238862 323.362512238862 330.327169046076
CGTGTGAGTGGCCCGAGTTGTCTCT CGTGCGAGTGGCCCGAGTTGTCTTT 340.130848609675 332.245514068114 340.636316881815
TATCAGACGTGGCAATGC TATCAGACTTGACAATGT 328.992885301719 304.405743905969 312.701350705029
CGTCGTCCCTCTCAGCCG CGTCGTCCCTCTCAGCCG 336.200821936899 336.200821936899 343.186897048375
TAAGGCTAGCCAGAACCACG TGAGGCTAGCCAGAACCACG 332.598253740841 326.985556902569 335.280653989150
GTTCAGGGGAATGAGAGATA TTACAACTGCCAACTTCGCT 326.722966616537 109.952678878773 121.594862151643
CCCAGCGCGAATTTGTCA CCCATCGCGAACTCGGCC 332.540722470730 292.630570524742 303.511783076339
TGTCGTCGCTACCAGTTA TGCCTTCCCTACCAGTTA 328.953316297354 307.160700342629 315.442693299698
CATGCACCGTGAGTCTGC CGTTCACCGGGAGTCCGC 332.846939286468 291.434652139556 302.526073291148
GAGAGTTGCTGTTGATTA TAGAGTTGCTGTTGATTA 323.031379731052 319.294880722061 326.526947280607
GCTCGGTCCTACGCCGACGT GCCTGATCTAAATATGCCTG 339.747877109584 158.568208002892 173.058219990461
TCTTTGAGCTTCCCATCT TATTTGAGGTTCCCATCT 326.307771557426 300.329179385918 308.617669678883
GTTTCCTCGGGT ATGTCCCCGGTC 317.903207078845 250.921863687541 262.030341678318
AGTCTGCATCCAGGATAGTGTTCAA AGTCTGCGTCCAGGATAGTGTTCAA 333.474575396610 328.822975749317 336.887405627890
CTAGGGCACCAACGCACG CTAGGTCACCAACGCACG 335.143347846422 329.701891848980 337.431099508189
GATTGCTGGACCCGACAAAC ATCGACTGCGTCAATCTGAT 332.811424650986 125.989102558259 139.175967010614
TTATTTCTCCGAGATCCA TTATTGCTCCGGGATCGA 323.096708880271 281.710374029821 291.583720089868
AACCTCCGCTCAGCCCAT AACCTCCGCTCAGCCCAT 334.559812073966 334.559812073966 341.720616471431
ACATGCGGAGACGATAGA GAGCATCTTCGTGTCCCC 328.777637355840 13.663795446228 15.557079997899
GCGATCCGGCCCGAAGGACGGTTAC GCGATCCGGCCCGAAGGACGGTTAC 343.160858693872 343.160858693872 350.466895660629
TAGGCGCTACCAAAGAGACC TACGCGATACCAAAGAGACC 332.314713425979 316.910949741281 324.757961637335
GCTTGACGGAGGGATTGCATACGTC GCTTGACGGAGGGCTTGCATAGGTC 337.905459739261 327.298908614928 335.399197844049
CTTACGGTTTTGTGG CTTACGGTTTTGTGG 320.490499863910 320.490499863910 327.265086426630
AGAATGCTTTGCACGGGAAAAAGAC AGAATGCTTTGCCCGGGAACAACAC 334.833702111547 324.032364174889 333.126901145695
CCATCCGGGACCGTGTTA GTGGTGGACAGAAAGCAC 332.523437582445 67.486926898379 75.000548050396
AGCAAATATTTAAAACTG AGCAAATATTTAAAACTG 316.766614411011 316.766614411011 323.642414073658
ACTGACAAAAGGGACCTTTAGA CCCGAACAAAGGGACCTTGAGG 329.363491007070 296.438968024933 307.489562539207
ATAGGACTCGGACGAAAG ATAGGACTCGGACGAAAG 326.913461392949 326.913461392949 333.867158802657
TATAAGCTAGTTGAG TACCAGCTACTCGAG 312.936278497921 279.566780789215 288.458312256098
AAAGCTGCCGTG GTCGATTGTCGG 320.846677260689 11.139130534401 12.281612095844
AAAACTGGCACG AAAACTGGCACG 317.241607884236 317.241607884236 323.710646130150
ATTCAGATAATGAAGGAC ATTAAGATAATGAACGAC 319.569864618292 300.532814450507 308.266203286509
ACTCCGCCAGTAAAGAGCGATC ACGCCGCCAGTAAAGATCGATC 334.956435857922 324.130818124085 332.402089448274
AAACAGGTGGTGCTTCTGGT AAGCAGGTGGCGCTTCCGGT 332.663618849926 317.895372912569 326.451852134041
ACGTAAACTAGCGATCCTAC ACGCAAAACAGCGATCCTTC 327.648394671924 306.841804464239 316.109126582555
ACTCTTCTGTAGTAATTT ACTCTTCTGTATTAATTT 318.111014934586 311.385476013207 318.854355601485
GCCTGGATGAAA CCTCGCATTATA 314.875733564946 135.466989302349 145.485320466877
ACAAACATCTTT ATAATTATCTTT 306.751127645023 230.133355279539 240.007445742650
TTTATGTTGCACCCG GCCCTCCTGCAAGGG 322.725425600228 198.227797952416 210.186099128768
CTCTGTGATTGC CTCTGTGATTAC 313.233837007613 299.818390981614 306.829729109027
CAGGGGGTGTCTTCTTGCCA CACGGGGTGCCTTCTTACTA 335.170765818115 304.025892909583 313.686365730924
ATAAACTTAAGCGGGGCT ATAAACTTAAGCGGGGCT 327.141275752020 327.141275752020 334.197558650535
GTGGTACGTCTCGCACCGTATT GTGGTACGTCTCGCACCGTGTT 335.183465966560 331.876024565197 339.826055532683
AGCCCCTACCGTGAGGTATGAA AGCCCCTACCGTGAGCAATGAA 334.930026765640 329.325029384246 337.230038559345
CTACGTTTGGACTTTCAG TCCAATTCATGTACACCA 324.309529994597 130.265141330095 141.767454087853
GGAGGCGTCGTCTAATGTGGCTGCA GGAGGCGTCGTCTAATGTGGCTGCA 340.715437268799 340.715437268799 347.974364433377
TCACGCCCGTTACCATGC TCGCGCCAGTTACCATTC 334.223290685080 301.060585660525 310.242722525263
GTGTGGAATAAC GTGTGGAACAAT 308.856970626568 289.055396946314 297.087438077958
AACTAGGCACAGCGGAAGTGTTACA AACTACGCACAGCGGAATGGTTACA 336.064499532413 324.487528333723 332.510759640255
AGTTGGGACCGCGGACCTCAGACGA ACTTGGGACCGCGGACCTCAGACGA 342.586917960981 339.716507068413 347.297152857653
CGCAGGCCGCCCTATCCG GTGGGCAACCGTGATTAT 339.659476639126 111.730621568890 122.520566332669
ACTCGGTTAAAGAAGTAGCGGG ACTCGGTTAAAGAAGTAGCGGG 332.661444291378 332.661444291378 339.831677127033
GTCGCACTCACGCCAAGG GGCGCACTCACGCCAAGG 335.434179979611 327.968420416066 335.946784667129
TTATGTGCCGTC TTATGTGCCGTC 315.550568136423 315.550568136423 321.978396903837
ATACACTCCCTC ATACACTCCCTC 311.742937528520 311.742937528520 318.358302050000
ATATATAAAACGCTT ATATATAAAACGCTT 310.835103721529 310.835103721529 317.439661067059
TTGACCCAGCTCTGACAA TTGACCCAGCTCTGACCA 329.300611062468 323.357283025809 331.214889354503
TCACCAAGGACATCGGTGAA CACTAATCTCTAGGCTACTG 331.893316827967 0.000000000000 0.000000000000
AAATACTAATATCACGAGGCCT AAATACTAATATCACGAGGCCT 326.991443235419 326.991443235419 334.132256945596
CATCTAAGGTTCCCCACG CTCCTAAGGTTCCCCCTA 328.386823878643 301.442125171364 311.286145433228
TCAGGCAAGGCTAAAGAT TCATGCAAGGCTGAACCT 326.725811212726 296.261200224359 306.662120559413
ACCGGTGTCTGACGAAGA CCCGGAGTCTGACGAAGA 331.461574428762 323.233483550268 330.841087730303
TGCCATAACAGT TGCCATAACAGT 313.107834134787 313.107834134787 319.615154304331
ATAACTCTGCTCTATAAA ATAACTCTGCTCTATAAA 317.633729090723 317.633729090723 324.531712635958
TCCTGCGCAAATTACTAGAACCTAA GTCTCAGCGAGAACTCTATTAGGAT 332.050504643625 0.000000000000 0.000000000000
GTATCGAGGTCGAGGAAAGCGCTGT GTATCAAGGTCGAGGAAAGCGCTGT 338.362288220608 334.066037941649 341.579718818818
CAGCCTTTCAGG CAGACTTTCAGG 316.248469201820 292.111362062705 300.080584403201
CTTGCGGTACATCGCAGTGTGAATA CTTGCGGTACATCGCAGTGTGAATA 335.474585471307 335.474585471307 342.613324305508
TAAGAACTAGCACGCATAAG TTAGAACCAGTACGAAGAAT 326.081723019865 254.023237958651 266.323327012842
TACATGTACATTTCGGCC TACATGTACATTTCGGCC 325.896662787897 325.896662787897 332.832044747960
TAGCATGCGATTCCCTAAGAAG TATCATGCGATTCCCTAGGAAG 330.590797080638 318.020175239024 326.375059746915
CGGTGTTGTACGCCGACC CAGTGGTGTATGGAGTCC 335.122388615945 245.504228310044 257.618564855382
ACTTTACGCCCGTAG ACTTTACGCCCGTAG 324.104530886916 324.104530886916 330.841602836160
GGTCTTGGTGGACAGATG AGTCTTGGTGTACAGATC 328.628141921468 313.674320134018 322.206848229767
GTTCGGTCATGC GTTCGGTCATGC 317.988264837295 317.988264837295 324.445499068321
CTCACGCTTCTCATTATT CTCACGCTTCTTTTTATT 323.247552234877 309.106689004420 317.389249379550
TGCGAGCGTGAT TGTGAGCGTGAT 322.408515345848 302.521839005369 309.729023044907
AGATAGGGGGCCCTCGAACCGCCCG AGATAGGGGGCCCTCGAACCGCCCG 345.102909485864 345.102909485864 352.627470314597
AACCTACACAGG AACCTACACAGG 313.161040203465 313.161040203465 319.768122899840
TCCGCCCGCCAC TCCGCCCGCCTC 330.719187584648 320.094784422350 327.317364425992
ATATCGTGAGCCGTGTACCCGG ATAGCGCGATCCGTATACCCGC 336.660788072052 313.231213020956 322.468970039473
GGAAGCGTTGACACCGAC GGAAGCGTTGACACCGAC 332.770993213501 332.770993213501 339.705211527389
CGAGGCAAGGGATACGCAGCTCAGT CGAGACAAGGGATACGCAGCTCACT 340.305756168638 332.795008096728 340.846081667398
CTACCGGCGTAGATATGC CTACCGGCGTAGATGGGA 328.520812530739 311.151850739834 319.645074203379
GACTTAAGCGACTAC ACGGCTTAGCGTGGC 318.887440179040 10.664421060955 12.014569510602
CTTAGGATTCTGGCTAATTTACGGT CTTAGGTTTCTGGCTAATTTACGGT 330.595304320228 326.378730172844 334.038450345878
ATCCGCACGGAC TTACCGGACCCC 323.089768931227 0.000000000000 0.000000000000
TCCCAGCTTTTGCAGTGGGATT TCCTAGCTTTTGCAGTGGGATC 335.062847253676 324.545742095465 332.720886054794
TGGCTTCACGGC TGGCTTCACGGC 323.785812253507 323.785812253507 330.353929757972
TAGGTTATTCCGACCATA ATGCGGGACACTGCCATG 322.422210409371 192.368508212637 205.559476403263
AGCCTTTCGACTGAC AGCCTTTCGATTGAC 324.335884950598 312.595672426393 320.534233002808
CGTGCAGCTTTCATG CGTGCAGCGTTCTTG 324.919682340793 305.582789800617 313.597104921942
TCTACGTGGCGGGGACCGGG TCTACGCGGCTGTGAGCCGG 341.347076387025 299.430239048585 309.018341106927
TCAAATTAAAGTTGGACTGACA TCAAATTAAAGTTGGACTGACA 326.350254889911 326.350254889911 333.467128526408
CGGGGGCCGTGGTCACTGCTTTCAG CGGGAGCCCTGGTCACTGTTTTGAG 343.571008380319 318.537337281338 328.795128334431
ACATTGCAGTCA TACAAATATGCA 314.282094430945 54.422588938214 59.864081596928
GTTCCATAAGACTTA GTTCCATATGATTTA 313.492331047121 283.603344310509 292.314146114969
TATTTGAAAGACATAGGGGCGT CGGTACACTGGTGCCGGAGGCA 329.927702442206 21.671006660567 25.185742081802
AATGGCAATTGCGTA AATGGCAATTGCGTA 322.153531008784 322.153531008784 328.861389966064
TGACCTCACAAATACGGGGTCG TGACCTCACAAATAAGGGGTCG 334.840837473162 327.359477549248 335.051513807130
CTCTGAAAGAACCGGGCA CTTTGAAAGAACCGGGCA 330.717616406698 321.166071332522 329.380562417680
TCCCCGATGCTTAAGACACGCGTGT TTCCCAAGGCTTAATACACTCGTGT 339.959965745411 305.790225053607 316.153725711522
TGCACTTCGAGG TGCACTTCGAGG 318.856723935199 318.856723935199 325.349637181717
AAGGGTCACCAGAAA AATAAGGTTCCTGCT 322.240165848681 53.802401211576 60.076587053449
TAATAAGTCGTG TTATAAGTGTTG 306.473400984667 233.666269447857 244.153793035378
CATGATGCCTAGTATGAT CATGATGCCTAGTAAGAT 321.893431646493 315.240330549201 322.344428969018
TATGCGCGAACCTAC TATGCGCGAACCTCC 324.777133033446 320.584177151486 328.154789861490
TGGCAACTCCCGCACATGCCCT TAGCAACTCCCGCCCCTGCCCT 341.428702525130 330.240007837364 339.446160220950
AACGGTCCATAGTGT TTACTGCCTCTATCA 322.301936674505 92.184229884404 101.375195399772
CTGGTTAGCGACTAGGGCGA CTGGTTAGCGACCAGGACGA 334.491616458730 325.265096818567 333.491322070668
CTACGTGACATGGCCCCT CTACGTGACATGGCCCCT 332.520578697054 332.520578697054 339.639446777780
CCCTCCTGGAAGAATCCATAGTATC TCCTCCTGGAAGAATGCATAGTATA 331.837538166233 315.597835592823 324.711900293230
TCCGCGGTGCGGCGTCTA TCCGCGGTGCGGCGTCTA 340.070741817013 340.070741817013 346.961988197618
TGAGGGCGGCTCGAAAGAGATAGGC TGAAGGCGGCTCGAAAGAGATAGGC 339.908445380864 335.397387022299 343.087954453266
AGGATTGAATGCGGATTCACAATGA AGGATTGAATGCGGATTCACCATGA 333.075743741665 329.267518388258 337.096639984117
CTGGCACGTGAAAGTGTA CTGGCACGTGAAAGTGTA 328.758681136274 328.758681136274 335.670742367360
TATGAGCTCGCATTGACGAT TATCAGCTCGCATTGACGTT 330.199735252295 317.575655447674 325.732088199432
CTCCGATACGCCCAACGTTCCT CTCATATACGCCCAACGATCCT 337.111273784768 319.264148345607 327.480755860446
CTTGTAAGGAACCGATCGTGAAACT ATAAGATATATTTGTTAAATAGGAG 333.190199559369 0.000000000000 0.000000000000
CGATCGGGGTTCGGTGCTAAGG CGATCGGGGTTCGGTGCTAAGG 337.958135639451 337.958135639451 345.185613424927
GTGTCACTTAGTGGC GTGTCACTTAGGGGC 322.599730343108 309.940994981687 317.650231320028
GTAAGGTGCTACGTGGGA GTAAGGTGGTACGTGGGA 329.791738219571 317.210999985374 324.885748886244
GGGGACCACGGAGCGCTT GGACACCACGGAGCGCTT 338.493908487715 328.075398097466 336.508505160201
ATGATTCGGCTGATGTTG ATAATCCGACTGACGTTA 326.617373214063 284.388619463998 294.654772560060
CGTTGCACCTGTGCAGAC GGATGGACCTGTGGAAAC 333.382064119484 257.494983943418 268.960440677818
GGGTATGGAACCGAGCTT GGGTATGGAACCGAGCTT 330.144774353530 330.144774353530 337.264117120300
CCGTTTAGTACTTGAGCT TCGTTTAGTTATTGAGCT 325.101412938739 306.110310829587 314.815405000962
TGCTCGCCGTTGATG TGCTCGCCGTTGATG 328.982207099090 328.982207099090 335.675432532816
GCGGTATCCTGTTTAATAGCAC GCGGTATCCTGTTTAATAGCAC 330.022926941214 330.022926941214 337.146106169306
ATTGCGTTGCCCAACGGGAAAC CTTCTAGATCTCGTGTTCTGTC 337.501498070251 30.100236916645 34.669973146917
GAAGCGTACTAC TAATCGTACTAC 312.135520730872 290.578334792837 298.230744679790
TCGCTTAAGTTGGACCCG TCGCTTAAGTTGGACCCG 330.825518413055 330.825518413055 337.820664158968
TCAAAATATCGACGATCGGGTA TCAAAATATCGACTATCGGGAA 329.618484688871 316.847687836049 324.679351875168
CTGTAAGTGCGT CTGTAAATGCTT 315.552108712421 284.478519286229 292.079870838245
ATCCGTTGTCTGTAT TCCTATCTTGTCTCA 319.236231890115 0.000000000000 0.000000000000
GCTGACGATCACCACTGAGT GCTGACGATCACCACTGAGT 332.887137941413 332.887137941413 339.934427106782
GGGACCGTCTTGCCTGAA GGGACCGTCTTGCCTGAA 333.069804290103 333.069804290103 340.197004324922
GACACTTCATGTTGAAGGAA GAGACATCAGGCTGAAGGAA 326.623921634303 290.160218586875 299.116365655134
AAAGTTAATACT AAAGTTAATGGC 300.439776727757 274.074904518474 281.916563483524
TTCACTCAGGCCGGGACT TTCACTCAGGCCGGGACT 333.775772265987 333.775772265987 340.923230531829
TGAGGTGTACCTTCGATAACCCCTG TGAGGTGTACCTTCGATAACCCCTG 335.429777164410 335.429777164410 342.806589346267
GGCGTTAGACTGGGACTCAT GGCGTTAGACTGGGACTCAT 332.314063072189 332.314063072189 339.465122151725
GCGGAAAATTCCTCCTGGAGGC GCGGAAAATTCCTCCTGGAGGC 336.555274112350 336.555274112350 343.900546225317
ACCCGCCGGGTTATG AACCGCCTGGTTATG 330.420331626846 303.591907390707 312.104888476139
GTGAATCTGTGCCATGTAAGGAGTA GTGAATCTGTGCCATGTAAGGAGTA 332.502726598592 332.502726598592 339.772881635043
TGTGCATATGCGAAGCAGCA TCTGCATATCCGAATCAGAA 333.922832979848 300.308875168811 310.038091502733
TTCCGGGAGAGTCATTCAAGCGATT AAGCGAGGGGAGACCCTTCTTTACG 335.964252182230 0.000000000000 0.000000000000
TATCACTTACTCCCCGGA TATCACTTACTCCCCGGA 327.110291836484 327.110291836484 334.201971889462
ACGCATTAGTCTACCGTCTTGC ACGCATAAGTCTACCGTCATGC 333.304407097527 323.852674403909 331.529871399707
ATAATAGATGAT ATAATAGATGAT 298.724754718266 298.724754718266 305.105559067848
ACTTCATTGGCCTCTTTC GGGATAGGCCATTAGAAA 325.919067175754 0.000000000000 0.000000000000
ATTTGCGTTAAGGAGACTCA ATTTGCGTTAAGGAGACTCA 327.736465255252 327.736465255252 334.763124999138
GGGAGCCACGTCCCGCACTT TGGGTCTGTTCTACGGGTCC 340.351804998615 66.406913767236 75.840004728444
AATGGTAGCTTGGAACAACT AATGGTATCTTGGAACAACG 327.871691250641 318.316542767859 326.227958663349
ATACAATACCAA GTAAAACCCTAA 304.232095602747 144.099149360347 153.765346779177
TTCTAGCGTCCCGGTACT TTCTAGCGTCCCGGTACT 330.589206350792 330.589206350792 337.589326383339
TGGCCTTTTTTTAAGTAAAT TGGCCTTTTTTTAAGTAAAT 321.872839855264 321.872839855264 328.960538235470
ATGCCTCCTTGTAATACAGCTAGGG ATGCCTCCTTGTAATACAGCTAGGG 333.823387389837 333.823387389837 341.214372867702
GAGATAACACGCCAGGTTAA GGGATAACACGTCAGGTTAA 328.361333311021 307.593342393239 316.302295915689
CACGGGCATCAAATG CACGGGCATCAAATG 324.403592056034 324.403592056034 331.200512200928
TTAACTGTCGGTACTCTT TTAACTGTTGTTATTCTT 323.363845103162 280.866882856653 291.385325188001
CACGATAGTCGTTGA TTCAAAGGTGAGTAA 321.130711058809 128.711478226556 138.526211474293
GCCGGCCTAAGGACG GCCGGCCTAAGGACG 331.645745178000 331.645745178000 338.559056448220
ACGCAAAAAGCGCAT ACGCACAAAGCGCAT 327.022026932331 320.836952659324 328.322467858379
AGTCTTAAACGTTTATTG AGTCTTAATCGTTTATCG 318.625758737664 304.665747911265 312.350081264934
CTGATCCGAGTTTGGCAGCT CTGAACCGAGTTTGGCAGCC 333.515248215999 325.848131196554 333.400292317441
AATCCCCCTGCGCGGTGG AATCTCCCATCGCGGTGG 338.914827359853 316.871536337894 325.825478445471
CCTATTGCGAGTGGAGTTTTTC CCTATTGCGAGTGGAGTTTTTC 330.398722345826 330.398722345826 337.555411082006
TTTGTAGCACTCTCTAAG TTGGCACCGCTCTCGAGG 321.958335092061 240.192027201542 251.110839474907
TATAAATCCAAACCG TATAAATCCAAACCG 314.941565560136 314.941565560136 321.679961211234
TCTGGTCTACGGACCAGA TCAGGAATGCGGACCAGA 329.776739773812 300.216331414806 308.948988559444
GCGATTCTGGAAATT GCGATTCTGGAAATT 319.582046008775 319.582046008775 326.323905265890
AACTTATTGTAAGTGGCT ATCTTATTGTAAGTGGCT 321.893436025311 314.515961362535 321.963655827352
AGTAGATCCACGCTC GGTGACGGTATAAGT 322.922652409125 0.000000000000 0.000000000000
AGACAGCCAATTTGGACC AGACAGCCAATTTGGACC 328.624785345222 328.624785345222 335.740638937702
TCTCCCCATCTGGTTGTGACAC CCTCCCCAACTGGCTGTGACAC 334.475047649994 322.522934177182 331.074093710435
GTCCGGAGGGAAATT GTCCGGAGGGAAATT 323.695895292588 323.695895292588 330.657945722303
GCATTGGTGTCTGAGAGACATC GCATTGGTGTCTGAGAGACATC 331.823924496399 331.823924496399 338.987388491055
TACTCTTCGTTG TACTCTTCGTTG 310.392977904224 310.392977904224 316.757886088883
ACCTACTACAAT ACCTACTACAAT 306.714175636802 306.714175636802 313.206330066357
CCTTACACTATGCACCCG CCTTACACTATGCACCCG 328.839039592404 328.839039592404 335.870639509527
ACCTGTAAGATCGAGTGATATCGGA ACCTGTAATATCGAGTGATATTGGC 332.453410863819 317.742424213661 326.757759926067
ACCCGGAATCAC ACCCGGAATCCC 318.062682068531 309.456479129025 317.168301011525
TTGCATCTAAACATTAAAGCAGAAG TTATGAGCCTTCCTAATCCCGCAGC 328.558653084235 92.581987798659 103.905955829058
CCGCGCCAATAT ATCACAAAGGAA 320.315607213397 0.000000000000 0.000000000000
ACCAGCCTAACTTTTGTT GCCAGCCTAACTGTTTTT 325.132735655685 301.134269729448 310.106656597025
GCTTAATGCTGGCTACGC GCTTAATGCTGGCTATGC 330.692022417212 320.449633481302 328.448263187090
TGGTCCGAACGGCAACAC TGGTCCGAACGGCAACAC 334.376696093757 334.376696093757 341.354168304032
ACCCGGCCAGGG ACCCGGCCAGGG 328.950241125024 328.950241125024 335.887941031174
ATACCATCGCCTAAGATTGGCC ATACCATAGCCTAAAATTAGCC 332.848856616901 309.476145134398 318.241854893043
AAACCGGCAGTA AATCCGGCAGTA 317.201144426162 305.365706144159 312.555666368026
CACAACAACGTTCAA CACAACAACGTTCAA 320.677535999798 320.677535999798 327.306012831155
TGGGTCGCGTCCCAG CAGTACCCAACCCCG 333.123346113342 246.742853521647 257.809384715704
CTCCTAAACATGAAGAACCAGAAAT CTCCTAAACATGAAGAACTAGAAAT 329.191307133388 321.504803533715 329.322148156357
TACTATTTCGTTTGC TACTATTTCGACCTC 316.071427737447 286.990612725496 295.372324621468
TCCCTGGCAGCAGGGTAGTTTTGAA TGGGCCAACGCTAACTGGTGCCTTG 337.792849188337 121.771136708049 135.395255297683
GCTACATTACCGGCTCTC GCTACATTACCGGCTGCC 328.627216292430 317.865179052925 326.512498741613
TGAGGCGGGTTATGCGTTAATG TGAGGCGGGTTATGCGTTAATT 333.877486753212 330.936597263706 338.449826872471
CACTTATCCCGCAATAAT AACTTATAACGCAAGAAT 323.209491396864 285.261497168294 294.371363704620
CGCGCCCGACGATCCACT CCCGCCTGACGTTCCACC 338.845192827705 310.574091806929 319.266524881313
AGGCTCCTCTATGAA AGTCTCCTCTATAAA 320.534065615391 298.120651463631 306.645491242189
TGGTAATTGCCTGAG TGGTAATTGCCTGAG 320.915868643696 320.915868643696 327.776118922002
GTTCATTCTCTGGAGGGC AAGCCGGTACCTGCGGGG 328.693062285185 175.795089391355 189.885811626097
GAACGCTGGTCGTCACAT GAACGCTGGTCGTCACAT 331.556430142525 331.556430142525 338.434764177077
ATTGGGTGATCGTAAGTAAG ATTGGGTGATCGTAAGTAAG 325.612525475036 325.612525475036 332.668318324958
AAGATATGTTTGTAGGCCGAAC AAGATATGTTTGTAGGCCGAAC 329.104322856711 329.104322856711 336.238620405649
GTGTGGGTGCCC GTGTGGGTGCCC 324.309319433451 324.309319433451 331.095278789318
GGCGTCCAGAAT GGCGTCCAGAAT 318.801851843066 318.801851843066 325.371455269089
TGGCTCTGGATAGCTCCCCC AAGGACTATACAAAGCCAGT 336.053481241646 140.181856955550 152.924856339728
GTAATCTACCATATG GGAATCTACCATATG 311.238267655019 297.565035184391 305.303043725135
TAGAGACGTTTCCTCGCCTTTATCG CTTAGACACTCAGGTGTTGTTGGCA 334.313541801127 188.908254593789 203.829299320958
TGCCAGCTTGTGGCGAGTAT TGCCAGCTTGTGGCGAGTAT 335.045486995831 335.045486995831 342.139981881034
TTCCGAGCCTGCCGAACAGG TTCCGAGCCTGCACACCCGG 337.981474268738 315.139472928922 324.695198064855
TAGGCGACGGCTAACTGG ATTAACACAGAATGTAAC 332.611090573720 117.192190429110 129.003910625976
CTATCAAGCCTCAGGTATCGCT CTATCAAGCCACAGGTATCGCT 332.013904222950 327.008869759689 334.361264460119
GCGTTGAACAGTGCGTACGT GCGTTGAACAGTGCGTACGG 334.922740354371 331.487402480161 338.817709417777
ATGACCTGTACGCTG TCACACCCTCGGTCG 324.096877104678 76.811640858322 84.402210669196
TAGTTATCTTCTACCTGATGTAAGC TAATTATCTTCTACCAGATGTTAGT 327.657446380070 306.418404503197 315.329248976153
CGGTGCAGTGCAAAATGCGAGTAGT CGGTGCAGTGCAAAGTGCGCGTAGT 338.234766348875 331.605213173016 339.892622743888
TTGTTGCCATGTAAA TTGTTGCCATGTAAA 318.513544450161 318.513544450161 325.252135026214
GTGAAACGTTTGCTGTGG GTGAAACGTTTGCTGTGG 328.992886751469 328.992886751469 335.904977195626
GTTGGAATTGCGGCAAAG GTTGGAATTGCGGCAAAG 329.419693351400 329.419693351400 336.405013425441
ATTTCCCGCAGCTTCGAC AGTTCCTGCAGCGTTGAC 331.921604125857 275.704268703669 286.426092962088
GGGCTTCAACTCTGCAGA AACTTCCGATAGTACCCG 330.715768712068 0.000000000000 0.000000000000
GTAGTACGTCACTTAGGGTATA GTAGTACGTCACTTAGGGTCTA 326.370618283308 323.603568352225 331.248373111091
GTGATATTTTCACTGCTAGG GTGATATGTTCACTGCTAGG 324.660738933852 318.097303613935 325.739236970914
TTAGAGCCTAGATATCGC TGAGAGCCTACATATCGC 323.737203572163 308.667021683076 316.877776506437
GGCCGGTTTGAT GGCCGGTTTGAT 319.628239742093 319.628239742093 326.261640206404
CGATAGTGGAAG CGTTTGTGGAAG 311.281036639251 282.148143916626 290.555750610531
TTTATAGACGGTCCA TTAATAGAGGGTCCA 318.271295635730 289.396103709646 297.309467179028
CTGGTGTAAATTTTTATT CTGGTGTAAATTTTTATT 316.242691168716 316.242691168716 323.159373336702
CACGCAAAGACGAGTCGAGA CGCGCTAAGACGAGTCGAGC 333.509565254824 317.485155999984 326.212807278748
GCCCCTGTCCGGACG GCCCCTGTCCGGGAG 334.323987481155 318.296185453565 326.861053252518
AAGCCGGCACTA TAGCCGGCACTA 320.841087637638 315.681196183552 323.022375994306
CCCCCTTGTTCT CCCACTGGTTCT 316.846355213233 271.731156926471 280.431509587266
TTTGGGTCCGATACGTTA TTTGGGTCCGACAGGTTC 326.526907539640 304.936001347139 313.235900619784
CTAGTAAGGTATAGAACT CTAGTAAGGTATAGAAAT 317.080850733325 306.909216639793 314.322636687809
ACACTGCAACATGCAAGGCA TCTCTGCACCATACTAAGCA 334.279193488462 287.410425546330 298.337166942414
CGGATACGTGAGCTGACCGTCACTG AGGGTTCATGAGCTGACCGTCACTG 339.003807135660 321.603408699629 331.135793238806
CACAATCCTTTCATAGGTCTGATGT CACAAACCTAACATATGTCTGGTGT 330.769444740710 302.850977615703 312.757796843091
ATAGGTGTATTACTTCCC ATAAGTGCATTACTTCCC 320.813390192036 307.309069291562 315.330380672069
TGCCCGTGCTAATTTCGG TGCCCGTGCGAATTTCGA 331.916704163337 321.788326255281 329.840680268581
CATACCTCCCGTGTGACC CAGACCTCCTGTCTGAGC 330.790040366578 275.685519938138 285.797334919463
CATGCGAATGAACGTGGTCAAC CATGCGAATGAACGTGGTCAAC 333.744727353783 333.744727353783 340.783101574584
GGTCCAGCCAGC GGGCCGGCCAGA 323.997990076396 258.335190180963 269.085542668344
TCAGCCTCTTACTACGAA TCAGCCTCTTACTACGAA 325.504908314887 325.504908314887 332.433608839830
TTCCACTCGGTA TTTAACTCGTCA 315.163712062905 240.754025130773 251.279252359821
GTACCCATCCGTTAACCACATT GTACCCATCAGTTAACCACATT 330.965975035173 322.116695925385 329.685541486863
TCGGATTTGTGG TCGTATATGCGT 315.144792522878 261.302945400146 270.745105924733
CAGGGGTTTGTAGCTTGCAT AAAAGGTCGACATGAAACTC 331.592676687332 178.298382734095 192.121517719714
GTATGTTTAGATTCCGGT GTATGTTCACATTCCGGT 322.407865448171 309.819055451666 317.927267476480
ATTTGAAGGTTGTTCATT ATTTGAAGGTTGTTTATT 320.745098479303 308.460034775676 316.604473343016
ACGGTGGCCGGCGACCTCAGCCGCA TCGGTCTCCGGCGAGCTCAGTCGCA 349.319476545950 322.805970408218 332.569513311728
GGTGAAACATGGGTGGTATGATAAT GGTGAAACATGGGTGATATGATAAT 331.043479784795 326.332708138854 334.184817037240
AAGTGTAATCGACTA AAGTGTAATCGACTA 315.631885291475 315.631885291475 322.265747968200
GAAGAAAATCCGTTTAGT GAAGAAATTTCGATTAAT 320.919322767873 264.519341261783 274.695121470457
GTATACCTACCGCCAGGCGTAA GTATACCTACCGCCAGGCGTAA 334.199822075507 334.199822075507 341.373552239777
GGGCTTGCAAATGCACTAGT GGGCTCGCAAACGCACATGT 332.244946736482 316.459896257268 324.959991904042
AGTAACATTACCCCTCTT AGTAACATTACCCCTCTT 322.762790159849 322.762790159849 329.855166947719
ATCGTTCCAGATTCA ATAGTTCCACATTGA 319.593588349254 263.703483135864 273.889968541208
ATCTAGACAAAT CTCTAGACAAAT 303.769798710798 299.975537128382 306.767744251403
GACTCGTGCCCAAAGGCG GACTCGGGCCTAAACGCG 335.453032103533 305.944507861049 314.863300937474
ATACCTGAAAGATACATAGGGAGGG ATACCCTAACGATACATAGGGAGGG 330.838488925824 319.951646252133 328.421632500441
CTCCTTCTATATCTTTACGC CTCCTTCTATATCTTTACGC 323.614245457101 323.614245457101 330.629799804542
GGAACGACAGCGGAC GGAGCGACATCGGAG 329.215799373567 299.203726696696 307.870410467643
AATTAAACTTCACTTGCTGCTA AATTAAACCGCACTTGCTGCTA 326.774684409898 319.760152873130 327.648310708541
CGGGGTGGTTTTAACGCCTT CGGGGTGGTTTTAACGCCTT 334.293634381856 334.293634381856 341.479503422465
TTACAAGTGTAC TTACAAGTGTAC 306.490429220235 306.490429220235 312.860219905519
GGTTTTACGCACTCGTTT GGTTGTACGCACCCGTTT 327.475666665468 315.253671257952 323.597273287183
GCGACCGGGATATTCGTG GCGACTGTGATATTCGTG 332.081729064974 312.612274551236 320.900746018201
AAATCATAGATGTTTGTGTG AAATCTTAGACGTTTGTGTG 322.490478539460 311.233326719324 319.056840527317
CCGCGGCTGGCCAGTGCG CCGGGGCTGGTCAGTGCG 343.595298549215 320.692138927062 329.428906251676
TTAGCGCCCCCT TTAGAGGCCCGT 323.638703533546 223.193289824279 232.649538093037
CGACTCCTTGCG CAACTCGTTGCG 321.093094443631 287.627523199553 294.941907978827
CAAATAGGGGAGAAATAGGGATGAT CAAATAGGGGAGACATAGGGATGAT 329.829565362939 326.229605874518 334.271529764424
TTATGACTCTAT TTATGACTCTAT 302.351970012031 302.351970012031 308.749474038831
CTTCGCACGGCTCTGAGGTG CTTCGCACGGCTCTGAGGTG 336.758970783676 336.758970783676 343.832413942225
GGTAGATCGTCTAACACA GGTGGATAGTCTAGCACA 324.183145729044 288.591703366550 297.757637466896
TCCGAAGTTATTTGT TCCGAAGTTATTCGC 317.020120014950 307.809184902247 315.094442186122
ACGCTATAGGTATCCAATGTGC TGAGGGGTTGCCTCGCGCGAGA 330.668816473345 168.517116213496 182.239452513402
ATCCCGGTGTTT CTCGCGTTCTTT 316.963839881018 238.291774003272 248.409713749044
TGTAAATATTGAGAACAT CTACTTGTAAAAATTATC 316.552099039474 4.196619607978 4.793908669173
TAAGATGGCGGTGCTAAGGT TAAGATGGCGGTGCTAAGCT 331.748855931570 328.095422595895 335.422537658975
CAGAGAATCGTATTG TAGAGAATCGTATTG 316.058437382107 309.336246420051 316.478881368674
ACACTATCGCAT ACACTATTGCAT 313.287559156327 289.002177419194 296.901322522936
TTTGCAACAAACTGCGGG TTTGCAACAAACTGCGGG 330.987598215230 330.987598215230 337.964638501570
TGCGCATTGACCGTATGA TGAGCATTGCAAATATGA 330.724505651688 291.707022981886 301.075127848151
CTGCAACGTGGCTGACGTGG CTGCAACGAGGCTGACGTGG 337.828829590951 332.158127068020 339.396841315526
AATCTAGGTATTCTGTGCACACTAG AATCTAGGTATTCGGTAGACACTAG 330.093652788304 312.242546896813 320.851841260874
ACGGCGAAACTGTCCCGT ACGGCGAAACTGTCCCGT 335.434181438533 335.434181438533 342.388102607306
AACGAGTACTCTTTGCACGCGC AACGAGTACTCTTTGCAAGCGC 336.704192051484 329.670890289599 337.116780737979
ACGGCCACCCGCGTAAGCCAGT ACGACCACCCGCGCTAGCCAGT 343.225833795195 335.051197281573 343.935168403898
AGGTGGAAACACCTCTTTATAG AGGTGGAAACACCTCTTTATAG 327.767855921026 327.767855921026 335.018188736768
GATGCACCTCTTCCTTGT GATGCACCTAGTCCTTGT 328.015528597840 315.813502381439 323.875578738504
CACACGTTAAATCAGCCGTGAC CACACGTTAAATCAGCCGTGAC 333.178564800892 333.178564800892 340.213130099053
GTGAAAAACGCTAAAACT GAGAAAAACGCTGAAACT 322.651310853696 305.102360687419 313.386535231522
CCTCTAAGCGTAAACTGGCGTA CCTCTAAGCGTAAACTGGCGTA 332.731489287653 332.731489287653 339.833318025496
CTTAACGGATCAGGTGCC CTTAACGGATGAGGTACC 329.145552153189 309.298607409059 318.329957990940
ACCAGCGCGGGTCCAAGCCGGG AACAGCGCGGGTCAAAGCCCGG 346.277068986675 323.989295670246 332.757718044482
GGTCGCCCTTGGTTG GGTCGCCCTTGGTTG 329.378530415267 329.378530415267 336.338999066477
GGTCTTTCCTGATAG GGTCTTTCCTGCTAG 317.502443546558 312.248143518990 319.891057909696
ATGGGGTCCCTTGGATAA ATGGGCTCACTTGGAGAA 327.935969186382 299.834873075580 308.768543906097
AGACTTTATCTGCGTTAG CGACTTAATCTGCATTGG 322.530698528657 290.771157085417 299.660782150129
TTCTAGCCTGTGCCATTCATTCGCG TGTCTTTAATCATTCACTGCATTTT 337.662752230513 0.000000000000 0.000000000000
GTGGCGTGATCCGCCTATGATG GTGGCGTGATACGCCTATGATG 336.412147017699 328.612405834565 336.461928234461
ATTATCCTGCAGAGCAGTGA ATTATCCTGCAGAGCAGTGA 329.338095898179 329.338095898179 336.434344794516
TGGGGTCACGCATGGCACCG TCGTTTCCGCGTAGACACAT 340.932042495783 219.946305376159 234.105527008232
GATCAGTCATGCCGGGCA TCGCTCACTGGGAGCTTT 333.615526310877 70.980108149928 78.760105051004
GAGAAACTACCAACCACC GAGAAACTACCAACCACC 326.141893376412 326.141893376412 333.228102476867
ATTGACTAGCCTGGAGGC ATTGACTCGCCTGGAGGC 329.814592678115 325.021169884577 332.608693895943
ACGGAGTCTATTGTC AAGGAGTCTATTGTC 319.985406470302 306.562131243465 313.933774764732
TGGCTGATTGGCCATTATTC TGGGTGATTGGCCATTATTC 329.296931346104 317.833565606159 325.604567901985
TGTTACGGACGGACG TGTCAGGGACGCACG 327.360275144725 294.262459737383 302.641243348176
AACGCTCCTTCTGACGCTCTGTACC AACTCTCCTGCTGACGCTCTGCACC 338.281645508427 324.671859746526 333.350952165099
CTTTCTACAAGCTTCCTCAGCCGAT CTTTCTACAAGCTTCCTCAGCCGAT 334.726254329200 334.726254329200 342.014376175497
CTGGGAGCGTGT CTGGGAGCGTGT 322.225101677135 322.225101677135 328.814148322577
GCAAGTGCTCCATACGTCAGGA GCAAGTGCTCCATACGTCAGGA 335.151235041562 335.151235041562 342.311691193007
TTGAACTCGAAGTCATTCCAGCCCA TTGTACTTGAAGCCATTCCAGCCCA 336.086839523526 320.167401115734 329.871603131488
CGCGAGTGTTAATTTTCATC CGCGAGTGTTAATTTTCATC 326.706848503872 326.706848503872 333.607112791387
CTCGAAATCAGCCTA CAGGCAGATCCGATA 320.433152901209 106.785241479223 115.721577071620
CCCACGTTGGATCCCTCA CACACCCAGCGTTCCCCT 332.434732686040 168.247008949882 182.904021311056
TCTTCCCGAAGGCAACTA TTGCTAGCCACCGCTACC 328.742342595200 0.000000000000 0.000000000000
TCGGTCGCCCGGCCA TCGGTCGCCCGGCCA 338.280658715332 338.280658715332 345.187830452143
TTCCGGTCTAGAGAT GTCCCGTCTAGAGAT 320.290802240471 304.664615132156 311.959714415134
TGCCACGTTTGG TTCCACCTTTGG 320.673142294482 289.947588641272 298.070057172917
CTGAGAACATGG GTTAAGTTAAAA 311.861058614240 0.000000000000 0.000000000000
TTCCCATTTGCAACG TTCCCATTTGCAACG 323.462465099785 323.462465099785 330.249305701134
AAGAGTTACTGGATTACC ATTACATGTTGAGCTAAC 321.460730667492 45.295339819983 50.838550888654
AAAACTCATTACCGTCAATGTGCCG AAAACTCATTACCGTCAATGTGCCG 334.427238998430 334.427238998430 341.612309670089
CGGGAAATCATGCACTTC CGGGAAATCATGCAGTTC 327.837268831791 315.451695083719 322.783155312403
TCTTGTCCATCAGACAGA ACTTGTCGACCAGACAGA 325.674390994389 302.134938899268 310.971599041593
TAACTTTGCCGTGCGTTC TTGCATAGCATGCAATTT 330.185153783687 164.313401929230 176.255433198370
GAGATTGACGACTAACCT GAGATTGACGACTAACCT 324.455556483854 324.455556483854 331.390094199272
CCGCGAGTCCACGGCGTAAG CCGCGAGTCCACGGCGTAAG 339.144645429285 339.144645429285 346.143799055883
TGACGGCGAGTGAGTTTT GGATTAGTCATCATCGCG 330.479181965474 47.596928980319 53.756086430128
AGCAACGTCTAAACTCGATT AGCAACGTCTAAACTCGATT 328.165361220407 328.165361220407 335.096430259205
GACTGCTAGCTGGCT GAATTATCACGTTCC 326.800285243793 145.119103179615 155.884495817015
ACCCTCGTAATTATTCCG GCCTCGCTAGAGAGGGAA 324.895708998494 137.294573703070 148.579615770821
AGCGGGCCGGCGCCCACGGTTAAAT AGCGGGACGGCTCCCACGGATAAAT 346.469332548688 327.821835178262 336.666611815380
ATACACCAGTCTCCACTGTGTCAGC ATACACCAGTCTCCACTGTGTCAGC 336.084026510573 336.084026510573 343.378799103379
AGGCAACGGTGTTTTTAGTTTCAAG AGGCAACGGTGCTTTTAGTTTCAAG 332.791413039949 329.450267766259 337.042137604359
CATAGTATGGTTCATAATTTAA CAAAGACGGGATTATCGGACTT 319.805110852434 183.915523269303 197.052684250500
ACGCCCCCCGGATTCGGC ACGCCCCGCGGATTCGGC 341.276243356091 331.161466849465 338.916726408046
TTGTCTTTCGAGCGG TTGTGTGTCCAACCA 325.282149224729 222.156190895896 232.598751363606
CTCCCGGGCGCCAGATGG CTCCCGGGCGCCAGATGG 339.311369482363 339.311369482363 346.533954436015
GCACACTTTGTCGGTAAGTGAGGAC GCACACTTTGTCGATAGCTGAGGAC 336.007697297418 324.718456248143 333.231550897913
ATATAGTCTCCGTGT ATATAGTCTCCGTGT 317.670914323835 317.670914323835 324.391677867921
ATTCGAGGCGGCTCTGAGGT GTTCGAGGCGGCTCCGTGGT 336.308093587336 324.901517012421 333.408982676338
CGCTAGCTCTCAGCATAA CGCTAGCTCTCAGCTTAA 327.750384254086 320.869735908381 328.340764122397
TACTCACTCTAATTCAAC TACTAACTCCAATTGATC 319.232623419269 263.254120288054 273.886368603122
CTTGGAATCTTGTTCCGC CTTGGAATCTTGTTCCGC 327.748687917447 327.748687917447 334.748570070981
TCTCTCTCTACTGAAGATGT TCTCTCTCTACTGAAGATGT 324.955441779254 324.955441779254 332.010856900828
AGATAGCTAAACTATGGTATTT AGATAGCTAAACTATTGTATTT 322.379524984208 314.920600083519 322.617736532767
TCCAGTAGGCCTGCACACCC TCCTGTAGGCCTGCACACCC 337.082762403533 331.065336200951 338.847431016473
CCGGTCGGTTAA CCGAGCGGTCAA 318.298891942113 278.422489888824 287.988343096102
TGCGGTATTACACAGTAC TGCGGTACTAGACCGGAC 325.257155822510 277.211655556984 287.317024862518
TAGGTTGAGATGTTCGGGCG TAGGTTGAGATGTGCGGGCG 332.954776706522 326.896199598776 334.681687928661
TCGAACCTCTAA TCGAACCTCTAA 311.195901304215 311.195901304215 317.645142918670
GGCCGTTGGGTGAGATGT GGCCGTTGGGTGAGATGT 333.461534051827 333.461534051827 340.580014223162
TTACGATTAGTAGAC TTACGATTAGTAGAC 313.227722774298 313.227722774298 319.837422500332
GCTGGCAGACTTCCGGGA GCAGGTAGACTGGCGGGA 335.491766864185 300.268242946003 309.735154150044
1 GATTCAAATGACGGCAGC GATTCAAATGACGGCAGC 328.590295502325 328.590295502325 335.520082032693
2 GCCGGGAGTCCCTGAGAG GCCGGGGGTCCCTTAGTG 335.202600908825 307.571309416976 317.582817372006
3 CCGGAAATGTGCCATCTGCGTGCGA CCGGAAATGTGCCATCTGCGTGCGA 341.857354066828 341.857354066828 349.067971091170
4 GCAGCGTAAGAGGAGGGC GCCGAGTGAGAGGACGGC 334.238236820572 292.689122005507 302.959373794547
5 ATCGGGATCTCAAAACCATC ATCCGGATCCCAAAACTATC 328.374164082672 303.012377993885 311.743534784977
6 TTTACTTCTCTCAAGGCC TTTACTTCGCTCACGGCC 324.870543621461 310.322643307651 318.434500513589
7 GATATTATCCGG TTCCTCATTAGG 306.633848409535 131.298936687567 140.958918657051
8 ACCAGATTCACCGTTAAA ACCAGATTCACCGTTAAA 324.666065281835 324.666065281835 331.625141334598
9 GCAGAAGGAATTCGTCTTAAAGTTT GCAGAAGGAATTCGTCTTAAAGTTT 330.221644057193 330.221644057193 337.429293354313
10 GTTACGCCCGTGGACAGA GTTACGCCCGTGGACAGA 333.152006826526 333.152006826526 340.131722535940
11 TACTGGCCAAGTGTTTCGGGCTACC TACTGGACAAGGGTTTCGAGCTACC 338.543873371072 317.159669988483 326.737809053749
12 CGGGCGAAAGACCTAACTCGTC GCCCATGTTTAAACGGTTCAAC 335.961664387167 99.726835837839 110.941608232133
13 ACCACAGAAGAGCCTCAG ACCACAGAAGAGCCTCAG 329.675966490972 329.675966490972 336.774887202068
14 TCCGTATCCGTGTGCTAT TCCGTATCCGTGTGCTAT 328.758681136274 328.758681136274 335.670742367360
15 AGCACAACCATCTTGCCA AACCAGCAATTGGGCAAC 330.726812945211 0.000000000000 0.000000000000
16 AAATCCGCGGTTACTTAG AAATCCCCGGATACTTAG 325.912290117405 310.432539561454 317.816914468819
17 TGGTTGCGGAATGGCGACACGCTAG TGGTTGCGGAATGGCGACACGCTAG 341.368691736083 341.368691736083 348.576311955777
18 CCACAAGGCACACCGAGGGCCCAAC CCACAAGGCACACCGAGGGCCCAAC 343.836245623632 343.836245623632 351.324029371624
19 TACCTTTGGTTAACCGCG TACCTTTGGTTGACCGCG 328.806445188317 321.784293018138 329.972272766148
20 ACCGCCAAACGGTAGTCCTT ACCGCCAAACGTTATTCCTT 334.638358155254 325.067933219113 333.495286023143
21 GGAATCACCGAATTC GGAATCACCAAATTC 319.872552670165 310.456121372350 317.724729105623
22 CGCTGGCGGGGACGCTTA CGCTGGCGGGGACGCTTA 338.850878426355 338.850878426355 345.870729715750
23 CCCAGAACCGAGTGCTGA CCCAGAACCTAGTGCTGA 332.759551850704 324.515696448123 332.085468128098
24 AGGACTATAGCC AGGACTATAGCC 311.340568942550 311.340568942550 317.961816433927
25 AAGTAAGCCAAACTC AAGTAAGCCAAACTC 318.374897033808 318.374897033808 325.174916603994
26 GGCAAACAGTGGCGTCTCTA GGCAAACATTGGCGTCTCGA 333.444435842161 322.587904260466 330.767259471616
27 GCGGGCTGGGCGACGCCT GCGGGCTGGGCGACGCCT 344.353158968164 344.353158968164 351.458901919666
28 AAAACCCGTTCTTGAGAA ATAACCCGTTCTTGAGAA 325.196643716015 318.373852240644 326.309549286768
29 TCTACGGGCAGG TCTACGGGCAGG 320.684836039138 320.684836039138 327.333083788784
30 CTGTATCATTCAAGACCTTGTG CTGGATCATTCATGACCTTCTA 327.587191928324 300.073898600295 309.615050320053
31 GAGACCTCGTTTATATGTGCCG GAGATCTCCTTTATATGTTCCG 331.709967011022 307.489712436204 316.778347789381
32 GATGCCATGCAACGCGGTCGAAATA GATGCCAAGCAACGCCGTCGAAATA 338.385858507321 328.510784583696 335.857144351146
33 CACCCATGGGTCGAGGAA CCTTCATGGGTCAAGGAA 332.434732686040 303.559662982167 313.037414209458
34 AACTTTACCACTTTGTCGGA AACTTTACCACTGTGTCGAA 327.854258269700 313.748415282978 322.159067997528
35 CTCCCAAGAATAAGGCCA CTCCCAAGAATAAGGCTA 327.279305268693 315.945719545119 323.849648970559
36 CTGCTCCCGACCTGCCGTTG CTGCTCCCGACCTGCAGTTG 339.148624544930 330.290260008245 337.867535931326
37 TTAGGAGACTCTTCAGCCTCCTTGT TTAGGACACTATTAAGCCTCCTTGT 334.398890499698 315.037835993209 323.891875192977
38 TGGACGATTGCG AGAATTGCGGCC 320.244905957781 146.501396490593 156.665817684297
39 ATTGTCAACTGTAGGTCA ATTGTCTAGTGTAGGTCA 323.939323737395 300.681567922172 308.863167608541
40 ACAATGTATTTTCTCGGG ACAATGTATTTTCTCGGG 323.362512238862 323.362512238862 330.327169046076
41 CGTGTGAGTGGCCCGAGTTGTCTCT CGTGCGAGTGGCCCGAGTTGTCTTT 340.130848609675 332.245514068114 340.636316881815
42 TATCAGACGTGGCAATGC TATCAGACTTGACAATGT 328.992885301719 304.405743905969 312.701350705029
43 CGTCGTCCCTCTCAGCCG CGTCGTCCCTCTCAGCCG 336.200821936899 336.200821936899 343.186897048375
44 TAAGGCTAGCCAGAACCACG TGAGGCTAGCCAGAACCACG 332.598253740841 326.985556902569 335.280653989150
45 GTTCAGGGGAATGAGAGATA TTACAACTGCCAACTTCGCT 326.722966616537 109.952678878773 121.594862151643
46 CCCAGCGCGAATTTGTCA CCCATCGCGAACTCGGCC 332.540722470730 292.630570524742 303.511783076339
47 TGTCGTCGCTACCAGTTA TGCCTTCCCTACCAGTTA 328.953316297354 307.160700342629 315.442693299698
48 CATGCACCGTGAGTCTGC CGTTCACCGGGAGTCCGC 332.846939286468 291.434652139556 302.526073291148
49 GAGAGTTGCTGTTGATTA TAGAGTTGCTGTTGATTA 323.031379731052 319.294880722061 326.526947280607
50 GCTCGGTCCTACGCCGACGT GCCTGATCTAAATATGCCTG 339.747877109584 158.568208002892 173.058219990461
51 TCTTTGAGCTTCCCATCT TATTTGAGGTTCCCATCT 326.307771557426 300.329179385918 308.617669678883
52 GTTTCCTCGGGT ATGTCCCCGGTC 317.903207078845 250.921863687541 262.030341678318
53 AGTCTGCATCCAGGATAGTGTTCAA AGTCTGCGTCCAGGATAGTGTTCAA 333.474575396610 328.822975749317 336.887405627890
54 CTAGGGCACCAACGCACG CTAGGTCACCAACGCACG 335.143347846422 329.701891848980 337.431099508189
55 GATTGCTGGACCCGACAAAC ATCGACTGCGTCAATCTGAT 332.811424650986 125.989102558259 139.175967010614
56 TTATTTCTCCGAGATCCA TTATTGCTCCGGGATCGA 323.096708880271 281.710374029821 291.583720089868
57 AACCTCCGCTCAGCCCAT AACCTCCGCTCAGCCCAT 334.559812073966 334.559812073966 341.720616471431
58 ACATGCGGAGACGATAGA GAGCATCTTCGTGTCCCC 328.777637355840 13.663795446228 15.557079997899
59 GCGATCCGGCCCGAAGGACGGTTAC GCGATCCGGCCCGAAGGACGGTTAC 343.160858693872 343.160858693872 350.466895660629
60 TAGGCGCTACCAAAGAGACC TACGCGATACCAAAGAGACC 332.314713425979 316.910949741281 324.757961637335
61 GCTTGACGGAGGGATTGCATACGTC GCTTGACGGAGGGCTTGCATAGGTC 337.905459739261 327.298908614928 335.399197844049
62 CTTACGGTTTTGTGG CTTACGGTTTTGTGG 320.490499863910 320.490499863910 327.265086426630
63 AGAATGCTTTGCACGGGAAAAAGAC AGAATGCTTTGCCCGGGAACAACAC 334.833702111547 324.032364174889 333.126901145695
64 CCATCCGGGACCGTGTTA GTGGTGGACAGAAAGCAC 332.523437582445 67.486926898379 75.000548050396
65 AGCAAATATTTAAAACTG AGCAAATATTTAAAACTG 316.766614411011 316.766614411011 323.642414073658
66 ACTGACAAAAGGGACCTTTAGA CCCGAACAAAGGGACCTTGAGG 329.363491007070 296.438968024933 307.489562539207
67 ATAGGACTCGGACGAAAG ATAGGACTCGGACGAAAG 326.913461392949 326.913461392949 333.867158802657
68 TATAAGCTAGTTGAG TACCAGCTACTCGAG 312.936278497921 279.566780789215 288.458312256098
69 AAAGCTGCCGTG GTCGATTGTCGG 320.846677260689 11.139130534401 12.281612095844
70 AAAACTGGCACG AAAACTGGCACG 317.241607884236 317.241607884236 323.710646130150
71 ATTCAGATAATGAAGGAC ATTAAGATAATGAACGAC 319.569864618292 300.532814450507 308.266203286509
72 ACTCCGCCAGTAAAGAGCGATC ACGCCGCCAGTAAAGATCGATC 334.956435857922 324.130818124085 332.402089448274
73 AAACAGGTGGTGCTTCTGGT AAGCAGGTGGCGCTTCCGGT 332.663618849926 317.895372912569 326.451852134041
74 ACGTAAACTAGCGATCCTAC ACGCAAAACAGCGATCCTTC 327.648394671924 306.841804464239 316.109126582555
75 ACTCTTCTGTAGTAATTT ACTCTTCTGTATTAATTT 318.111014934586 311.385476013207 318.854355601485
76 GCCTGGATGAAA CCTCGCATTATA 314.875733564946 135.466989302349 145.485320466877
77 ACAAACATCTTT ATAATTATCTTT 306.751127645023 230.133355279539 240.007445742650
78 TTTATGTTGCACCCG GCCCTCCTGCAAGGG 322.725425600228 198.227797952416 210.186099128768
79 CTCTGTGATTGC CTCTGTGATTAC 313.233837007613 299.818390981614 306.829729109027
80 CAGGGGGTGTCTTCTTGCCA CACGGGGTGCCTTCTTACTA 335.170765818115 304.025892909583 313.686365730924
81 ATAAACTTAAGCGGGGCT ATAAACTTAAGCGGGGCT 327.141275752020 327.141275752020 334.197558650535
82 GTGGTACGTCTCGCACCGTATT GTGGTACGTCTCGCACCGTGTT 335.183465966560 331.876024565197 339.826055532683
83 AGCCCCTACCGTGAGGTATGAA AGCCCCTACCGTGAGCAATGAA 334.930026765640 329.325029384246 337.230038559345
84 CTACGTTTGGACTTTCAG TCCAATTCATGTACACCA 324.309529994597 130.265141330095 141.767454087853
85 GGAGGCGTCGTCTAATGTGGCTGCA GGAGGCGTCGTCTAATGTGGCTGCA 340.715437268799 340.715437268799 347.974364433377
86 TCACGCCCGTTACCATGC TCGCGCCAGTTACCATTC 334.223290685080 301.060585660525 310.242722525263
87 GTGTGGAATAAC GTGTGGAACAAT 308.856970626568 289.055396946314 297.087438077958
88 AACTAGGCACAGCGGAAGTGTTACA AACTACGCACAGCGGAATGGTTACA 336.064499532413 324.487528333723 332.510759640255
89 AGTTGGGACCGCGGACCTCAGACGA ACTTGGGACCGCGGACCTCAGACGA 342.586917960981 339.716507068413 347.297152857653
90 CGCAGGCCGCCCTATCCG GTGGGCAACCGTGATTAT 339.659476639126 111.730621568890 122.520566332669
91 ACTCGGTTAAAGAAGTAGCGGG ACTCGGTTAAAGAAGTAGCGGG 332.661444291378 332.661444291378 339.831677127033
92 GTCGCACTCACGCCAAGG GGCGCACTCACGCCAAGG 335.434179979611 327.968420416066 335.946784667129
93 TTATGTGCCGTC TTATGTGCCGTC 315.550568136423 315.550568136423 321.978396903837
94 ATACACTCCCTC ATACACTCCCTC 311.742937528520 311.742937528520 318.358302050000
95 ATATATAAAACGCTT ATATATAAAACGCTT 310.835103721529 310.835103721529 317.439661067059
96 TTGACCCAGCTCTGACAA TTGACCCAGCTCTGACCA 329.300611062468 323.357283025809 331.214889354503
97 TCACCAAGGACATCGGTGAA CACTAATCTCTAGGCTACTG 331.893316827967 0.000000000000 0.000000000000
98 AAATACTAATATCACGAGGCCT AAATACTAATATCACGAGGCCT 326.991443235419 326.991443235419 334.132256945596
99 CATCTAAGGTTCCCCACG CTCCTAAGGTTCCCCCTA 328.386823878643 301.442125171364 311.286145433228
100 TCAGGCAAGGCTAAAGAT TCATGCAAGGCTGAACCT 326.725811212726 296.261200224359 306.662120559413
101 ACCGGTGTCTGACGAAGA CCCGGAGTCTGACGAAGA 331.461574428762 323.233483550268 330.841087730303
102 TGCCATAACAGT TGCCATAACAGT 313.107834134787 313.107834134787 319.615154304331
103 ATAACTCTGCTCTATAAA ATAACTCTGCTCTATAAA 317.633729090723 317.633729090723 324.531712635958
104 TCCTGCGCAAATTACTAGAACCTAA GTCTCAGCGAGAACTCTATTAGGAT 332.050504643625 0.000000000000 0.000000000000
105 GTATCGAGGTCGAGGAAAGCGCTGT GTATCAAGGTCGAGGAAAGCGCTGT 338.362288220608 334.066037941649 341.579718818818
106 CAGCCTTTCAGG CAGACTTTCAGG 316.248469201820 292.111362062705 300.080584403201
107 CTTGCGGTACATCGCAGTGTGAATA CTTGCGGTACATCGCAGTGTGAATA 335.474585471307 335.474585471307 342.613324305508
108 TAAGAACTAGCACGCATAAG TTAGAACCAGTACGAAGAAT 326.081723019865 254.023237958651 266.323327012842
109 TACATGTACATTTCGGCC TACATGTACATTTCGGCC 325.896662787897 325.896662787897 332.832044747960
110 TAGCATGCGATTCCCTAAGAAG TATCATGCGATTCCCTAGGAAG 330.590797080638 318.020175239024 326.375059746915
111 CGGTGTTGTACGCCGACC CAGTGGTGTATGGAGTCC 335.122388615945 245.504228310044 257.618564855382
112 ACTTTACGCCCGTAG ACTTTACGCCCGTAG 324.104530886916 324.104530886916 330.841602836160
113 GGTCTTGGTGGACAGATG AGTCTTGGTGTACAGATC 328.628141921468 313.674320134018 322.206848229767
114 GTTCGGTCATGC GTTCGGTCATGC 317.988264837295 317.988264837295 324.445499068321
115 CTCACGCTTCTCATTATT CTCACGCTTCTTTTTATT 323.247552234877 309.106689004420 317.389249379550
116 TGCGAGCGTGAT TGTGAGCGTGAT 322.408515345848 302.521839005369 309.729023044907
117 AGATAGGGGGCCCTCGAACCGCCCG AGATAGGGGGCCCTCGAACCGCCCG 345.102909485864 345.102909485864 352.627470314597
118 AACCTACACAGG AACCTACACAGG 313.161040203465 313.161040203465 319.768122899840
119 TCCGCCCGCCAC TCCGCCCGCCTC 330.719187584648 320.094784422350 327.317364425992
120 ATATCGTGAGCCGTGTACCCGG ATAGCGCGATCCGTATACCCGC 336.660788072052 313.231213020956 322.468970039473
121 GGAAGCGTTGACACCGAC GGAAGCGTTGACACCGAC 332.770993213501 332.770993213501 339.705211527389
122 CGAGGCAAGGGATACGCAGCTCAGT CGAGACAAGGGATACGCAGCTCACT 340.305756168638 332.795008096728 340.846081667398
123 CTACCGGCGTAGATATGC CTACCGGCGTAGATGGGA 328.520812530739 311.151850739834 319.645074203379
124 GACTTAAGCGACTAC ACGGCTTAGCGTGGC 318.887440179040 10.664421060955 12.014569510602
125 CTTAGGATTCTGGCTAATTTACGGT CTTAGGTTTCTGGCTAATTTACGGT 330.595304320228 326.378730172844 334.038450345878
126 ATCCGCACGGAC TTACCGGACCCC 323.089768931227 0.000000000000 0.000000000000
127 TCCCAGCTTTTGCAGTGGGATT TCCTAGCTTTTGCAGTGGGATC 335.062847253676 324.545742095465 332.720886054794
128 TGGCTTCACGGC TGGCTTCACGGC 323.785812253507 323.785812253507 330.353929757972
129 TAGGTTATTCCGACCATA ATGCGGGACACTGCCATG 322.422210409371 192.368508212637 205.559476403263
130 AGCCTTTCGACTGAC AGCCTTTCGATTGAC 324.335884950598 312.595672426393 320.534233002808
131 CGTGCAGCTTTCATG CGTGCAGCGTTCTTG 324.919682340793 305.582789800617 313.597104921942
132 TCTACGTGGCGGGGACCGGG TCTACGCGGCTGTGAGCCGG 341.347076387025 299.430239048585 309.018341106927
133 TCAAATTAAAGTTGGACTGACA TCAAATTAAAGTTGGACTGACA 326.350254889911 326.350254889911 333.467128526408
134 CGGGGGCCGTGGTCACTGCTTTCAG CGGGAGCCCTGGTCACTGTTTTGAG 343.571008380319 318.537337281338 328.795128334431
135 ACATTGCAGTCA TACAAATATGCA 314.282094430945 54.422588938214 59.864081596928
136 GTTCCATAAGACTTA GTTCCATATGATTTA 313.492331047121 283.603344310509 292.314146114969
137 TATTTGAAAGACATAGGGGCGT CGGTACACTGGTGCCGGAGGCA 329.927702442206 21.671006660567 25.185742081802
138 AATGGCAATTGCGTA AATGGCAATTGCGTA 322.153531008784 322.153531008784 328.861389966064
139 TGACCTCACAAATACGGGGTCG TGACCTCACAAATAAGGGGTCG 334.840837473162 327.359477549248 335.051513807130
140 CTCTGAAAGAACCGGGCA CTTTGAAAGAACCGGGCA 330.717616406698 321.166071332522 329.380562417680
141 TCCCCGATGCTTAAGACACGCGTGT TTCCCAAGGCTTAATACACTCGTGT 339.959965745411 305.790225053607 316.153725711522
142 TGCACTTCGAGG TGCACTTCGAGG 318.856723935199 318.856723935199 325.349637181717
143 AAGGGTCACCAGAAA AATAAGGTTCCTGCT 322.240165848681 53.802401211576 60.076587053449
144 TAATAAGTCGTG TTATAAGTGTTG 306.473400984667 233.666269447857 244.153793035378
145 CATGATGCCTAGTATGAT CATGATGCCTAGTAAGAT 321.893431646493 315.240330549201 322.344428969018
146 TATGCGCGAACCTAC TATGCGCGAACCTCC 324.777133033446 320.584177151486 328.154789861490
147 TGGCAACTCCCGCACATGCCCT TAGCAACTCCCGCCCCTGCCCT 341.428702525130 330.240007837364 339.446160220950
148 AACGGTCCATAGTGT TTACTGCCTCTATCA 322.301936674505 92.184229884404 101.375195399772
149 CTGGTTAGCGACTAGGGCGA CTGGTTAGCGACCAGGACGA 334.491616458730 325.265096818567 333.491322070668
150 CTACGTGACATGGCCCCT CTACGTGACATGGCCCCT 332.520578697054 332.520578697054 339.639446777780
151 CCCTCCTGGAAGAATCCATAGTATC TCCTCCTGGAAGAATGCATAGTATA 331.837538166233 315.597835592823 324.711900293230
152 TCCGCGGTGCGGCGTCTA TCCGCGGTGCGGCGTCTA 340.070741817013 340.070741817013 346.961988197618
153 TGAGGGCGGCTCGAAAGAGATAGGC TGAAGGCGGCTCGAAAGAGATAGGC 339.908445380864 335.397387022299 343.087954453266
154 AGGATTGAATGCGGATTCACAATGA AGGATTGAATGCGGATTCACCATGA 333.075743741665 329.267518388258 337.096639984117
155 CTGGCACGTGAAAGTGTA CTGGCACGTGAAAGTGTA 328.758681136274 328.758681136274 335.670742367360
156 TATGAGCTCGCATTGACGAT TATCAGCTCGCATTGACGTT 330.199735252295 317.575655447674 325.732088199432
157 CTCCGATACGCCCAACGTTCCT CTCATATACGCCCAACGATCCT 337.111273784768 319.264148345607 327.480755860446
158 CTTGTAAGGAACCGATCGTGAAACT ATAAGATATATTTGTTAAATAGGAG 333.190199559369 0.000000000000 0.000000000000
159 CGATCGGGGTTCGGTGCTAAGG CGATCGGGGTTCGGTGCTAAGG 337.958135639451 337.958135639451 345.185613424927
160 GTGTCACTTAGTGGC GTGTCACTTAGGGGC 322.599730343108 309.940994981687 317.650231320028
161 GTAAGGTGCTACGTGGGA GTAAGGTGGTACGTGGGA 329.791738219571 317.210999985374 324.885748886244
162 GGGGACCACGGAGCGCTT GGACACCACGGAGCGCTT 338.493908487715 328.075398097466 336.508505160201
163 ATGATTCGGCTGATGTTG ATAATCCGACTGACGTTA 326.617373214063 284.388619463998 294.654772560060
164 CGTTGCACCTGTGCAGAC GGATGGACCTGTGGAAAC 333.382064119484 257.494983943418 268.960440677818
165 GGGTATGGAACCGAGCTT GGGTATGGAACCGAGCTT 330.144774353530 330.144774353530 337.264117120300
166 CCGTTTAGTACTTGAGCT TCGTTTAGTTATTGAGCT 325.101412938739 306.110310829587 314.815405000962
167 TGCTCGCCGTTGATG TGCTCGCCGTTGATG 328.982207099090 328.982207099090 335.675432532816
168 GCGGTATCCTGTTTAATAGCAC GCGGTATCCTGTTTAATAGCAC 330.022926941214 330.022926941214 337.146106169306
169 ATTGCGTTGCCCAACGGGAAAC CTTCTAGATCTCGTGTTCTGTC 337.501498070251 30.100236916645 34.669973146917
170 GAAGCGTACTAC TAATCGTACTAC 312.135520730872 290.578334792837 298.230744679790
171 TCGCTTAAGTTGGACCCG TCGCTTAAGTTGGACCCG 330.825518413055 330.825518413055 337.820664158968
172 TCAAAATATCGACGATCGGGTA TCAAAATATCGACTATCGGGAA 329.618484688871 316.847687836049 324.679351875168
173 CTGTAAGTGCGT CTGTAAATGCTT 315.552108712421 284.478519286229 292.079870838245
174 ATCCGTTGTCTGTAT TCCTATCTTGTCTCA 319.236231890115 0.000000000000 0.000000000000
175 GCTGACGATCACCACTGAGT GCTGACGATCACCACTGAGT 332.887137941413 332.887137941413 339.934427106782
176 GGGACCGTCTTGCCTGAA GGGACCGTCTTGCCTGAA 333.069804290103 333.069804290103 340.197004324922
177 GACACTTCATGTTGAAGGAA GAGACATCAGGCTGAAGGAA 326.623921634303 290.160218586875 299.116365655134
178 AAAGTTAATACT AAAGTTAATGGC 300.439776727757 274.074904518474 281.916563483524
179 TTCACTCAGGCCGGGACT TTCACTCAGGCCGGGACT 333.775772265987 333.775772265987 340.923230531829
180 TGAGGTGTACCTTCGATAACCCCTG TGAGGTGTACCTTCGATAACCCCTG 335.429777164410 335.429777164410 342.806589346267
181 GGCGTTAGACTGGGACTCAT GGCGTTAGACTGGGACTCAT 332.314063072189 332.314063072189 339.465122151725
182 GCGGAAAATTCCTCCTGGAGGC GCGGAAAATTCCTCCTGGAGGC 336.555274112350 336.555274112350 343.900546225317
183 ACCCGCCGGGTTATG AACCGCCTGGTTATG 330.420331626846 303.591907390707 312.104888476139
184 GTGAATCTGTGCCATGTAAGGAGTA GTGAATCTGTGCCATGTAAGGAGTA 332.502726598592 332.502726598592 339.772881635043
185 TGTGCATATGCGAAGCAGCA TCTGCATATCCGAATCAGAA 333.922832979848 300.308875168811 310.038091502733
186 TTCCGGGAGAGTCATTCAAGCGATT AAGCGAGGGGAGACCCTTCTTTACG 335.964252182230 0.000000000000 0.000000000000
187 TATCACTTACTCCCCGGA TATCACTTACTCCCCGGA 327.110291836484 327.110291836484 334.201971889462
188 ACGCATTAGTCTACCGTCTTGC ACGCATAAGTCTACCGTCATGC 333.304407097527 323.852674403909 331.529871399707
189 ATAATAGATGAT ATAATAGATGAT 298.724754718266 298.724754718266 305.105559067848
190 ACTTCATTGGCCTCTTTC GGGATAGGCCATTAGAAA 325.919067175754 0.000000000000 0.000000000000
191 ATTTGCGTTAAGGAGACTCA ATTTGCGTTAAGGAGACTCA 327.736465255252 327.736465255252 334.763124999138
192 GGGAGCCACGTCCCGCACTT TGGGTCTGTTCTACGGGTCC 340.351804998615 66.406913767236 75.840004728444
193 AATGGTAGCTTGGAACAACT AATGGTATCTTGGAACAACG 327.871691250641 318.316542767859 326.227958663349
194 ATACAATACCAA GTAAAACCCTAA 304.232095602747 144.099149360347 153.765346779177
195 TTCTAGCGTCCCGGTACT TTCTAGCGTCCCGGTACT 330.589206350792 330.589206350792 337.589326383339
196 TGGCCTTTTTTTAAGTAAAT TGGCCTTTTTTTAAGTAAAT 321.872839855264 321.872839855264 328.960538235470
197 ATGCCTCCTTGTAATACAGCTAGGG ATGCCTCCTTGTAATACAGCTAGGG 333.823387389837 333.823387389837 341.214372867702
198 GAGATAACACGCCAGGTTAA GGGATAACACGTCAGGTTAA 328.361333311021 307.593342393239 316.302295915689
199 CACGGGCATCAAATG CACGGGCATCAAATG 324.403592056034 324.403592056034 331.200512200928
200 TTAACTGTCGGTACTCTT TTAACTGTTGTTATTCTT 323.363845103162 280.866882856653 291.385325188001
201 CACGATAGTCGTTGA TTCAAAGGTGAGTAA 321.130711058809 128.711478226556 138.526211474293
202 GCCGGCCTAAGGACG GCCGGCCTAAGGACG 331.645745178000 331.645745178000 338.559056448220
203 ACGCAAAAAGCGCAT ACGCACAAAGCGCAT 327.022026932331 320.836952659324 328.322467858379
204 AGTCTTAAACGTTTATTG AGTCTTAATCGTTTATCG 318.625758737664 304.665747911265 312.350081264934
205 CTGATCCGAGTTTGGCAGCT CTGAACCGAGTTTGGCAGCC 333.515248215999 325.848131196554 333.400292317441
206 AATCCCCCTGCGCGGTGG AATCTCCCATCGCGGTGG 338.914827359853 316.871536337894 325.825478445471
207 CCTATTGCGAGTGGAGTTTTTC CCTATTGCGAGTGGAGTTTTTC 330.398722345826 330.398722345826 337.555411082006
208 TTTGTAGCACTCTCTAAG TTGGCACCGCTCTCGAGG 321.958335092061 240.192027201542 251.110839474907
209 TATAAATCCAAACCG TATAAATCCAAACCG 314.941565560136 314.941565560136 321.679961211234
210 TCTGGTCTACGGACCAGA TCAGGAATGCGGACCAGA 329.776739773812 300.216331414806 308.948988559444
211 GCGATTCTGGAAATT GCGATTCTGGAAATT 319.582046008775 319.582046008775 326.323905265890
212 AACTTATTGTAAGTGGCT ATCTTATTGTAAGTGGCT 321.893436025311 314.515961362535 321.963655827352
213 AGTAGATCCACGCTC GGTGACGGTATAAGT 322.922652409125 0.000000000000 0.000000000000
214 AGACAGCCAATTTGGACC AGACAGCCAATTTGGACC 328.624785345222 328.624785345222 335.740638937702
215 TCTCCCCATCTGGTTGTGACAC CCTCCCCAACTGGCTGTGACAC 334.475047649994 322.522934177182 331.074093710435
216 GTCCGGAGGGAAATT GTCCGGAGGGAAATT 323.695895292588 323.695895292588 330.657945722303
217 GCATTGGTGTCTGAGAGACATC GCATTGGTGTCTGAGAGACATC 331.823924496399 331.823924496399 338.987388491055
218 TACTCTTCGTTG TACTCTTCGTTG 310.392977904224 310.392977904224 316.757886088883
219 ACCTACTACAAT ACCTACTACAAT 306.714175636802 306.714175636802 313.206330066357
220 CCTTACACTATGCACCCG CCTTACACTATGCACCCG 328.839039592404 328.839039592404 335.870639509527
221 ACCTGTAAGATCGAGTGATATCGGA ACCTGTAATATCGAGTGATATTGGC 332.453410863819 317.742424213661 326.757759926067
222 ACCCGGAATCAC ACCCGGAATCCC 318.062682068531 309.456479129025 317.168301011525
223 TTGCATCTAAACATTAAAGCAGAAG TTATGAGCCTTCCTAATCCCGCAGC 328.558653084235 92.581987798659 103.905955829058
224 CCGCGCCAATAT ATCACAAAGGAA 320.315607213397 0.000000000000 0.000000000000
225 ACCAGCCTAACTTTTGTT GCCAGCCTAACTGTTTTT 325.132735655685 301.134269729448 310.106656597025
226 GCTTAATGCTGGCTACGC GCTTAATGCTGGCTATGC 330.692022417212 320.449633481302 328.448263187090
227 TGGTCCGAACGGCAACAC TGGTCCGAACGGCAACAC 334.376696093757 334.376696093757 341.354168304032
228 ACCCGGCCAGGG ACCCGGCCAGGG 328.950241125024 328.950241125024 335.887941031174
229 ATACCATCGCCTAAGATTGGCC ATACCATAGCCTAAAATTAGCC 332.848856616901 309.476145134398 318.241854893043
230 AAACCGGCAGTA AATCCGGCAGTA 317.201144426162 305.365706144159 312.555666368026
231 CACAACAACGTTCAA CACAACAACGTTCAA 320.677535999798 320.677535999798 327.306012831155
232 TGGGTCGCGTCCCAG CAGTACCCAACCCCG 333.123346113342 246.742853521647 257.809384715704
233 CTCCTAAACATGAAGAACCAGAAAT CTCCTAAACATGAAGAACTAGAAAT 329.191307133388 321.504803533715 329.322148156357
234 TACTATTTCGTTTGC TACTATTTCGACCTC 316.071427737447 286.990612725496 295.372324621468
235 TCCCTGGCAGCAGGGTAGTTTTGAA TGGGCCAACGCTAACTGGTGCCTTG 337.792849188337 121.771136708049 135.395255297683
236 GCTACATTACCGGCTCTC GCTACATTACCGGCTGCC 328.627216292430 317.865179052925 326.512498741613
237 TGAGGCGGGTTATGCGTTAATG TGAGGCGGGTTATGCGTTAATT 333.877486753212 330.936597263706 338.449826872471
238 CACTTATCCCGCAATAAT AACTTATAACGCAAGAAT 323.209491396864 285.261497168294 294.371363704620
239 CGCGCCCGACGATCCACT CCCGCCTGACGTTCCACC 338.845192827705 310.574091806929 319.266524881313
240 AGGCTCCTCTATGAA AGTCTCCTCTATAAA 320.534065615391 298.120651463631 306.645491242189
241 TGGTAATTGCCTGAG TGGTAATTGCCTGAG 320.915868643696 320.915868643696 327.776118922002
242 GTTCATTCTCTGGAGGGC AAGCCGGTACCTGCGGGG 328.693062285185 175.795089391355 189.885811626097
243 GAACGCTGGTCGTCACAT GAACGCTGGTCGTCACAT 331.556430142525 331.556430142525 338.434764177077
244 ATTGGGTGATCGTAAGTAAG ATTGGGTGATCGTAAGTAAG 325.612525475036 325.612525475036 332.668318324958
245 AAGATATGTTTGTAGGCCGAAC AAGATATGTTTGTAGGCCGAAC 329.104322856711 329.104322856711 336.238620405649
246 GTGTGGGTGCCC GTGTGGGTGCCC 324.309319433451 324.309319433451 331.095278789318
247 GGCGTCCAGAAT GGCGTCCAGAAT 318.801851843066 318.801851843066 325.371455269089
248 TGGCTCTGGATAGCTCCCCC AAGGACTATACAAAGCCAGT 336.053481241646 140.181856955550 152.924856339728
249 GTAATCTACCATATG GGAATCTACCATATG 311.238267655019 297.565035184391 305.303043725135
250 TAGAGACGTTTCCTCGCCTTTATCG CTTAGACACTCAGGTGTTGTTGGCA 334.313541801127 188.908254593789 203.829299320958
251 TGCCAGCTTGTGGCGAGTAT TGCCAGCTTGTGGCGAGTAT 335.045486995831 335.045486995831 342.139981881034
252 TTCCGAGCCTGCCGAACAGG TTCCGAGCCTGCACACCCGG 337.981474268738 315.139472928922 324.695198064855
253 TAGGCGACGGCTAACTGG ATTAACACAGAATGTAAC 332.611090573720 117.192190429110 129.003910625976
254 CTATCAAGCCTCAGGTATCGCT CTATCAAGCCACAGGTATCGCT 332.013904222950 327.008869759689 334.361264460119
255 GCGTTGAACAGTGCGTACGT GCGTTGAACAGTGCGTACGG 334.922740354371 331.487402480161 338.817709417777
256 ATGACCTGTACGCTG TCACACCCTCGGTCG 324.096877104678 76.811640858322 84.402210669196
257 TAGTTATCTTCTACCTGATGTAAGC TAATTATCTTCTACCAGATGTTAGT 327.657446380070 306.418404503197 315.329248976153
258 CGGTGCAGTGCAAAATGCGAGTAGT CGGTGCAGTGCAAAGTGCGCGTAGT 338.234766348875 331.605213173016 339.892622743888
259 TTGTTGCCATGTAAA TTGTTGCCATGTAAA 318.513544450161 318.513544450161 325.252135026214
260 GTGAAACGTTTGCTGTGG GTGAAACGTTTGCTGTGG 328.992886751469 328.992886751469 335.904977195626
261 GTTGGAATTGCGGCAAAG GTTGGAATTGCGGCAAAG 329.419693351400 329.419693351400 336.405013425441
262 ATTTCCCGCAGCTTCGAC AGTTCCTGCAGCGTTGAC 331.921604125857 275.704268703669 286.426092962088
263 GGGCTTCAACTCTGCAGA AACTTCCGATAGTACCCG 330.715768712068 0.000000000000 0.000000000000
264 GTAGTACGTCACTTAGGGTATA GTAGTACGTCACTTAGGGTCTA 326.370618283308 323.603568352225 331.248373111091
265 GTGATATTTTCACTGCTAGG GTGATATGTTCACTGCTAGG 324.660738933852 318.097303613935 325.739236970914
266 TTAGAGCCTAGATATCGC TGAGAGCCTACATATCGC 323.737203572163 308.667021683076 316.877776506437
267 GGCCGGTTTGAT GGCCGGTTTGAT 319.628239742093 319.628239742093 326.261640206404
268 CGATAGTGGAAG CGTTTGTGGAAG 311.281036639251 282.148143916626 290.555750610531
269 TTTATAGACGGTCCA TTAATAGAGGGTCCA 318.271295635730 289.396103709646 297.309467179028
270 CTGGTGTAAATTTTTATT CTGGTGTAAATTTTTATT 316.242691168716 316.242691168716 323.159373336702
271 CACGCAAAGACGAGTCGAGA CGCGCTAAGACGAGTCGAGC 333.509565254824 317.485155999984 326.212807278748
272 GCCCCTGTCCGGACG GCCCCTGTCCGGGAG 334.323987481155 318.296185453565 326.861053252518
273 AAGCCGGCACTA TAGCCGGCACTA 320.841087637638 315.681196183552 323.022375994306
274 CCCCCTTGTTCT CCCACTGGTTCT 316.846355213233 271.731156926471 280.431509587266
275 TTTGGGTCCGATACGTTA TTTGGGTCCGACAGGTTC 326.526907539640 304.936001347139 313.235900619784
276 CTAGTAAGGTATAGAACT CTAGTAAGGTATAGAAAT 317.080850733325 306.909216639793 314.322636687809
277 ACACTGCAACATGCAAGGCA TCTCTGCACCATACTAAGCA 334.279193488462 287.410425546330 298.337166942414
278 CGGATACGTGAGCTGACCGTCACTG AGGGTTCATGAGCTGACCGTCACTG 339.003807135660 321.603408699629 331.135793238806
279 CACAATCCTTTCATAGGTCTGATGT CACAAACCTAACATATGTCTGGTGT 330.769444740710 302.850977615703 312.757796843091
280 ATAGGTGTATTACTTCCC ATAAGTGCATTACTTCCC 320.813390192036 307.309069291562 315.330380672069
281 TGCCCGTGCTAATTTCGG TGCCCGTGCGAATTTCGA 331.916704163337 321.788326255281 329.840680268581
282 CATACCTCCCGTGTGACC CAGACCTCCTGTCTGAGC 330.790040366578 275.685519938138 285.797334919463
283 CATGCGAATGAACGTGGTCAAC CATGCGAATGAACGTGGTCAAC 333.744727353783 333.744727353783 340.783101574584
284 GGTCCAGCCAGC GGGCCGGCCAGA 323.997990076396 258.335190180963 269.085542668344
285 TCAGCCTCTTACTACGAA TCAGCCTCTTACTACGAA 325.504908314887 325.504908314887 332.433608839830
286 TTCCACTCGGTA TTTAACTCGTCA 315.163712062905 240.754025130773 251.279252359821
287 GTACCCATCCGTTAACCACATT GTACCCATCAGTTAACCACATT 330.965975035173 322.116695925385 329.685541486863
288 TCGGATTTGTGG TCGTATATGCGT 315.144792522878 261.302945400146 270.745105924733
289 CAGGGGTTTGTAGCTTGCAT AAAAGGTCGACATGAAACTC 331.592676687332 178.298382734095 192.121517719714
290 GTATGTTTAGATTCCGGT GTATGTTCACATTCCGGT 322.407865448171 309.819055451666 317.927267476480
291 ATTTGAAGGTTGTTCATT ATTTGAAGGTTGTTTATT 320.745098479303 308.460034775676 316.604473343016
292 ACGGTGGCCGGCGACCTCAGCCGCA TCGGTCTCCGGCGAGCTCAGTCGCA 349.319476545950 322.805970408218 332.569513311728
293 GGTGAAACATGGGTGGTATGATAAT GGTGAAACATGGGTGATATGATAAT 331.043479784795 326.332708138854 334.184817037240
294 AAGTGTAATCGACTA AAGTGTAATCGACTA 315.631885291475 315.631885291475 322.265747968200
295 GAAGAAAATCCGTTTAGT GAAGAAATTTCGATTAAT 320.919322767873 264.519341261783 274.695121470457
296 GTATACCTACCGCCAGGCGTAA GTATACCTACCGCCAGGCGTAA 334.199822075507 334.199822075507 341.373552239777
297 GGGCTTGCAAATGCACTAGT GGGCTCGCAAACGCACATGT 332.244946736482 316.459896257268 324.959991904042
298 AGTAACATTACCCCTCTT AGTAACATTACCCCTCTT 322.762790159849 322.762790159849 329.855166947719
299 ATCGTTCCAGATTCA ATAGTTCCACATTGA 319.593588349254 263.703483135864 273.889968541208
300 ATCTAGACAAAT CTCTAGACAAAT 303.769798710798 299.975537128382 306.767744251403
301 GACTCGTGCCCAAAGGCG GACTCGGGCCTAAACGCG 335.453032103533 305.944507861049 314.863300937474
302 ATACCTGAAAGATACATAGGGAGGG ATACCCTAACGATACATAGGGAGGG 330.838488925824 319.951646252133 328.421632500441
303 CTCCTTCTATATCTTTACGC CTCCTTCTATATCTTTACGC 323.614245457101 323.614245457101 330.629799804542
304 GGAACGACAGCGGAC GGAGCGACATCGGAG 329.215799373567 299.203726696696 307.870410467643
305 AATTAAACTTCACTTGCTGCTA AATTAAACCGCACTTGCTGCTA 326.774684409898 319.760152873130 327.648310708541
306 CGGGGTGGTTTTAACGCCTT CGGGGTGGTTTTAACGCCTT 334.293634381856 334.293634381856 341.479503422465
307 TTACAAGTGTAC TTACAAGTGTAC 306.490429220235 306.490429220235 312.860219905519
308 GGTTTTACGCACTCGTTT GGTTGTACGCACCCGTTT 327.475666665468 315.253671257952 323.597273287183
309 GCGACCGGGATATTCGTG GCGACTGTGATATTCGTG 332.081729064974 312.612274551236 320.900746018201
310 AAATCATAGATGTTTGTGTG AAATCTTAGACGTTTGTGTG 322.490478539460 311.233326719324 319.056840527317
311 CCGCGGCTGGCCAGTGCG CCGGGGCTGGTCAGTGCG 343.595298549215 320.692138927062 329.428906251676
312 TTAGCGCCCCCT TTAGAGGCCCGT 323.638703533546 223.193289824279 232.649538093037
313 CGACTCCTTGCG CAACTCGTTGCG 321.093094443631 287.627523199553 294.941907978827
314 CAAATAGGGGAGAAATAGGGATGAT CAAATAGGGGAGACATAGGGATGAT 329.829565362939 326.229605874518 334.271529764424
315 TTATGACTCTAT TTATGACTCTAT 302.351970012031 302.351970012031 308.749474038831
316 CTTCGCACGGCTCTGAGGTG CTTCGCACGGCTCTGAGGTG 336.758970783676 336.758970783676 343.832413942225
317 GGTAGATCGTCTAACACA GGTGGATAGTCTAGCACA 324.183145729044 288.591703366550 297.757637466896
318 TCCGAAGTTATTTGT TCCGAAGTTATTCGC 317.020120014950 307.809184902247 315.094442186122
319 ACGCTATAGGTATCCAATGTGC TGAGGGGTTGCCTCGCGCGAGA 330.668816473345 168.517116213496 182.239452513402
320 ATCCCGGTGTTT CTCGCGTTCTTT 316.963839881018 238.291774003272 248.409713749044
321 TGTAAATATTGAGAACAT CTACTTGTAAAAATTATC 316.552099039474 4.196619607978 4.793908669173
322 TAAGATGGCGGTGCTAAGGT TAAGATGGCGGTGCTAAGCT 331.748855931570 328.095422595895 335.422537658975
323 CAGAGAATCGTATTG TAGAGAATCGTATTG 316.058437382107 309.336246420051 316.478881368674
324 ACACTATCGCAT ACACTATTGCAT 313.287559156327 289.002177419194 296.901322522936
325 TTTGCAACAAACTGCGGG TTTGCAACAAACTGCGGG 330.987598215230 330.987598215230 337.964638501570
326 TGCGCATTGACCGTATGA TGAGCATTGCAAATATGA 330.724505651688 291.707022981886 301.075127848151
327 CTGCAACGTGGCTGACGTGG CTGCAACGAGGCTGACGTGG 337.828829590951 332.158127068020 339.396841315526
328 AATCTAGGTATTCTGTGCACACTAG AATCTAGGTATTCGGTAGACACTAG 330.093652788304 312.242546896813 320.851841260874
329 ACGGCGAAACTGTCCCGT ACGGCGAAACTGTCCCGT 335.434181438533 335.434181438533 342.388102607306
330 AACGAGTACTCTTTGCACGCGC AACGAGTACTCTTTGCAAGCGC 336.704192051484 329.670890289599 337.116780737979
331 ACGGCCACCCGCGTAAGCCAGT ACGACCACCCGCGCTAGCCAGT 343.225833795195 335.051197281573 343.935168403898
332 AGGTGGAAACACCTCTTTATAG AGGTGGAAACACCTCTTTATAG 327.767855921026 327.767855921026 335.018188736768
333 GATGCACCTCTTCCTTGT GATGCACCTAGTCCTTGT 328.015528597840 315.813502381439 323.875578738504
334 CACACGTTAAATCAGCCGTGAC CACACGTTAAATCAGCCGTGAC 333.178564800892 333.178564800892 340.213130099053
335 GTGAAAAACGCTAAAACT GAGAAAAACGCTGAAACT 322.651310853696 305.102360687419 313.386535231522
336 CCTCTAAGCGTAAACTGGCGTA CCTCTAAGCGTAAACTGGCGTA 332.731489287653 332.731489287653 339.833318025496
337 CTTAACGGATCAGGTGCC CTTAACGGATGAGGTACC 329.145552153189 309.298607409059 318.329957990940
338 ACCAGCGCGGGTCCAAGCCGGG AACAGCGCGGGTCAAAGCCCGG 346.277068986675 323.989295670246 332.757718044482
339 GGTCGCCCTTGGTTG GGTCGCCCTTGGTTG 329.378530415267 329.378530415267 336.338999066477
340 GGTCTTTCCTGATAG GGTCTTTCCTGCTAG 317.502443546558 312.248143518990 319.891057909696
341 ATGGGGTCCCTTGGATAA ATGGGCTCACTTGGAGAA 327.935969186382 299.834873075580 308.768543906097
342 AGACTTTATCTGCGTTAG CGACTTAATCTGCATTGG 322.530698528657 290.771157085417 299.660782150129
343 TTCTAGCCTGTGCCATTCATTCGCG TGTCTTTAATCATTCACTGCATTTT 337.662752230513 0.000000000000 0.000000000000
344 GTGGCGTGATCCGCCTATGATG GTGGCGTGATACGCCTATGATG 336.412147017699 328.612405834565 336.461928234461
345 ATTATCCTGCAGAGCAGTGA ATTATCCTGCAGAGCAGTGA 329.338095898179 329.338095898179 336.434344794516
346 TGGGGTCACGCATGGCACCG TCGTTTCCGCGTAGACACAT 340.932042495783 219.946305376159 234.105527008232
347 GATCAGTCATGCCGGGCA TCGCTCACTGGGAGCTTT 333.615526310877 70.980108149928 78.760105051004
348 GAGAAACTACCAACCACC GAGAAACTACCAACCACC 326.141893376412 326.141893376412 333.228102476867
349 ATTGACTAGCCTGGAGGC ATTGACTCGCCTGGAGGC 329.814592678115 325.021169884577 332.608693895943
350 ACGGAGTCTATTGTC AAGGAGTCTATTGTC 319.985406470302 306.562131243465 313.933774764732
351 TGGCTGATTGGCCATTATTC TGGGTGATTGGCCATTATTC 329.296931346104 317.833565606159 325.604567901985
352 TGTTACGGACGGACG TGTCAGGGACGCACG 327.360275144725 294.262459737383 302.641243348176
353 AACGCTCCTTCTGACGCTCTGTACC AACTCTCCTGCTGACGCTCTGCACC 338.281645508427 324.671859746526 333.350952165099
354 CTTTCTACAAGCTTCCTCAGCCGAT CTTTCTACAAGCTTCCTCAGCCGAT 334.726254329200 334.726254329200 342.014376175497
355 CTGGGAGCGTGT CTGGGAGCGTGT 322.225101677135 322.225101677135 328.814148322577
356 GCAAGTGCTCCATACGTCAGGA GCAAGTGCTCCATACGTCAGGA 335.151235041562 335.151235041562 342.311691193007
357 TTGAACTCGAAGTCATTCCAGCCCA TTGTACTTGAAGCCATTCCAGCCCA 336.086839523526 320.167401115734 329.871603131488
358 CGCGAGTGTTAATTTTCATC CGCGAGTGTTAATTTTCATC 326.706848503872 326.706848503872 333.607112791387
359 CTCGAAATCAGCCTA CAGGCAGATCCGATA 320.433152901209 106.785241479223 115.721577071620
360 CCCACGTTGGATCCCTCA CACACCCAGCGTTCCCCT 332.434732686040 168.247008949882 182.904021311056
361 TCTTCCCGAAGGCAACTA TTGCTAGCCACCGCTACC 328.742342595200 0.000000000000 0.000000000000
362 TCGGTCGCCCGGCCA TCGGTCGCCCGGCCA 338.280658715332 338.280658715332 345.187830452143
363 TTCCGGTCTAGAGAT GTCCCGTCTAGAGAT 320.290802240471 304.664615132156 311.959714415134
364 TGCCACGTTTGG TTCCACCTTTGG 320.673142294482 289.947588641272 298.070057172917
365 CTGAGAACATGG GTTAAGTTAAAA 311.861058614240 0.000000000000 0.000000000000
366 TTCCCATTTGCAACG TTCCCATTTGCAACG 323.462465099785 323.462465099785 330.249305701134
367 AAGAGTTACTGGATTACC ATTACATGTTGAGCTAAC 321.460730667492 45.295339819983 50.838550888654
368 AAAACTCATTACCGTCAATGTGCCG AAAACTCATTACCGTCAATGTGCCG 334.427238998430 334.427238998430 341.612309670089
369 CGGGAAATCATGCACTTC CGGGAAATCATGCAGTTC 327.837268831791 315.451695083719 322.783155312403
370 TCTTGTCCATCAGACAGA ACTTGTCGACCAGACAGA 325.674390994389 302.134938899268 310.971599041593
371 TAACTTTGCCGTGCGTTC TTGCATAGCATGCAATTT 330.185153783687 164.313401929230 176.255433198370
372 GAGATTGACGACTAACCT GAGATTGACGACTAACCT 324.455556483854 324.455556483854 331.390094199272
373 CCGCGAGTCCACGGCGTAAG CCGCGAGTCCACGGCGTAAG 339.144645429285 339.144645429285 346.143799055883
374 TGACGGCGAGTGAGTTTT GGATTAGTCATCATCGCG 330.479181965474 47.596928980319 53.756086430128
375 AGCAACGTCTAAACTCGATT AGCAACGTCTAAACTCGATT 328.165361220407 328.165361220407 335.096430259205
376 GACTGCTAGCTGGCT GAATTATCACGTTCC 326.800285243793 145.119103179615 155.884495817015
377 ACCCTCGTAATTATTCCG GCCTCGCTAGAGAGGGAA 324.895708998494 137.294573703070 148.579615770821
378 AGCGGGCCGGCGCCCACGGTTAAAT AGCGGGACGGCTCCCACGGATAAAT 346.469332548688 327.821835178262 336.666611815380
379 ATACACCAGTCTCCACTGTGTCAGC ATACACCAGTCTCCACTGTGTCAGC 336.084026510573 336.084026510573 343.378799103379
380 AGGCAACGGTGTTTTTAGTTTCAAG AGGCAACGGTGCTTTTAGTTTCAAG 332.791413039949 329.450267766259 337.042137604359
381 CATAGTATGGTTCATAATTTAA CAAAGACGGGATTATCGGACTT 319.805110852434 183.915523269303 197.052684250500
382 ACGCCCCCCGGATTCGGC ACGCCCCGCGGATTCGGC 341.276243356091 331.161466849465 338.916726408046
383 TTGTCTTTCGAGCGG TTGTGTGTCCAACCA 325.282149224729 222.156190895896 232.598751363606
384 CTCCCGGGCGCCAGATGG CTCCCGGGCGCCAGATGG 339.311369482363 339.311369482363 346.533954436015
385 GCACACTTTGTCGGTAAGTGAGGAC GCACACTTTGTCGATAGCTGAGGAC 336.007697297418 324.718456248143 333.231550897913
386 ATATAGTCTCCGTGT ATATAGTCTCCGTGT 317.670914323835 317.670914323835 324.391677867921
387 ATTCGAGGCGGCTCTGAGGT GTTCGAGGCGGCTCCGTGGT 336.308093587336 324.901517012421 333.408982676338
388 CGCTAGCTCTCAGCATAA CGCTAGCTCTCAGCTTAA 327.750384254086 320.869735908381 328.340764122397
389 TACTCACTCTAATTCAAC TACTAACTCCAATTGATC 319.232623419269 263.254120288054 273.886368603122
390 CTTGGAATCTTGTTCCGC CTTGGAATCTTGTTCCGC 327.748687917447 327.748687917447 334.748570070981
391 TCTCTCTCTACTGAAGATGT TCTCTCTCTACTGAAGATGT 324.955441779254 324.955441779254 332.010856900828
392 AGATAGCTAAACTATGGTATTT AGATAGCTAAACTATTGTATTT 322.379524984208 314.920600083519 322.617736532767
393 TCCAGTAGGCCTGCACACCC TCCTGTAGGCCTGCACACCC 337.082762403533 331.065336200951 338.847431016473
394 CCGGTCGGTTAA CCGAGCGGTCAA 318.298891942113 278.422489888824 287.988343096102
395 TGCGGTATTACACAGTAC TGCGGTACTAGACCGGAC 325.257155822510 277.211655556984 287.317024862518
396 TAGGTTGAGATGTTCGGGCG TAGGTTGAGATGTGCGGGCG 332.954776706522 326.896199598776 334.681687928661
397 TCGAACCTCTAA TCGAACCTCTAA 311.195901304215 311.195901304215 317.645142918670
398 GGCCGTTGGGTGAGATGT GGCCGTTGGGTGAGATGT 333.461534051827 333.461534051827 340.580014223162
399 TTACGATTAGTAGAC TTACGATTAGTAGAC 313.227722774298 313.227722774298 319.837422500332
400 GCTGGCAGACTTCCGGGA GCAGGTAGACTGGCGGGA 335.491766864185 300.268242946003 309.735154150044
+13
View File
@@ -0,0 +1,13 @@
AAACTGGGATTAGATACC 48.5
ACACCTCGACCTGACGTT 58.8
ACTTACCATGTTACGACT 50.8
CAAACTGGGATTAGATAC 47.5
CCAAGTGCACCTTCCGGT 60.7
CCTGTTCTAGAACCGATA 50.8
CTACACCTCGACCTGACG 57.5
CTTTTGCCACAGAGACGG 57.0
GCCAAGTCCTTTGGGTTT 56.2
GGGATTAGATACCCCACT 52.6
GTTCTAGAACAGGCTCCT 53.6
TCGTACCTTTTGCATCAT 52.2
TTCTAGAACAGGCTCCTC 53.3
1 AAACTGGGATTAGATACC 48.5
2 ACACCTCGACCTGACGTT 58.8
3 ACTTACCATGTTACGACT 50.8
4 CAAACTGGGATTAGATAC 47.5
5 CCAAGTGCACCTTCCGGT 60.7
6 CCTGTTCTAGAACCGATA 50.8
7 CTACACCTCGACCTGACG 57.5
8 CTTTTGCCACAGAGACGG 57.0
9 GCCAAGTCCTTTGGGTTT 56.2
10 GGGATTAGATACCCCACT 52.6
11 GTTCTAGAACAGGCTCCT 53.6
12 TCGTACCTTTTGCATCAT 52.2
13 TTCTAGAACAGGCTCCTC 53.3
+340
View File
@@ -0,0 +1,340 @@
package obialign
import (
"os"
"slices"
"sort"
"sync"
"sync/atomic"
align "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiitercsv"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv"
"github.com/schollz/progressbar/v3"
log "github.com/sirupsen/logrus"
)
// Params are the parameters of the comparison.
type Params struct {
Threshold float64 // 0: no threshold
Normalized bool
Distance bool
Reference sim.Reference
AcceptAmbiguous bool
ExtraColumns bool
Workers int
}
// ParamsFromCLI collects the parameters from the command line options.
func ParamsFromCLI() Params {
return Params{
Threshold: CLIThreshold(),
Normalized: CLINormalized(),
Distance: CLIDistance(),
Reference: CLIReference(),
AcceptAmbiguous: CLIAcceptAmbiguous(),
ExtraColumns: CLIExtraColumns(),
Workers: obidefault.ParallelWorkers(),
}
}
// dataset is a set of usable sequences with their description.
type dataset struct {
seqs obiseq.BioSequenceSlice
entries []sim.Entry
}
// readDataset keeps the sequences that can be compared.
func readDataset(db obiseq.BioSequenceSlice, name string, p Params) dataset {
var d dataset
ambiguous := make([]bool, 0, len(db))
for _, s := range db {
ok, amb := sim.Classify(s.Sequence(), p.AcceptAmbiguous)
if !ok {
continue
}
d.seqs = append(d.seqs, s)
ambiguous = append(ambiguous, amb)
}
if discarded := len(db) - len(d.seqs); discarded > 0 {
log.Warnf("Discarded %d sequences of %s that did not contain only IUPAC nucleotides (or only 'acgt' without --accept-ambiguous)",
discarded, name)
}
if len(d.seqs) == 0 {
log.Fatalf("No valid sequences in %s.", name)
}
d.entries = sim.BuildEntries(len(d.seqs), func(i int) ([]byte, int, bool) {
return d.seqs[i].Sequence(), d.seqs[i].Count(), ambiguous[i]
}, p.Workers)
for i := range d.entries {
if d.entries[i].Length > align.MaxBandedLCSLength {
log.Fatalf("The sequence %s is too long (%d bp, maximum %d bp)",
d.seqs[i].Id(), d.entries[i].Length, align.MaxBandedLCSLength)
}
}
return d
}
// pair is a pair of sequences that reaches the threshold: the index of the
// second one, and the score.
type pair struct {
j int
score float64
}
// aligner compares the sequences of a dataset with the ones of an index.
type aligner struct {
queries []sim.Entry
index *sim.Index
self bool // the index holds the queries: only the pairs i < j are reported
sc *sim.Scoring
}
// row finds the sequences of the index that reach the threshold with the
// query i, and appends them to out in the order of the index.
//
// Only the buckets of compatible lengths are visited, and the 4-mer filter
// works on blocks of sequences.
func (a *aligner) row(i int, buf *align.BandedLCSBuffer, commons *sim.Commons, out []pair) []pair {
q := &a.queries[i]
out = out[:0]
for _, length := range a.index.Lengths() {
if !a.sc.LengthCompatible(q.Length, length) {
continue
}
b := a.index.Bucket(length)
commons.Reset()
start := 0
if a.self {
// the members are in the order of the dataset
start = sort.Search(len(b.Members), func(k int) bool { return b.Members[k].ID > i })
}
for k := start; k < len(b.Members); k++ {
m := &b.Members[k]
if s, ok := a.sc.PairScore(q, &m.Entry, b.Common(k, q.Sparse, commons), buf); ok && a.sc.Passes(s) {
out = append(out, pair{m.ID, a.sc.Reported(s)})
}
}
}
slices.SortFunc(out, func(x, y pair) int { return x.j - y.j })
return out
}
func progressBar(n int) *progressbar.ProgressBar {
if !obiconvert.CLIProgressBar() {
return nil
}
return progressbar.NewOptions(n,
progressbar.OptionSetWriter(os.Stderr),
progressbar.OptionSetWidth(15),
progressbar.OptionShowIts(),
progressbar.OptionSetPredictTime(true),
progressbar.OptionSetDescription("[Comparing sequences]"),
)
}
// maxPairsWithoutThreshold is the number of pairs above which a missing
// threshold is reported, the table having then as many rows.
const maxPairsWithoutThreshold = 1e8
// maxRowsPerRun is the number of rows of the table that a run is expected to
// produce at most when every pair is reported.
const maxRowsPerRun = 100000
// runShape chooses how many sequences a run covers, and how many runs a
// worker may be ahead of the oldest unfinished one. Without threshold every
// pair is a row of the table, so the runs are shortened to keep their size
// reasonable; otherwise many pairs are rejected and the runs are longer, to
// reduce the synchronizations.
func runShape(n, targets int, noThreshold bool, workers int) (rowsPerRun, window int) {
rowsPerRun = min(max(n/(workers*32), 1), 256)
if noThreshold {
rowsPerRun = min(rowsPerRun, max(maxRowsPerRun/max(targets, 1), 1))
}
return rowsPerRun, 4 * workers
}
// Compare compares every sequence of db1 with every sequence of db2, or with
// the following ones of db1 if db2 is nil, and returns the pairs that reach the
// threshold as a table with the columns id1, id2 and score (and count1,
// count2, length1 and length2 if p.ExtraColumns).
//
// The rows are in the order of the sequences of db1, then of the ones of
// db2, whatever the number of workers.
//
// The workers take runs of rows of the matrix of the pairs, as in sumatra,
// but each run is sent to the writer with its rank: the writer puts them back
// in order, so that the output neither depends on the timing nor needs a lock
// on the output.
func Compare(db1, db2 obiseq.BioSequenceSlice, source string, p Params, onProgress func(done int)) *obiitercsv.ICSVRecord {
d1 := readDataset(db1, "the input", p)
d2 := d1
self := db2 == nil
if !self {
d2 = readDataset(db2, "the reference file", p)
}
log.Infof("%d sequences", len(d1.entries))
if !self {
log.Infof("%d reference sequences", len(d2.entries))
}
all := d1.entries
if !self {
all = append(slices.Clone(d1.entries), d2.entries...)
}
sc, err := sim.NewScoring(sim.Params{
Threshold: p.Threshold,
Normalized: p.Normalized,
Distance: p.Distance,
Reference: p.Reference,
Ratio: 1e300, // no limit on the counts
}, all)
if err != nil {
log.Fatalf("Wrong threshold: %v", err)
}
index := sim.NewIndex()
for j := range d2.entries {
index.Add(d2.entries[j], j)
}
a := &aligner{queries: d1.entries, index: index, self: self, sc: sc}
iterator := obiitercsv.NewICSVRecord()
for _, f := range []string{"id1", "id2", "score"} {
iterator.AppendField(f)
}
if p.ExtraColumns {
for _, f := range []string{"count1", "count2", "length1", "length2"} {
iterator.AppendField(f)
}
}
n := len(d1.entries)
workers := max(p.Workers, 1)
pairs := float64(n) * float64(len(d2.entries))
if self {
pairs = float64(n) * float64(n-1) / 2
}
log.Infof("%.0f pairs of sequences to compare", pairs)
if p.Threshold == 0 && pairs > maxPairsWithoutThreshold {
log.Warnf("No threshold has been given: the table will have %.0f rows, "+
"use the option --threshold to keep only the similar pairs", pairs)
}
rowsPerRun, window := runShape(n, len(d2.entries), p.Threshold == 0, workers)
runs := (n + rowsPerRun - 1) / rowsPerRun
iterator.Add(workers)
go func() {
iterator.WaitAndClose()
}()
// The runs are sent to the writer with their rank, and the writer holds
// those that arrive before the previous ones. To bound that memory, a
// worker does not start a run more than `window` runs after the oldest run
// that is not finished.
var (
lock sync.Mutex
progress = sync.NewCond(&lock)
finished = make([]bool, runs)
oldest int
rows int
)
var next atomic.Int64
var wg sync.WaitGroup
for w := 0; w < workers; w++ {
wg.Add(1)
go func() {
defer wg.Done()
defer iterator.Done()
var buf align.BandedLCSBuffer
var commons sim.Commons
var pairs []pair
for {
run := int(next.Add(1)) - 1
if run >= runs {
return
}
lock.Lock()
for run-oldest >= window {
progress.Wait()
}
lock.Unlock()
from, to := run*rowsPerRun, min((run+1)*rowsPerRun, n)
batch := make([]obiitercsv.CSVRecord, 0, to-from)
for i := from; i < to; i++ {
pairs = a.row(i, &buf, &commons, pairs)
for _, pr := range pairs {
rec := obiitercsv.CSVRecord{
"id1": d1.seqs[i].Id(),
"id2": d2.seqs[pr.j].Id(),
"score": pr.score,
}
if p.ExtraColumns {
rec["count1"], rec["count2"] = d1.entries[i].Count, d2.entries[pr.j].Count
rec["length1"], rec["length2"] = d1.entries[i].Length, d2.entries[pr.j].Length
}
batch = append(batch, rec)
}
}
iterator.Push(obiitercsv.MakeCSVRecordBatch(source, run, batch))
lock.Lock()
finished[run] = true
for oldest < runs && finished[oldest] {
oldest++
}
rows += to - from
done := rows
progress.Broadcast()
lock.Unlock()
if onProgress != nil {
onProgress(done)
}
}
}()
}
return iterator
}
// CLIOBIAlign compares the sequences as the command line asks, and returns the table of the pairs.
func CLIOBIAlign(iterator obiiter.IBioSequence) *obiitercsv.ICSVRecord {
source, db := iterator.Load()
log.Infof("Sequence dataset of %d sequences loaded", len(db))
var db2 obiseq.BioSequenceSlice
if CLIHasReferenceDB() {
db2 = CLIReferenceDB()
if db2 == nil {
db2 = obiseq.BioSequenceSlice{}
}
}
var bar *progressbar.ProgressBar
barChecked := false // the bar is created once, even when it is disabled
last := int64(0)
var lock sync.Mutex
return Compare(db, db2, source, ParamsFromCLI(), func(done int) {
lock.Lock()
defer lock.Unlock()
if !barChecked {
bar, barChecked = progressBar(len(db)), true
}
if bar != nil {
bar.Add(int(int64(done) - last))
}
last = int64(done)
})
}
// CLIWriteTable writes the table to the output file given by --out, or to the standard output.
func CLIWriteTable(table *obiitercsv.ICSVRecord) {
obicsv.CLICSVWriter(table, true)
}
+271
View File
@@ -0,0 +1,271 @@
package obialign
import (
"bufio"
"fmt"
"math/rand"
"os"
"path/filepath"
"sort"
"strconv"
"strings"
"testing"
align "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiitercsv"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
)
// readTestFasta reads a fasta file whose headers are "id count=N; ...".
func readTestFasta(t testing.TB, filename string) obiseq.BioSequenceSlice {
t.Helper()
f, err := os.Open(filename)
if err != nil {
t.Fatal(err)
}
defer f.Close()
var db obiseq.BioSequenceSlice
var header string
var seq strings.Builder
flush := func() {
if header == "" {
return
}
fields := strings.Fields(header)
s := obiseq.NewBioSequence(fields[0], []byte(seq.String()), "")
for _, f := range fields[1:] {
if k, v, ok := strings.Cut(strings.TrimSuffix(f, ";"), "="); ok {
if n, err := strconv.Atoi(v); err == nil {
s.SetAttribute(k, n)
}
}
}
db = append(db, s)
seq.Reset()
}
sc := bufio.NewScanner(f)
for sc.Scan() {
if line := sc.Text(); strings.HasPrefix(line, ">") {
flush()
header = line[1:]
} else {
seq.WriteString(strings.TrimSpace(line))
}
}
flush()
return db
}
// collect reads the whole table, whatever the order the batches arrive in,
// and returns its rows in the order of the output file.
func collect(it *obiitercsv.ICSVRecord) []obiitercsv.CSVRecord {
batches := map[int][]obiitercsv.CSVRecord{}
for it.Next() {
b := it.Get()
batches[b.Order()] = b.Slice()
}
orders := make([]int, 0, len(batches))
for o := range batches {
orders = append(orders, o)
}
sort.Ints(orders)
var rows []obiitercsv.CSVRecord
for k, o := range orders {
if o != k {
panic(fmt.Sprintf("batch %d is missing", k))
}
rows = append(rows, batches[o]...)
}
return rows
}
// sumatraParams translates the options of sumatra.
func sumatraParams(t testing.TB, args []string) Params {
t.Helper()
p := Params{Normalized: true, Workers: 4}
for i := 0; i < len(args); i++ {
var err error
switch args[i] {
case "-t":
i++
p.Threshold, err = strconv.ParseFloat(args[i], 64)
case "-l":
p.Reference = sim.RefShortest
case "-L":
p.Reference = sim.RefLongest
case "-d":
p.Distance = true
case "-r":
p.Normalized = false
case "-x":
p.ExtraColumns = true
default:
t.Fatalf("unknown option %s", args[i])
}
if err != nil {
t.Fatal(err)
}
}
return p
}
// TestSumatraResults compares the tables with the outputs of sumatra 1.0.36
// (testdata/*.expected), except that the identical sequences obey the
// threshold of a raw similarity, which sumatra does not check.
func TestSumatraResults(t *testing.T) {
cases, err := os.ReadFile(filepath.Join("testdata", "cases.txt"))
if err != nil {
t.Fatal(err)
}
a := readTestFasta(t, filepath.Join("testdata", "a.fasta"))
b := readTestFasta(t, filepath.Join("testdata", "b.fasta"))
for _, line := range strings.Split(strings.TrimSpace(string(cases)), "\n") {
parts := strings.Split(line, "\t")
kind, name, opts := parts[0], parts[1], strings.Fields(parts[2])
t.Run(kind+"/"+name, func(t *testing.T) {
var db2 obiseq.BioSequenceSlice
if kind == "two" {
db2 = b
}
p := sumatraParams(t, opts)
rows := collect(Compare(a, db2, "test", p, nil))
expected, err := os.ReadFile(filepath.Join("testdata", kind+"_"+name+".expected"))
if err != nil {
t.Fatal(err)
}
want := strings.Split(strings.TrimSuffix(string(expected), "\n"), "\n")
if len(expected) == 0 {
want = nil
}
if len(rows) != len(want) {
t.Fatalf("%d rows, want %d", len(rows), len(want))
}
for i, r := range rows {
got := fmt.Sprintf("%s\t%s\t%f", r["id1"], r["id2"], r["score"])
if p.ExtraColumns {
got += fmt.Sprintf("\t%d\t%d\t%d\t%d", r["count1"], r["count2"], r["length1"], r["length2"])
}
if got != want[i] {
t.Fatalf("row %d:\n got %s\nwant %s", i, got, want[i])
}
}
})
}
}
func randomDataset(rng *rand.Rand, n int, ambiguousRate float64) obiseq.BioSequenceSlice {
var roots [][]byte
db := make(obiseq.BioSequenceSlice, 0, n)
for len(db) < n {
var s []byte
if len(roots) == 0 || rng.Intn(4) == 0 {
s = make([]byte, 30+rng.Intn(60))
for i := range s {
s[i] = "acgt"[rng.Intn(4)]
}
roots = append(roots, s)
} else {
for _, c := range roots[rng.Intn(len(roots))] {
switch r := rng.Intn(30); {
case r == 0:
s = append(s, "acgt"[rng.Intn(4)])
case r == 1:
default:
s = append(s, c)
}
}
}
if rng.Float64() < ambiguousRate && len(s) > 3 {
s[rng.Intn(len(s))] = "nrykm"[rng.Intn(5)]
}
seq := obiseq.NewBioSequence(fmt.Sprintf("s%d", len(db)), s, "")
seq.SetAttribute("count", 1+rng.Intn(9))
db = append(db, seq)
}
return db
}
// naive compares every pair one by one, with the scoring and no index.
func naive(db1, db2 obiseq.BioSequenceSlice, p Params) []string {
self := db2 == nil
if self {
db2 = db1
}
d1, d2 := readDataset(db1, "1", p), readDataset(db2, "2", p)
all := append(append([]sim.Entry{}, d1.entries...), d2.entries...)
sc, err := sim.NewScoring(sim.Params{Threshold: p.Threshold, Normalized: p.Normalized, Distance: p.Distance,
Reference: p.Reference, Ratio: 1e300}, all)
if err != nil {
panic(err)
}
var buf align.BandedLCSBuffer
var out []string
for i := range d1.entries {
for j := range d2.entries {
if self && j <= i {
continue
}
if s, ok := sc.PairScore(&d1.entries[i], &d2.entries[j], -1, &buf); ok && sc.Passes(s) {
out = append(out, fmt.Sprintf("%s\t%s\t%f", d1.seqs[i].Id(), d2.seqs[j].Id(), sc.Reported(s)))
}
}
}
return out
}
// TestCompareMatchesNaive checks the scan by length and by blocks against the
// comparison of all the pairs, in every mode, with and without ambiguous
// sequences, whatever the number of workers.
func TestCompareMatchesNaive(t *testing.T) {
rng := rand.New(rand.NewSource(11))
for _, ambiguous := range []float64{0, 0.2} {
db1 := randomDataset(rng, 90, ambiguous)
db2 := randomDataset(rng, 40, ambiguous)
for _, ref := range []sim.Reference{sim.RefAlignment, sim.RefLongest, sim.RefShortest} {
for _, base := range []Params{
{Threshold: 0.9, Normalized: true},
{Threshold: 0.7, Normalized: true, Distance: true},
{Threshold: 30},
{Threshold: 6, Distance: true},
{Normalized: true},
{Distance: true},
} {
base.Reference, base.AcceptAmbiguous = ref, ambiguous > 0
for _, second := range []obiseq.BioSequenceSlice{nil, db2} {
want := naive(db1, second, base)
for _, workers := range []int{1, 3, 8} {
p := base
p.Workers = workers
rows := collect(Compare(db1, second, "test", p, nil))
if len(rows) != len(want) {
t.Fatalf("%+v two=%v workers=%d: %d rows, want %d", base, second != nil, workers, len(rows), len(want))
}
for i, r := range rows {
if got := fmt.Sprintf("%s\t%s\t%f", r["id1"], r["id2"], r["score"]); got != want[i] {
t.Fatalf("%+v two=%v workers=%d row %d: %s, want %s", base, second != nil, workers, i, got, want[i])
}
}
}
}
}
}
}
}
func TestRunShape(t *testing.T) {
// with a threshold, the runs are long
if rows, window := runShape(40000, 40000, false, 16); rows != 78 || window != 64 {
t.Errorf("with a threshold: %d rows, window %d", rows, window)
}
// without threshold, a run produces at most about maxRowsPerRun rows
if rows, _ := runShape(40000, 40000, true, 16); rows*40000 > 3*maxRowsPerRun {
t.Errorf("without threshold: %d rows per run give too large a table", rows)
}
if rows, _ := runShape(10, 10, true, 4); rows < 1 {
t.Errorf("a run must cover one sequence at least, got %d", rows)
}
}
+132
View File
@@ -0,0 +1,132 @@
package obialign
import (
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"github.com/DavidGamba/go-getoptions"
log "github.com/sirupsen/logrus"
)
var _threshold = 0.0
var _refShortest = false
var _refLongest = false
var _refAlignment = false
var _normalized = false
var _raw = false
var _distance = false
var _acceptAmbiguous = false
var _referenceDB = ""
var _extraColumns = false
func ObialignOptionSet(options *getoptions.GetOpt) {
options.Float64Var(&_threshold, "threshold", _threshold,
options.Alias("t"),
options.ArgName("THRESHOLD"),
options.Description("Score threshold: only the pairs of sequences whose score reaches it are reported "+
"(default: no threshold, all the pairs are reported). If the score is normalized and expressed in similarity (default), "+
"it is an identity, e.g. 0.95 for an identity of 95%. If the score is normalized and expressed in distance, "+
"it is (1.0 - identity), e.g. 0.05 for an identity of 95%. If the score is not normalized and expressed in similarity, "+
"it is the length of the Longest Common Subsequence. If the score is not normalized and expressed in distance, "+
"it is (reference length - LCS length)."))
options.BoolVar(&_refShortest, "shortest", _refShortest,
options.Alias("l"),
options.Description("Reference sequence length is the shortest."))
options.BoolVar(&_refLongest, "longest", _refLongest,
options.Alias("L"),
options.Description("Reference sequence length is the longest."))
options.BoolVar(&_refAlignment, "alignment", _refAlignment,
options.Alias("a"),
options.Description("Reference sequence length is the alignment length (default)."))
options.BoolVar(&_normalized, "normalized", _normalized,
options.Alias("n"),
options.Description("Score is normalized by the reference sequence length (default)."))
options.BoolVar(&_raw, "raw", _raw,
options.Alias("r"),
options.Description("Raw score, not normalized."))
options.BoolVar(&_distance, "distance", _distance,
options.Alias("d"),
options.Description("Score is expressed in distance (default: score is expressed in similarity)."))
options.BoolVar(&_acceptAmbiguous, "accept-ambiguous", _acceptAmbiguous,
options.Alias("g"),
options.Description("Accept the sequences containing IUPAC letters other than a, c, g and t; "+
"the alignment handles the IUPAC codes (default: these sequences are discarded)."))
options.StringVar(&_referenceDB, "reference-db", _referenceDB,
options.Alias("R"),
options.ArgName("FILENAME"),
options.Description("Compare every sequence of the input with every sequence of this file "+
"(default: compare the sequences of the input with each other)."))
options.BoolVar(&_extraColumns, "extra-columns", _extraColumns,
options.Alias("x"),
options.Description("Add the columns count1, count2, length1 and length2 to the table."))
}
func OptionSet(options *getoptions.GetOpt) {
obiconvert.InputOptionSet(options)
obiconvert.OutputModeOptionSet(options, true)
ObialignOptionSet(options)
}
// CLIThreshold returns the score threshold, 0 if there is none.
func CLIThreshold() float64 { return _threshold }
// CLINormalized returns true when the score is normalized by the reference length.
func CLINormalized() bool {
if _raw && _normalized {
log.Fatal("The options --raw and --normalized are exclusive")
}
return !_raw
}
// CLIDistance returns true when the score is expressed in distance.
func CLIDistance() bool { return _distance }
// CLIReference returns the length used as reference to normalize the score.
func CLIReference() sim.Reference {
n := 0
ref := sim.RefAlignment
if _refShortest {
n++
ref = sim.RefShortest
}
if _refLongest {
n++
ref = sim.RefLongest
}
if _refAlignment {
n++
}
if n > 1 {
log.Fatal("The options --shortest, --longest and --alignment are exclusive")
}
return ref
}
// CLIAcceptAmbiguous returns true when the sequences with IUPAC letters other than acgt are kept.
func CLIAcceptAmbiguous() bool { return _acceptAmbiguous }
// CLIExtraColumns returns true when the counts and the lengths must be written.
func CLIExtraColumns() bool { return _extraColumns }
// CLIHasReferenceDB returns true when a second dataset has been given.
func CLIHasReferenceDB() bool { return _referenceDB != "" }
// CLIReferenceDB reads the second dataset.
func CLIReferenceDB() obiseq.BioSequenceSlice {
// Read as the main input is, with the same input options.
iterator, err := obiconvert.CLIReadBioSequences(_referenceDB)
if err != nil {
log.Fatalf("Cannot open the reference file %s: %v", _referenceDB, err)
}
_, db := iterator.Load()
return db
}
+24
View File
@@ -0,0 +1,24 @@
one all -x
one default -t 0.9 -x
one low -t 0.6
one shortest -t 0.9 -l
one longest -t 0.85 -L
one distance -t 0.1 -d
one rawdist -t 4 -r -d
one rawlcs -t 40 -r
one rawlcs_shortest -t 45 -r -l
one alldist -d -r
one allraw -r
one allshortest -l
two all -x
two default -t 0.9 -x
two low -t 0.6
two shortest -t 0.9 -l
two longest -t 0.85 -L
two distance -t 0.1 -d
two rawdist -t 4 -r -d
two rawlcs -t 40 -r
two rawlcs_shortest -t 45 -r -l
two alldist -d -r
two allraw -r
two allshortest -l
+903
View File
@@ -0,0 +1,903 @@
f3v10s35 f3v5s30 0.865672 87579 39802 65 63
f3v10s35 f1v8s15 0.521127 87579 66109 65 57
f3v10s35 f2v1s23 0.500000 87579 35696 65 58
f3v10s35 f4v2s42 0.506667 87579 17302 65 61
f3v10s35 f0v4s4 0.500000 87579 86916 65 69
f3v10s35 f1v6s13 0.528571 87579 80246 65 56
f3v10s35 f3v8s33 0.910448 87579 88635 65 66
f3v10s35 f1v1s8 0.527027 87579 17651 65 60
f3v10s35 f1v14s21 0.506667 87579 85030 65 56
f3v10s35 f0v1s1 0.500000 87579 43883 65 69
f3v10s35 f1v5s12 0.506667 87579 1410 65 60
f3v10s35 f1v4s11 0.500000 87579 74527 65 58
f3v10s35 f1v9s16 0.506494 87579 65777 65 60
f3v10s35 f1v10s17 0.520000 87579 98659 65 60
f3v10s35 f1v0s7 0.500000 87579 84420 65 58
f3v10s35 f3v9s34 0.910448 87579 40677 65 65
f3v10s35 f4v0s40 0.500000 87579 75843 65 60
f3v10s35 f1v7s14 0.500000 87579 42277 65 58
f3v10s35 f3v2s27 0.910448 87579 74030 65 65
f3v10s35 f4v1s41 0.493506 87579 45686 65 61
f3v10s35 f2v0s22 0.506329 87579 43219 65 69
f3v10s35 f1v2s9 0.500000 87579 99108 65 69
f3v10s35 f1v3s10 0.500000 87579 43230 65 58
f3v10s35 f3v0s25 0.925373 87579 62755 65 66
f3v10s35 f3v3s28 0.897059 87579 66465 65 66
f3v10s35 f3v13s38 0.898551 87579 26948 65 68
f3v10s35 f3v7s32 0.910448 87579 53710 65 65
f3v10s35 f3v1s26 0.910448 87579 41283 65 65
f3v10s35 f3v6s31 0.910448 87579 94783 65 65
f3v10s35 f1v13s20 0.493333 87579 80913 65 56
f3v10s35 f2v2s24 0.500000 87579 68414 65 49
f3v10s35 f3v11s36 0.867647 87579 91927 65 65
f3v10s35 f0v5s5 0.500000 87579 2668 65 69
f3v10s35 f1v11s18 0.500000 87579 51814 65 58
f3v10s35 f0v6s6 0.475000 87579 16273 65 69
f3v10s35 f3v4s29 0.884058 87579 94356 65 68
f3v10s35 f0v2s2 0.506329 87579 10896 65 69
f3v10s35 f3v12s37 0.897059 87579 74202 65 67
f3v10s35 f0v3s3 0.500000 87579 73040 65 67
f3v10s35 f3v14s39 0.925373 87579 55015 65 66
f3v10s35 f0v0s0 0.506329 87579 1332 65 69
f3v10s35 f1v12s19 0.513889 87579 58178 65 57
f3v5s30 f1v8s15 0.520548 39802 66109 63 57
f3v5s30 f2v1s23 0.513514 39802 35696 63 58
f3v5s30 f4v2s42 0.513889 39802 17302 63 61
f3v5s30 f0v4s4 0.493671 39802 86916 63 69
f3v5s30 f1v6s13 0.520000 39802 80246 63 56
f3v5s30 f3v8s33 0.924242 39802 88635 63 66
f3v5s30 f1v1s8 0.513158 39802 17651 63 60
f3v5s30 f1v14s21 0.521127 39802 85030 63 56
f3v5s30 f0v1s1 0.493671 39802 43883 63 69
f3v5s30 f1v5s12 0.500000 39802 1410 63 60
f3v5s30 f1v4s11 0.513514 39802 74527 63 58
f3v5s30 f1v9s16 0.506667 39802 65777 63 60
f3v5s30 f1v10s17 0.506494 39802 98659 63 60
f3v5s30 f1v0s7 0.513514 39802 84420 63 58
f3v5s30 f3v9s34 0.909091 39802 40677 63 65
f3v5s30 f4v0s40 0.521127 39802 75843 63 60
f3v5s30 f1v7s14 0.513514 39802 42277 63 58
f3v5s30 f3v2s27 0.924242 39802 74030 63 65
f3v5s30 f4v1s41 0.513889 39802 45686 63 61
f3v5s30 f2v0s22 0.506329 39802 43219 63 69
f3v5s30 f1v2s9 0.493671 39802 99108 63 69
f3v5s30 f1v3s10 0.513514 39802 43230 63 58
f3v5s30 f3v0s25 0.939394 39802 62755 63 66
f3v5s30 f3v3s28 0.910448 39802 66465 63 66
f3v5s30 f3v13s38 0.911765 39802 26948 63 68
f3v5s30 f3v7s32 0.909091 39802 53710 63 65
f3v5s30 f3v1s26 0.910448 39802 41283 63 65
f3v5s30 f3v6s31 0.909091 39802 94783 63 65
f3v5s30 f1v13s20 0.513514 39802 80913 63 56
f3v5s30 f2v2s24 0.515152 39802 68414 63 49
f3v5s30 f3v11s36 0.893939 39802 91927 63 65
f3v5s30 f0v5s5 0.500000 39802 2668 63 69
f3v5s30 f1v11s18 0.513514 39802 51814 63 58
f3v5s30 f0v6s6 0.506173 39802 16273 63 69
f3v5s30 f3v4s29 0.897059 39802 94356 63 68
f3v5s30 f0v2s2 0.506329 39802 10896 63 69
f3v5s30 f3v12s37 0.910448 39802 74202 63 67
f3v5s30 f0v3s3 0.506329 39802 73040 63 67
f3v5s30 f3v14s39 0.939394 39802 55015 63 66
f3v5s30 f0v0s0 0.506329 39802 1332 63 69
f3v5s30 f1v12s19 0.506849 39802 58178 63 57
f1v8s15 f2v1s23 0.982759 66109 35696 57 58
f1v8s15 f4v2s42 0.478873 66109 17302 57 61
f1v8s15 f0v4s4 0.487179 66109 86916 57 69
f1v8s15 f1v6s13 0.947368 66109 80246 57 56
f1v8s15 f3v8s33 0.541667 66109 88635 57 66
f1v8s15 f1v1s8 0.916667 66109 17651 57 60
f1v8s15 f1v14s21 0.931034 66109 85030 57 56
f1v8s15 f0v1s1 0.487179 66109 43883 57 69
f1v8s15 f1v5s12 0.916667 66109 1410 57 60
f1v8s15 f1v4s11 0.982759 66109 74527 57 58
f1v8s15 f1v9s16 0.933333 66109 65777 57 60
f1v8s15 f1v10s17 0.916667 66109 98659 57 60
f1v8s15 f1v0s7 0.982759 66109 84420 57 58
f1v8s15 f3v9s34 0.547945 66109 40677 57 65
f1v8s15 f4v0s40 0.486111 66109 75843 57 60
f1v8s15 f1v7s14 0.982759 66109 42277 57 58
f1v8s15 f3v2s27 0.541667 66109 74030 57 65
f1v8s15 f4v1s41 0.479452 66109 45686 57 61
f1v8s15 f2v0s22 0.493671 66109 43219 57 69
f1v8s15 f1v2s9 0.487179 66109 99108 57 69
f1v8s15 f1v3s10 0.982759 66109 43230 57 58
f1v8s15 f3v0s25 0.534247 66109 62755 57 66
f1v8s15 f3v3s28 0.527027 66109 66465 57 66
f1v8s15 f3v13s38 0.506329 66109 26948 57 68
f1v8s15 f3v7s32 0.547945 66109 53710 57 65
f1v8s15 f3v1s26 0.541667 66109 41283 57 65
f1v8s15 f3v6s31 0.547945 66109 94783 57 65
f1v8s15 f1v13s20 0.948276 66109 80913 57 56
f1v8s15 f2v2s24 0.515152 66109 68414 57 49
f1v8s15 f3v11s36 0.527027 66109 91927 57 65
f1v8s15 f0v5s5 0.493671 66109 2668 57 69
f1v8s15 f1v11s18 0.965517 66109 51814 57 58
f1v8s15 f0v6s6 0.481013 66109 16273 57 69
f1v8s15 f3v4s29 0.533333 66109 94356 57 68
f1v8s15 f0v2s2 0.493671 66109 10896 57 69
f1v8s15 f3v12s37 0.540541 66109 74202 57 67
f1v8s15 f0v3s3 0.506494 66109 73040 57 67
f1v8s15 f3v14s39 0.534247 66109 55015 57 66
f1v8s15 f0v0s0 0.493671 66109 1332 57 69
f1v8s15 f1v12s19 0.948276 66109 58178 57 57
f2v1s23 f4v2s42 0.492754 35696 17302 58 61
f2v1s23 f0v4s4 0.481013 35696 86916 58 69
f2v1s23 f1v6s13 0.931034 35696 80246 58 56
f2v1s23 f3v8s33 0.534247 35696 88635 58 66
f2v1s23 f1v1s8 0.933333 35696 17651 58 60
f2v1s23 f1v14s21 0.948276 35696 85030 58 56
f2v1s23 f0v1s1 0.481013 35696 43883 58 69
f2v1s23 f1v5s12 0.933333 35696 1410 58 60
f2v1s23 f1v4s11 1.000000 35696 74527 58 58
f2v1s23 f1v9s16 0.950000 35696 65777 58 60
f2v1s23 f1v10s17 0.933333 35696 98659 58 60
f2v1s23 f1v0s7 1.000000 35696 84420 58 58
f2v1s23 f3v9s34 0.540541 35696 40677 58 65
f2v1s23 f4v0s40 0.486111 35696 75843 58 60
f2v1s23 f1v7s14 1.000000 35696 42277 58 58
f2v1s23 f3v2s27 0.534247 35696 74030 58 65
f2v1s23 f4v1s41 0.507246 35696 45686 58 61
f2v1s23 f2v0s22 0.487500 35696 43219 58 69
f2v1s23 f1v2s9 0.481013 35696 99108 58 69
f2v1s23 f1v3s10 1.000000 35696 43230 58 58
f2v1s23 f3v0s25 0.527027 35696 62755 58 66
f2v1s23 f3v3s28 0.520000 35696 66465 58 66
f2v1s23 f3v13s38 0.506329 35696 26948 58 68
f2v1s23 f3v7s32 0.540541 35696 53710 58 65
f2v1s23 f3v1s26 0.534247 35696 41283 58 65
f2v1s23 f3v6s31 0.540541 35696 94783 58 65
f2v1s23 f1v13s20 0.965517 35696 80913 58 56
f2v1s23 f2v2s24 0.507463 35696 68414 58 49
f2v1s23 f3v11s36 0.520000 35696 91927 58 65
f2v1s23 f0v5s5 0.487500 35696 2668 58 69
f2v1s23 f1v11s18 0.982759 35696 51814 58 58
f2v1s23 f0v6s6 0.475000 35696 16273 58 69
f2v1s23 f3v4s29 0.526316 35696 94356 58 68
f2v1s23 f0v2s2 0.487500 35696 10896 58 69
f2v1s23 f3v12s37 0.533333 35696 74202 58 67
f2v1s23 f0v3s3 0.500000 35696 73040 58 67
f2v1s23 f3v14s39 0.527027 35696 55015 58 66
f2v1s23 f0v0s0 0.487500 35696 1332 58 69
f2v1s23 f1v12s19 0.965517 35696 58178 58 57
f4v2s42 f0v4s4 0.520000 17302 86916 61 69
f4v2s42 f1v6s13 0.478261 17302 80246 61 56
f4v2s42 f3v8s33 0.500000 17302 88635 61 66
f4v2s42 f1v1s8 0.480000 17302 17651 61 60
f4v2s42 f1v14s21 0.500000 17302 85030 61 56
f4v2s42 f0v1s1 0.520000 17302 43883 61 69
f4v2s42 f1v5s12 0.485714 17302 1410 61 60
f4v2s42 f1v4s11 0.492754 17302 74527 61 58
f4v2s42 f1v9s16 0.493151 17302 65777 61 60
f4v2s42 f1v10s17 0.466667 17302 98659 61 60
f4v2s42 f1v0s7 0.492754 17302 84420 61 58
f4v2s42 f3v9s34 0.472973 17302 40677 61 65
f4v2s42 f4v0s40 0.967213 17302 75843 61 60
f4v2s42 f1v7s14 0.492754 17302 42277 61 58
f4v2s42 f3v2s27 0.493151 17302 74030 61 65
f4v2s42 f4v1s41 0.951613 17302 45686 61 61
f4v2s42 f2v0s22 0.546667 17302 43219 61 69
f4v2s42 f1v2s9 0.520000 17302 99108 61 69
f4v2s42 f1v3s10 0.492754 17302 43230 61 58
f4v2s42 f3v0s25 0.486486 17302 62755 61 66
f4v2s42 f3v3s28 0.486486 17302 66465 61 66
f4v2s42 f3v13s38 0.474359 17302 26948 61 68
f4v2s42 f3v7s32 0.472973 17302 53710 61 65
f4v2s42 f3v1s26 0.493151 17302 41283 61 65
f4v2s42 f3v6s31 0.472973 17302 94783 61 65
f4v2s42 f1v13s20 0.492537 17302 80913 61 56
f4v2s42 f2v2s24 0.530303 17302 68414 61 49
f4v2s42 f3v11s36 0.493151 17302 91927 61 65
f4v2s42 f0v5s5 0.526316 17302 2668 61 69
f4v2s42 f1v11s18 0.478873 17302 51814 61 58
f4v2s42 f0v6s6 0.539474 17302 16273 61 69
f4v2s42 f3v4s29 0.481013 17302 94356 61 68
f4v2s42 f0v2s2 0.546667 17302 10896 61 69
f4v2s42 f3v12s37 0.486842 17302 74202 61 67
f4v2s42 f0v3s3 0.527027 17302 73040 61 67
f4v2s42 f3v14s39 0.486486 17302 55015 61 66
f4v2s42 f0v0s0 0.533333 17302 1332 61 69
f4v2s42 f1v12s19 0.492537 17302 58178 61 57
f0v4s4 f1v6s13 0.493333 86916 80246 69 56
f0v4s4 f3v8s33 0.506173 86916 88635 69 66
f0v4s4 f1v1s8 0.481013 86916 17651 69 60
f0v4s4 f1v14s21 0.493506 86916 85030 69 56
f0v4s4 f0v1s1 1.000000 86916 43883 69 69
f0v4s4 f1v5s12 0.475610 86916 1410 69 60
f0v4s4 f1v4s11 0.481013 86916 74527 69 58
f0v4s4 f1v9s16 0.493671 86916 65777 69 60
f0v4s4 f1v10s17 0.481481 86916 98659 69 60
f0v4s4 f1v0s7 0.481013 86916 84420 69 58
f0v4s4 f3v9s34 0.500000 86916 40677 69 65
f0v4s4 f4v0s40 0.481013 86916 75843 69 60
f0v4s4 f1v7s14 0.481013 86916 42277 69 58
f0v4s4 f3v2s27 0.500000 86916 74030 69 65
f0v4s4 f4v1s41 0.475000 86916 45686 69 61
f0v4s4 f2v0s22 0.943662 86916 43219 69 69
f0v4s4 f1v2s9 1.000000 86916 99108 69 69
f0v4s4 f1v3s10 0.481013 86916 43230 69 58
f0v4s4 f3v0s25 0.493827 86916 62755 69 66
f0v4s4 f3v3s28 0.500000 86916 66465 69 66
f0v4s4 f3v13s38 0.493827 86916 26948 69 68
f0v4s4 f3v7s32 0.500000 86916 53710 69 65
f0v4s4 f3v1s26 0.481481 86916 41283 69 65
f0v4s4 f3v6s31 0.500000 86916 94783 69 65
f0v4s4 f1v13s20 0.480519 86916 80913 69 56
f0v4s4 f2v2s24 0.486111 86916 68414 69 49
f0v4s4 f3v11s36 0.468354 86916 91927 69 65
f0v4s4 f0v5s5 0.943662 86916 2668 69 69
f0v4s4 f1v11s18 0.493506 86916 51814 69 58
f0v4s4 f0v6s6 0.901408 86916 16273 69 69
f0v4s4 f3v4s29 0.525000 86916 94356 69 68
f0v4s4 f0v2s2 0.943662 86916 10896 69 69
f0v4s4 f3v12s37 0.493827 86916 74202 69 67
f0v4s4 f0v3s3 0.915493 86916 73040 69 67
f0v4s4 f3v14s39 0.493827 86916 55015 69 66
f0v4s4 f0v0s0 0.971429 86916 1332 69 69
f0v4s4 f1v12s19 0.457831 86916 58178 69 57
f1v6s13 f3v8s33 0.541667 80246 88635 56 66
f1v6s13 f1v1s8 0.866667 80246 17651 56 60
f1v6s13 f1v14s21 0.879310 80246 85030 56 56
f1v6s13 f0v1s1 0.493333 80246 43883 56 69
f1v6s13 f1v5s12 0.866667 80246 1410 56 60
f1v6s13 f1v4s11 0.931034 80246 74527 56 58
f1v6s13 f1v9s16 0.883333 80246 65777 56 60
f1v6s13 f1v10s17 0.883333 80246 98659 56 60
f1v6s13 f1v0s7 0.931034 80246 84420 56 58
f1v6s13 f3v9s34 0.541667 80246 40677 56 65
f1v6s13 f4v0s40 0.472222 80246 75843 56 60
f1v6s13 f1v7s14 0.931034 80246 42277 56 58
f1v6s13 f3v2s27 0.549296 80246 74030 56 65
f1v6s13 f4v1s41 0.465753 80246 45686 56 61
f1v6s13 f2v0s22 0.493506 80246 43219 56 69
f1v6s13 f1v2s9 0.493333 80246 99108 56 69
f1v6s13 f1v3s10 0.931034 80246 43230 56 58
f1v6s13 f3v0s25 0.541667 80246 62755 56 66
f1v6s13 f3v3s28 0.534247 80246 66465 56 66
f1v6s13 f3v13s38 0.527027 80246 26948 56 68
f1v6s13 f3v7s32 0.541667 80246 53710 56 65
f1v6s13 f3v1s26 0.549296 80246 41283 56 65
f1v6s13 f3v6s31 0.541667 80246 94783 56 65
f1v6s13 f1v13s20 0.896552 80246 80913 56 56
f1v6s13 f2v2s24 0.507692 80246 68414 56 49
f1v6s13 f3v11s36 0.534247 80246 91927 56 65
f1v6s13 f0v5s5 0.500000 80246 2668 56 69
f1v6s13 f1v11s18 0.913793 80246 51814 56 58
f1v6s13 f0v6s6 0.493506 80246 16273 56 69
f1v6s13 f3v4s29 0.540541 80246 94356 56 68
f1v6s13 f0v2s2 0.493506 80246 10896 56 69
f1v6s13 f3v12s37 0.547945 80246 74202 56 67
f1v6s13 f0v3s3 0.506849 80246 73040 56 67
f1v6s13 f3v14s39 0.541667 80246 55015 56 66
f1v6s13 f0v0s0 0.500000 80246 1332 56 69
f1v6s13 f1v12s19 0.896552 80246 58178 56 57
f3v8s33 f1v1s8 0.547945 88635 17651 66 60
f3v8s33 f1v14s21 0.535211 88635 85030 66 56
f3v8s33 f0v1s1 0.506173 88635 43883 66 69
f3v8s33 f1v5s12 0.527027 88635 1410 66 60
f3v8s33 f1v4s11 0.534247 88635 74527 66 58
f3v8s33 f1v9s16 0.506494 88635 65777 66 60
f3v8s33 f1v10s17 0.555556 88635 98659 66 60
f3v8s33 f1v0s7 0.534247 88635 84420 66 58
f3v8s33 f3v9s34 0.954545 88635 40677 66 65
f3v8s33 f4v0s40 0.468354 88635 75843 66 60
f3v8s33 f1v7s14 0.534247 88635 42277 66 58
f3v8s33 f3v2s27 0.969697 88635 74030 66 65
f3v8s33 f4v1s41 0.462500 88635 45686 66 61
f3v8s33 f2v0s22 0.525000 88635 43219 66 69
f3v8s33 f1v2s9 0.506173 88635 99108 66 69
f3v8s33 f1v3s10 0.534247 88635 43230 66 58
f3v8s33 f3v0s25 0.984848 88635 62755 66 66
f3v8s33 f3v3s28 0.955224 88635 66465 66 66
f3v8s33 f3v13s38 0.955882 88635 26948 66 68
f3v8s33 f3v7s32 0.954545 88635 53710 66 65
f3v8s33 f3v1s26 0.954545 88635 41283 66 65
f3v8s33 f3v6s31 0.954545 88635 94783 66 65
f3v8s33 f1v13s20 0.527778 88635 80913 66 56
f3v8s33 f2v2s24 0.500000 88635 68414 66 49
f3v8s33 f3v11s36 0.925373 88635 91927 66 65
f3v8s33 f0v5s5 0.512500 88635 2668 66 69
f3v8s33 f1v11s18 0.534247 88635 51814 66 58
f3v8s33 f0v6s6 0.488095 88635 16273 66 69
f3v8s33 f3v4s29 0.941176 88635 94356 66 68
f3v8s33 f0v2s2 0.525000 88635 10896 66 69
f3v8s33 f3v12s37 0.955224 88635 74202 66 67
f3v8s33 f0v3s3 0.518987 88635 73040 66 67
f3v8s33 f3v14s39 0.984848 88635 55015 66 66
f3v8s33 f0v0s0 0.525000 88635 1332 66 69
f3v8s33 f1v12s19 0.527778 88635 58178 66 57
f1v1s8 f1v14s21 0.916667 17651 85030 60 56
f1v1s8 f0v1s1 0.481013 17651 43883 60 69
f1v1s8 f1v5s12 0.870968 17651 1410 60 60
f1v1s8 f1v4s11 0.933333 17651 74527 60 58
f1v1s8 f1v9s16 0.887097 17651 65777 60 60
f1v1s8 f1v10s17 0.870968 17651 98659 60 60
f1v1s8 f1v0s7 0.933333 17651 84420 60 58
f1v1s8 f3v9s34 0.561644 17651 40677 60 65
f1v1s8 f4v0s40 0.493151 17651 75843 60 60
f1v1s8 f1v7s14 0.933333 17651 42277 60 58
f1v1s8 f3v2s27 0.555556 17651 74030 60 65
f1v1s8 f4v1s41 0.486486 17651 45686 60 61
f1v1s8 f2v0s22 0.481481 17651 43219 60 69
f1v1s8 f1v2s9 0.481013 17651 99108 60 69
f1v1s8 f1v3s10 0.933333 17651 43230 60 58
f1v1s8 f3v0s25 0.547945 17651 62755 60 66
f1v1s8 f3v3s28 0.540541 17651 66465 60 66
f1v1s8 f3v13s38 0.546667 17651 26948 60 68
f1v1s8 f3v7s32 0.561644 17651 53710 60 65
f1v1s8 f3v1s26 0.563380 17651 41283 60 65
f1v1s8 f3v6s31 0.561644 17651 94783 60 65
f1v1s8 f1v13s20 0.900000 17651 80913 60 56
f1v1s8 f2v2s24 0.478261 17651 68414 60 49
f1v1s8 f3v11s36 0.534247 17651 91927 60 65
f1v1s8 f0v5s5 0.481481 17651 2668 60 69
f1v1s8 f1v11s18 0.916667 17651 51814 60 58
f1v1s8 f0v6s6 0.493506 17651 16273 60 69
f1v1s8 f3v4s29 0.554054 17651 94356 60 68
f1v1s8 f0v2s2 0.481481 17651 10896 60 69
f1v1s8 f3v12s37 0.546667 17651 74202 60 67
f1v1s8 f0v3s3 0.493671 17651 73040 60 67
f1v1s8 f3v14s39 0.547945 17651 55015 60 66
f1v1s8 f0v0s0 0.487500 17651 1332 60 69
f1v1s8 f1v12s19 0.916667 17651 58178 60 57
f1v14s21 f0v1s1 0.493506 85030 43883 56 69
f1v14s21 f1v5s12 0.883333 85030 1410 56 60
f1v14s21 f1v4s11 0.948276 85030 74527 56 58
f1v14s21 f1v9s16 0.900000 85030 65777 56 60
f1v14s21 f1v10s17 0.883333 85030 98659 56 60
f1v14s21 f1v0s7 0.948276 85030 84420 56 58
f1v14s21 f3v9s34 0.549296 85030 40677 56 65
f1v14s21 f4v0s40 0.500000 85030 75843 56 60
f1v14s21 f1v7s14 0.948276 85030 42277 56 58
f1v14s21 f3v2s27 0.542857 85030 74030 56 65
f1v14s21 f4v1s41 0.507463 85030 45686 56 61
f1v14s21 f2v0s22 0.493671 85030 43219 56 69
f1v14s21 f1v2s9 0.493506 85030 99108 56 69
f1v14s21 f1v3s10 0.948276 85030 43230 56 58
f1v14s21 f3v0s25 0.535211 85030 62755 56 66
f1v14s21 f3v3s28 0.527778 85030 66465 56 66
f1v14s21 f3v13s38 0.520548 85030 26948 56 68
f1v14s21 f3v7s32 0.549296 85030 53710 56 65
f1v14s21 f3v1s26 0.550725 85030 41283 56 65
f1v14s21 f3v6s31 0.549296 85030 94783 56 65
f1v14s21 f1v13s20 0.913793 85030 80913 56 56
f1v14s21 f2v2s24 0.523077 85030 68414 56 49
f1v14s21 f3v11s36 0.513514 85030 91927 56 65
f1v14s21 f0v5s5 0.500000 85030 2668 56 69
f1v14s21 f1v11s18 0.931034 85030 51814 56 58
f1v14s21 f0v6s6 0.506667 85030 16273 56 69
f1v14s21 f3v4s29 0.534247 85030 94356 56 68
f1v14s21 f0v2s2 0.493671 85030 10896 56 69
f1v14s21 f3v12s37 0.534247 85030 74202 56 67
f1v14s21 f0v3s3 0.513158 85030 73040 56 67
f1v14s21 f3v14s39 0.535211 85030 55015 56 66
f1v14s21 f0v0s0 0.500000 85030 1332 56 69
f1v14s21 f1v12s19 0.913793 85030 58178 56 57
f0v1s1 f1v5s12 0.475610 43883 1410 69 60
f0v1s1 f1v4s11 0.481013 43883 74527 69 58
f0v1s1 f1v9s16 0.493671 43883 65777 69 60
f0v1s1 f1v10s17 0.481481 43883 98659 69 60
f0v1s1 f1v0s7 0.481013 43883 84420 69 58
f0v1s1 f3v9s34 0.500000 43883 40677 69 65
f0v1s1 f4v0s40 0.481013 43883 75843 69 60
f0v1s1 f1v7s14 0.481013 43883 42277 69 58
f0v1s1 f3v2s27 0.500000 43883 74030 69 65
f0v1s1 f4v1s41 0.475000 43883 45686 69 61
f0v1s1 f2v0s22 0.943662 43883 43219 69 69
f0v1s1 f1v2s9 1.000000 43883 99108 69 69
f0v1s1 f1v3s10 0.481013 43883 43230 69 58
f0v1s1 f3v0s25 0.493827 43883 62755 69 66
f0v1s1 f3v3s28 0.500000 43883 66465 69 66
f0v1s1 f3v13s38 0.493827 43883 26948 69 68
f0v1s1 f3v7s32 0.500000 43883 53710 69 65
f0v1s1 f3v1s26 0.481481 43883 41283 69 65
f0v1s1 f3v6s31 0.500000 43883 94783 69 65
f0v1s1 f1v13s20 0.480519 43883 80913 69 56
f0v1s1 f2v2s24 0.486111 43883 68414 69 49
f0v1s1 f3v11s36 0.468354 43883 91927 69 65
f0v1s1 f0v5s5 0.943662 43883 2668 69 69
f0v1s1 f1v11s18 0.493506 43883 51814 69 58
f0v1s1 f0v6s6 0.901408 43883 16273 69 69
f0v1s1 f3v4s29 0.525000 43883 94356 69 68
f0v1s1 f0v2s2 0.943662 43883 10896 69 69
f0v1s1 f3v12s37 0.493827 43883 74202 69 67
f0v1s1 f0v3s3 0.915493 43883 73040 69 67
f0v1s1 f3v14s39 0.493827 43883 55015 69 66
f0v1s1 f0v0s0 0.971429 43883 1332 69 69
f0v1s1 f1v12s19 0.457831 43883 58178 69 57
f1v5s12 f1v4s11 0.933333 1410 74527 60 58
f1v5s12 f1v9s16 0.887097 1410 65777 60 60
f1v5s12 f1v10s17 0.887097 1410 98659 60 60
f1v5s12 f1v0s7 0.933333 1410 84420 60 58
f1v5s12 f3v9s34 0.533333 1410 40677 60 65
f1v5s12 f4v0s40 0.486111 1410 75843 60 60
f1v5s12 f1v7s14 0.933333 1410 42277 60 58
f1v5s12 f3v2s27 0.527027 1410 74030 60 65
f1v5s12 f4v1s41 0.479452 1410 45686 60 61
f1v5s12 f2v0s22 0.481928 1410 43219 60 69
f1v5s12 f1v2s9 0.475610 1410 99108 60 69
f1v5s12 f1v3s10 0.933333 1410 43230 60 58
f1v5s12 f3v0s25 0.520000 1410 62755 60 66
f1v5s12 f3v3s28 0.506667 1410 66465 60 66
f1v5s12 f3v13s38 0.512821 1410 26948 60 68
f1v5s12 f3v7s32 0.533333 1410 53710 60 65
f1v5s12 f3v1s26 0.520548 1410 41283 60 65
f1v5s12 f3v6s31 0.533333 1410 94783 60 65
f1v5s12 f1v13s20 0.900000 1410 80913 60 56
f1v5s12 f2v2s24 0.470588 1410 68414 60 49
f1v5s12 f3v11s36 0.527027 1410 91927 60 65
f1v5s12 f0v5s5 0.487500 1410 2668 60 69
f1v5s12 f1v11s18 0.916667 1410 51814 60 58
f1v5s12 f0v6s6 0.475610 1410 16273 60 69
f1v5s12 f3v4s29 0.512821 1410 94356 60 68
f1v5s12 f0v2s2 0.481928 1410 10896 60 69
f1v5s12 f3v12s37 0.533333 1410 74202 60 67
f1v5s12 f0v3s3 0.493671 1410 73040 60 67
f1v5s12 f3v14s39 0.520000 1410 55015 60 66
f1v5s12 f0v0s0 0.481928 1410 1332 60 69
f1v5s12 f1v12s19 0.916667 1410 58178 60 57
f1v4s11 f1v9s16 0.950000 74527 65777 58 60
f1v4s11 f1v10s17 0.933333 74527 98659 58 60
f1v4s11 f1v0s7 1.000000 74527 84420 58 58
f1v4s11 f3v9s34 0.540541 74527 40677 58 65
f1v4s11 f4v0s40 0.486111 74527 75843 58 60
f1v4s11 f1v7s14 1.000000 74527 42277 58 58
f1v4s11 f3v2s27 0.534247 74527 74030 58 65
f1v4s11 f4v1s41 0.507246 74527 45686 58 61
f1v4s11 f2v0s22 0.487500 74527 43219 58 69
f1v4s11 f1v2s9 0.481013 74527 99108 58 69
f1v4s11 f1v3s10 1.000000 74527 43230 58 58
f1v4s11 f3v0s25 0.527027 74527 62755 58 66
f1v4s11 f3v3s28 0.520000 74527 66465 58 66
f1v4s11 f3v13s38 0.506329 74527 26948 58 68
f1v4s11 f3v7s32 0.540541 74527 53710 58 65
f1v4s11 f3v1s26 0.534247 74527 41283 58 65
f1v4s11 f3v6s31 0.540541 74527 94783 58 65
f1v4s11 f1v13s20 0.965517 74527 80913 58 56
f1v4s11 f2v2s24 0.507463 74527 68414 58 49
f1v4s11 f3v11s36 0.520000 74527 91927 58 65
f1v4s11 f0v5s5 0.487500 74527 2668 58 69
f1v4s11 f1v11s18 0.982759 74527 51814 58 58
f1v4s11 f0v6s6 0.475000 74527 16273 58 69
f1v4s11 f3v4s29 0.526316 74527 94356 58 68
f1v4s11 f0v2s2 0.487500 74527 10896 58 69
f1v4s11 f3v12s37 0.533333 74527 74202 58 67
f1v4s11 f0v3s3 0.500000 74527 73040 58 67
f1v4s11 f3v14s39 0.527027 74527 55015 58 66
f1v4s11 f0v0s0 0.487500 74527 1332 58 69
f1v4s11 f1v12s19 0.965517 74527 58178 58 57
f1v9s16 f1v10s17 0.887097 65777 98659 60 60
f1v9s16 f1v0s7 0.950000 65777 84420 60 58
f1v9s16 f3v9s34 0.527027 65777 40677 60 65
f1v9s16 f4v0s40 0.493151 65777 75843 60 60
f1v9s16 f1v7s14 0.950000 65777 42277 60 58
f1v9s16 f3v2s27 0.513158 65777 74030 60 65
f1v9s16 f4v1s41 0.514286 65777 45686 60 61
f1v9s16 f2v0s22 0.493827 65777 43219 60 69
f1v9s16 f1v2s9 0.493671 65777 99108 60 69
f1v9s16 f1v3s10 0.950000 65777 43230 60 58
f1v9s16 f3v0s25 0.506494 65777 62755 60 66
f1v9s16 f3v3s28 0.500000 65777 66465 60 66
f1v9s16 f3v13s38 0.506329 65777 26948 60 68
f1v9s16 f3v7s32 0.527027 65777 53710 60 65
f1v9s16 f3v1s26 0.520548 65777 41283 60 65
f1v9s16 f3v6s31 0.527027 65777 94783 60 65
f1v9s16 f1v13s20 0.916667 65777 80913 60 56
f1v9s16 f2v2s24 0.500000 65777 68414 60 49
f1v9s16 f3v11s36 0.500000 65777 91927 60 65
f1v9s16 f0v5s5 0.500000 65777 2668 60 69
f1v9s16 f1v11s18 0.933333 65777 51814 60 58
f1v9s16 f0v6s6 0.481481 65777 16273 60 69
f1v9s16 f3v4s29 0.512821 65777 94356 60 68
f1v9s16 f0v2s2 0.493827 65777 10896 60 69
f1v9s16 f3v12s37 0.506329 65777 74202 60 67
f1v9s16 f0v3s3 0.518987 65777 73040 60 67
f1v9s16 f3v14s39 0.506494 65777 55015 60 66
f1v9s16 f0v0s0 0.500000 65777 1332 60 69
f1v9s16 f1v12s19 0.916667 65777 58178 60 57
f1v10s17 f1v0s7 0.933333 98659 84420 60 58
f1v10s17 f3v9s34 0.561644 98659 40677 60 65
f1v10s17 f4v0s40 0.472973 98659 75843 60 60
f1v10s17 f1v7s14 0.933333 98659 42277 60 58
f1v10s17 f3v2s27 0.555556 98659 74030 60 65
f1v10s17 f4v1s41 0.473684 98659 45686 60 61
f1v10s17 f2v0s22 0.475610 98659 43219 60 69
f1v10s17 f1v2s9 0.481481 98659 99108 60 69
f1v10s17 f1v3s10 0.933333 98659 43230 60 58
f1v10s17 f3v0s25 0.547945 98659 62755 60 66
f1v10s17 f3v3s28 0.519481 98659 66465 60 66
f1v10s17 f3v13s38 0.518987 98659 26948 60 68
f1v10s17 f3v7s32 0.561644 98659 53710 60 65
f1v10s17 f3v1s26 0.541667 98659 41283 60 65
f1v10s17 f3v6s31 0.561644 98659 94783 60 65
f1v10s17 f1v13s20 0.900000 98659 80913 60 56
f1v10s17 f2v2s24 0.492537 98659 68414 60 49
f1v10s17 f3v11s36 0.539474 98659 91927 60 65
f1v10s17 f0v5s5 0.481481 98659 2668 60 69
f1v10s17 f1v11s18 0.916667 98659 51814 60 58
f1v10s17 f0v6s6 0.464286 98659 16273 60 69
f1v10s17 f3v4s29 0.533333 98659 94356 60 68
f1v10s17 f0v2s2 0.475610 98659 10896 60 69
f1v10s17 f3v12s37 0.561644 98659 74202 60 67
f1v10s17 f0v3s3 0.500000 98659 73040 60 67
f1v10s17 f3v14s39 0.547945 98659 55015 60 66
f1v10s17 f0v0s0 0.487805 98659 1332 60 69
f1v10s17 f1v12s19 0.916667 98659 58178 60 57
f1v0s7 f3v9s34 0.540541 84420 40677 58 65
f1v0s7 f4v0s40 0.486111 84420 75843 58 60
f1v0s7 f1v7s14 1.000000 84420 42277 58 58
f1v0s7 f3v2s27 0.534247 84420 74030 58 65
f1v0s7 f4v1s41 0.507246 84420 45686 58 61
f1v0s7 f2v0s22 0.487500 84420 43219 58 69
f1v0s7 f1v2s9 0.481013 84420 99108 58 69
f1v0s7 f1v3s10 1.000000 84420 43230 58 58
f1v0s7 f3v0s25 0.527027 84420 62755 58 66
f1v0s7 f3v3s28 0.520000 84420 66465 58 66
f1v0s7 f3v13s38 0.506329 84420 26948 58 68
f1v0s7 f3v7s32 0.540541 84420 53710 58 65
f1v0s7 f3v1s26 0.534247 84420 41283 58 65
f1v0s7 f3v6s31 0.540541 84420 94783 58 65
f1v0s7 f1v13s20 0.965517 84420 80913 58 56
f1v0s7 f2v2s24 0.507463 84420 68414 58 49
f1v0s7 f3v11s36 0.520000 84420 91927 58 65
f1v0s7 f0v5s5 0.487500 84420 2668 58 69
f1v0s7 f1v11s18 0.982759 84420 51814 58 58
f1v0s7 f0v6s6 0.475000 84420 16273 58 69
f1v0s7 f3v4s29 0.526316 84420 94356 58 68
f1v0s7 f0v2s2 0.487500 84420 10896 58 69
f1v0s7 f3v12s37 0.533333 84420 74202 58 67
f1v0s7 f0v3s3 0.500000 84420 73040 58 67
f1v0s7 f3v14s39 0.527027 84420 55015 58 66
f1v0s7 f0v0s0 0.487500 84420 1332 58 69
f1v0s7 f1v12s19 0.965517 84420 58178 58 57
f3v9s34 f4v0s40 0.472973 40677 75843 65 60
f3v9s34 f1v7s14 0.540541 40677 42277 65 58
f3v9s34 f3v2s27 0.954545 40677 74030 65 65
f3v9s34 f4v1s41 0.479452 40677 45686 65 61
f3v9s34 f2v0s22 0.512821 40677 43219 65 69
f3v9s34 f1v2s9 0.500000 40677 99108 65 69
f3v9s34 f1v3s10 0.540541 40677 43230 65 58
f3v9s34 f3v0s25 0.969697 40677 62755 65 66
f3v9s34 f3v3s28 0.940299 40677 66465 65 66
f3v9s34 f3v13s38 0.941176 40677 26948 65 68
f3v9s34 f3v7s32 1.000000 40677 53710 65 65
f3v9s34 f3v1s26 0.939394 40677 41283 65 65
f3v9s34 f3v6s31 1.000000 40677 94783 65 65
f3v9s34 f1v13s20 0.534247 40677 80913 65 56
f3v9s34 f2v2s24 0.507463 40677 68414 65 49
f3v9s34 f3v11s36 0.910448 40677 91927 65 65
f3v9s34 f0v5s5 0.512821 40677 2668 65 69
f3v9s34 f1v11s18 0.540541 40677 51814 65 58
f3v9s34 f0v6s6 0.487500 40677 16273 65 69
f3v9s34 f3v4s29 0.926471 40677 94356 65 68
f3v9s34 f0v2s2 0.512821 40677 10896 65 69
f3v9s34 f3v12s37 0.940299 40677 74202 65 67
f3v9s34 f0v3s3 0.512500 40677 73040 65 67
f3v9s34 f3v14s39 0.969697 40677 55015 65 66
f3v9s34 f0v0s0 0.518987 40677 1332 65 69
f3v9s34 f1v12s19 0.534247 40677 58178 65 57
f4v0s40 f1v7s14 0.486111 75843 42277 60 58
f4v0s40 f3v2s27 0.493151 75843 74030 60 65
f4v0s40 f4v1s41 0.983607 75843 45686 60 61
f4v0s40 f2v0s22 0.520000 75843 43219 60 69
f4v0s40 f1v2s9 0.481013 75843 99108 60 69
f4v0s40 f1v3s10 0.486111 75843 43230 60 58
f4v0s40 f3v0s25 0.486486 75843 62755 60 66
f4v0s40 f3v3s28 0.486486 75843 66465 60 66
f4v0s40 f3v13s38 0.474359 75843 26948 60 68
f4v0s40 f3v7s32 0.472973 75843 53710 60 65
f4v0s40 f3v1s26 0.493151 75843 41283 60 65
f4v0s40 f3v6s31 0.472973 75843 94783 60 65
f4v0s40 f1v13s20 0.492754 75843 80913 60 56
f4v0s40 f2v2s24 0.515152 75843 68414 60 49
f4v0s40 f3v11s36 0.493151 75843 91927 60 65
f4v0s40 f0v5s5 0.506667 75843 2668 60 69
f4v0s40 f1v11s18 0.472973 75843 51814 60 58
f4v0s40 f0v6s6 0.520000 75843 16273 60 69
f4v0s40 f3v4s29 0.475000 75843 94356 60 68
f4v0s40 f0v2s2 0.520000 75843 10896 60 69
f4v0s40 f3v12s37 0.486842 75843 74202 60 67
f4v0s40 f0v3s3 0.506849 75843 73040 60 67
f4v0s40 f3v14s39 0.486486 75843 55015 60 66
f4v0s40 f0v0s0 0.513514 75843 1332 60 69
f4v0s40 f1v12s19 0.492537 75843 58178 60 57
f1v7s14 f3v2s27 0.534247 42277 74030 58 65
f1v7s14 f4v1s41 0.507246 42277 45686 58 61
f1v7s14 f2v0s22 0.487500 42277 43219 58 69
f1v7s14 f1v2s9 0.481013 42277 99108 58 69
f1v7s14 f1v3s10 1.000000 42277 43230 58 58
f1v7s14 f3v0s25 0.527027 42277 62755 58 66
f1v7s14 f3v3s28 0.520000 42277 66465 58 66
f1v7s14 f3v13s38 0.506329 42277 26948 58 68
f1v7s14 f3v7s32 0.540541 42277 53710 58 65
f1v7s14 f3v1s26 0.534247 42277 41283 58 65
f1v7s14 f3v6s31 0.540541 42277 94783 58 65
f1v7s14 f1v13s20 0.965517 42277 80913 58 56
f1v7s14 f2v2s24 0.507463 42277 68414 58 49
f1v7s14 f3v11s36 0.520000 42277 91927 58 65
f1v7s14 f0v5s5 0.487500 42277 2668 58 69
f1v7s14 f1v11s18 0.982759 42277 51814 58 58
f1v7s14 f0v6s6 0.475000 42277 16273 58 69
f1v7s14 f3v4s29 0.526316 42277 94356 58 68
f1v7s14 f0v2s2 0.487500 42277 10896 58 69
f1v7s14 f3v12s37 0.533333 42277 74202 58 67
f1v7s14 f0v3s3 0.500000 42277 73040 58 67
f1v7s14 f3v14s39 0.527027 42277 55015 58 66
f1v7s14 f0v0s0 0.487500 42277 1332 58 69
f1v7s14 f1v12s19 0.965517 42277 58178 58 57
f3v2s27 f4v1s41 0.486486 74030 45686 65 61
f3v2s27 f2v0s22 0.525641 74030 43219 65 69
f3v2s27 f1v2s9 0.500000 74030 99108 65 69
f3v2s27 f1v3s10 0.534247 74030 43230 65 58
f3v2s27 f3v0s25 0.984848 74030 62755 65 66
f3v2s27 f3v3s28 0.955224 74030 66465 65 66
f3v2s27 f3v13s38 0.955882 74030 26948 65 68
f3v2s27 f3v7s32 0.954545 74030 53710 65 65
f3v2s27 f3v1s26 0.969231 74030 41283 65 65
f3v2s27 f3v6s31 0.954545 74030 94783 65 65
f3v2s27 f1v13s20 0.527778 74030 80913 65 56
f3v2s27 f2v2s24 0.507246 74030 68414 65 49
f3v2s27 f3v11s36 0.925373 74030 91927 65 65
f3v2s27 f0v5s5 0.512821 74030 2668 65 69
f3v2s27 f1v11s18 0.534247 74030 51814 65 58
f3v2s27 f0v6s6 0.487805 74030 16273 65 69
f3v2s27 f3v4s29 0.941176 74030 94356 65 68
f3v2s27 f0v2s2 0.525641 74030 10896 65 69
f3v2s27 f3v12s37 0.955224 74030 74202 65 67
f3v2s27 f0v3s3 0.512500 74030 73040 65 67
f3v2s27 f3v14s39 0.984848 74030 55015 65 66
f3v2s27 f0v0s0 0.518987 74030 1332 65 69
f3v2s27 f1v12s19 0.527778 74030 58178 65 57
f4v1s41 f2v0s22 0.513158 45686 43219 61 69
f4v1s41 f1v2s9 0.475000 45686 99108 61 69
f4v1s41 f1v3s10 0.507246 45686 43230 61 58
f4v1s41 f3v0s25 0.480000 45686 62755 61 66
f4v1s41 f3v3s28 0.480000 45686 66465 61 66
f4v1s41 f3v13s38 0.468354 45686 26948 61 68
f4v1s41 f3v7s32 0.479452 45686 53710 61 65
f4v1s41 f3v1s26 0.486486 45686 41283 61 65
f4v1s41 f3v6s31 0.479452 45686 94783 61 65
f4v1s41 f1v13s20 0.507463 45686 80913 61 56
f4v1s41 f2v2s24 0.507463 45686 68414 61 49
f4v1s41 f3v11s36 0.493151 45686 91927 61 65
f4v1s41 f0v5s5 0.500000 45686 2668 61 69
f4v1s41 f1v11s18 0.492958 45686 51814 61 58
f4v1s41 f0v6s6 0.513158 45686 16273 61 69
f4v1s41 f3v4s29 0.469136 45686 94356 61 68
f4v1s41 f0v2s2 0.513158 45686 10896 61 69
f4v1s41 f3v12s37 0.480519 45686 74202 61 67
f4v1s41 f0v3s3 0.500000 45686 73040 61 67
f4v1s41 f3v14s39 0.480000 45686 55015 61 66
f4v1s41 f0v0s0 0.506667 45686 1332 61 69
f4v1s41 f1v12s19 0.492537 45686 58178 61 57
f2v0s22 f1v2s9 0.943662 43219 99108 69 69
f2v0s22 f1v3s10 0.487500 43219 43230 69 58
f2v0s22 f3v0s25 0.518987 43219 62755 69 66
f2v0s22 f3v3s28 0.525641 43219 66465 69 66
f2v0s22 f3v13s38 0.512500 43219 26948 69 68
f2v0s22 f3v7s32 0.512821 43219 53710 69 65
f2v0s22 f3v1s26 0.506329 43219 41283 69 65
f2v0s22 f3v6s31 0.512821 43219 94783 69 65
f2v0s22 f1v13s20 0.487179 43219 80913 69 56
f2v0s22 f2v2s24 0.486111 43219 68414 69 49
f2v0s22 f3v11s36 0.487179 43219 91927 69 65
f2v0s22 f0v5s5 0.943662 43219 2668 69 69
f2v0s22 f1v11s18 0.500000 43219 51814 69 58
f2v0s22 f0v6s6 0.901408 43219 16273 69 69
f2v0s22 f3v4s29 0.551282 43219 94356 69 68
f2v0s22 f0v2s2 1.000000 43219 10896 69 69
f2v0s22 f3v12s37 0.525000 43219 74202 69 67
f2v0s22 f0v3s3 0.915493 43219 73040 69 67
f2v0s22 f3v14s39 0.518987 43219 55015 69 66
f2v0s22 f0v0s0 0.971429 43219 1332 69 69
f2v0s22 f1v12s19 0.487500 43219 58178 69 57
f1v2s9 f1v3s10 0.481013 99108 43230 69 58
f1v2s9 f3v0s25 0.493827 99108 62755 69 66
f1v2s9 f3v3s28 0.500000 99108 66465 69 66
f1v2s9 f3v13s38 0.493827 99108 26948 69 68
f1v2s9 f3v7s32 0.500000 99108 53710 69 65
f1v2s9 f3v1s26 0.481481 99108 41283 69 65
f1v2s9 f3v6s31 0.500000 99108 94783 69 65
f1v2s9 f1v13s20 0.480519 99108 80913 69 56
f1v2s9 f2v2s24 0.486111 99108 68414 69 49
f1v2s9 f3v11s36 0.468354 99108 91927 69 65
f1v2s9 f0v5s5 0.943662 99108 2668 69 69
f1v2s9 f1v11s18 0.493506 99108 51814 69 58
f1v2s9 f0v6s6 0.901408 99108 16273 69 69
f1v2s9 f3v4s29 0.525000 99108 94356 69 68
f1v2s9 f0v2s2 0.943662 99108 10896 69 69
f1v2s9 f3v12s37 0.493827 99108 74202 69 67
f1v2s9 f0v3s3 0.915493 99108 73040 69 67
f1v2s9 f3v14s39 0.493827 99108 55015 69 66
f1v2s9 f0v0s0 0.971429 99108 1332 69 69
f1v2s9 f1v12s19 0.457831 99108 58178 69 57
f1v3s10 f3v0s25 0.527027 43230 62755 58 66
f1v3s10 f3v3s28 0.520000 43230 66465 58 66
f1v3s10 f3v13s38 0.506329 43230 26948 58 68
f1v3s10 f3v7s32 0.540541 43230 53710 58 65
f1v3s10 f3v1s26 0.534247 43230 41283 58 65
f1v3s10 f3v6s31 0.540541 43230 94783 58 65
f1v3s10 f1v13s20 0.965517 43230 80913 58 56
f1v3s10 f2v2s24 0.507463 43230 68414 58 49
f1v3s10 f3v11s36 0.520000 43230 91927 58 65
f1v3s10 f0v5s5 0.487500 43230 2668 58 69
f1v3s10 f1v11s18 0.982759 43230 51814 58 58
f1v3s10 f0v6s6 0.475000 43230 16273 58 69
f1v3s10 f3v4s29 0.526316 43230 94356 58 68
f1v3s10 f0v2s2 0.487500 43230 10896 58 69
f1v3s10 f3v12s37 0.533333 43230 74202 58 67
f1v3s10 f0v3s3 0.500000 43230 73040 58 67
f1v3s10 f3v14s39 0.527027 43230 55015 58 66
f1v3s10 f0v0s0 0.487500 43230 1332 58 69
f1v3s10 f1v12s19 0.965517 43230 58178 58 57
f3v0s25 f3v3s28 0.970149 62755 66465 66 66
f3v0s25 f3v13s38 0.970588 62755 26948 66 68
f3v0s25 f3v7s32 0.969697 62755 53710 66 65
f3v0s25 f3v1s26 0.969697 62755 41283 66 65
f3v0s25 f3v6s31 0.969697 62755 94783 66 65
f3v0s25 f1v13s20 0.520548 62755 80913 66 56
f3v0s25 f2v2s24 0.514706 62755 68414 66 49
f3v0s25 f3v11s36 0.940299 62755 91927 66 65
f3v0s25 f0v5s5 0.506329 62755 2668 66 69
f3v0s25 f1v11s18 0.527027 62755 51814 66 58
f3v0s25 f0v6s6 0.481928 62755 16273 66 69
f3v0s25 f3v4s29 0.955882 62755 94356 66 68
f3v0s25 f0v2s2 0.518987 62755 10896 66 69
f3v0s25 f3v12s37 0.970149 62755 74202 66 67
f3v0s25 f0v3s3 0.506173 62755 73040 66 67
f3v0s25 f3v14s39 1.000000 62755 55015 66 66
f3v0s25 f0v0s0 0.512500 62755 1332 66 69
f3v0s25 f1v12s19 0.520548 62755 58178 66 57
f3v3s28 f3v13s38 0.955882 66465 26948 66 68
f3v3s28 f3v7s32 0.940299 66465 53710 66 65
f3v3s28 f3v1s26 0.940299 66465 41283 66 65
f3v3s28 f3v6s31 0.940299 66465 94783 66 65
f3v3s28 f1v13s20 0.513514 66465 80913 66 56
f3v3s28 f2v2s24 0.521739 66465 68414 66 49
f3v3s28 f3v11s36 0.911765 66465 91927 66 65
f3v3s28 f0v5s5 0.506329 66465 2668 66 69
f3v3s28 f1v11s18 0.506494 66465 51814 66 58
f3v3s28 f0v6s6 0.487805 66465 16273 66 69
f3v3s28 f3v4s29 0.941176 66465 94356 66 68
f3v3s28 f0v2s2 0.525641 66465 10896 66 69
f3v3s28 f3v12s37 0.941176 66465 74202 66 67
f3v3s28 f0v3s3 0.512500 66465 73040 66 67
f3v3s28 f3v14s39 0.970149 66465 55015 66 66
f3v3s28 f0v0s0 0.518987 66465 1332 66 69
f3v3s28 f1v12s19 0.500000 66465 58178 66 57
f3v13s38 f3v7s32 0.941176 26948 53710 68 65
f3v13s38 f3v1s26 0.941176 26948 41283 68 65
f3v13s38 f3v6s31 0.941176 26948 94783 68 65
f3v13s38 f1v13s20 0.500000 26948 80913 68 56
f3v13s38 f2v2s24 0.514286 26948 68414 68 49
f3v13s38 f3v11s36 0.913043 26948 91927 68 65
f3v13s38 f0v5s5 0.506329 26948 2668 68 69
f3v13s38 f1v11s18 0.506329 26948 51814 68 58
f3v13s38 f0v6s6 0.481928 26948 16273 68 69
f3v13s38 f3v4s29 0.942029 26948 94356 68 68
f3v13s38 f0v2s2 0.512500 26948 10896 68 69
f3v13s38 f3v12s37 0.942029 26948 74202 68 67
f3v13s38 f0v3s3 0.506173 26948 73040 68 67
f3v13s38 f3v14s39 0.970588 26948 55015 68 66
f3v13s38 f0v0s0 0.512500 26948 1332 68 69
f3v13s38 f1v12s19 0.527027 26948 58178 68 57
f3v7s32 f3v1s26 0.939394 53710 41283 65 65
f3v7s32 f3v6s31 1.000000 53710 94783 65 65
f3v7s32 f1v13s20 0.534247 53710 80913 65 56
f3v7s32 f2v2s24 0.507463 53710 68414 65 49
f3v7s32 f3v11s36 0.910448 53710 91927 65 65
f3v7s32 f0v5s5 0.512821 53710 2668 65 69
f3v7s32 f1v11s18 0.540541 53710 51814 65 58
f3v7s32 f0v6s6 0.487500 53710 16273 65 69
f3v7s32 f3v4s29 0.926471 53710 94356 65 68
f3v7s32 f0v2s2 0.512821 53710 10896 65 69
f3v7s32 f3v12s37 0.940299 53710 74202 65 67
f3v7s32 f0v3s3 0.512500 53710 73040 65 67
f3v7s32 f3v14s39 0.969697 53710 55015 65 66
f3v7s32 f0v0s0 0.518987 53710 1332 65 69
f3v7s32 f1v12s19 0.534247 53710 58178 65 57
f3v1s26 f3v6s31 0.939394 41283 94783 65 65
f3v1s26 f1v13s20 0.527778 41283 80913 65 56
f3v1s26 f2v2s24 0.514706 41283 68414 65 49
f3v1s26 f3v11s36 0.910448 41283 91927 65 65
f3v1s26 f0v5s5 0.493671 41283 2668 65 69
f3v1s26 f1v11s18 0.513158 41283 51814 65 58
f3v1s26 f0v6s6 0.469880 41283 16273 65 69
f3v1s26 f3v4s29 0.926471 41283 94356 65 68
f3v1s26 f0v2s2 0.506329 41283 10896 65 69
f3v1s26 f3v12s37 0.940299 41283 74202 65 67
f3v1s26 f0v3s3 0.506329 41283 73040 65 67
f3v1s26 f3v14s39 0.969697 41283 55015 65 66
f3v1s26 f0v0s0 0.500000 41283 1332 65 69
f3v1s26 f1v12s19 0.527778 41283 58178 65 57
f3v6s31 f1v13s20 0.534247 94783 80913 65 56
f3v6s31 f2v2s24 0.507463 94783 68414 65 49
f3v6s31 f3v11s36 0.910448 94783 91927 65 65
f3v6s31 f0v5s5 0.512821 94783 2668 65 69
f3v6s31 f1v11s18 0.540541 94783 51814 65 58
f3v6s31 f0v6s6 0.487500 94783 16273 65 69
f3v6s31 f3v4s29 0.926471 94783 94356 65 68
f3v6s31 f0v2s2 0.512821 94783 10896 65 69
f3v6s31 f3v12s37 0.940299 94783 74202 65 67
f3v6s31 f0v3s3 0.512500 94783 73040 65 67
f3v6s31 f3v14s39 0.969697 94783 55015 65 66
f3v6s31 f0v0s0 0.518987 94783 1332 65 69
f3v6s31 f1v12s19 0.534247 94783 58178 65 57
f1v13s20 f2v2s24 0.523077 80913 68414 56 49
f1v13s20 f3v11s36 0.513514 80913 91927 56 65
f1v13s20 f0v5s5 0.500000 80913 2668 56 69
f1v13s20 f1v11s18 0.948276 80913 51814 56 58
f1v13s20 f0v6s6 0.474359 80913 16273 56 69
f1v13s20 f3v4s29 0.520000 80913 94356 56 68
f1v13s20 f0v2s2 0.487179 80913 10896 56 69
f1v13s20 f3v12s37 0.527027 80913 74202 56 67
f1v13s20 f0v3s3 0.500000 80913 73040 56 67
f1v13s20 f3v14s39 0.520548 80913 55015 56 66
f1v13s20 f0v0s0 0.487179 80913 1332 56 69
f1v13s20 f1v12s19 0.931034 80913 58178 56 57
f2v2s24 f3v11s36 0.507463 68414 91927 49 65
f2v2s24 f0v5s5 0.460526 68414 2668 49 69
f2v2s24 f1v11s18 0.507463 68414 51814 49 58
f2v2s24 f0v6s6 0.479452 68414 16273 49 69
f2v2s24 f3v4s29 0.514286 68414 94356 49 68
f2v2s24 f0v2s2 0.486111 68414 10896 49 69
f2v2s24 f3v12s37 0.521739 68414 74202 49 67
f2v2s24 f0v3s3 0.492754 68414 73040 49 67
f2v2s24 f3v14s39 0.514706 68414 55015 49 66
f2v2s24 f0v0s0 0.486111 68414 1332 49 69
f2v2s24 f1v12s19 0.500000 68414 58178 49 57
f3v11s36 f0v5s5 0.469136 91927 2668 65 69
f3v11s36 f1v11s18 0.520000 91927 51814 65 58
f3v11s36 f0v6s6 0.463415 91927 16273 65 69
f3v11s36 f3v4s29 0.898551 91927 94356 65 68
f3v11s36 f0v2s2 0.487179 91927 10896 65 69
f3v11s36 f3v12s37 0.911765 91927 74202 65 67
f3v11s36 f0v3s3 0.481013 91927 73040 65 67
f3v11s36 f3v14s39 0.940299 91927 55015 65 66
f3v11s36 f0v0s0 0.487179 91927 1332 65 69
f3v11s36 f1v12s19 0.513514 91927 58178 65 57
f0v5s5 f1v11s18 0.500000 2668 51814 69 58
f0v5s5 f0v6s6 0.901408 2668 16273 69 69
f0v5s5 f3v4s29 0.538462 2668 94356 69 68
f0v5s5 f0v2s2 0.943662 2668 10896 69 69
f0v5s5 f3v12s37 0.500000 2668 74202 69 67
f0v5s5 f0v3s3 0.915493 2668 73040 69 67
f0v5s5 f3v14s39 0.506329 2668 55015 69 66
f0v5s5 f0v0s0 0.971429 2668 1332 69 69
f0v5s5 f1v12s19 0.475000 2668 58178 69 57
f1v11s18 f0v6s6 0.493506 51814 16273 58 69
f1v11s18 f3v4s29 0.526316 51814 94356 58 68
f1v11s18 f0v2s2 0.500000 51814 10896 58 69
f1v11s18 f3v12s37 0.533333 51814 74202 58 67
f1v11s18 f0v3s3 0.513158 51814 73040 58 67
f1v11s18 f3v14s39 0.527027 51814 55015 58 66
f1v11s18 f0v0s0 0.500000 51814 1332 58 69
f1v11s18 f1v12s19 0.948276 51814 58178 58 57
f0v6s6 f3v4s29 0.512195 16273 94356 69 68
f0v6s6 f0v2s2 0.901408 16273 10896 69 69
f0v6s6 f3v12s37 0.476190 16273 74202 69 67
f0v6s6 f0v3s3 0.873239 16273 73040 69 67
f0v6s6 f3v14s39 0.481928 16273 55015 69 66
f0v6s6 f0v0s0 0.928571 16273 1332 69 69
f0v6s6 f1v12s19 0.457831 16273 58178 69 57
f3v4s29 f0v2s2 0.551282 94356 10896 68 69
f3v4s29 f3v12s37 0.927536 94356 74202 68 67
f3v4s29 f0v3s3 0.530864 94356 73040 68 67
f3v4s29 f3v14s39 0.955882 94356 55015 68 66
f3v4s29 f0v0s0 0.544304 94356 1332 68 69
f3v4s29 f1v12s19 0.520000 94356 58178 68 57
f0v2s2 f3v12s37 0.525000 10896 74202 69 67
f0v2s2 f0v3s3 0.915493 10896 73040 69 67
f0v2s2 f3v14s39 0.518987 10896 55015 69 66
f0v2s2 f0v0s0 0.971429 10896 1332 69 69
f0v2s2 f1v12s19 0.487500 10896 58178 69 57
f3v12s37 f0v3s3 0.500000 74202 73040 67 67
f3v12s37 f3v14s39 0.970149 74202 55015 67 66
f3v12s37 f0v0s0 0.512500 74202 1332 67 69
f3v12s37 f1v12s19 0.527027 74202 58178 67 57
f0v3s3 f3v14s39 0.506173 73040 55015 67 66
f0v3s3 f0v0s0 0.942857 73040 1332 67 69
f0v3s3 f1v12s19 0.487179 73040 58178 67 57
f3v14s39 f0v0s0 0.512500 55015 1332 66 69
f3v14s39 f1v12s19 0.520548 55015 58178 66 57
f0v0s0 f1v12s19 0.464286 1332 58178 69 57
+903
View File
@@ -0,0 +1,903 @@
f3v10s35 f3v5s30 9.000000
f3v10s35 f1v8s15 34.000000
f3v10s35 f2v1s23 38.000000
f3v10s35 f4v2s42 37.000000
f3v10s35 f0v4s4 40.000000
f3v10s35 f1v6s13 33.000000
f3v10s35 f3v8s33 6.000000
f3v10s35 f1v1s8 35.000000
f3v10s35 f1v14s21 37.000000
f3v10s35 f0v1s1 40.000000
f3v10s35 f1v5s12 37.000000
f3v10s35 f1v4s11 38.000000
f3v10s35 f1v9s16 38.000000
f3v10s35 f1v10s17 36.000000
f3v10s35 f1v0s7 38.000000
f3v10s35 f3v9s34 6.000000
f3v10s35 f4v0s40 38.000000
f3v10s35 f1v7s14 38.000000
f3v10s35 f3v2s27 6.000000
f3v10s35 f4v1s41 39.000000
f3v10s35 f2v0s22 39.000000
f3v10s35 f1v2s9 40.000000
f3v10s35 f1v3s10 38.000000
f3v10s35 f3v0s25 5.000000
f3v10s35 f3v3s28 7.000000
f3v10s35 f3v13s38 7.000000
f3v10s35 f3v7s32 6.000000
f3v10s35 f3v1s26 6.000000
f3v10s35 f3v6s31 6.000000
f3v10s35 f1v13s20 38.000000
f3v10s35 f2v2s24 35.000000
f3v10s35 f3v11s36 9.000000
f3v10s35 f0v5s5 39.000000
f3v10s35 f1v11s18 38.000000
f3v10s35 f0v6s6 42.000000
f3v10s35 f3v4s29 8.000000
f3v10s35 f0v2s2 39.000000
f3v10s35 f3v12s37 7.000000
f3v10s35 f0v3s3 40.000000
f3v10s35 f3v14s39 5.000000
f3v10s35 f0v0s0 39.000000
f3v10s35 f1v12s19 35.000000
f3v5s30 f1v8s15 35.000000
f3v5s30 f2v1s23 36.000000
f3v5s30 f4v2s42 35.000000
f3v5s30 f0v4s4 40.000000
f3v5s30 f1v6s13 36.000000
f3v5s30 f3v8s33 5.000000
f3v5s30 f1v1s8 37.000000
f3v5s30 f1v14s21 34.000000
f3v5s30 f0v1s1 40.000000
f3v5s30 f1v5s12 38.000000
f3v5s30 f1v4s11 36.000000
f3v5s30 f1v9s16 37.000000
f3v5s30 f1v10s17 38.000000
f3v5s30 f1v0s7 36.000000
f3v5s30 f3v9s34 6.000000
f3v5s30 f4v0s40 34.000000
f3v5s30 f1v7s14 36.000000
f3v5s30 f3v2s27 5.000000
f3v5s30 f4v1s41 35.000000
f3v5s30 f2v0s22 39.000000
f3v5s30 f1v2s9 40.000000
f3v5s30 f1v3s10 36.000000
f3v5s30 f3v0s25 4.000000
f3v5s30 f3v3s28 6.000000
f3v5s30 f3v13s38 6.000000
f3v5s30 f3v7s32 6.000000
f3v5s30 f3v1s26 6.000000
f3v5s30 f3v6s31 6.000000
f3v5s30 f1v13s20 36.000000
f3v5s30 f2v2s24 32.000000
f3v5s30 f3v11s36 7.000000
f3v5s30 f0v5s5 39.000000
f3v5s30 f1v11s18 36.000000
f3v5s30 f0v6s6 40.000000
f3v5s30 f3v4s29 7.000000
f3v5s30 f0v2s2 39.000000
f3v5s30 f3v12s37 6.000000
f3v5s30 f0v3s3 39.000000
f3v5s30 f3v14s39 4.000000
f3v5s30 f0v0s0 39.000000
f3v5s30 f1v12s19 36.000000
f1v8s15 f2v1s23 1.000000
f1v8s15 f4v2s42 37.000000
f1v8s15 f0v4s4 40.000000
f1v8s15 f1v6s13 3.000000
f1v8s15 f3v8s33 33.000000
f1v8s15 f1v1s8 5.000000
f1v8s15 f1v14s21 4.000000
f1v8s15 f0v1s1 40.000000
f1v8s15 f1v5s12 5.000000
f1v8s15 f1v4s11 1.000000
f1v8s15 f1v9s16 4.000000
f1v8s15 f1v10s17 5.000000
f1v8s15 f1v0s7 1.000000
f1v8s15 f3v9s34 33.000000
f1v8s15 f4v0s40 37.000000
f1v8s15 f1v7s14 1.000000
f1v8s15 f3v2s27 33.000000
f1v8s15 f4v1s41 38.000000
f1v8s15 f2v0s22 40.000000
f1v8s15 f1v2s9 40.000000
f1v8s15 f1v3s10 1.000000
f1v8s15 f3v0s25 34.000000
f1v8s15 f3v3s28 35.000000
f1v8s15 f3v13s38 39.000000
f1v8s15 f3v7s32 33.000000
f1v8s15 f3v1s26 33.000000
f1v8s15 f3v6s31 33.000000
f1v8s15 f1v13s20 3.000000
f1v8s15 f2v2s24 32.000000
f1v8s15 f3v11s36 35.000000
f1v8s15 f0v5s5 40.000000
f1v8s15 f1v11s18 2.000000
f1v8s15 f0v6s6 41.000000
f1v8s15 f3v4s29 35.000000
f1v8s15 f0v2s2 40.000000
f1v8s15 f3v12s37 34.000000
f1v8s15 f0v3s3 38.000000
f1v8s15 f3v14s39 34.000000
f1v8s15 f0v0s0 40.000000
f1v8s15 f1v12s19 3.000000
f2v1s23 f4v2s42 35.000000
f2v1s23 f0v4s4 41.000000
f2v1s23 f1v6s13 4.000000
f2v1s23 f3v8s33 34.000000
f2v1s23 f1v1s8 4.000000
f2v1s23 f1v14s21 3.000000
f2v1s23 f0v1s1 41.000000
f2v1s23 f1v5s12 4.000000
f2v1s23 f1v4s11 0.000000
f2v1s23 f1v9s16 3.000000
f2v1s23 f1v10s17 4.000000
f2v1s23 f1v0s7 0.000000
f2v1s23 f3v9s34 34.000000
f2v1s23 f4v0s40 37.000000
f2v1s23 f1v7s14 0.000000
f2v1s23 f3v2s27 34.000000
f2v1s23 f4v1s41 34.000000
f2v1s23 f2v0s22 41.000000
f2v1s23 f1v2s9 41.000000
f2v1s23 f1v3s10 0.000000
f2v1s23 f3v0s25 35.000000
f2v1s23 f3v3s28 36.000000
f2v1s23 f3v13s38 39.000000
f2v1s23 f3v7s32 34.000000
f2v1s23 f3v1s26 34.000000
f2v1s23 f3v6s31 34.000000
f2v1s23 f1v13s20 2.000000
f2v1s23 f2v2s24 33.000000
f2v1s23 f3v11s36 36.000000
f2v1s23 f0v5s5 41.000000
f2v1s23 f1v11s18 1.000000
f2v1s23 f0v6s6 42.000000
f2v1s23 f3v4s29 36.000000
f2v1s23 f0v2s2 41.000000
f2v1s23 f3v12s37 35.000000
f2v1s23 f0v3s3 39.000000
f2v1s23 f3v14s39 35.000000
f2v1s23 f0v0s0 41.000000
f2v1s23 f1v12s19 2.000000
f4v2s42 f0v4s4 36.000000
f4v2s42 f1v6s13 36.000000
f4v2s42 f3v8s33 37.000000
f4v2s42 f1v1s8 39.000000
f4v2s42 f1v14s21 33.000000
f4v2s42 f0v1s1 36.000000
f4v2s42 f1v5s12 36.000000
f4v2s42 f1v4s11 35.000000
f4v2s42 f1v9s16 37.000000
f4v2s42 f1v10s17 40.000000
f4v2s42 f1v0s7 35.000000
f4v2s42 f3v9s34 39.000000
f4v2s42 f4v0s40 2.000000
f4v2s42 f1v7s14 35.000000
f4v2s42 f3v2s27 37.000000
f4v2s42 f4v1s41 3.000000
f4v2s42 f2v0s22 34.000000
f4v2s42 f1v2s9 36.000000
f4v2s42 f1v3s10 35.000000
f4v2s42 f3v0s25 38.000000
f4v2s42 f3v3s28 38.000000
f4v2s42 f3v13s38 41.000000
f4v2s42 f3v7s32 39.000000
f4v2s42 f3v1s26 37.000000
f4v2s42 f3v6s31 39.000000
f4v2s42 f1v13s20 34.000000
f4v2s42 f2v2s24 31.000000
f4v2s42 f3v11s36 37.000000
f4v2s42 f0v5s5 36.000000
f4v2s42 f1v11s18 37.000000
f4v2s42 f0v6s6 35.000000
f4v2s42 f3v4s29 41.000000
f4v2s42 f0v2s2 34.000000
f4v2s42 f3v12s37 39.000000
f4v2s42 f0v3s3 35.000000
f4v2s42 f3v14s39 38.000000
f4v2s42 f0v0s0 35.000000
f4v2s42 f1v12s19 34.000000
f0v4s4 f1v6s13 38.000000
f0v4s4 f3v8s33 40.000000
f0v4s4 f1v1s8 41.000000
f0v4s4 f1v14s21 39.000000
f0v4s4 f0v1s1 0.000000
f0v4s4 f1v5s12 43.000000
f0v4s4 f1v4s11 41.000000
f0v4s4 f1v9s16 40.000000
f0v4s4 f1v10s17 42.000000
f0v4s4 f1v0s7 41.000000
f0v4s4 f3v9s34 40.000000
f0v4s4 f4v0s40 41.000000
f0v4s4 f1v7s14 41.000000
f0v4s4 f3v2s27 40.000000
f0v4s4 f4v1s41 42.000000
f0v4s4 f2v0s22 4.000000
f0v4s4 f1v2s9 0.000000
f0v4s4 f1v3s10 41.000000
f0v4s4 f3v0s25 41.000000
f0v4s4 f3v3s28 40.000000
f0v4s4 f3v13s38 41.000000
f0v4s4 f3v7s32 40.000000
f0v4s4 f3v1s26 42.000000
f0v4s4 f3v6s31 40.000000
f0v4s4 f1v13s20 40.000000
f0v4s4 f2v2s24 37.000000
f0v4s4 f3v11s36 42.000000
f0v4s4 f0v5s5 4.000000
f0v4s4 f1v11s18 39.000000
f0v4s4 f0v6s6 7.000000
f0v4s4 f3v4s29 38.000000
f0v4s4 f0v2s2 4.000000
f0v4s4 f3v12s37 41.000000
f0v4s4 f0v3s3 6.000000
f0v4s4 f3v14s39 41.000000
f0v4s4 f0v0s0 2.000000
f0v4s4 f1v12s19 45.000000
f1v6s13 f3v8s33 33.000000
f1v6s13 f1v1s8 8.000000
f1v6s13 f1v14s21 7.000000
f1v6s13 f0v1s1 38.000000
f1v6s13 f1v5s12 8.000000
f1v6s13 f1v4s11 4.000000
f1v6s13 f1v9s16 7.000000
f1v6s13 f1v10s17 7.000000
f1v6s13 f1v0s7 4.000000
f1v6s13 f3v9s34 33.000000
f1v6s13 f4v0s40 38.000000
f1v6s13 f1v7s14 4.000000
f1v6s13 f3v2s27 32.000000
f1v6s13 f4v1s41 39.000000
f1v6s13 f2v0s22 39.000000
f1v6s13 f1v2s9 38.000000
f1v6s13 f1v3s10 4.000000
f1v6s13 f3v0s25 33.000000
f1v6s13 f3v3s28 34.000000
f1v6s13 f3v13s38 35.000000
f1v6s13 f3v7s32 33.000000
f1v6s13 f3v1s26 32.000000
f1v6s13 f3v6s31 33.000000
f1v6s13 f1v13s20 6.000000
f1v6s13 f2v2s24 32.000000
f1v6s13 f3v11s36 34.000000
f1v6s13 f0v5s5 38.000000
f1v6s13 f1v11s18 5.000000
f1v6s13 f0v6s6 39.000000
f1v6s13 f3v4s29 34.000000
f1v6s13 f0v2s2 39.000000
f1v6s13 f3v12s37 33.000000
f1v6s13 f0v3s3 36.000000
f1v6s13 f3v14s39 33.000000
f1v6s13 f0v0s0 38.000000
f1v6s13 f1v12s19 6.000000
f3v8s33 f1v1s8 33.000000
f3v8s33 f1v14s21 33.000000
f3v8s33 f0v1s1 40.000000
f3v8s33 f1v5s12 35.000000
f3v8s33 f1v4s11 34.000000
f3v8s33 f1v9s16 38.000000
f3v8s33 f1v10s17 32.000000
f3v8s33 f1v0s7 34.000000
f3v8s33 f3v9s34 3.000000
f3v8s33 f4v0s40 42.000000
f3v8s33 f1v7s14 34.000000
f3v8s33 f3v2s27 2.000000
f3v8s33 f4v1s41 43.000000
f3v8s33 f2v0s22 38.000000
f3v8s33 f1v2s9 40.000000
f3v8s33 f1v3s10 34.000000
f3v8s33 f3v0s25 1.000000
f3v8s33 f3v3s28 3.000000
f3v8s33 f3v13s38 3.000000
f3v8s33 f3v7s32 3.000000
f3v8s33 f3v1s26 3.000000
f3v8s33 f3v6s31 3.000000
f3v8s33 f1v13s20 34.000000
f3v8s33 f2v2s24 34.000000
f3v8s33 f3v11s36 5.000000
f3v8s33 f0v5s5 39.000000
f3v8s33 f1v11s18 34.000000
f3v8s33 f0v6s6 43.000000
f3v8s33 f3v4s29 4.000000
f3v8s33 f0v2s2 38.000000
f3v8s33 f3v12s37 3.000000
f3v8s33 f0v3s3 38.000000
f3v8s33 f3v14s39 1.000000
f3v8s33 f0v0s0 38.000000
f3v8s33 f1v12s19 34.000000
f1v1s8 f1v14s21 5.000000
f1v1s8 f0v1s1 41.000000
f1v1s8 f1v5s12 8.000000
f1v1s8 f1v4s11 4.000000
f1v1s8 f1v9s16 7.000000
f1v1s8 f1v10s17 8.000000
f1v1s8 f1v0s7 4.000000
f1v1s8 f3v9s34 32.000000
f1v1s8 f4v0s40 37.000000
f1v1s8 f1v7s14 4.000000
f1v1s8 f3v2s27 32.000000
f1v1s8 f4v1s41 38.000000
f1v1s8 f2v0s22 42.000000
f1v1s8 f1v2s9 41.000000
f1v1s8 f1v3s10 4.000000
f1v1s8 f3v0s25 33.000000
f1v1s8 f3v3s28 34.000000
f1v1s8 f3v13s38 34.000000
f1v1s8 f3v7s32 32.000000
f1v1s8 f3v1s26 31.000000
f1v1s8 f3v6s31 32.000000
f1v1s8 f1v13s20 6.000000
f1v1s8 f2v2s24 36.000000
f1v1s8 f3v11s36 34.000000
f1v1s8 f0v5s5 42.000000
f1v1s8 f1v11s18 5.000000
f1v1s8 f0v6s6 39.000000
f1v1s8 f3v4s29 33.000000
f1v1s8 f0v2s2 42.000000
f1v1s8 f3v12s37 34.000000
f1v1s8 f0v3s3 40.000000
f1v1s8 f3v14s39 33.000000
f1v1s8 f0v0s0 41.000000
f1v1s8 f1v12s19 5.000000
f1v14s21 f0v1s1 39.000000
f1v14s21 f1v5s12 7.000000
f1v14s21 f1v4s11 3.000000
f1v14s21 f1v9s16 6.000000
f1v14s21 f1v10s17 7.000000
f1v14s21 f1v0s7 3.000000
f1v14s21 f3v9s34 32.000000
f1v14s21 f4v0s40 33.000000
f1v14s21 f1v7s14 3.000000
f1v14s21 f3v2s27 32.000000
f1v14s21 f4v1s41 33.000000
f1v14s21 f2v0s22 40.000000
f1v14s21 f1v2s9 39.000000
f1v14s21 f1v3s10 3.000000
f1v14s21 f3v0s25 33.000000
f1v14s21 f3v3s28 34.000000
f1v14s21 f3v13s38 35.000000
f1v14s21 f3v7s32 32.000000
f1v14s21 f3v1s26 31.000000
f1v14s21 f3v6s31 32.000000
f1v14s21 f1v13s20 5.000000
f1v14s21 f2v2s24 31.000000
f1v14s21 f3v11s36 36.000000
f1v14s21 f0v5s5 39.000000
f1v14s21 f1v11s18 4.000000
f1v14s21 f0v6s6 37.000000
f1v14s21 f3v4s29 34.000000
f1v14s21 f0v2s2 40.000000
f1v14s21 f3v12s37 34.000000
f1v14s21 f0v3s3 37.000000
f1v14s21 f3v14s39 33.000000
f1v14s21 f0v0s0 39.000000
f1v14s21 f1v12s19 5.000000
f0v1s1 f1v5s12 43.000000
f0v1s1 f1v4s11 41.000000
f0v1s1 f1v9s16 40.000000
f0v1s1 f1v10s17 42.000000
f0v1s1 f1v0s7 41.000000
f0v1s1 f3v9s34 40.000000
f0v1s1 f4v0s40 41.000000
f0v1s1 f1v7s14 41.000000
f0v1s1 f3v2s27 40.000000
f0v1s1 f4v1s41 42.000000
f0v1s1 f2v0s22 4.000000
f0v1s1 f1v2s9 0.000000
f0v1s1 f1v3s10 41.000000
f0v1s1 f3v0s25 41.000000
f0v1s1 f3v3s28 40.000000
f0v1s1 f3v13s38 41.000000
f0v1s1 f3v7s32 40.000000
f0v1s1 f3v1s26 42.000000
f0v1s1 f3v6s31 40.000000
f0v1s1 f1v13s20 40.000000
f0v1s1 f2v2s24 37.000000
f0v1s1 f3v11s36 42.000000
f0v1s1 f0v5s5 4.000000
f0v1s1 f1v11s18 39.000000
f0v1s1 f0v6s6 7.000000
f0v1s1 f3v4s29 38.000000
f0v1s1 f0v2s2 4.000000
f0v1s1 f3v12s37 41.000000
f0v1s1 f0v3s3 6.000000
f0v1s1 f3v14s39 41.000000
f0v1s1 f0v0s0 2.000000
f0v1s1 f1v12s19 45.000000
f1v5s12 f1v4s11 4.000000
f1v5s12 f1v9s16 7.000000
f1v5s12 f1v10s17 7.000000
f1v5s12 f1v0s7 4.000000
f1v5s12 f3v9s34 35.000000
f1v5s12 f4v0s40 37.000000
f1v5s12 f1v7s14 4.000000
f1v5s12 f3v2s27 35.000000
f1v5s12 f4v1s41 38.000000
f1v5s12 f2v0s22 43.000000
f1v5s12 f1v2s9 43.000000
f1v5s12 f1v3s10 4.000000
f1v5s12 f3v0s25 36.000000
f1v5s12 f3v3s28 37.000000
f1v5s12 f3v13s38 38.000000
f1v5s12 f3v7s32 35.000000
f1v5s12 f3v1s26 35.000000
f1v5s12 f3v6s31 35.000000
f1v5s12 f1v13s20 6.000000
f1v5s12 f2v2s24 36.000000
f1v5s12 f3v11s36 35.000000
f1v5s12 f0v5s5 41.000000
f1v5s12 f1v11s18 5.000000
f1v5s12 f0v6s6 43.000000
f1v5s12 f3v4s29 38.000000
f1v5s12 f0v2s2 43.000000
f1v5s12 f3v12s37 35.000000
f1v5s12 f0v3s3 40.000000
f1v5s12 f3v14s39 36.000000
f1v5s12 f0v0s0 43.000000
f1v5s12 f1v12s19 5.000000
f1v4s11 f1v9s16 3.000000
f1v4s11 f1v10s17 4.000000
f1v4s11 f1v0s7 0.000000
f1v4s11 f3v9s34 34.000000
f1v4s11 f4v0s40 37.000000
f1v4s11 f1v7s14 0.000000
f1v4s11 f3v2s27 34.000000
f1v4s11 f4v1s41 34.000000
f1v4s11 f2v0s22 41.000000
f1v4s11 f1v2s9 41.000000
f1v4s11 f1v3s10 0.000000
f1v4s11 f3v0s25 35.000000
f1v4s11 f3v3s28 36.000000
f1v4s11 f3v13s38 39.000000
f1v4s11 f3v7s32 34.000000
f1v4s11 f3v1s26 34.000000
f1v4s11 f3v6s31 34.000000
f1v4s11 f1v13s20 2.000000
f1v4s11 f2v2s24 33.000000
f1v4s11 f3v11s36 36.000000
f1v4s11 f0v5s5 41.000000
f1v4s11 f1v11s18 1.000000
f1v4s11 f0v6s6 42.000000
f1v4s11 f3v4s29 36.000000
f1v4s11 f0v2s2 41.000000
f1v4s11 f3v12s37 35.000000
f1v4s11 f0v3s3 39.000000
f1v4s11 f3v14s39 35.000000
f1v4s11 f0v0s0 41.000000
f1v4s11 f1v12s19 2.000000
f1v9s16 f1v10s17 7.000000
f1v9s16 f1v0s7 3.000000
f1v9s16 f3v9s34 35.000000
f1v9s16 f4v0s40 37.000000
f1v9s16 f1v7s14 3.000000
f1v9s16 f3v2s27 37.000000
f1v9s16 f4v1s41 34.000000
f1v9s16 f2v0s22 41.000000
f1v9s16 f1v2s9 40.000000
f1v9s16 f1v3s10 3.000000
f1v9s16 f3v0s25 38.000000
f1v9s16 f3v3s28 39.000000
f1v9s16 f3v13s38 39.000000
f1v9s16 f3v7s32 35.000000
f1v9s16 f3v1s26 35.000000
f1v9s16 f3v6s31 35.000000
f1v9s16 f1v13s20 5.000000
f1v9s16 f2v2s24 35.000000
f1v9s16 f3v11s36 39.000000
f1v9s16 f0v5s5 40.000000
f1v9s16 f1v11s18 4.000000
f1v9s16 f0v6s6 42.000000
f1v9s16 f3v4s29 38.000000
f1v9s16 f0v2s2 41.000000
f1v9s16 f3v12s37 39.000000
f1v9s16 f0v3s3 38.000000
f1v9s16 f3v14s39 38.000000
f1v9s16 f0v0s0 40.000000
f1v9s16 f1v12s19 5.000000
f1v10s17 f1v0s7 4.000000
f1v10s17 f3v9s34 32.000000
f1v10s17 f4v0s40 39.000000
f1v10s17 f1v7s14 4.000000
f1v10s17 f3v2s27 32.000000
f1v10s17 f4v1s41 40.000000
f1v10s17 f2v0s22 43.000000
f1v10s17 f1v2s9 42.000000
f1v10s17 f1v3s10 4.000000
f1v10s17 f3v0s25 33.000000
f1v10s17 f3v3s28 37.000000
f1v10s17 f3v13s38 38.000000
f1v10s17 f3v7s32 32.000000
f1v10s17 f3v1s26 33.000000
f1v10s17 f3v6s31 32.000000
f1v10s17 f1v13s20 6.000000
f1v10s17 f2v2s24 34.000000
f1v10s17 f3v11s36 35.000000
f1v10s17 f0v5s5 42.000000
f1v10s17 f1v11s18 5.000000
f1v10s17 f0v6s6 45.000000
f1v10s17 f3v4s29 35.000000
f1v10s17 f0v2s2 43.000000
f1v10s17 f3v12s37 32.000000
f1v10s17 f0v3s3 40.000000
f1v10s17 f3v14s39 33.000000
f1v10s17 f0v0s0 42.000000
f1v10s17 f1v12s19 5.000000
f1v0s7 f3v9s34 34.000000
f1v0s7 f4v0s40 37.000000
f1v0s7 f1v7s14 0.000000
f1v0s7 f3v2s27 34.000000
f1v0s7 f4v1s41 34.000000
f1v0s7 f2v0s22 41.000000
f1v0s7 f1v2s9 41.000000
f1v0s7 f1v3s10 0.000000
f1v0s7 f3v0s25 35.000000
f1v0s7 f3v3s28 36.000000
f1v0s7 f3v13s38 39.000000
f1v0s7 f3v7s32 34.000000
f1v0s7 f3v1s26 34.000000
f1v0s7 f3v6s31 34.000000
f1v0s7 f1v13s20 2.000000
f1v0s7 f2v2s24 33.000000
f1v0s7 f3v11s36 36.000000
f1v0s7 f0v5s5 41.000000
f1v0s7 f1v11s18 1.000000
f1v0s7 f0v6s6 42.000000
f1v0s7 f3v4s29 36.000000
f1v0s7 f0v2s2 41.000000
f1v0s7 f3v12s37 35.000000
f1v0s7 f0v3s3 39.000000
f1v0s7 f3v14s39 35.000000
f1v0s7 f0v0s0 41.000000
f1v0s7 f1v12s19 2.000000
f3v9s34 f4v0s40 39.000000
f3v9s34 f1v7s14 34.000000
f3v9s34 f3v2s27 3.000000
f3v9s34 f4v1s41 38.000000
f3v9s34 f2v0s22 38.000000
f3v9s34 f1v2s9 40.000000
f3v9s34 f1v3s10 34.000000
f3v9s34 f3v0s25 2.000000
f3v9s34 f3v3s28 4.000000
f3v9s34 f3v13s38 4.000000
f3v9s34 f3v7s32 0.000000
f3v9s34 f3v1s26 4.000000
f3v9s34 f3v6s31 0.000000
f3v9s34 f1v13s20 34.000000
f3v9s34 f2v2s24 33.000000
f3v9s34 f3v11s36 6.000000
f3v9s34 f0v5s5 38.000000
f3v9s34 f1v11s18 34.000000
f3v9s34 f0v6s6 41.000000
f3v9s34 f3v4s29 5.000000
f3v9s34 f0v2s2 38.000000
f3v9s34 f3v12s37 4.000000
f3v9s34 f0v3s3 39.000000
f3v9s34 f3v14s39 2.000000
f3v9s34 f0v0s0 38.000000
f3v9s34 f1v12s19 34.000000
f4v0s40 f1v7s14 37.000000
f4v0s40 f3v2s27 37.000000
f4v0s40 f4v1s41 1.000000
f4v0s40 f2v0s22 36.000000
f4v0s40 f1v2s9 41.000000
f4v0s40 f1v3s10 37.000000
f4v0s40 f3v0s25 38.000000
f4v0s40 f3v3s28 38.000000
f4v0s40 f3v13s38 41.000000
f4v0s40 f3v7s32 39.000000
f4v0s40 f3v1s26 37.000000
f4v0s40 f3v6s31 39.000000
f4v0s40 f1v13s20 35.000000
f4v0s40 f2v2s24 32.000000
f4v0s40 f3v11s36 37.000000
f4v0s40 f0v5s5 37.000000
f4v0s40 f1v11s18 39.000000
f4v0s40 f0v6s6 36.000000
f4v0s40 f3v4s29 42.000000
f4v0s40 f0v2s2 36.000000
f4v0s40 f3v12s37 39.000000
f4v0s40 f0v3s3 36.000000
f4v0s40 f3v14s39 38.000000
f4v0s40 f0v0s0 36.000000
f4v0s40 f1v12s19 34.000000
f1v7s14 f3v2s27 34.000000
f1v7s14 f4v1s41 34.000000
f1v7s14 f2v0s22 41.000000
f1v7s14 f1v2s9 41.000000
f1v7s14 f1v3s10 0.000000
f1v7s14 f3v0s25 35.000000
f1v7s14 f3v3s28 36.000000
f1v7s14 f3v13s38 39.000000
f1v7s14 f3v7s32 34.000000
f1v7s14 f3v1s26 34.000000
f1v7s14 f3v6s31 34.000000
f1v7s14 f1v13s20 2.000000
f1v7s14 f2v2s24 33.000000
f1v7s14 f3v11s36 36.000000
f1v7s14 f0v5s5 41.000000
f1v7s14 f1v11s18 1.000000
f1v7s14 f0v6s6 42.000000
f1v7s14 f3v4s29 36.000000
f1v7s14 f0v2s2 41.000000
f1v7s14 f3v12s37 35.000000
f1v7s14 f0v3s3 39.000000
f1v7s14 f3v14s39 35.000000
f1v7s14 f0v0s0 41.000000
f1v7s14 f1v12s19 2.000000
f3v2s27 f4v1s41 38.000000
f3v2s27 f2v0s22 37.000000
f3v2s27 f1v2s9 40.000000
f3v2s27 f1v3s10 34.000000
f3v2s27 f3v0s25 1.000000
f3v2s27 f3v3s28 3.000000
f3v2s27 f3v13s38 3.000000
f3v2s27 f3v7s32 3.000000
f3v2s27 f3v1s26 2.000000
f3v2s27 f3v6s31 3.000000
f3v2s27 f1v13s20 34.000000
f3v2s27 f2v2s24 34.000000
f3v2s27 f3v11s36 5.000000
f3v2s27 f0v5s5 38.000000
f3v2s27 f1v11s18 34.000000
f3v2s27 f0v6s6 42.000000
f3v2s27 f3v4s29 4.000000
f3v2s27 f0v2s2 37.000000
f3v2s27 f3v12s37 3.000000
f3v2s27 f0v3s3 39.000000
f3v2s27 f3v14s39 1.000000
f3v2s27 f0v0s0 38.000000
f3v2s27 f1v12s19 34.000000
f4v1s41 f2v0s22 37.000000
f4v1s41 f1v2s9 42.000000
f4v1s41 f1v3s10 34.000000
f4v1s41 f3v0s25 39.000000
f4v1s41 f3v3s28 39.000000
f4v1s41 f3v13s38 42.000000
f4v1s41 f3v7s32 38.000000
f4v1s41 f3v1s26 38.000000
f4v1s41 f3v6s31 38.000000
f4v1s41 f1v13s20 33.000000
f4v1s41 f2v2s24 33.000000
f4v1s41 f3v11s36 37.000000
f4v1s41 f0v5s5 38.000000
f4v1s41 f1v11s18 36.000000
f4v1s41 f0v6s6 37.000000
f4v1s41 f3v4s29 43.000000
f4v1s41 f0v2s2 37.000000
f4v1s41 f3v12s37 40.000000
f4v1s41 f0v3s3 37.000000
f4v1s41 f3v14s39 39.000000
f4v1s41 f0v0s0 37.000000
f4v1s41 f1v12s19 34.000000
f2v0s22 f1v2s9 4.000000
f2v0s22 f1v3s10 41.000000
f2v0s22 f3v0s25 38.000000
f2v0s22 f3v3s28 37.000000
f2v0s22 f3v13s38 39.000000
f2v0s22 f3v7s32 38.000000
f2v0s22 f3v1s26 39.000000
f2v0s22 f3v6s31 38.000000
f2v0s22 f1v13s20 40.000000
f2v0s22 f2v2s24 37.000000
f2v0s22 f3v11s36 40.000000
f2v0s22 f0v5s5 4.000000
f2v0s22 f1v11s18 39.000000
f2v0s22 f0v6s6 7.000000
f2v0s22 f3v4s29 35.000000
f2v0s22 f0v2s2 0.000000
f2v0s22 f3v12s37 38.000000
f2v0s22 f0v3s3 6.000000
f2v0s22 f3v14s39 38.000000
f2v0s22 f0v0s0 2.000000
f2v0s22 f1v12s19 41.000000
f1v2s9 f1v3s10 41.000000
f1v2s9 f3v0s25 41.000000
f1v2s9 f3v3s28 40.000000
f1v2s9 f3v13s38 41.000000
f1v2s9 f3v7s32 40.000000
f1v2s9 f3v1s26 42.000000
f1v2s9 f3v6s31 40.000000
f1v2s9 f1v13s20 40.000000
f1v2s9 f2v2s24 37.000000
f1v2s9 f3v11s36 42.000000
f1v2s9 f0v5s5 4.000000
f1v2s9 f1v11s18 39.000000
f1v2s9 f0v6s6 7.000000
f1v2s9 f3v4s29 38.000000
f1v2s9 f0v2s2 4.000000
f1v2s9 f3v12s37 41.000000
f1v2s9 f0v3s3 6.000000
f1v2s9 f3v14s39 41.000000
f1v2s9 f0v0s0 2.000000
f1v2s9 f1v12s19 45.000000
f1v3s10 f3v0s25 35.000000
f1v3s10 f3v3s28 36.000000
f1v3s10 f3v13s38 39.000000
f1v3s10 f3v7s32 34.000000
f1v3s10 f3v1s26 34.000000
f1v3s10 f3v6s31 34.000000
f1v3s10 f1v13s20 2.000000
f1v3s10 f2v2s24 33.000000
f1v3s10 f3v11s36 36.000000
f1v3s10 f0v5s5 41.000000
f1v3s10 f1v11s18 1.000000
f1v3s10 f0v6s6 42.000000
f1v3s10 f3v4s29 36.000000
f1v3s10 f0v2s2 41.000000
f1v3s10 f3v12s37 35.000000
f1v3s10 f0v3s3 39.000000
f1v3s10 f3v14s39 35.000000
f1v3s10 f0v0s0 41.000000
f1v3s10 f1v12s19 2.000000
f3v0s25 f3v3s28 2.000000
f3v0s25 f3v13s38 2.000000
f3v0s25 f3v7s32 2.000000
f3v0s25 f3v1s26 2.000000
f3v0s25 f3v6s31 2.000000
f3v0s25 f1v13s20 35.000000
f3v0s25 f2v2s24 33.000000
f3v0s25 f3v11s36 4.000000
f3v0s25 f0v5s5 39.000000
f3v0s25 f1v11s18 35.000000
f3v0s25 f0v6s6 43.000000
f3v0s25 f3v4s29 3.000000
f3v0s25 f0v2s2 38.000000
f3v0s25 f3v12s37 2.000000
f3v0s25 f0v3s3 40.000000
f3v0s25 f3v14s39 0.000000
f3v0s25 f0v0s0 39.000000
f3v0s25 f1v12s19 35.000000
f3v3s28 f3v13s38 3.000000
f3v3s28 f3v7s32 4.000000
f3v3s28 f3v1s26 4.000000
f3v3s28 f3v6s31 4.000000
f3v3s28 f1v13s20 36.000000
f3v3s28 f2v2s24 33.000000
f3v3s28 f3v11s36 6.000000
f3v3s28 f0v5s5 39.000000
f3v3s28 f1v11s18 38.000000
f3v3s28 f0v6s6 42.000000
f3v3s28 f3v4s29 4.000000
f3v3s28 f0v2s2 37.000000
f3v3s28 f3v12s37 4.000000
f3v3s28 f0v3s3 39.000000
f3v3s28 f3v14s39 2.000000
f3v3s28 f0v0s0 38.000000
f3v3s28 f1v12s19 38.000000
f3v13s38 f3v7s32 4.000000
f3v13s38 f3v1s26 4.000000
f3v13s38 f3v6s31 4.000000
f3v13s38 f1v13s20 39.000000
f3v13s38 f2v2s24 34.000000
f3v13s38 f3v11s36 6.000000
f3v13s38 f0v5s5 39.000000
f3v13s38 f1v11s18 39.000000
f3v13s38 f0v6s6 43.000000
f3v13s38 f3v4s29 4.000000
f3v13s38 f0v2s2 39.000000
f3v13s38 f3v12s37 4.000000
f3v13s38 f0v3s3 40.000000
f3v13s38 f3v14s39 2.000000
f3v13s38 f0v0s0 39.000000
f3v13s38 f1v12s19 35.000000
f3v7s32 f3v1s26 4.000000
f3v7s32 f3v6s31 0.000000
f3v7s32 f1v13s20 34.000000
f3v7s32 f2v2s24 33.000000
f3v7s32 f3v11s36 6.000000
f3v7s32 f0v5s5 38.000000
f3v7s32 f1v11s18 34.000000
f3v7s32 f0v6s6 41.000000
f3v7s32 f3v4s29 5.000000
f3v7s32 f0v2s2 38.000000
f3v7s32 f3v12s37 4.000000
f3v7s32 f0v3s3 39.000000
f3v7s32 f3v14s39 2.000000
f3v7s32 f0v0s0 38.000000
f3v7s32 f1v12s19 34.000000
f3v1s26 f3v6s31 4.000000
f3v1s26 f1v13s20 34.000000
f3v1s26 f2v2s24 33.000000
f3v1s26 f3v11s36 6.000000
f3v1s26 f0v5s5 40.000000
f3v1s26 f1v11s18 37.000000
f3v1s26 f0v6s6 44.000000
f3v1s26 f3v4s29 5.000000
f3v1s26 f0v2s2 39.000000
f3v1s26 f3v12s37 4.000000
f3v1s26 f0v3s3 39.000000
f3v1s26 f3v14s39 2.000000
f3v1s26 f0v0s0 40.000000
f3v1s26 f1v12s19 34.000000
f3v6s31 f1v13s20 34.000000
f3v6s31 f2v2s24 33.000000
f3v6s31 f3v11s36 6.000000
f3v6s31 f0v5s5 38.000000
f3v6s31 f1v11s18 34.000000
f3v6s31 f0v6s6 41.000000
f3v6s31 f3v4s29 5.000000
f3v6s31 f0v2s2 38.000000
f3v6s31 f3v12s37 4.000000
f3v6s31 f0v3s3 39.000000
f3v6s31 f3v14s39 2.000000
f3v6s31 f0v0s0 38.000000
f3v6s31 f1v12s19 34.000000
f1v13s20 f2v2s24 31.000000
f1v13s20 f3v11s36 36.000000
f1v13s20 f0v5s5 39.000000
f1v13s20 f1v11s18 3.000000
f1v13s20 f0v6s6 41.000000
f1v13s20 f3v4s29 36.000000
f1v13s20 f0v2s2 40.000000
f1v13s20 f3v12s37 35.000000
f1v13s20 f0v3s3 38.000000
f1v13s20 f3v14s39 35.000000
f1v13s20 f0v0s0 40.000000
f1v13s20 f1v12s19 4.000000
f2v2s24 f3v11s36 33.000000
f2v2s24 f0v5s5 41.000000
f2v2s24 f1v11s18 33.000000
f2v2s24 f0v6s6 38.000000
f2v2s24 f3v4s29 34.000000
f2v2s24 f0v2s2 37.000000
f2v2s24 f3v12s37 33.000000
f2v2s24 f0v3s3 35.000000
f2v2s24 f3v14s39 33.000000
f2v2s24 f0v0s0 37.000000
f2v2s24 f1v12s19 33.000000
f3v11s36 f0v5s5 43.000000
f3v11s36 f1v11s18 36.000000
f3v11s36 f0v6s6 44.000000
f3v11s36 f3v4s29 7.000000
f3v11s36 f0v2s2 40.000000
f3v11s36 f3v12s37 6.000000
f3v11s36 f0v3s3 41.000000
f3v11s36 f3v14s39 4.000000
f3v11s36 f0v0s0 40.000000
f3v11s36 f1v12s19 36.000000
f0v5s5 f1v11s18 40.000000
f0v5s5 f0v6s6 7.000000
f0v5s5 f3v4s29 36.000000
f0v5s5 f0v2s2 4.000000
f0v5s5 f3v12s37 40.000000
f0v5s5 f0v3s3 6.000000
f0v5s5 f3v14s39 39.000000
f0v5s5 f0v0s0 2.000000
f0v5s5 f1v12s19 42.000000
f1v11s18 f0v6s6 39.000000
f1v11s18 f3v4s29 36.000000
f1v11s18 f0v2s2 39.000000
f1v11s18 f3v12s37 35.000000
f1v11s18 f0v3s3 37.000000
f1v11s18 f3v14s39 35.000000
f1v11s18 f0v0s0 39.000000
f1v11s18 f1v12s19 3.000000
f0v6s6 f3v4s29 40.000000
f0v6s6 f0v2s2 7.000000
f0v6s6 f3v12s37 44.000000
f0v6s6 f0v3s3 9.000000
f0v6s6 f3v14s39 43.000000
f0v6s6 f0v0s0 5.000000
f0v6s6 f1v12s19 45.000000
f3v4s29 f0v2s2 35.000000
f3v4s29 f3v12s37 5.000000
f3v4s29 f0v3s3 38.000000
f3v4s29 f3v14s39 3.000000
f3v4s29 f0v0s0 36.000000
f3v4s29 f1v12s19 36.000000
f0v2s2 f3v12s37 38.000000
f0v2s2 f0v3s3 6.000000
f0v2s2 f3v14s39 38.000000
f0v2s2 f0v0s0 2.000000
f0v2s2 f1v12s19 41.000000
f3v12s37 f0v3s3 41.000000
f3v12s37 f3v14s39 2.000000
f3v12s37 f0v0s0 39.000000
f3v12s37 f1v12s19 35.000000
f0v3s3 f3v14s39 40.000000
f0v3s3 f0v0s0 4.000000
f0v3s3 f1v12s19 40.000000
f3v14s39 f0v0s0 39.000000
f3v14s39 f1v12s19 35.000000
f0v0s0 f1v12s19 45.000000
+903
View File
@@ -0,0 +1,903 @@
f3v10s35 f3v5s30 58.000000
f3v10s35 f1v8s15 37.000000
f3v10s35 f2v1s23 38.000000
f3v10s35 f4v2s42 38.000000
f3v10s35 f0v4s4 40.000000
f3v10s35 f1v6s13 37.000000
f3v10s35 f3v8s33 61.000000
f3v10s35 f1v1s8 39.000000
f3v10s35 f1v14s21 38.000000
f3v10s35 f0v1s1 40.000000
f3v10s35 f1v5s12 38.000000
f3v10s35 f1v4s11 38.000000
f3v10s35 f1v9s16 39.000000
f3v10s35 f1v10s17 39.000000
f3v10s35 f1v0s7 38.000000
f3v10s35 f3v9s34 61.000000
f3v10s35 f4v0s40 38.000000
f3v10s35 f1v7s14 38.000000
f3v10s35 f3v2s27 61.000000
f3v10s35 f4v1s41 38.000000
f3v10s35 f2v0s22 40.000000
f3v10s35 f1v2s9 40.000000
f3v10s35 f1v3s10 38.000000
f3v10s35 f3v0s25 62.000000
f3v10s35 f3v3s28 61.000000
f3v10s35 f3v13s38 62.000000
f3v10s35 f3v7s32 61.000000
f3v10s35 f3v1s26 61.000000
f3v10s35 f3v6s31 61.000000
f3v10s35 f1v13s20 37.000000
f3v10s35 f2v2s24 35.000000
f3v10s35 f3v11s36 59.000000
f3v10s35 f0v5s5 39.000000
f3v10s35 f1v11s18 38.000000
f3v10s35 f0v6s6 38.000000
f3v10s35 f3v4s29 61.000000
f3v10s35 f0v2s2 40.000000
f3v10s35 f3v12s37 61.000000
f3v10s35 f0v3s3 40.000000
f3v10s35 f3v14s39 62.000000
f3v10s35 f0v0s0 40.000000
f3v10s35 f1v12s19 37.000000
f3v5s30 f1v8s15 38.000000
f3v5s30 f2v1s23 38.000000
f3v5s30 f4v2s42 37.000000
f3v5s30 f0v4s4 39.000000
f3v5s30 f1v6s13 39.000000
f3v5s30 f3v8s33 61.000000
f3v5s30 f1v1s8 39.000000
f3v5s30 f1v14s21 37.000000
f3v5s30 f0v1s1 39.000000
f3v5s30 f1v5s12 38.000000
f3v5s30 f1v4s11 38.000000
f3v5s30 f1v9s16 38.000000
f3v5s30 f1v10s17 39.000000
f3v5s30 f1v0s7 38.000000
f3v5s30 f3v9s34 60.000000
f3v5s30 f4v0s40 37.000000
f3v5s30 f1v7s14 38.000000
f3v5s30 f3v2s27 61.000000
f3v5s30 f4v1s41 37.000000
f3v5s30 f2v0s22 40.000000
f3v5s30 f1v2s9 39.000000
f3v5s30 f1v3s10 38.000000
f3v5s30 f3v0s25 62.000000
f3v5s30 f3v3s28 61.000000
f3v5s30 f3v13s38 62.000000
f3v5s30 f3v7s32 60.000000
f3v5s30 f3v1s26 61.000000
f3v5s30 f3v6s31 60.000000
f3v5s30 f1v13s20 38.000000
f3v5s30 f2v2s24 34.000000
f3v5s30 f3v11s36 59.000000
f3v5s30 f0v5s5 39.000000
f3v5s30 f1v11s18 38.000000
f3v5s30 f0v6s6 41.000000
f3v5s30 f3v4s29 61.000000
f3v5s30 f0v2s2 40.000000
f3v5s30 f3v12s37 61.000000
f3v5s30 f0v3s3 40.000000
f3v5s30 f3v14s39 62.000000
f3v5s30 f0v0s0 40.000000
f3v5s30 f1v12s19 37.000000
f1v8s15 f2v1s23 57.000000
f1v8s15 f4v2s42 34.000000
f1v8s15 f0v4s4 38.000000
f1v8s15 f1v6s13 54.000000
f1v8s15 f3v8s33 39.000000
f1v8s15 f1v1s8 55.000000
f1v8s15 f1v14s21 54.000000
f1v8s15 f0v1s1 38.000000
f1v8s15 f1v5s12 55.000000
f1v8s15 f1v4s11 57.000000
f1v8s15 f1v9s16 56.000000
f1v8s15 f1v10s17 55.000000
f1v8s15 f1v0s7 57.000000
f1v8s15 f3v9s34 40.000000
f1v8s15 f4v0s40 35.000000
f1v8s15 f1v7s14 57.000000
f1v8s15 f3v2s27 39.000000
f1v8s15 f4v1s41 35.000000
f1v8s15 f2v0s22 39.000000
f1v8s15 f1v2s9 38.000000
f1v8s15 f1v3s10 57.000000
f1v8s15 f3v0s25 39.000000
f1v8s15 f3v3s28 39.000000
f1v8s15 f3v13s38 40.000000
f1v8s15 f3v7s32 40.000000
f1v8s15 f3v1s26 39.000000
f1v8s15 f3v6s31 40.000000
f1v8s15 f1v13s20 55.000000
f1v8s15 f2v2s24 34.000000
f1v8s15 f3v11s36 39.000000
f1v8s15 f0v5s5 39.000000
f1v8s15 f1v11s18 56.000000
f1v8s15 f0v6s6 38.000000
f1v8s15 f3v4s29 40.000000
f1v8s15 f0v2s2 39.000000
f1v8s15 f3v12s37 40.000000
f1v8s15 f0v3s3 39.000000
f1v8s15 f3v14s39 39.000000
f1v8s15 f0v0s0 39.000000
f1v8s15 f1v12s19 55.000000
f2v1s23 f4v2s42 34.000000
f2v1s23 f0v4s4 38.000000
f2v1s23 f1v6s13 54.000000
f2v1s23 f3v8s33 39.000000
f2v1s23 f1v1s8 56.000000
f2v1s23 f1v14s21 55.000000
f2v1s23 f0v1s1 38.000000
f2v1s23 f1v5s12 56.000000
f2v1s23 f1v4s11 58.000000
f2v1s23 f1v9s16 57.000000
f2v1s23 f1v10s17 56.000000
f2v1s23 f1v0s7 58.000000
f2v1s23 f3v9s34 40.000000
f2v1s23 f4v0s40 35.000000
f2v1s23 f1v7s14 58.000000
f2v1s23 f3v2s27 39.000000
f2v1s23 f4v1s41 35.000000
f2v1s23 f2v0s22 39.000000
f2v1s23 f1v2s9 38.000000
f2v1s23 f1v3s10 58.000000
f2v1s23 f3v0s25 39.000000
f2v1s23 f3v3s28 39.000000
f2v1s23 f3v13s38 40.000000
f2v1s23 f3v7s32 40.000000
f2v1s23 f3v1s26 39.000000
f2v1s23 f3v6s31 40.000000
f2v1s23 f1v13s20 56.000000
f2v1s23 f2v2s24 34.000000
f2v1s23 f3v11s36 39.000000
f2v1s23 f0v5s5 39.000000
f2v1s23 f1v11s18 57.000000
f2v1s23 f0v6s6 38.000000
f2v1s23 f3v4s29 40.000000
f2v1s23 f0v2s2 39.000000
f2v1s23 f3v12s37 40.000000
f2v1s23 f0v3s3 39.000000
f2v1s23 f3v14s39 39.000000
f2v1s23 f0v0s0 39.000000
f2v1s23 f1v12s19 56.000000
f4v2s42 f0v4s4 39.000000
f4v2s42 f1v6s13 33.000000
f4v2s42 f3v8s33 37.000000
f4v2s42 f1v1s8 36.000000
f4v2s42 f1v14s21 33.000000
f4v2s42 f0v1s1 39.000000
f4v2s42 f1v5s12 34.000000
f4v2s42 f1v4s11 34.000000
f4v2s42 f1v9s16 36.000000
f4v2s42 f1v10s17 35.000000
f4v2s42 f1v0s7 34.000000
f4v2s42 f3v9s34 35.000000
f4v2s42 f4v0s40 59.000000
f4v2s42 f1v7s14 34.000000
f4v2s42 f3v2s27 36.000000
f4v2s42 f4v1s41 59.000000
f4v2s42 f2v0s22 41.000000
f4v2s42 f1v2s9 39.000000
f4v2s42 f1v3s10 34.000000
f4v2s42 f3v0s25 36.000000
f4v2s42 f3v3s28 36.000000
f4v2s42 f3v13s38 37.000000
f4v2s42 f3v7s32 35.000000
f4v2s42 f3v1s26 36.000000
f4v2s42 f3v6s31 35.000000
f4v2s42 f1v13s20 33.000000
f4v2s42 f2v2s24 35.000000
f4v2s42 f3v11s36 36.000000
f4v2s42 f0v5s5 40.000000
f4v2s42 f1v11s18 34.000000
f4v2s42 f0v6s6 41.000000
f4v2s42 f3v4s29 38.000000
f4v2s42 f0v2s2 41.000000
f4v2s42 f3v12s37 37.000000
f4v2s42 f0v3s3 39.000000
f4v2s42 f3v14s39 36.000000
f4v2s42 f0v0s0 40.000000
f4v2s42 f1v12s19 33.000000
f0v4s4 f1v6s13 37.000000
f0v4s4 f3v8s33 41.000000
f0v4s4 f1v1s8 38.000000
f0v4s4 f1v14s21 38.000000
f0v4s4 f0v1s1 69.000000
f0v4s4 f1v5s12 39.000000
f0v4s4 f1v4s11 38.000000
f0v4s4 f1v9s16 39.000000
f0v4s4 f1v10s17 39.000000
f0v4s4 f1v0s7 38.000000
f0v4s4 f3v9s34 40.000000
f0v4s4 f4v0s40 38.000000
f0v4s4 f1v7s14 38.000000
f0v4s4 f3v2s27 40.000000
f0v4s4 f4v1s41 38.000000
f0v4s4 f2v0s22 67.000000
f0v4s4 f1v2s9 69.000000
f0v4s4 f1v3s10 38.000000
f0v4s4 f3v0s25 40.000000
f0v4s4 f3v3s28 40.000000
f0v4s4 f3v13s38 40.000000
f0v4s4 f3v7s32 40.000000
f0v4s4 f3v1s26 39.000000
f0v4s4 f3v6s31 40.000000
f0v4s4 f1v13s20 37.000000
f0v4s4 f2v2s24 35.000000
f0v4s4 f3v11s36 37.000000
f0v4s4 f0v5s5 67.000000
f0v4s4 f1v11s18 38.000000
f0v4s4 f0v6s6 64.000000
f0v4s4 f3v4s29 42.000000
f0v4s4 f0v2s2 67.000000
f0v4s4 f3v12s37 40.000000
f0v4s4 f0v3s3 65.000000
f0v4s4 f3v14s39 40.000000
f0v4s4 f0v0s0 68.000000
f0v4s4 f1v12s19 38.000000
f1v6s13 f3v8s33 39.000000
f1v6s13 f1v1s8 52.000000
f1v6s13 f1v14s21 51.000000
f1v6s13 f0v1s1 37.000000
f1v6s13 f1v5s12 52.000000
f1v6s13 f1v4s11 54.000000
f1v6s13 f1v9s16 53.000000
f1v6s13 f1v10s17 53.000000
f1v6s13 f1v0s7 54.000000
f1v6s13 f3v9s34 39.000000
f1v6s13 f4v0s40 34.000000
f1v6s13 f1v7s14 54.000000
f1v6s13 f3v2s27 39.000000
f1v6s13 f4v1s41 34.000000
f1v6s13 f2v0s22 38.000000
f1v6s13 f1v2s9 37.000000
f1v6s13 f1v3s10 54.000000
f1v6s13 f3v0s25 39.000000
f1v6s13 f3v3s28 39.000000
f1v6s13 f3v13s38 39.000000
f1v6s13 f3v7s32 39.000000
f1v6s13 f3v1s26 39.000000
f1v6s13 f3v6s31 39.000000
f1v6s13 f1v13s20 52.000000
f1v6s13 f2v2s24 33.000000
f1v6s13 f3v11s36 39.000000
f1v6s13 f0v5s5 38.000000
f1v6s13 f1v11s18 53.000000
f1v6s13 f0v6s6 38.000000
f1v6s13 f3v4s29 40.000000
f1v6s13 f0v2s2 38.000000
f1v6s13 f3v12s37 40.000000
f1v6s13 f0v3s3 37.000000
f1v6s13 f3v14s39 39.000000
f1v6s13 f0v0s0 38.000000
f1v6s13 f1v12s19 52.000000
f3v8s33 f1v1s8 40.000000
f3v8s33 f1v14s21 38.000000
f3v8s33 f0v1s1 41.000000
f3v8s33 f1v5s12 39.000000
f3v8s33 f1v4s11 39.000000
f3v8s33 f1v9s16 39.000000
f3v8s33 f1v10s17 40.000000
f3v8s33 f1v0s7 39.000000
f3v8s33 f3v9s34 63.000000
f3v8s33 f4v0s40 37.000000
f3v8s33 f1v7s14 39.000000
f3v8s33 f3v2s27 64.000000
f3v8s33 f4v1s41 37.000000
f3v8s33 f2v0s22 42.000000
f3v8s33 f1v2s9 41.000000
f3v8s33 f1v3s10 39.000000
f3v8s33 f3v0s25 65.000000
f3v8s33 f3v3s28 64.000000
f3v8s33 f3v13s38 65.000000
f3v8s33 f3v7s32 63.000000
f3v8s33 f3v1s26 63.000000
f3v8s33 f3v6s31 63.000000
f3v8s33 f1v13s20 38.000000
f3v8s33 f2v2s24 34.000000
f3v8s33 f3v11s36 62.000000
f3v8s33 f0v5s5 41.000000
f3v8s33 f1v11s18 39.000000
f3v8s33 f0v6s6 41.000000
f3v8s33 f3v4s29 64.000000
f3v8s33 f0v2s2 42.000000
f3v8s33 f3v12s37 64.000000
f3v8s33 f0v3s3 41.000000
f3v8s33 f3v14s39 65.000000
f3v8s33 f0v0s0 42.000000
f3v8s33 f1v12s19 38.000000
f1v1s8 f1v14s21 55.000000
f1v1s8 f0v1s1 38.000000
f1v1s8 f1v5s12 54.000000
f1v1s8 f1v4s11 56.000000
f1v1s8 f1v9s16 55.000000
f1v1s8 f1v10s17 54.000000
f1v1s8 f1v0s7 56.000000
f1v1s8 f3v9s34 41.000000
f1v1s8 f4v0s40 36.000000
f1v1s8 f1v7s14 56.000000
f1v1s8 f3v2s27 40.000000
f1v1s8 f4v1s41 36.000000
f1v1s8 f2v0s22 39.000000
f1v1s8 f1v2s9 38.000000
f1v1s8 f1v3s10 56.000000
f1v1s8 f3v0s25 40.000000
f1v1s8 f3v3s28 40.000000
f1v1s8 f3v13s38 41.000000
f1v1s8 f3v7s32 41.000000
f1v1s8 f3v1s26 40.000000
f1v1s8 f3v6s31 41.000000
f1v1s8 f1v13s20 54.000000
f1v1s8 f2v2s24 33.000000
f1v1s8 f3v11s36 39.000000
f1v1s8 f0v5s5 39.000000
f1v1s8 f1v11s18 55.000000
f1v1s8 f0v6s6 38.000000
f1v1s8 f3v4s29 41.000000
f1v1s8 f0v2s2 39.000000
f1v1s8 f3v12s37 41.000000
f1v1s8 f0v3s3 39.000000
f1v1s8 f3v14s39 40.000000
f1v1s8 f0v0s0 39.000000
f1v1s8 f1v12s19 55.000000
f1v14s21 f0v1s1 38.000000
f1v14s21 f1v5s12 53.000000
f1v14s21 f1v4s11 55.000000
f1v14s21 f1v9s16 54.000000
f1v14s21 f1v10s17 53.000000
f1v14s21 f1v0s7 55.000000
f1v14s21 f3v9s34 39.000000
f1v14s21 f4v0s40 33.000000
f1v14s21 f1v7s14 55.000000
f1v14s21 f3v2s27 38.000000
f1v14s21 f4v1s41 34.000000
f1v14s21 f2v0s22 39.000000
f1v14s21 f1v2s9 38.000000
f1v14s21 f1v3s10 55.000000
f1v14s21 f3v0s25 38.000000
f1v14s21 f3v3s28 38.000000
f1v14s21 f3v13s38 38.000000
f1v14s21 f3v7s32 39.000000
f1v14s21 f3v1s26 38.000000
f1v14s21 f3v6s31 39.000000
f1v14s21 f1v13s20 53.000000
f1v14s21 f2v2s24 34.000000
f1v14s21 f3v11s36 38.000000
f1v14s21 f0v5s5 39.000000
f1v14s21 f1v11s18 54.000000
f1v14s21 f0v6s6 38.000000
f1v14s21 f3v4s29 39.000000
f1v14s21 f0v2s2 39.000000
f1v14s21 f3v12s37 39.000000
f1v14s21 f0v3s3 39.000000
f1v14s21 f3v14s39 38.000000
f1v14s21 f0v0s0 39.000000
f1v14s21 f1v12s19 53.000000
f0v1s1 f1v5s12 39.000000
f0v1s1 f1v4s11 38.000000
f0v1s1 f1v9s16 39.000000
f0v1s1 f1v10s17 39.000000
f0v1s1 f1v0s7 38.000000
f0v1s1 f3v9s34 40.000000
f0v1s1 f4v0s40 38.000000
f0v1s1 f1v7s14 38.000000
f0v1s1 f3v2s27 40.000000
f0v1s1 f4v1s41 38.000000
f0v1s1 f2v0s22 67.000000
f0v1s1 f1v2s9 69.000000
f0v1s1 f1v3s10 38.000000
f0v1s1 f3v0s25 40.000000
f0v1s1 f3v3s28 40.000000
f0v1s1 f3v13s38 40.000000
f0v1s1 f3v7s32 40.000000
f0v1s1 f3v1s26 39.000000
f0v1s1 f3v6s31 40.000000
f0v1s1 f1v13s20 37.000000
f0v1s1 f2v2s24 35.000000
f0v1s1 f3v11s36 37.000000
f0v1s1 f0v5s5 67.000000
f0v1s1 f1v11s18 38.000000
f0v1s1 f0v6s6 64.000000
f0v1s1 f3v4s29 42.000000
f0v1s1 f0v2s2 67.000000
f0v1s1 f3v12s37 40.000000
f0v1s1 f0v3s3 65.000000
f0v1s1 f3v14s39 40.000000
f0v1s1 f0v0s0 68.000000
f0v1s1 f1v12s19 38.000000
f1v5s12 f1v4s11 56.000000
f1v5s12 f1v9s16 55.000000
f1v5s12 f1v10s17 55.000000
f1v5s12 f1v0s7 56.000000
f1v5s12 f3v9s34 40.000000
f1v5s12 f4v0s40 35.000000
f1v5s12 f1v7s14 56.000000
f1v5s12 f3v2s27 39.000000
f1v5s12 f4v1s41 35.000000
f1v5s12 f2v0s22 40.000000
f1v5s12 f1v2s9 39.000000
f1v5s12 f1v3s10 56.000000
f1v5s12 f3v0s25 39.000000
f1v5s12 f3v3s28 38.000000
f1v5s12 f3v13s38 40.000000
f1v5s12 f3v7s32 40.000000
f1v5s12 f3v1s26 38.000000
f1v5s12 f3v6s31 40.000000
f1v5s12 f1v13s20 54.000000
f1v5s12 f2v2s24 32.000000
f1v5s12 f3v11s36 39.000000
f1v5s12 f0v5s5 39.000000
f1v5s12 f1v11s18 55.000000
f1v5s12 f0v6s6 39.000000
f1v5s12 f3v4s29 40.000000
f1v5s12 f0v2s2 40.000000
f1v5s12 f3v12s37 40.000000
f1v5s12 f0v3s3 39.000000
f1v5s12 f3v14s39 39.000000
f1v5s12 f0v0s0 40.000000
f1v5s12 f1v12s19 55.000000
f1v4s11 f1v9s16 57.000000
f1v4s11 f1v10s17 56.000000
f1v4s11 f1v0s7 58.000000
f1v4s11 f3v9s34 40.000000
f1v4s11 f4v0s40 35.000000
f1v4s11 f1v7s14 58.000000
f1v4s11 f3v2s27 39.000000
f1v4s11 f4v1s41 35.000000
f1v4s11 f2v0s22 39.000000
f1v4s11 f1v2s9 38.000000
f1v4s11 f1v3s10 58.000000
f1v4s11 f3v0s25 39.000000
f1v4s11 f3v3s28 39.000000
f1v4s11 f3v13s38 40.000000
f1v4s11 f3v7s32 40.000000
f1v4s11 f3v1s26 39.000000
f1v4s11 f3v6s31 40.000000
f1v4s11 f1v13s20 56.000000
f1v4s11 f2v2s24 34.000000
f1v4s11 f3v11s36 39.000000
f1v4s11 f0v5s5 39.000000
f1v4s11 f1v11s18 57.000000
f1v4s11 f0v6s6 38.000000
f1v4s11 f3v4s29 40.000000
f1v4s11 f0v2s2 39.000000
f1v4s11 f3v12s37 40.000000
f1v4s11 f0v3s3 39.000000
f1v4s11 f3v14s39 39.000000
f1v4s11 f0v0s0 39.000000
f1v4s11 f1v12s19 56.000000
f1v9s16 f1v10s17 55.000000
f1v9s16 f1v0s7 57.000000
f1v9s16 f3v9s34 39.000000
f1v9s16 f4v0s40 36.000000
f1v9s16 f1v7s14 57.000000
f1v9s16 f3v2s27 39.000000
f1v9s16 f4v1s41 36.000000
f1v9s16 f2v0s22 40.000000
f1v9s16 f1v2s9 39.000000
f1v9s16 f1v3s10 57.000000
f1v9s16 f3v0s25 39.000000
f1v9s16 f3v3s28 39.000000
f1v9s16 f3v13s38 40.000000
f1v9s16 f3v7s32 39.000000
f1v9s16 f3v1s26 38.000000
f1v9s16 f3v6s31 39.000000
f1v9s16 f1v13s20 55.000000
f1v9s16 f2v2s24 35.000000
f1v9s16 f3v11s36 39.000000
f1v9s16 f0v5s5 40.000000
f1v9s16 f1v11s18 56.000000
f1v9s16 f0v6s6 39.000000
f1v9s16 f3v4s29 40.000000
f1v9s16 f0v2s2 40.000000
f1v9s16 f3v12s37 40.000000
f1v9s16 f0v3s3 41.000000
f1v9s16 f3v14s39 39.000000
f1v9s16 f0v0s0 40.000000
f1v9s16 f1v12s19 55.000000
f1v10s17 f1v0s7 56.000000
f1v10s17 f3v9s34 41.000000
f1v10s17 f4v0s40 35.000000
f1v10s17 f1v7s14 56.000000
f1v10s17 f3v2s27 40.000000
f1v10s17 f4v1s41 36.000000
f1v10s17 f2v0s22 39.000000
f1v10s17 f1v2s9 39.000000
f1v10s17 f1v3s10 56.000000
f1v10s17 f3v0s25 40.000000
f1v10s17 f3v3s28 40.000000
f1v10s17 f3v13s38 41.000000
f1v10s17 f3v7s32 41.000000
f1v10s17 f3v1s26 39.000000
f1v10s17 f3v6s31 41.000000
f1v10s17 f1v13s20 54.000000
f1v10s17 f2v2s24 33.000000
f1v10s17 f3v11s36 41.000000
f1v10s17 f0v5s5 39.000000
f1v10s17 f1v11s18 55.000000
f1v10s17 f0v6s6 39.000000
f1v10s17 f3v4s29 40.000000
f1v10s17 f0v2s2 39.000000
f1v10s17 f3v12s37 41.000000
f1v10s17 f0v3s3 40.000000
f1v10s17 f3v14s39 40.000000
f1v10s17 f0v0s0 40.000000
f1v10s17 f1v12s19 55.000000
f1v0s7 f3v9s34 40.000000
f1v0s7 f4v0s40 35.000000
f1v0s7 f1v7s14 58.000000
f1v0s7 f3v2s27 39.000000
f1v0s7 f4v1s41 35.000000
f1v0s7 f2v0s22 39.000000
f1v0s7 f1v2s9 38.000000
f1v0s7 f1v3s10 58.000000
f1v0s7 f3v0s25 39.000000
f1v0s7 f3v3s28 39.000000
f1v0s7 f3v13s38 40.000000
f1v0s7 f3v7s32 40.000000
f1v0s7 f3v1s26 39.000000
f1v0s7 f3v6s31 40.000000
f1v0s7 f1v13s20 56.000000
f1v0s7 f2v2s24 34.000000
f1v0s7 f3v11s36 39.000000
f1v0s7 f0v5s5 39.000000
f1v0s7 f1v11s18 57.000000
f1v0s7 f0v6s6 38.000000
f1v0s7 f3v4s29 40.000000
f1v0s7 f0v2s2 39.000000
f1v0s7 f3v12s37 40.000000
f1v0s7 f0v3s3 39.000000
f1v0s7 f3v14s39 39.000000
f1v0s7 f0v0s0 39.000000
f1v0s7 f1v12s19 56.000000
f3v9s34 f4v0s40 35.000000
f3v9s34 f1v7s14 40.000000
f3v9s34 f3v2s27 63.000000
f3v9s34 f4v1s41 35.000000
f3v9s34 f2v0s22 40.000000
f3v9s34 f1v2s9 40.000000
f3v9s34 f1v3s10 40.000000
f3v9s34 f3v0s25 64.000000
f3v9s34 f3v3s28 63.000000
f3v9s34 f3v13s38 64.000000
f3v9s34 f3v7s32 65.000000
f3v9s34 f3v1s26 62.000000
f3v9s34 f3v6s31 65.000000
f3v9s34 f1v13s20 39.000000
f3v9s34 f2v2s24 34.000000
f3v9s34 f3v11s36 61.000000
f3v9s34 f0v5s5 40.000000
f3v9s34 f1v11s18 40.000000
f3v9s34 f0v6s6 39.000000
f3v9s34 f3v4s29 63.000000
f3v9s34 f0v2s2 40.000000
f3v9s34 f3v12s37 63.000000
f3v9s34 f0v3s3 41.000000
f3v9s34 f3v14s39 64.000000
f3v9s34 f0v0s0 41.000000
f3v9s34 f1v12s19 39.000000
f4v0s40 f1v7s14 35.000000
f4v0s40 f3v2s27 36.000000
f4v0s40 f4v1s41 60.000000
f4v0s40 f2v0s22 39.000000
f4v0s40 f1v2s9 38.000000
f4v0s40 f1v3s10 35.000000
f4v0s40 f3v0s25 36.000000
f4v0s40 f3v3s28 36.000000
f4v0s40 f3v13s38 37.000000
f4v0s40 f3v7s32 35.000000
f4v0s40 f3v1s26 36.000000
f4v0s40 f3v6s31 35.000000
f4v0s40 f1v13s20 34.000000
f4v0s40 f2v2s24 34.000000
f4v0s40 f3v11s36 36.000000
f4v0s40 f0v5s5 38.000000
f4v0s40 f1v11s18 35.000000
f4v0s40 f0v6s6 39.000000
f4v0s40 f3v4s29 38.000000
f4v0s40 f0v2s2 39.000000
f4v0s40 f3v12s37 37.000000
f4v0s40 f0v3s3 37.000000
f4v0s40 f3v14s39 36.000000
f4v0s40 f0v0s0 38.000000
f4v0s40 f1v12s19 33.000000
f1v7s14 f3v2s27 39.000000
f1v7s14 f4v1s41 35.000000
f1v7s14 f2v0s22 39.000000
f1v7s14 f1v2s9 38.000000
f1v7s14 f1v3s10 58.000000
f1v7s14 f3v0s25 39.000000
f1v7s14 f3v3s28 39.000000
f1v7s14 f3v13s38 40.000000
f1v7s14 f3v7s32 40.000000
f1v7s14 f3v1s26 39.000000
f1v7s14 f3v6s31 40.000000
f1v7s14 f1v13s20 56.000000
f1v7s14 f2v2s24 34.000000
f1v7s14 f3v11s36 39.000000
f1v7s14 f0v5s5 39.000000
f1v7s14 f1v11s18 57.000000
f1v7s14 f0v6s6 38.000000
f1v7s14 f3v4s29 40.000000
f1v7s14 f0v2s2 39.000000
f1v7s14 f3v12s37 40.000000
f1v7s14 f0v3s3 39.000000
f1v7s14 f3v14s39 39.000000
f1v7s14 f0v0s0 39.000000
f1v7s14 f1v12s19 56.000000
f3v2s27 f4v1s41 36.000000
f3v2s27 f2v0s22 41.000000
f3v2s27 f1v2s9 40.000000
f3v2s27 f1v3s10 39.000000
f3v2s27 f3v0s25 65.000000
f3v2s27 f3v3s28 64.000000
f3v2s27 f3v13s38 65.000000
f3v2s27 f3v7s32 63.000000
f3v2s27 f3v1s26 63.000000
f3v2s27 f3v6s31 63.000000
f3v2s27 f1v13s20 38.000000
f3v2s27 f2v2s24 35.000000
f3v2s27 f3v11s36 62.000000
f3v2s27 f0v5s5 40.000000
f3v2s27 f1v11s18 39.000000
f3v2s27 f0v6s6 40.000000
f3v2s27 f3v4s29 64.000000
f3v2s27 f0v2s2 41.000000
f3v2s27 f3v12s37 64.000000
f3v2s27 f0v3s3 41.000000
f3v2s27 f3v14s39 65.000000
f3v2s27 f0v0s0 41.000000
f3v2s27 f1v12s19 38.000000
f4v1s41 f2v0s22 39.000000
f4v1s41 f1v2s9 38.000000
f4v1s41 f1v3s10 35.000000
f4v1s41 f3v0s25 36.000000
f4v1s41 f3v3s28 36.000000
f4v1s41 f3v13s38 37.000000
f4v1s41 f3v7s32 35.000000
f4v1s41 f3v1s26 36.000000
f4v1s41 f3v6s31 35.000000
f4v1s41 f1v13s20 34.000000
f4v1s41 f2v2s24 34.000000
f4v1s41 f3v11s36 36.000000
f4v1s41 f0v5s5 38.000000
f4v1s41 f1v11s18 35.000000
f4v1s41 f0v6s6 39.000000
f4v1s41 f3v4s29 38.000000
f4v1s41 f0v2s2 39.000000
f4v1s41 f3v12s37 37.000000
f4v1s41 f0v3s3 37.000000
f4v1s41 f3v14s39 36.000000
f4v1s41 f0v0s0 38.000000
f4v1s41 f1v12s19 33.000000
f2v0s22 f1v2s9 67.000000
f2v0s22 f1v3s10 39.000000
f2v0s22 f3v0s25 41.000000
f2v0s22 f3v3s28 41.000000
f2v0s22 f3v13s38 41.000000
f2v0s22 f3v7s32 40.000000
f2v0s22 f3v1s26 40.000000
f2v0s22 f3v6s31 40.000000
f2v0s22 f1v13s20 38.000000
f2v0s22 f2v2s24 35.000000
f2v0s22 f3v11s36 38.000000
f2v0s22 f0v5s5 67.000000
f2v0s22 f1v11s18 39.000000
f2v0s22 f0v6s6 64.000000
f2v0s22 f3v4s29 43.000000
f2v0s22 f0v2s2 69.000000
f2v0s22 f3v12s37 42.000000
f2v0s22 f0v3s3 65.000000
f2v0s22 f3v14s39 41.000000
f2v0s22 f0v0s0 68.000000
f2v0s22 f1v12s19 39.000000
f1v2s9 f1v3s10 38.000000
f1v2s9 f3v0s25 40.000000
f1v2s9 f3v3s28 40.000000
f1v2s9 f3v13s38 40.000000
f1v2s9 f3v7s32 40.000000
f1v2s9 f3v1s26 39.000000
f1v2s9 f3v6s31 40.000000
f1v2s9 f1v13s20 37.000000
f1v2s9 f2v2s24 35.000000
f1v2s9 f3v11s36 37.000000
f1v2s9 f0v5s5 67.000000
f1v2s9 f1v11s18 38.000000
f1v2s9 f0v6s6 64.000000
f1v2s9 f3v4s29 42.000000
f1v2s9 f0v2s2 67.000000
f1v2s9 f3v12s37 40.000000
f1v2s9 f0v3s3 65.000000
f1v2s9 f3v14s39 40.000000
f1v2s9 f0v0s0 68.000000
f1v2s9 f1v12s19 38.000000
f1v3s10 f3v0s25 39.000000
f1v3s10 f3v3s28 39.000000
f1v3s10 f3v13s38 40.000000
f1v3s10 f3v7s32 40.000000
f1v3s10 f3v1s26 39.000000
f1v3s10 f3v6s31 40.000000
f1v3s10 f1v13s20 56.000000
f1v3s10 f2v2s24 34.000000
f1v3s10 f3v11s36 39.000000
f1v3s10 f0v5s5 39.000000
f1v3s10 f1v11s18 57.000000
f1v3s10 f0v6s6 38.000000
f1v3s10 f3v4s29 40.000000
f1v3s10 f0v2s2 39.000000
f1v3s10 f3v12s37 40.000000
f1v3s10 f0v3s3 39.000000
f1v3s10 f3v14s39 39.000000
f1v3s10 f0v0s0 39.000000
f1v3s10 f1v12s19 56.000000
f3v0s25 f3v3s28 65.000000
f3v0s25 f3v13s38 66.000000
f3v0s25 f3v7s32 64.000000
f3v0s25 f3v1s26 64.000000
f3v0s25 f3v6s31 64.000000
f3v0s25 f1v13s20 38.000000
f3v0s25 f2v2s24 35.000000
f3v0s25 f3v11s36 63.000000
f3v0s25 f0v5s5 40.000000
f3v0s25 f1v11s18 39.000000
f3v0s25 f0v6s6 40.000000
f3v0s25 f3v4s29 65.000000
f3v0s25 f0v2s2 41.000000
f3v0s25 f3v12s37 65.000000
f3v0s25 f0v3s3 41.000000
f3v0s25 f3v14s39 66.000000
f3v0s25 f0v0s0 41.000000
f3v0s25 f1v12s19 38.000000
f3v3s28 f3v13s38 65.000000
f3v3s28 f3v7s32 63.000000
f3v3s28 f3v1s26 63.000000
f3v3s28 f3v6s31 63.000000
f3v3s28 f1v13s20 38.000000
f3v3s28 f2v2s24 36.000000
f3v3s28 f3v11s36 62.000000
f3v3s28 f0v5s5 40.000000
f3v3s28 f1v11s18 39.000000
f3v3s28 f0v6s6 40.000000
f3v3s28 f3v4s29 64.000000
f3v3s28 f0v2s2 41.000000
f3v3s28 f3v12s37 64.000000
f3v3s28 f0v3s3 41.000000
f3v3s28 f3v14s39 65.000000
f3v3s28 f0v0s0 41.000000
f3v3s28 f1v12s19 38.000000
f3v13s38 f3v7s32 64.000000
f3v13s38 f3v1s26 64.000000
f3v13s38 f3v6s31 64.000000
f3v13s38 f1v13s20 39.000000
f3v13s38 f2v2s24 36.000000
f3v13s38 f3v11s36 63.000000
f3v13s38 f0v5s5 40.000000
f3v13s38 f1v11s18 40.000000
f3v13s38 f0v6s6 40.000000
f3v13s38 f3v4s29 65.000000
f3v13s38 f0v2s2 41.000000
f3v13s38 f3v12s37 65.000000
f3v13s38 f0v3s3 41.000000
f3v13s38 f3v14s39 66.000000
f3v13s38 f0v0s0 41.000000
f3v13s38 f1v12s19 39.000000
f3v7s32 f3v1s26 62.000000
f3v7s32 f3v6s31 65.000000
f3v7s32 f1v13s20 39.000000
f3v7s32 f2v2s24 34.000000
f3v7s32 f3v11s36 61.000000
f3v7s32 f0v5s5 40.000000
f3v7s32 f1v11s18 40.000000
f3v7s32 f0v6s6 39.000000
f3v7s32 f3v4s29 63.000000
f3v7s32 f0v2s2 40.000000
f3v7s32 f3v12s37 63.000000
f3v7s32 f0v3s3 41.000000
f3v7s32 f3v14s39 64.000000
f3v7s32 f0v0s0 41.000000
f3v7s32 f1v12s19 39.000000
f3v1s26 f3v6s31 62.000000
f3v1s26 f1v13s20 38.000000
f3v1s26 f2v2s24 35.000000
f3v1s26 f3v11s36 61.000000
f3v1s26 f0v5s5 39.000000
f3v1s26 f1v11s18 39.000000
f3v1s26 f0v6s6 39.000000
f3v1s26 f3v4s29 63.000000
f3v1s26 f0v2s2 40.000000
f3v1s26 f3v12s37 63.000000
f3v1s26 f0v3s3 40.000000
f3v1s26 f3v14s39 64.000000
f3v1s26 f0v0s0 40.000000
f3v1s26 f1v12s19 38.000000
f3v6s31 f1v13s20 39.000000
f3v6s31 f2v2s24 34.000000
f3v6s31 f3v11s36 61.000000
f3v6s31 f0v5s5 40.000000
f3v6s31 f1v11s18 40.000000
f3v6s31 f0v6s6 39.000000
f3v6s31 f3v4s29 63.000000
f3v6s31 f0v2s2 40.000000
f3v6s31 f3v12s37 63.000000
f3v6s31 f0v3s3 41.000000
f3v6s31 f3v14s39 64.000000
f3v6s31 f0v0s0 41.000000
f3v6s31 f1v12s19 39.000000
f1v13s20 f2v2s24 34.000000
f1v13s20 f3v11s36 38.000000
f1v13s20 f0v5s5 39.000000
f1v13s20 f1v11s18 55.000000
f1v13s20 f0v6s6 37.000000
f1v13s20 f3v4s29 39.000000
f1v13s20 f0v2s2 38.000000
f1v13s20 f3v12s37 39.000000
f1v13s20 f0v3s3 38.000000
f1v13s20 f3v14s39 38.000000
f1v13s20 f0v0s0 38.000000
f1v13s20 f1v12s19 54.000000
f2v2s24 f3v11s36 34.000000
f2v2s24 f0v5s5 35.000000
f2v2s24 f1v11s18 34.000000
f2v2s24 f0v6s6 35.000000
f2v2s24 f3v4s29 36.000000
f2v2s24 f0v2s2 35.000000
f2v2s24 f3v12s37 36.000000
f2v2s24 f0v3s3 34.000000
f2v2s24 f3v14s39 35.000000
f2v2s24 f0v0s0 35.000000
f2v2s24 f1v12s19 33.000000
f3v11s36 f0v5s5 38.000000
f3v11s36 f1v11s18 39.000000
f3v11s36 f0v6s6 38.000000
f3v11s36 f3v4s29 62.000000
f3v11s36 f0v2s2 38.000000
f3v11s36 f3v12s37 62.000000
f3v11s36 f0v3s3 38.000000
f3v11s36 f3v14s39 63.000000
f3v11s36 f0v0s0 38.000000
f3v11s36 f1v12s19 38.000000
f0v5s5 f1v11s18 40.000000
f0v5s5 f0v6s6 64.000000
f0v5s5 f3v4s29 42.000000
f0v5s5 f0v2s2 67.000000
f0v5s5 f3v12s37 40.000000
f0v5s5 f0v3s3 65.000000
f0v5s5 f3v14s39 40.000000
f0v5s5 f0v0s0 68.000000
f0v5s5 f1v12s19 38.000000
f1v11s18 f0v6s6 38.000000
f1v11s18 f3v4s29 40.000000
f1v11s18 f0v2s2 39.000000
f1v11s18 f3v12s37 40.000000
f1v11s18 f0v3s3 39.000000
f1v11s18 f3v14s39 39.000000
f1v11s18 f0v0s0 39.000000
f1v11s18 f1v12s19 55.000000
f0v6s6 f3v4s29 42.000000
f0v6s6 f0v2s2 64.000000
f0v6s6 f3v12s37 40.000000
f0v6s6 f0v3s3 62.000000
f0v6s6 f3v14s39 40.000000
f0v6s6 f0v0s0 65.000000
f0v6s6 f1v12s19 38.000000
f3v4s29 f0v2s2 43.000000
f3v4s29 f3v12s37 64.000000
f3v4s29 f0v3s3 43.000000
f3v4s29 f3v14s39 65.000000
f3v4s29 f0v0s0 43.000000
f3v4s29 f1v12s19 39.000000
f0v2s2 f3v12s37 42.000000
f0v2s2 f0v3s3 65.000000
f0v2s2 f3v14s39 41.000000
f0v2s2 f0v0s0 68.000000
f0v2s2 f1v12s19 39.000000
f3v12s37 f0v3s3 41.000000
f3v12s37 f3v14s39 65.000000
f3v12s37 f0v0s0 41.000000
f3v12s37 f1v12s19 39.000000
f0v3s3 f3v14s39 41.000000
f0v3s3 f0v0s0 66.000000
f0v3s3 f1v12s19 38.000000
f3v14s39 f0v0s0 41.000000
f3v14s39 f1v12s19 38.000000
f0v0s0 f1v12s19 39.000000
+903
View File
@@ -0,0 +1,903 @@
f3v10s35 f3v5s30 0.920635
f3v10s35 f1v8s15 0.649123
f3v10s35 f2v1s23 0.655172
f3v10s35 f4v2s42 0.622951
f3v10s35 f0v4s4 0.615385
f3v10s35 f1v6s13 0.660714
f3v10s35 f3v8s33 0.938462
f3v10s35 f1v1s8 0.650000
f3v10s35 f1v14s21 0.678571
f3v10s35 f0v1s1 0.615385
f3v10s35 f1v5s12 0.633333
f3v10s35 f1v4s11 0.655172
f3v10s35 f1v9s16 0.650000
f3v10s35 f1v10s17 0.650000
f3v10s35 f1v0s7 0.655172
f3v10s35 f3v9s34 0.938462
f3v10s35 f4v0s40 0.633333
f3v10s35 f1v7s14 0.655172
f3v10s35 f3v2s27 0.938462
f3v10s35 f4v1s41 0.622951
f3v10s35 f2v0s22 0.615385
f3v10s35 f1v2s9 0.615385
f3v10s35 f1v3s10 0.655172
f3v10s35 f3v0s25 0.953846
f3v10s35 f3v3s28 0.938462
f3v10s35 f3v13s38 0.953846
f3v10s35 f3v7s32 0.938462
f3v10s35 f3v1s26 0.938462
f3v10s35 f3v6s31 0.938462
f3v10s35 f1v13s20 0.660714
f3v10s35 f2v2s24 0.714286
f3v10s35 f3v11s36 0.907692
f3v10s35 f0v5s5 0.600000
f3v10s35 f1v11s18 0.655172
f3v10s35 f0v6s6 0.584615
f3v10s35 f3v4s29 0.938462
f3v10s35 f0v2s2 0.615385
f3v10s35 f3v12s37 0.938462
f3v10s35 f0v3s3 0.615385
f3v10s35 f3v14s39 0.953846
f3v10s35 f0v0s0 0.615385
f3v10s35 f1v12s19 0.649123
f3v5s30 f1v8s15 0.666667
f3v5s30 f2v1s23 0.655172
f3v5s30 f4v2s42 0.606557
f3v5s30 f0v4s4 0.619048
f3v5s30 f1v6s13 0.696429
f3v5s30 f3v8s33 0.968254
f3v5s30 f1v1s8 0.650000
f3v5s30 f1v14s21 0.660714
f3v5s30 f0v1s1 0.619048
f3v5s30 f1v5s12 0.633333
f3v5s30 f1v4s11 0.655172
f3v5s30 f1v9s16 0.633333
f3v5s30 f1v10s17 0.650000
f3v5s30 f1v0s7 0.655172
f3v5s30 f3v9s34 0.952381
f3v5s30 f4v0s40 0.616667
f3v5s30 f1v7s14 0.655172
f3v5s30 f3v2s27 0.968254
f3v5s30 f4v1s41 0.606557
f3v5s30 f2v0s22 0.634921
f3v5s30 f1v2s9 0.619048
f3v5s30 f1v3s10 0.655172
f3v5s30 f3v0s25 0.984127
f3v5s30 f3v3s28 0.968254
f3v5s30 f3v13s38 0.984127
f3v5s30 f3v7s32 0.952381
f3v5s30 f3v1s26 0.968254
f3v5s30 f3v6s31 0.952381
f3v5s30 f1v13s20 0.678571
f3v5s30 f2v2s24 0.693878
f3v5s30 f3v11s36 0.936508
f3v5s30 f0v5s5 0.619048
f3v5s30 f1v11s18 0.655172
f3v5s30 f0v6s6 0.650794
f3v5s30 f3v4s29 0.968254
f3v5s30 f0v2s2 0.634921
f3v5s30 f3v12s37 0.968254
f3v5s30 f0v3s3 0.634921
f3v5s30 f3v14s39 0.984127
f3v5s30 f0v0s0 0.634921
f3v5s30 f1v12s19 0.649123
f1v8s15 f2v1s23 1.000000
f1v8s15 f4v2s42 0.596491
f1v8s15 f0v4s4 0.666667
f1v8s15 f1v6s13 0.964286
f1v8s15 f3v8s33 0.684211
f1v8s15 f1v1s8 0.964912
f1v8s15 f1v14s21 0.964286
f1v8s15 f0v1s1 0.666667
f1v8s15 f1v5s12 0.964912
f1v8s15 f1v4s11 1.000000
f1v8s15 f1v9s16 0.982456
f1v8s15 f1v10s17 0.964912
f1v8s15 f1v0s7 1.000000
f1v8s15 f3v9s34 0.701754
f1v8s15 f4v0s40 0.614035
f1v8s15 f1v7s14 1.000000
f1v8s15 f3v2s27 0.684211
f1v8s15 f4v1s41 0.614035
f1v8s15 f2v0s22 0.684211
f1v8s15 f1v2s9 0.666667
f1v8s15 f1v3s10 1.000000
f1v8s15 f3v0s25 0.684211
f1v8s15 f3v3s28 0.684211
f1v8s15 f3v13s38 0.701754
f1v8s15 f3v7s32 0.701754
f1v8s15 f3v1s26 0.684211
f1v8s15 f3v6s31 0.701754
f1v8s15 f1v13s20 0.982143
f1v8s15 f2v2s24 0.693878
f1v8s15 f3v11s36 0.684211
f1v8s15 f0v5s5 0.684211
f1v8s15 f1v11s18 0.982456
f1v8s15 f0v6s6 0.666667
f1v8s15 f3v4s29 0.701754
f1v8s15 f0v2s2 0.684211
f1v8s15 f3v12s37 0.701754
f1v8s15 f0v3s3 0.684211
f1v8s15 f3v14s39 0.684211
f1v8s15 f0v0s0 0.684211
f1v8s15 f1v12s19 0.964912
f2v1s23 f4v2s42 0.586207
f2v1s23 f0v4s4 0.655172
f2v1s23 f1v6s13 0.964286
f2v1s23 f3v8s33 0.672414
f2v1s23 f1v1s8 0.965517
f2v1s23 f1v14s21 0.982143
f2v1s23 f0v1s1 0.655172
f2v1s23 f1v5s12 0.965517
f2v1s23 f1v4s11 1.000000
f2v1s23 f1v9s16 0.982759
f2v1s23 f1v10s17 0.965517
f2v1s23 f1v0s7 1.000000
f2v1s23 f3v9s34 0.689655
f2v1s23 f4v0s40 0.603448
f2v1s23 f1v7s14 1.000000
f2v1s23 f3v2s27 0.672414
f2v1s23 f4v1s41 0.603448
f2v1s23 f2v0s22 0.672414
f2v1s23 f1v2s9 0.655172
f2v1s23 f1v3s10 1.000000
f2v1s23 f3v0s25 0.672414
f2v1s23 f3v3s28 0.672414
f2v1s23 f3v13s38 0.689655
f2v1s23 f3v7s32 0.689655
f2v1s23 f3v1s26 0.672414
f2v1s23 f3v6s31 0.689655
f2v1s23 f1v13s20 1.000000
f2v1s23 f2v2s24 0.693878
f2v1s23 f3v11s36 0.672414
f2v1s23 f0v5s5 0.672414
f2v1s23 f1v11s18 0.982759
f2v1s23 f0v6s6 0.655172
f2v1s23 f3v4s29 0.689655
f2v1s23 f0v2s2 0.672414
f2v1s23 f3v12s37 0.689655
f2v1s23 f0v3s3 0.672414
f2v1s23 f3v14s39 0.672414
f2v1s23 f0v0s0 0.672414
f2v1s23 f1v12s19 0.982456
f4v2s42 f0v4s4 0.639344
f4v2s42 f1v6s13 0.589286
f4v2s42 f3v8s33 0.606557
f4v2s42 f1v1s8 0.600000
f4v2s42 f1v14s21 0.589286
f4v2s42 f0v1s1 0.639344
f4v2s42 f1v5s12 0.566667
f4v2s42 f1v4s11 0.586207
f4v2s42 f1v9s16 0.600000
f4v2s42 f1v10s17 0.583333
f4v2s42 f1v0s7 0.586207
f4v2s42 f3v9s34 0.573770
f4v2s42 f4v0s40 0.983333
f4v2s42 f1v7s14 0.586207
f4v2s42 f3v2s27 0.590164
f4v2s42 f4v1s41 0.967213
f4v2s42 f2v0s22 0.672131
f4v2s42 f1v2s9 0.639344
f4v2s42 f1v3s10 0.586207
f4v2s42 f3v0s25 0.590164
f4v2s42 f3v3s28 0.590164
f4v2s42 f3v13s38 0.606557
f4v2s42 f3v7s32 0.573770
f4v2s42 f3v1s26 0.590164
f4v2s42 f3v6s31 0.573770
f4v2s42 f1v13s20 0.589286
f4v2s42 f2v2s24 0.714286
f4v2s42 f3v11s36 0.590164
f4v2s42 f0v5s5 0.655738
f4v2s42 f1v11s18 0.586207
f4v2s42 f0v6s6 0.672131
f4v2s42 f3v4s29 0.622951
f4v2s42 f0v2s2 0.672131
f4v2s42 f3v12s37 0.606557
f4v2s42 f0v3s3 0.639344
f4v2s42 f3v14s39 0.590164
f4v2s42 f0v0s0 0.655738
f4v2s42 f1v12s19 0.578947
f0v4s4 f1v6s13 0.660714
f0v4s4 f3v8s33 0.621212
f0v4s4 f1v1s8 0.633333
f0v4s4 f1v14s21 0.678571
f0v4s4 f0v1s1 1.000000
f0v4s4 f1v5s12 0.650000
f0v4s4 f1v4s11 0.655172
f0v4s4 f1v9s16 0.650000
f0v4s4 f1v10s17 0.650000
f0v4s4 f1v0s7 0.655172
f0v4s4 f3v9s34 0.615385
f0v4s4 f4v0s40 0.633333
f0v4s4 f1v7s14 0.655172
f0v4s4 f3v2s27 0.615385
f0v4s4 f4v1s41 0.622951
f0v4s4 f2v0s22 0.971014
f0v4s4 f1v2s9 1.000000
f0v4s4 f1v3s10 0.655172
f0v4s4 f3v0s25 0.606061
f0v4s4 f3v3s28 0.606061
f0v4s4 f3v13s38 0.588235
f0v4s4 f3v7s32 0.615385
f0v4s4 f3v1s26 0.600000
f0v4s4 f3v6s31 0.615385
f0v4s4 f1v13s20 0.660714
f0v4s4 f2v2s24 0.714286
f0v4s4 f3v11s36 0.569231
f0v4s4 f0v5s5 0.971014
f0v4s4 f1v11s18 0.655172
f0v4s4 f0v6s6 0.927536
f0v4s4 f3v4s29 0.617647
f0v4s4 f0v2s2 0.971014
f0v4s4 f3v12s37 0.597015
f0v4s4 f0v3s3 0.970149
f0v4s4 f3v14s39 0.606061
f0v4s4 f0v0s0 0.985507
f0v4s4 f1v12s19 0.666667
f1v6s13 f3v8s33 0.696429
f1v6s13 f1v1s8 0.928571
f1v6s13 f1v14s21 0.910714
f1v6s13 f0v1s1 0.660714
f1v6s13 f1v5s12 0.928571
f1v6s13 f1v4s11 0.964286
f1v6s13 f1v9s16 0.946429
f1v6s13 f1v10s17 0.946429
f1v6s13 f1v0s7 0.964286
f1v6s13 f3v9s34 0.696429
f1v6s13 f4v0s40 0.607143
f1v6s13 f1v7s14 0.964286
f1v6s13 f3v2s27 0.696429
f1v6s13 f4v1s41 0.607143
f1v6s13 f2v0s22 0.678571
f1v6s13 f1v2s9 0.660714
f1v6s13 f1v3s10 0.964286
f1v6s13 f3v0s25 0.696429
f1v6s13 f3v3s28 0.696429
f1v6s13 f3v13s38 0.696429
f1v6s13 f3v7s32 0.696429
f1v6s13 f3v1s26 0.696429
f1v6s13 f3v6s31 0.696429
f1v6s13 f1v13s20 0.928571
f1v6s13 f2v2s24 0.673469
f1v6s13 f3v11s36 0.696429
f1v6s13 f0v5s5 0.678571
f1v6s13 f1v11s18 0.946429
f1v6s13 f0v6s6 0.678571
f1v6s13 f3v4s29 0.714286
f1v6s13 f0v2s2 0.678571
f1v6s13 f3v12s37 0.714286
f1v6s13 f0v3s3 0.660714
f1v6s13 f3v14s39 0.696429
f1v6s13 f0v0s0 0.678571
f1v6s13 f1v12s19 0.928571
f3v8s33 f1v1s8 0.666667
f3v8s33 f1v14s21 0.678571
f3v8s33 f0v1s1 0.621212
f3v8s33 f1v5s12 0.650000
f3v8s33 f1v4s11 0.672414
f3v8s33 f1v9s16 0.650000
f3v8s33 f1v10s17 0.666667
f3v8s33 f1v0s7 0.672414
f3v8s33 f3v9s34 0.969231
f3v8s33 f4v0s40 0.616667
f3v8s33 f1v7s14 0.672414
f3v8s33 f3v2s27 0.984615
f3v8s33 f4v1s41 0.606557
f3v8s33 f2v0s22 0.636364
f3v8s33 f1v2s9 0.621212
f3v8s33 f1v3s10 0.672414
f3v8s33 f3v0s25 0.984848
f3v8s33 f3v3s28 0.969697
f3v8s33 f3v13s38 0.984848
f3v8s33 f3v7s32 0.969231
f3v8s33 f3v1s26 0.969231
f3v8s33 f3v6s31 0.969231
f3v8s33 f1v13s20 0.678571
f3v8s33 f2v2s24 0.693878
f3v8s33 f3v11s36 0.953846
f3v8s33 f0v5s5 0.621212
f3v8s33 f1v11s18 0.672414
f3v8s33 f0v6s6 0.621212
f3v8s33 f3v4s29 0.969697
f3v8s33 f0v2s2 0.636364
f3v8s33 f3v12s37 0.969697
f3v8s33 f0v3s3 0.621212
f3v8s33 f3v14s39 0.984848
f3v8s33 f0v0s0 0.636364
f3v8s33 f1v12s19 0.666667
f1v1s8 f1v14s21 0.982143
f1v1s8 f0v1s1 0.633333
f1v1s8 f1v5s12 0.900000
f1v1s8 f1v4s11 0.965517
f1v1s8 f1v9s16 0.916667
f1v1s8 f1v10s17 0.900000
f1v1s8 f1v0s7 0.965517
f1v1s8 f3v9s34 0.683333
f1v1s8 f4v0s40 0.600000
f1v1s8 f1v7s14 0.965517
f1v1s8 f3v2s27 0.666667
f1v1s8 f4v1s41 0.600000
f1v1s8 f2v0s22 0.650000
f1v1s8 f1v2s9 0.633333
f1v1s8 f1v3s10 0.965517
f1v1s8 f3v0s25 0.666667
f1v1s8 f3v3s28 0.666667
f1v1s8 f3v13s38 0.683333
f1v1s8 f3v7s32 0.683333
f1v1s8 f3v1s26 0.666667
f1v1s8 f3v6s31 0.683333
f1v1s8 f1v13s20 0.964286
f1v1s8 f2v2s24 0.673469
f1v1s8 f3v11s36 0.650000
f1v1s8 f0v5s5 0.650000
f1v1s8 f1v11s18 0.948276
f1v1s8 f0v6s6 0.633333
f1v1s8 f3v4s29 0.683333
f1v1s8 f0v2s2 0.650000
f1v1s8 f3v12s37 0.683333
f1v1s8 f0v3s3 0.650000
f1v1s8 f3v14s39 0.666667
f1v1s8 f0v0s0 0.650000
f1v1s8 f1v12s19 0.964912
f1v14s21 f0v1s1 0.678571
f1v14s21 f1v5s12 0.946429
f1v14s21 f1v4s11 0.982143
f1v14s21 f1v9s16 0.964286
f1v14s21 f1v10s17 0.946429
f1v14s21 f1v0s7 0.982143
f1v14s21 f3v9s34 0.696429
f1v14s21 f4v0s40 0.589286
f1v14s21 f1v7s14 0.982143
f1v14s21 f3v2s27 0.678571
f1v14s21 f4v1s41 0.607143
f1v14s21 f2v0s22 0.696429
f1v14s21 f1v2s9 0.678571
f1v14s21 f1v3s10 0.982143
f1v14s21 f3v0s25 0.678571
f1v14s21 f3v3s28 0.678571
f1v14s21 f3v13s38 0.678571
f1v14s21 f3v7s32 0.696429
f1v14s21 f3v1s26 0.678571
f1v14s21 f3v6s31 0.696429
f1v14s21 f1v13s20 0.946429
f1v14s21 f2v2s24 0.693878
f1v14s21 f3v11s36 0.678571
f1v14s21 f0v5s5 0.696429
f1v14s21 f1v11s18 0.964286
f1v14s21 f0v6s6 0.678571
f1v14s21 f3v4s29 0.696429
f1v14s21 f0v2s2 0.696429
f1v14s21 f3v12s37 0.696429
f1v14s21 f0v3s3 0.696429
f1v14s21 f3v14s39 0.678571
f1v14s21 f0v0s0 0.696429
f1v14s21 f1v12s19 0.946429
f0v1s1 f1v5s12 0.650000
f0v1s1 f1v4s11 0.655172
f0v1s1 f1v9s16 0.650000
f0v1s1 f1v10s17 0.650000
f0v1s1 f1v0s7 0.655172
f0v1s1 f3v9s34 0.615385
f0v1s1 f4v0s40 0.633333
f0v1s1 f1v7s14 0.655172
f0v1s1 f3v2s27 0.615385
f0v1s1 f4v1s41 0.622951
f0v1s1 f2v0s22 0.971014
f0v1s1 f1v2s9 1.000000
f0v1s1 f1v3s10 0.655172
f0v1s1 f3v0s25 0.606061
f0v1s1 f3v3s28 0.606061
f0v1s1 f3v13s38 0.588235
f0v1s1 f3v7s32 0.615385
f0v1s1 f3v1s26 0.600000
f0v1s1 f3v6s31 0.615385
f0v1s1 f1v13s20 0.660714
f0v1s1 f2v2s24 0.714286
f0v1s1 f3v11s36 0.569231
f0v1s1 f0v5s5 0.971014
f0v1s1 f1v11s18 0.655172
f0v1s1 f0v6s6 0.927536
f0v1s1 f3v4s29 0.617647
f0v1s1 f0v2s2 0.971014
f0v1s1 f3v12s37 0.597015
f0v1s1 f0v3s3 0.970149
f0v1s1 f3v14s39 0.606061
f0v1s1 f0v0s0 0.985507
f0v1s1 f1v12s19 0.666667
f1v5s12 f1v4s11 0.965517
f1v5s12 f1v9s16 0.916667
f1v5s12 f1v10s17 0.916667
f1v5s12 f1v0s7 0.965517
f1v5s12 f3v9s34 0.666667
f1v5s12 f4v0s40 0.583333
f1v5s12 f1v7s14 0.965517
f1v5s12 f3v2s27 0.650000
f1v5s12 f4v1s41 0.583333
f1v5s12 f2v0s22 0.666667
f1v5s12 f1v2s9 0.650000
f1v5s12 f1v3s10 0.965517
f1v5s12 f3v0s25 0.650000
f1v5s12 f3v3s28 0.633333
f1v5s12 f3v13s38 0.666667
f1v5s12 f3v7s32 0.666667
f1v5s12 f3v1s26 0.633333
f1v5s12 f3v6s31 0.666667
f1v5s12 f1v13s20 0.964286
f1v5s12 f2v2s24 0.653061
f1v5s12 f3v11s36 0.650000
f1v5s12 f0v5s5 0.650000
f1v5s12 f1v11s18 0.948276
f1v5s12 f0v6s6 0.650000
f1v5s12 f3v4s29 0.666667
f1v5s12 f0v2s2 0.666667
f1v5s12 f3v12s37 0.666667
f1v5s12 f0v3s3 0.650000
f1v5s12 f3v14s39 0.650000
f1v5s12 f0v0s0 0.666667
f1v5s12 f1v12s19 0.964912
f1v4s11 f1v9s16 0.982759
f1v4s11 f1v10s17 0.965517
f1v4s11 f1v0s7 1.000000
f1v4s11 f3v9s34 0.689655
f1v4s11 f4v0s40 0.603448
f1v4s11 f1v7s14 1.000000
f1v4s11 f3v2s27 0.672414
f1v4s11 f4v1s41 0.603448
f1v4s11 f2v0s22 0.672414
f1v4s11 f1v2s9 0.655172
f1v4s11 f1v3s10 1.000000
f1v4s11 f3v0s25 0.672414
f1v4s11 f3v3s28 0.672414
f1v4s11 f3v13s38 0.689655
f1v4s11 f3v7s32 0.689655
f1v4s11 f3v1s26 0.672414
f1v4s11 f3v6s31 0.689655
f1v4s11 f1v13s20 1.000000
f1v4s11 f2v2s24 0.693878
f1v4s11 f3v11s36 0.672414
f1v4s11 f0v5s5 0.672414
f1v4s11 f1v11s18 0.982759
f1v4s11 f0v6s6 0.655172
f1v4s11 f3v4s29 0.689655
f1v4s11 f0v2s2 0.672414
f1v4s11 f3v12s37 0.689655
f1v4s11 f0v3s3 0.672414
f1v4s11 f3v14s39 0.672414
f1v4s11 f0v0s0 0.672414
f1v4s11 f1v12s19 0.982456
f1v9s16 f1v10s17 0.916667
f1v9s16 f1v0s7 0.982759
f1v9s16 f3v9s34 0.650000
f1v9s16 f4v0s40 0.600000
f1v9s16 f1v7s14 0.982759
f1v9s16 f3v2s27 0.650000
f1v9s16 f4v1s41 0.600000
f1v9s16 f2v0s22 0.666667
f1v9s16 f1v2s9 0.650000
f1v9s16 f1v3s10 0.982759
f1v9s16 f3v0s25 0.650000
f1v9s16 f3v3s28 0.650000
f1v9s16 f3v13s38 0.666667
f1v9s16 f3v7s32 0.650000
f1v9s16 f3v1s26 0.633333
f1v9s16 f3v6s31 0.650000
f1v9s16 f1v13s20 0.982143
f1v9s16 f2v2s24 0.714286
f1v9s16 f3v11s36 0.650000
f1v9s16 f0v5s5 0.666667
f1v9s16 f1v11s18 0.965517
f1v9s16 f0v6s6 0.650000
f1v9s16 f3v4s29 0.666667
f1v9s16 f0v2s2 0.666667
f1v9s16 f3v12s37 0.666667
f1v9s16 f0v3s3 0.683333
f1v9s16 f3v14s39 0.650000
f1v9s16 f0v0s0 0.666667
f1v9s16 f1v12s19 0.964912
f1v10s17 f1v0s7 0.965517
f1v10s17 f3v9s34 0.683333
f1v10s17 f4v0s40 0.583333
f1v10s17 f1v7s14 0.965517
f1v10s17 f3v2s27 0.666667
f1v10s17 f4v1s41 0.600000
f1v10s17 f2v0s22 0.650000
f1v10s17 f1v2s9 0.650000
f1v10s17 f1v3s10 0.965517
f1v10s17 f3v0s25 0.666667
f1v10s17 f3v3s28 0.666667
f1v10s17 f3v13s38 0.683333
f1v10s17 f3v7s32 0.683333
f1v10s17 f3v1s26 0.650000
f1v10s17 f3v6s31 0.683333
f1v10s17 f1v13s20 0.964286
f1v10s17 f2v2s24 0.673469
f1v10s17 f3v11s36 0.683333
f1v10s17 f0v5s5 0.650000
f1v10s17 f1v11s18 0.948276
f1v10s17 f0v6s6 0.650000
f1v10s17 f3v4s29 0.666667
f1v10s17 f0v2s2 0.650000
f1v10s17 f3v12s37 0.683333
f1v10s17 f0v3s3 0.666667
f1v10s17 f3v14s39 0.666667
f1v10s17 f0v0s0 0.666667
f1v10s17 f1v12s19 0.964912
f1v0s7 f3v9s34 0.689655
f1v0s7 f4v0s40 0.603448
f1v0s7 f1v7s14 1.000000
f1v0s7 f3v2s27 0.672414
f1v0s7 f4v1s41 0.603448
f1v0s7 f2v0s22 0.672414
f1v0s7 f1v2s9 0.655172
f1v0s7 f1v3s10 1.000000
f1v0s7 f3v0s25 0.672414
f1v0s7 f3v3s28 0.672414
f1v0s7 f3v13s38 0.689655
f1v0s7 f3v7s32 0.689655
f1v0s7 f3v1s26 0.672414
f1v0s7 f3v6s31 0.689655
f1v0s7 f1v13s20 1.000000
f1v0s7 f2v2s24 0.693878
f1v0s7 f3v11s36 0.672414
f1v0s7 f0v5s5 0.672414
f1v0s7 f1v11s18 0.982759
f1v0s7 f0v6s6 0.655172
f1v0s7 f3v4s29 0.689655
f1v0s7 f0v2s2 0.672414
f1v0s7 f3v12s37 0.689655
f1v0s7 f0v3s3 0.672414
f1v0s7 f3v14s39 0.672414
f1v0s7 f0v0s0 0.672414
f1v0s7 f1v12s19 0.982456
f3v9s34 f4v0s40 0.583333
f3v9s34 f1v7s14 0.689655
f3v9s34 f3v2s27 0.969231
f3v9s34 f4v1s41 0.573770
f3v9s34 f2v0s22 0.615385
f3v9s34 f1v2s9 0.615385
f3v9s34 f1v3s10 0.689655
f3v9s34 f3v0s25 0.984615
f3v9s34 f3v3s28 0.969231
f3v9s34 f3v13s38 0.984615
f3v9s34 f3v7s32 1.000000
f3v9s34 f3v1s26 0.953846
f3v9s34 f3v6s31 1.000000
f3v9s34 f1v13s20 0.696429
f3v9s34 f2v2s24 0.693878
f3v9s34 f3v11s36 0.938462
f3v9s34 f0v5s5 0.615385
f3v9s34 f1v11s18 0.689655
f3v9s34 f0v6s6 0.600000
f3v9s34 f3v4s29 0.969231
f3v9s34 f0v2s2 0.615385
f3v9s34 f3v12s37 0.969231
f3v9s34 f0v3s3 0.630769
f3v9s34 f3v14s39 0.984615
f3v9s34 f0v0s0 0.630769
f3v9s34 f1v12s19 0.684211
f4v0s40 f1v7s14 0.603448
f4v0s40 f3v2s27 0.600000
f4v0s40 f4v1s41 1.000000
f4v0s40 f2v0s22 0.650000
f4v0s40 f1v2s9 0.633333
f4v0s40 f1v3s10 0.603448
f4v0s40 f3v0s25 0.600000
f4v0s40 f3v3s28 0.600000
f4v0s40 f3v13s38 0.616667
f4v0s40 f3v7s32 0.583333
f4v0s40 f3v1s26 0.600000
f4v0s40 f3v6s31 0.583333
f4v0s40 f1v13s20 0.607143
f4v0s40 f2v2s24 0.693878
f4v0s40 f3v11s36 0.600000
f4v0s40 f0v5s5 0.633333
f4v0s40 f1v11s18 0.603448
f4v0s40 f0v6s6 0.650000
f4v0s40 f3v4s29 0.633333
f4v0s40 f0v2s2 0.650000
f4v0s40 f3v12s37 0.616667
f4v0s40 f0v3s3 0.616667
f4v0s40 f3v14s39 0.600000
f4v0s40 f0v0s0 0.633333
f4v0s40 f1v12s19 0.578947
f1v7s14 f3v2s27 0.672414
f1v7s14 f4v1s41 0.603448
f1v7s14 f2v0s22 0.672414
f1v7s14 f1v2s9 0.655172
f1v7s14 f1v3s10 1.000000
f1v7s14 f3v0s25 0.672414
f1v7s14 f3v3s28 0.672414
f1v7s14 f3v13s38 0.689655
f1v7s14 f3v7s32 0.689655
f1v7s14 f3v1s26 0.672414
f1v7s14 f3v6s31 0.689655
f1v7s14 f1v13s20 1.000000
f1v7s14 f2v2s24 0.693878
f1v7s14 f3v11s36 0.672414
f1v7s14 f0v5s5 0.672414
f1v7s14 f1v11s18 0.982759
f1v7s14 f0v6s6 0.655172
f1v7s14 f3v4s29 0.689655
f1v7s14 f0v2s2 0.672414
f1v7s14 f3v12s37 0.689655
f1v7s14 f0v3s3 0.672414
f1v7s14 f3v14s39 0.672414
f1v7s14 f0v0s0 0.672414
f1v7s14 f1v12s19 0.982456
f3v2s27 f4v1s41 0.590164
f3v2s27 f2v0s22 0.630769
f3v2s27 f1v2s9 0.615385
f3v2s27 f1v3s10 0.672414
f3v2s27 f3v0s25 1.000000
f3v2s27 f3v3s28 0.984615
f3v2s27 f3v13s38 1.000000
f3v2s27 f3v7s32 0.969231
f3v2s27 f3v1s26 0.969231
f3v2s27 f3v6s31 0.969231
f3v2s27 f1v13s20 0.678571
f3v2s27 f2v2s24 0.714286
f3v2s27 f3v11s36 0.953846
f3v2s27 f0v5s5 0.615385
f3v2s27 f1v11s18 0.672414
f3v2s27 f0v6s6 0.615385
f3v2s27 f3v4s29 0.984615
f3v2s27 f0v2s2 0.630769
f3v2s27 f3v12s37 0.984615
f3v2s27 f0v3s3 0.630769
f3v2s27 f3v14s39 1.000000
f3v2s27 f0v0s0 0.630769
f3v2s27 f1v12s19 0.666667
f4v1s41 f2v0s22 0.639344
f4v1s41 f1v2s9 0.622951
f4v1s41 f1v3s10 0.603448
f4v1s41 f3v0s25 0.590164
f4v1s41 f3v3s28 0.590164
f4v1s41 f3v13s38 0.606557
f4v1s41 f3v7s32 0.573770
f4v1s41 f3v1s26 0.590164
f4v1s41 f3v6s31 0.573770
f4v1s41 f1v13s20 0.607143
f4v1s41 f2v2s24 0.693878
f4v1s41 f3v11s36 0.590164
f4v1s41 f0v5s5 0.622951
f4v1s41 f1v11s18 0.603448
f4v1s41 f0v6s6 0.639344
f4v1s41 f3v4s29 0.622951
f4v1s41 f0v2s2 0.639344
f4v1s41 f3v12s37 0.606557
f4v1s41 f0v3s3 0.606557
f4v1s41 f3v14s39 0.590164
f4v1s41 f0v0s0 0.622951
f4v1s41 f1v12s19 0.578947
f2v0s22 f1v2s9 0.971014
f2v0s22 f1v3s10 0.672414
f2v0s22 f3v0s25 0.621212
f2v0s22 f3v3s28 0.621212
f2v0s22 f3v13s38 0.602941
f2v0s22 f3v7s32 0.615385
f2v0s22 f3v1s26 0.615385
f2v0s22 f3v6s31 0.615385
f2v0s22 f1v13s20 0.678571
f2v0s22 f2v2s24 0.714286
f2v0s22 f3v11s36 0.584615
f2v0s22 f0v5s5 0.971014
f2v0s22 f1v11s18 0.672414
f2v0s22 f0v6s6 0.927536
f2v0s22 f3v4s29 0.632353
f2v0s22 f0v2s2 1.000000
f2v0s22 f3v12s37 0.626866
f2v0s22 f0v3s3 0.970149
f2v0s22 f3v14s39 0.621212
f2v0s22 f0v0s0 0.985507
f2v0s22 f1v12s19 0.684211
f1v2s9 f1v3s10 0.655172
f1v2s9 f3v0s25 0.606061
f1v2s9 f3v3s28 0.606061
f1v2s9 f3v13s38 0.588235
f1v2s9 f3v7s32 0.615385
f1v2s9 f3v1s26 0.600000
f1v2s9 f3v6s31 0.615385
f1v2s9 f1v13s20 0.660714
f1v2s9 f2v2s24 0.714286
f1v2s9 f3v11s36 0.569231
f1v2s9 f0v5s5 0.971014
f1v2s9 f1v11s18 0.655172
f1v2s9 f0v6s6 0.927536
f1v2s9 f3v4s29 0.617647
f1v2s9 f0v2s2 0.971014
f1v2s9 f3v12s37 0.597015
f1v2s9 f0v3s3 0.970149
f1v2s9 f3v14s39 0.606061
f1v2s9 f0v0s0 0.985507
f1v2s9 f1v12s19 0.666667
f1v3s10 f3v0s25 0.672414
f1v3s10 f3v3s28 0.672414
f1v3s10 f3v13s38 0.689655
f1v3s10 f3v7s32 0.689655
f1v3s10 f3v1s26 0.672414
f1v3s10 f3v6s31 0.689655
f1v3s10 f1v13s20 1.000000
f1v3s10 f2v2s24 0.693878
f1v3s10 f3v11s36 0.672414
f1v3s10 f0v5s5 0.672414
f1v3s10 f1v11s18 0.982759
f1v3s10 f0v6s6 0.655172
f1v3s10 f3v4s29 0.689655
f1v3s10 f0v2s2 0.672414
f1v3s10 f3v12s37 0.689655
f1v3s10 f0v3s3 0.672414
f1v3s10 f3v14s39 0.672414
f1v3s10 f0v0s0 0.672414
f1v3s10 f1v12s19 0.982456
f3v0s25 f3v3s28 0.984848
f3v0s25 f3v13s38 1.000000
f3v0s25 f3v7s32 0.984615
f3v0s25 f3v1s26 0.984615
f3v0s25 f3v6s31 0.984615
f3v0s25 f1v13s20 0.678571
f3v0s25 f2v2s24 0.714286
f3v0s25 f3v11s36 0.969231
f3v0s25 f0v5s5 0.606061
f3v0s25 f1v11s18 0.672414
f3v0s25 f0v6s6 0.606061
f3v0s25 f3v4s29 0.984848
f3v0s25 f0v2s2 0.621212
f3v0s25 f3v12s37 0.984848
f3v0s25 f0v3s3 0.621212
f3v0s25 f3v14s39 1.000000
f3v0s25 f0v0s0 0.621212
f3v0s25 f1v12s19 0.666667
f3v3s28 f3v13s38 0.984848
f3v3s28 f3v7s32 0.969231
f3v3s28 f3v1s26 0.969231
f3v3s28 f3v6s31 0.969231
f3v3s28 f1v13s20 0.678571
f3v3s28 f2v2s24 0.734694
f3v3s28 f3v11s36 0.953846
f3v3s28 f0v5s5 0.606061
f3v3s28 f1v11s18 0.672414
f3v3s28 f0v6s6 0.606061
f3v3s28 f3v4s29 0.969697
f3v3s28 f0v2s2 0.621212
f3v3s28 f3v12s37 0.969697
f3v3s28 f0v3s3 0.621212
f3v3s28 f3v14s39 0.984848
f3v3s28 f0v0s0 0.621212
f3v3s28 f1v12s19 0.666667
f3v13s38 f3v7s32 0.984615
f3v13s38 f3v1s26 0.984615
f3v13s38 f3v6s31 0.984615
f3v13s38 f1v13s20 0.696429
f3v13s38 f2v2s24 0.734694
f3v13s38 f3v11s36 0.969231
f3v13s38 f0v5s5 0.588235
f3v13s38 f1v11s18 0.689655
f3v13s38 f0v6s6 0.588235
f3v13s38 f3v4s29 0.955882
f3v13s38 f0v2s2 0.602941
f3v13s38 f3v12s37 0.970149
f3v13s38 f0v3s3 0.611940
f3v13s38 f3v14s39 1.000000
f3v13s38 f0v0s0 0.602941
f3v13s38 f1v12s19 0.684211
f3v7s32 f3v1s26 0.953846
f3v7s32 f3v6s31 1.000000
f3v7s32 f1v13s20 0.696429
f3v7s32 f2v2s24 0.693878
f3v7s32 f3v11s36 0.938462
f3v7s32 f0v5s5 0.615385
f3v7s32 f1v11s18 0.689655
f3v7s32 f0v6s6 0.600000
f3v7s32 f3v4s29 0.969231
f3v7s32 f0v2s2 0.615385
f3v7s32 f3v12s37 0.969231
f3v7s32 f0v3s3 0.630769
f3v7s32 f3v14s39 0.984615
f3v7s32 f0v0s0 0.630769
f3v7s32 f1v12s19 0.684211
f3v1s26 f3v6s31 0.953846
f3v1s26 f1v13s20 0.678571
f3v1s26 f2v2s24 0.714286
f3v1s26 f3v11s36 0.938462
f3v1s26 f0v5s5 0.600000
f3v1s26 f1v11s18 0.672414
f3v1s26 f0v6s6 0.600000
f3v1s26 f3v4s29 0.969231
f3v1s26 f0v2s2 0.615385
f3v1s26 f3v12s37 0.969231
f3v1s26 f0v3s3 0.615385
f3v1s26 f3v14s39 0.984615
f3v1s26 f0v0s0 0.615385
f3v1s26 f1v12s19 0.666667
f3v6s31 f1v13s20 0.696429
f3v6s31 f2v2s24 0.693878
f3v6s31 f3v11s36 0.938462
f3v6s31 f0v5s5 0.615385
f3v6s31 f1v11s18 0.689655
f3v6s31 f0v6s6 0.600000
f3v6s31 f3v4s29 0.969231
f3v6s31 f0v2s2 0.615385
f3v6s31 f3v12s37 0.969231
f3v6s31 f0v3s3 0.630769
f3v6s31 f3v14s39 0.984615
f3v6s31 f0v0s0 0.630769
f3v6s31 f1v12s19 0.684211
f1v13s20 f2v2s24 0.693878
f1v13s20 f3v11s36 0.678571
f1v13s20 f0v5s5 0.696429
f1v13s20 f1v11s18 0.982143
f1v13s20 f0v6s6 0.660714
f1v13s20 f3v4s29 0.696429
f1v13s20 f0v2s2 0.678571
f1v13s20 f3v12s37 0.696429
f1v13s20 f0v3s3 0.678571
f1v13s20 f3v14s39 0.678571
f1v13s20 f0v0s0 0.678571
f1v13s20 f1v12s19 0.964286
f2v2s24 f3v11s36 0.693878
f2v2s24 f0v5s5 0.714286
f2v2s24 f1v11s18 0.693878
f2v2s24 f0v6s6 0.714286
f2v2s24 f3v4s29 0.734694
f2v2s24 f0v2s2 0.714286
f2v2s24 f3v12s37 0.734694
f2v2s24 f0v3s3 0.693878
f2v2s24 f3v14s39 0.714286
f2v2s24 f0v0s0 0.714286
f2v2s24 f1v12s19 0.673469
f3v11s36 f0v5s5 0.584615
f3v11s36 f1v11s18 0.672414
f3v11s36 f0v6s6 0.584615
f3v11s36 f3v4s29 0.953846
f3v11s36 f0v2s2 0.584615
f3v11s36 f3v12s37 0.953846
f3v11s36 f0v3s3 0.584615
f3v11s36 f3v14s39 0.969231
f3v11s36 f0v0s0 0.584615
f3v11s36 f1v12s19 0.666667
f0v5s5 f1v11s18 0.689655
f0v5s5 f0v6s6 0.927536
f0v5s5 f3v4s29 0.617647
f0v5s5 f0v2s2 0.971014
f0v5s5 f3v12s37 0.597015
f0v5s5 f0v3s3 0.970149
f0v5s5 f3v14s39 0.606061
f0v5s5 f0v0s0 0.985507
f0v5s5 f1v12s19 0.666667
f1v11s18 f0v6s6 0.655172
f1v11s18 f3v4s29 0.689655
f1v11s18 f0v2s2 0.672414
f1v11s18 f3v12s37 0.689655
f1v11s18 f0v3s3 0.672414
f1v11s18 f3v14s39 0.672414
f1v11s18 f0v0s0 0.672414
f1v11s18 f1v12s19 0.964912
f0v6s6 f3v4s29 0.617647
f0v6s6 f0v2s2 0.927536
f0v6s6 f3v12s37 0.597015
f0v6s6 f0v3s3 0.925373
f0v6s6 f3v14s39 0.606061
f0v6s6 f0v0s0 0.942029
f0v6s6 f1v12s19 0.666667
f3v4s29 f0v2s2 0.632353
f3v4s29 f3v12s37 0.955224
f3v4s29 f0v3s3 0.641791
f3v4s29 f3v14s39 0.984848
f3v4s29 f0v0s0 0.632353
f3v4s29 f1v12s19 0.684211
f0v2s2 f3v12s37 0.626866
f0v2s2 f0v3s3 0.970149
f0v2s2 f3v14s39 0.621212
f0v2s2 f0v0s0 0.985507
f0v2s2 f1v12s19 0.684211
f3v12s37 f0v3s3 0.611940
f3v12s37 f3v14s39 0.984848
f3v12s37 f0v0s0 0.611940
f3v12s37 f1v12s19 0.684211
f0v3s3 f3v14s39 0.621212
f0v3s3 f0v0s0 0.985075
f0v3s3 f1v12s19 0.666667
f3v14s39 f0v0s0 0.621212
f3v14s39 f1v12s19 0.666667
f0v0s0 f1v12s19 0.684211
+224
View File
@@ -0,0 +1,224 @@
f3v10s35 f3v8s33 0.910448 87579 88635 65 66
f3v10s35 f3v9s34 0.910448 87579 40677 65 65
f3v10s35 f3v2s27 0.910448 87579 74030 65 65
f3v10s35 f3v0s25 0.925373 87579 62755 65 66
f3v10s35 f3v7s32 0.910448 87579 53710 65 65
f3v10s35 f3v1s26 0.910448 87579 41283 65 65
f3v10s35 f3v6s31 0.910448 87579 94783 65 65
f3v10s35 f3v14s39 0.925373 87579 55015 65 66
f3v5s30 f3v8s33 0.924242 39802 88635 63 66
f3v5s30 f3v9s34 0.909091 39802 40677 63 65
f3v5s30 f3v2s27 0.924242 39802 74030 63 65
f3v5s30 f3v0s25 0.939394 39802 62755 63 66
f3v5s30 f3v3s28 0.910448 39802 66465 63 66
f3v5s30 f3v13s38 0.911765 39802 26948 63 68
f3v5s30 f3v7s32 0.909091 39802 53710 63 65
f3v5s30 f3v1s26 0.910448 39802 41283 63 65
f3v5s30 f3v6s31 0.909091 39802 94783 63 65
f3v5s30 f3v12s37 0.910448 39802 74202 63 67
f3v5s30 f3v14s39 0.939394 39802 55015 63 66
f1v8s15 f2v1s23 0.982759 66109 35696 57 58
f1v8s15 f1v6s13 0.947368 66109 80246 57 56
f1v8s15 f1v1s8 0.916667 66109 17651 57 60
f1v8s15 f1v14s21 0.931034 66109 85030 57 56
f1v8s15 f1v5s12 0.916667 66109 1410 57 60
f1v8s15 f1v4s11 0.982759 66109 74527 57 58
f1v8s15 f1v9s16 0.933333 66109 65777 57 60
f1v8s15 f1v10s17 0.916667 66109 98659 57 60
f1v8s15 f1v0s7 0.982759 66109 84420 57 58
f1v8s15 f1v7s14 0.982759 66109 42277 57 58
f1v8s15 f1v3s10 0.982759 66109 43230 57 58
f1v8s15 f1v13s20 0.948276 66109 80913 57 56
f1v8s15 f1v11s18 0.965517 66109 51814 57 58
f1v8s15 f1v12s19 0.948276 66109 58178 57 57
f2v1s23 f1v6s13 0.931034 35696 80246 58 56
f2v1s23 f1v1s8 0.933333 35696 17651 58 60
f2v1s23 f1v14s21 0.948276 35696 85030 58 56
f2v1s23 f1v5s12 0.933333 35696 1410 58 60
f2v1s23 f1v4s11 1.000000 35696 74527 58 58
f2v1s23 f1v9s16 0.950000 35696 65777 58 60
f2v1s23 f1v10s17 0.933333 35696 98659 58 60
f2v1s23 f1v0s7 1.000000 35696 84420 58 58
f2v1s23 f1v7s14 1.000000 35696 42277 58 58
f2v1s23 f1v3s10 1.000000 35696 43230 58 58
f2v1s23 f1v13s20 0.965517 35696 80913 58 56
f2v1s23 f1v11s18 0.982759 35696 51814 58 58
f2v1s23 f1v12s19 0.965517 35696 58178 58 57
f4v2s42 f4v0s40 0.967213 17302 75843 61 60
f4v2s42 f4v1s41 0.951613 17302 45686 61 61
f0v4s4 f0v1s1 1.000000 86916 43883 69 69
f0v4s4 f2v0s22 0.943662 86916 43219 69 69
f0v4s4 f1v2s9 1.000000 86916 99108 69 69
f0v4s4 f0v5s5 0.943662 86916 2668 69 69
f0v4s4 f0v6s6 0.901408 86916 16273 69 69
f0v4s4 f0v2s2 0.943662 86916 10896 69 69
f0v4s4 f0v3s3 0.915493 86916 73040 69 67
f0v4s4 f0v0s0 0.971429 86916 1332 69 69
f1v6s13 f1v4s11 0.931034 80246 74527 56 58
f1v6s13 f1v0s7 0.931034 80246 84420 56 58
f1v6s13 f1v7s14 0.931034 80246 42277 56 58
f1v6s13 f1v3s10 0.931034 80246 43230 56 58
f1v6s13 f1v11s18 0.913793 80246 51814 56 58
f3v8s33 f3v9s34 0.954545 88635 40677 66 65
f3v8s33 f3v2s27 0.969697 88635 74030 66 65
f3v8s33 f3v0s25 0.984848 88635 62755 66 66
f3v8s33 f3v3s28 0.955224 88635 66465 66 66
f3v8s33 f3v13s38 0.955882 88635 26948 66 68
f3v8s33 f3v7s32 0.954545 88635 53710 66 65
f3v8s33 f3v1s26 0.954545 88635 41283 66 65
f3v8s33 f3v6s31 0.954545 88635 94783 66 65
f3v8s33 f3v11s36 0.925373 88635 91927 66 65
f3v8s33 f3v4s29 0.941176 88635 94356 66 68
f3v8s33 f3v12s37 0.955224 88635 74202 66 67
f3v8s33 f3v14s39 0.984848 88635 55015 66 66
f1v1s8 f1v14s21 0.916667 17651 85030 60 56
f1v1s8 f1v4s11 0.933333 17651 74527 60 58
f1v1s8 f1v0s7 0.933333 17651 84420 60 58
f1v1s8 f1v7s14 0.933333 17651 42277 60 58
f1v1s8 f1v3s10 0.933333 17651 43230 60 58
f1v1s8 f1v13s20 0.900000 17651 80913 60 56
f1v1s8 f1v11s18 0.916667 17651 51814 60 58
f1v1s8 f1v12s19 0.916667 17651 58178 60 57
f1v14s21 f1v4s11 0.948276 85030 74527 56 58
f1v14s21 f1v9s16 0.900000 85030 65777 56 60
f1v14s21 f1v0s7 0.948276 85030 84420 56 58
f1v14s21 f1v7s14 0.948276 85030 42277 56 58
f1v14s21 f1v3s10 0.948276 85030 43230 56 58
f1v14s21 f1v13s20 0.913793 85030 80913 56 56
f1v14s21 f1v11s18 0.931034 85030 51814 56 58
f1v14s21 f1v12s19 0.913793 85030 58178 56 57
f0v1s1 f2v0s22 0.943662 43883 43219 69 69
f0v1s1 f1v2s9 1.000000 43883 99108 69 69
f0v1s1 f0v5s5 0.943662 43883 2668 69 69
f0v1s1 f0v6s6 0.901408 43883 16273 69 69
f0v1s1 f0v2s2 0.943662 43883 10896 69 69
f0v1s1 f0v3s3 0.915493 43883 73040 69 67
f0v1s1 f0v0s0 0.971429 43883 1332 69 69
f1v5s12 f1v4s11 0.933333 1410 74527 60 58
f1v5s12 f1v0s7 0.933333 1410 84420 60 58
f1v5s12 f1v7s14 0.933333 1410 42277 60 58
f1v5s12 f1v3s10 0.933333 1410 43230 60 58
f1v5s12 f1v13s20 0.900000 1410 80913 60 56
f1v5s12 f1v11s18 0.916667 1410 51814 60 58
f1v5s12 f1v12s19 0.916667 1410 58178 60 57
f1v4s11 f1v9s16 0.950000 74527 65777 58 60
f1v4s11 f1v10s17 0.933333 74527 98659 58 60
f1v4s11 f1v0s7 1.000000 74527 84420 58 58
f1v4s11 f1v7s14 1.000000 74527 42277 58 58
f1v4s11 f1v3s10 1.000000 74527 43230 58 58
f1v4s11 f1v13s20 0.965517 74527 80913 58 56
f1v4s11 f1v11s18 0.982759 74527 51814 58 58
f1v4s11 f1v12s19 0.965517 74527 58178 58 57
f1v9s16 f1v0s7 0.950000 65777 84420 60 58
f1v9s16 f1v7s14 0.950000 65777 42277 60 58
f1v9s16 f1v3s10 0.950000 65777 43230 60 58
f1v9s16 f1v13s20 0.916667 65777 80913 60 56
f1v9s16 f1v11s18 0.933333 65777 51814 60 58
f1v9s16 f1v12s19 0.916667 65777 58178 60 57
f1v10s17 f1v0s7 0.933333 98659 84420 60 58
f1v10s17 f1v7s14 0.933333 98659 42277 60 58
f1v10s17 f1v3s10 0.933333 98659 43230 60 58
f1v10s17 f1v13s20 0.900000 98659 80913 60 56
f1v10s17 f1v11s18 0.916667 98659 51814 60 58
f1v10s17 f1v12s19 0.916667 98659 58178 60 57
f1v0s7 f1v7s14 1.000000 84420 42277 58 58
f1v0s7 f1v3s10 1.000000 84420 43230 58 58
f1v0s7 f1v13s20 0.965517 84420 80913 58 56
f1v0s7 f1v11s18 0.982759 84420 51814 58 58
f1v0s7 f1v12s19 0.965517 84420 58178 58 57
f3v9s34 f3v2s27 0.954545 40677 74030 65 65
f3v9s34 f3v0s25 0.969697 40677 62755 65 66
f3v9s34 f3v3s28 0.940299 40677 66465 65 66
f3v9s34 f3v13s38 0.941176 40677 26948 65 68
f3v9s34 f3v7s32 1.000000 40677 53710 65 65
f3v9s34 f3v1s26 0.939394 40677 41283 65 65
f3v9s34 f3v6s31 1.000000 40677 94783 65 65
f3v9s34 f3v11s36 0.910448 40677 91927 65 65
f3v9s34 f3v4s29 0.926471 40677 94356 65 68
f3v9s34 f3v12s37 0.940299 40677 74202 65 67
f3v9s34 f3v14s39 0.969697 40677 55015 65 66
f4v0s40 f4v1s41 0.983607 75843 45686 60 61
f1v7s14 f1v3s10 1.000000 42277 43230 58 58
f1v7s14 f1v13s20 0.965517 42277 80913 58 56
f1v7s14 f1v11s18 0.982759 42277 51814 58 58
f1v7s14 f1v12s19 0.965517 42277 58178 58 57
f3v2s27 f3v0s25 0.984848 74030 62755 65 66
f3v2s27 f3v3s28 0.955224 74030 66465 65 66
f3v2s27 f3v13s38 0.955882 74030 26948 65 68
f3v2s27 f3v7s32 0.954545 74030 53710 65 65
f3v2s27 f3v1s26 0.969231 74030 41283 65 65
f3v2s27 f3v6s31 0.954545 74030 94783 65 65
f3v2s27 f3v11s36 0.925373 74030 91927 65 65
f3v2s27 f3v4s29 0.941176 74030 94356 65 68
f3v2s27 f3v12s37 0.955224 74030 74202 65 67
f3v2s27 f3v14s39 0.984848 74030 55015 65 66
f2v0s22 f1v2s9 0.943662 43219 99108 69 69
f2v0s22 f0v5s5 0.943662 43219 2668 69 69
f2v0s22 f0v6s6 0.901408 43219 16273 69 69
f2v0s22 f0v2s2 1.000000 43219 10896 69 69
f2v0s22 f0v3s3 0.915493 43219 73040 69 67
f2v0s22 f0v0s0 0.971429 43219 1332 69 69
f1v2s9 f0v5s5 0.943662 99108 2668 69 69
f1v2s9 f0v6s6 0.901408 99108 16273 69 69
f1v2s9 f0v2s2 0.943662 99108 10896 69 69
f1v2s9 f0v3s3 0.915493 99108 73040 69 67
f1v2s9 f0v0s0 0.971429 99108 1332 69 69
f1v3s10 f1v13s20 0.965517 43230 80913 58 56
f1v3s10 f1v11s18 0.982759 43230 51814 58 58
f1v3s10 f1v12s19 0.965517 43230 58178 58 57
f3v0s25 f3v3s28 0.970149 62755 66465 66 66
f3v0s25 f3v13s38 0.970588 62755 26948 66 68
f3v0s25 f3v7s32 0.969697 62755 53710 66 65
f3v0s25 f3v1s26 0.969697 62755 41283 66 65
f3v0s25 f3v6s31 0.969697 62755 94783 66 65
f3v0s25 f3v11s36 0.940299 62755 91927 66 65
f3v0s25 f3v4s29 0.955882 62755 94356 66 68
f3v0s25 f3v12s37 0.970149 62755 74202 66 67
f3v0s25 f3v14s39 1.000000 62755 55015 66 66
f3v3s28 f3v13s38 0.955882 66465 26948 66 68
f3v3s28 f3v7s32 0.940299 66465 53710 66 65
f3v3s28 f3v1s26 0.940299 66465 41283 66 65
f3v3s28 f3v6s31 0.940299 66465 94783 66 65
f3v3s28 f3v11s36 0.911765 66465 91927 66 65
f3v3s28 f3v4s29 0.941176 66465 94356 66 68
f3v3s28 f3v12s37 0.941176 66465 74202 66 67
f3v3s28 f3v14s39 0.970149 66465 55015 66 66
f3v13s38 f3v7s32 0.941176 26948 53710 68 65
f3v13s38 f3v1s26 0.941176 26948 41283 68 65
f3v13s38 f3v6s31 0.941176 26948 94783 68 65
f3v13s38 f3v11s36 0.913043 26948 91927 68 65
f3v13s38 f3v4s29 0.942029 26948 94356 68 68
f3v13s38 f3v12s37 0.942029 26948 74202 68 67
f3v13s38 f3v14s39 0.970588 26948 55015 68 66
f3v7s32 f3v1s26 0.939394 53710 41283 65 65
f3v7s32 f3v6s31 1.000000 53710 94783 65 65
f3v7s32 f3v11s36 0.910448 53710 91927 65 65
f3v7s32 f3v4s29 0.926471 53710 94356 65 68
f3v7s32 f3v12s37 0.940299 53710 74202 65 67
f3v7s32 f3v14s39 0.969697 53710 55015 65 66
f3v1s26 f3v6s31 0.939394 41283 94783 65 65
f3v1s26 f3v11s36 0.910448 41283 91927 65 65
f3v1s26 f3v4s29 0.926471 41283 94356 65 68
f3v1s26 f3v12s37 0.940299 41283 74202 65 67
f3v1s26 f3v14s39 0.969697 41283 55015 65 66
f3v6s31 f3v11s36 0.910448 94783 91927 65 65
f3v6s31 f3v4s29 0.926471 94783 94356 65 68
f3v6s31 f3v12s37 0.940299 94783 74202 65 67
f3v6s31 f3v14s39 0.969697 94783 55015 65 66
f1v13s20 f1v11s18 0.948276 80913 51814 56 58
f1v13s20 f1v12s19 0.931034 80913 58178 56 57
f3v11s36 f3v12s37 0.911765 91927 74202 65 67
f3v11s36 f3v14s39 0.940299 91927 55015 65 66
f0v5s5 f0v6s6 0.901408 2668 16273 69 69
f0v5s5 f0v2s2 0.943662 2668 10896 69 69
f0v5s5 f0v3s3 0.915493 2668 73040 69 67
f0v5s5 f0v0s0 0.971429 2668 1332 69 69
f1v11s18 f1v12s19 0.948276 51814 58178 58 57
f0v6s6 f0v2s2 0.901408 16273 10896 69 69
f0v6s6 f0v0s0 0.928571 16273 1332 69 69
f3v4s29 f3v12s37 0.927536 94356 74202 68 67
f3v4s29 f3v14s39 0.955882 94356 55015 68 66
f0v2s2 f0v3s3 0.915493 10896 73040 69 67
f0v2s2 f0v0s0 0.971429 10896 1332 69 69
f3v12s37 f3v14s39 0.970149 74202 55015 67 66
f0v3s3 f0v0s0 0.942857 73040 1332 67 69
+224
View File
@@ -0,0 +1,224 @@
f3v10s35 f3v8s33 0.089552
f3v10s35 f3v9s34 0.089552
f3v10s35 f3v2s27 0.089552
f3v10s35 f3v0s25 0.074627
f3v10s35 f3v7s32 0.089552
f3v10s35 f3v1s26 0.089552
f3v10s35 f3v6s31 0.089552
f3v10s35 f3v14s39 0.074627
f3v5s30 f3v8s33 0.075758
f3v5s30 f3v9s34 0.090909
f3v5s30 f3v2s27 0.075758
f3v5s30 f3v0s25 0.060606
f3v5s30 f3v3s28 0.089552
f3v5s30 f3v13s38 0.088235
f3v5s30 f3v7s32 0.090909
f3v5s30 f3v1s26 0.089552
f3v5s30 f3v6s31 0.090909
f3v5s30 f3v12s37 0.089552
f3v5s30 f3v14s39 0.060606
f1v8s15 f2v1s23 0.017241
f1v8s15 f1v6s13 0.052632
f1v8s15 f1v1s8 0.083333
f1v8s15 f1v14s21 0.068966
f1v8s15 f1v5s12 0.083333
f1v8s15 f1v4s11 0.017241
f1v8s15 f1v9s16 0.066667
f1v8s15 f1v10s17 0.083333
f1v8s15 f1v0s7 0.017241
f1v8s15 f1v7s14 0.017241
f1v8s15 f1v3s10 0.017241
f1v8s15 f1v13s20 0.051724
f1v8s15 f1v11s18 0.034483
f1v8s15 f1v12s19 0.051724
f2v1s23 f1v6s13 0.068966
f2v1s23 f1v1s8 0.066667
f2v1s23 f1v14s21 0.051724
f2v1s23 f1v5s12 0.066667
f2v1s23 f1v4s11 0.000000
f2v1s23 f1v9s16 0.050000
f2v1s23 f1v10s17 0.066667
f2v1s23 f1v0s7 0.000000
f2v1s23 f1v7s14 0.000000
f2v1s23 f1v3s10 0.000000
f2v1s23 f1v13s20 0.034483
f2v1s23 f1v11s18 0.017241
f2v1s23 f1v12s19 0.034483
f4v2s42 f4v0s40 0.032787
f4v2s42 f4v1s41 0.048387
f0v4s4 f0v1s1 0.000000
f0v4s4 f2v0s22 0.056338
f0v4s4 f1v2s9 0.000000
f0v4s4 f0v5s5 0.056338
f0v4s4 f0v6s6 0.098592
f0v4s4 f0v2s2 0.056338
f0v4s4 f0v3s3 0.084507
f0v4s4 f0v0s0 0.028571
f1v6s13 f1v4s11 0.068966
f1v6s13 f1v0s7 0.068966
f1v6s13 f1v7s14 0.068966
f1v6s13 f1v3s10 0.068966
f1v6s13 f1v11s18 0.086207
f3v8s33 f3v9s34 0.045455
f3v8s33 f3v2s27 0.030303
f3v8s33 f3v0s25 0.015152
f3v8s33 f3v3s28 0.044776
f3v8s33 f3v13s38 0.044118
f3v8s33 f3v7s32 0.045455
f3v8s33 f3v1s26 0.045455
f3v8s33 f3v6s31 0.045455
f3v8s33 f3v11s36 0.074627
f3v8s33 f3v4s29 0.058824
f3v8s33 f3v12s37 0.044776
f3v8s33 f3v14s39 0.015152
f1v1s8 f1v14s21 0.083333
f1v1s8 f1v4s11 0.066667
f1v1s8 f1v0s7 0.066667
f1v1s8 f1v7s14 0.066667
f1v1s8 f1v3s10 0.066667
f1v1s8 f1v13s20 0.100000
f1v1s8 f1v11s18 0.083333
f1v1s8 f1v12s19 0.083333
f1v14s21 f1v4s11 0.051724
f1v14s21 f1v9s16 0.100000
f1v14s21 f1v0s7 0.051724
f1v14s21 f1v7s14 0.051724
f1v14s21 f1v3s10 0.051724
f1v14s21 f1v13s20 0.086207
f1v14s21 f1v11s18 0.068966
f1v14s21 f1v12s19 0.086207
f0v1s1 f2v0s22 0.056338
f0v1s1 f1v2s9 0.000000
f0v1s1 f0v5s5 0.056338
f0v1s1 f0v6s6 0.098592
f0v1s1 f0v2s2 0.056338
f0v1s1 f0v3s3 0.084507
f0v1s1 f0v0s0 0.028571
f1v5s12 f1v4s11 0.066667
f1v5s12 f1v0s7 0.066667
f1v5s12 f1v7s14 0.066667
f1v5s12 f1v3s10 0.066667
f1v5s12 f1v13s20 0.100000
f1v5s12 f1v11s18 0.083333
f1v5s12 f1v12s19 0.083333
f1v4s11 f1v9s16 0.050000
f1v4s11 f1v10s17 0.066667
f1v4s11 f1v0s7 0.000000
f1v4s11 f1v7s14 0.000000
f1v4s11 f1v3s10 0.000000
f1v4s11 f1v13s20 0.034483
f1v4s11 f1v11s18 0.017241
f1v4s11 f1v12s19 0.034483
f1v9s16 f1v0s7 0.050000
f1v9s16 f1v7s14 0.050000
f1v9s16 f1v3s10 0.050000
f1v9s16 f1v13s20 0.083333
f1v9s16 f1v11s18 0.066667
f1v9s16 f1v12s19 0.083333
f1v10s17 f1v0s7 0.066667
f1v10s17 f1v7s14 0.066667
f1v10s17 f1v3s10 0.066667
f1v10s17 f1v13s20 0.100000
f1v10s17 f1v11s18 0.083333
f1v10s17 f1v12s19 0.083333
f1v0s7 f1v7s14 0.000000
f1v0s7 f1v3s10 0.000000
f1v0s7 f1v13s20 0.034483
f1v0s7 f1v11s18 0.017241
f1v0s7 f1v12s19 0.034483
f3v9s34 f3v2s27 0.045455
f3v9s34 f3v0s25 0.030303
f3v9s34 f3v3s28 0.059701
f3v9s34 f3v13s38 0.058824
f3v9s34 f3v7s32 0.000000
f3v9s34 f3v1s26 0.060606
f3v9s34 f3v6s31 0.000000
f3v9s34 f3v11s36 0.089552
f3v9s34 f3v4s29 0.073529
f3v9s34 f3v12s37 0.059701
f3v9s34 f3v14s39 0.030303
f4v0s40 f4v1s41 0.016393
f1v7s14 f1v3s10 0.000000
f1v7s14 f1v13s20 0.034483
f1v7s14 f1v11s18 0.017241
f1v7s14 f1v12s19 0.034483
f3v2s27 f3v0s25 0.015152
f3v2s27 f3v3s28 0.044776
f3v2s27 f3v13s38 0.044118
f3v2s27 f3v7s32 0.045455
f3v2s27 f3v1s26 0.030769
f3v2s27 f3v6s31 0.045455
f3v2s27 f3v11s36 0.074627
f3v2s27 f3v4s29 0.058824
f3v2s27 f3v12s37 0.044776
f3v2s27 f3v14s39 0.015152
f2v0s22 f1v2s9 0.056338
f2v0s22 f0v5s5 0.056338
f2v0s22 f0v6s6 0.098592
f2v0s22 f0v2s2 0.000000
f2v0s22 f0v3s3 0.084507
f2v0s22 f0v0s0 0.028571
f1v2s9 f0v5s5 0.056338
f1v2s9 f0v6s6 0.098592
f1v2s9 f0v2s2 0.056338
f1v2s9 f0v3s3 0.084507
f1v2s9 f0v0s0 0.028571
f1v3s10 f1v13s20 0.034483
f1v3s10 f1v11s18 0.017241
f1v3s10 f1v12s19 0.034483
f3v0s25 f3v3s28 0.029851
f3v0s25 f3v13s38 0.029412
f3v0s25 f3v7s32 0.030303
f3v0s25 f3v1s26 0.030303
f3v0s25 f3v6s31 0.030303
f3v0s25 f3v11s36 0.059701
f3v0s25 f3v4s29 0.044118
f3v0s25 f3v12s37 0.029851
f3v0s25 f3v14s39 0.000000
f3v3s28 f3v13s38 0.044118
f3v3s28 f3v7s32 0.059701
f3v3s28 f3v1s26 0.059701
f3v3s28 f3v6s31 0.059701
f3v3s28 f3v11s36 0.088235
f3v3s28 f3v4s29 0.058824
f3v3s28 f3v12s37 0.058824
f3v3s28 f3v14s39 0.029851
f3v13s38 f3v7s32 0.058824
f3v13s38 f3v1s26 0.058824
f3v13s38 f3v6s31 0.058824
f3v13s38 f3v11s36 0.086957
f3v13s38 f3v4s29 0.057971
f3v13s38 f3v12s37 0.057971
f3v13s38 f3v14s39 0.029412
f3v7s32 f3v1s26 0.060606
f3v7s32 f3v6s31 0.000000
f3v7s32 f3v11s36 0.089552
f3v7s32 f3v4s29 0.073529
f3v7s32 f3v12s37 0.059701
f3v7s32 f3v14s39 0.030303
f3v1s26 f3v6s31 0.060606
f3v1s26 f3v11s36 0.089552
f3v1s26 f3v4s29 0.073529
f3v1s26 f3v12s37 0.059701
f3v1s26 f3v14s39 0.030303
f3v6s31 f3v11s36 0.089552
f3v6s31 f3v4s29 0.073529
f3v6s31 f3v12s37 0.059701
f3v6s31 f3v14s39 0.030303
f1v13s20 f1v11s18 0.051724
f1v13s20 f1v12s19 0.068966
f3v11s36 f3v12s37 0.088235
f3v11s36 f3v14s39 0.059701
f0v5s5 f0v6s6 0.098592
f0v5s5 f0v2s2 0.056338
f0v5s5 f0v3s3 0.084507
f0v5s5 f0v0s0 0.028571
f1v11s18 f1v12s19 0.051724
f0v6s6 f0v2s2 0.098592
f0v6s6 f0v0s0 0.071429
f3v4s29 f3v12s37 0.072464
f3v4s29 f3v14s39 0.044118
f0v2s2 f0v3s3 0.084507
f0v2s2 f0v0s0 0.028571
f3v12s37 f3v14s39 0.029851
f0v3s3 f0v0s0 0.057143
+249
View File
@@ -0,0 +1,249 @@
f3v10s35 f3v5s30 0.892308
f3v10s35 f3v8s33 0.924242
f3v10s35 f3v9s34 0.938462
f3v10s35 f3v2s27 0.938462
f3v10s35 f3v0s25 0.939394
f3v10s35 f3v3s28 0.924242
f3v10s35 f3v13s38 0.911765
f3v10s35 f3v7s32 0.938462
f3v10s35 f3v1s26 0.938462
f3v10s35 f3v6s31 0.938462
f3v10s35 f3v11s36 0.907692
f3v10s35 f3v4s29 0.897059
f3v10s35 f3v12s37 0.910448
f3v10s35 f3v14s39 0.939394
f3v5s30 f3v8s33 0.924242
f3v5s30 f3v9s34 0.923077
f3v5s30 f3v2s27 0.938462
f3v5s30 f3v0s25 0.939394
f3v5s30 f3v3s28 0.924242
f3v5s30 f3v13s38 0.911765
f3v5s30 f3v7s32 0.923077
f3v5s30 f3v1s26 0.938462
f3v5s30 f3v6s31 0.923077
f3v5s30 f3v11s36 0.907692
f3v5s30 f3v4s29 0.897059
f3v5s30 f3v12s37 0.910448
f3v5s30 f3v14s39 0.939394
f1v8s15 f2v1s23 0.982759
f1v8s15 f1v6s13 0.947368
f1v8s15 f1v1s8 0.916667
f1v8s15 f1v14s21 0.947368
f1v8s15 f1v5s12 0.916667
f1v8s15 f1v4s11 0.982759
f1v8s15 f1v9s16 0.933333
f1v8s15 f1v10s17 0.916667
f1v8s15 f1v0s7 0.982759
f1v8s15 f1v7s14 0.982759
f1v8s15 f1v3s10 0.982759
f1v8s15 f1v13s20 0.964912
f1v8s15 f1v11s18 0.965517
f1v8s15 f1v12s19 0.964912
f2v1s23 f1v6s13 0.931034
f2v1s23 f1v1s8 0.933333
f2v1s23 f1v14s21 0.948276
f2v1s23 f1v5s12 0.933333
f2v1s23 f1v4s11 1.000000
f2v1s23 f1v9s16 0.950000
f2v1s23 f1v10s17 0.933333
f2v1s23 f1v0s7 1.000000
f2v1s23 f1v7s14 1.000000
f2v1s23 f1v3s10 1.000000
f2v1s23 f1v13s20 0.965517
f2v1s23 f1v11s18 0.982759
f2v1s23 f1v12s19 0.965517
f4v2s42 f4v0s40 0.967213
f4v2s42 f4v1s41 0.967213
f0v4s4 f0v1s1 1.000000
f0v4s4 f2v0s22 0.971014
f0v4s4 f1v2s9 1.000000
f0v4s4 f0v5s5 0.971014
f0v4s4 f0v6s6 0.927536
f0v4s4 f0v2s2 0.971014
f0v4s4 f0v3s3 0.942029
f0v4s4 f0v0s0 0.985507
f1v6s13 f1v1s8 0.866667
f1v6s13 f1v14s21 0.910714
f1v6s13 f1v5s12 0.866667
f1v6s13 f1v4s11 0.931034
f1v6s13 f1v9s16 0.883333
f1v6s13 f1v10s17 0.883333
f1v6s13 f1v0s7 0.931034
f1v6s13 f1v7s14 0.931034
f1v6s13 f1v3s10 0.931034
f1v6s13 f1v13s20 0.928571
f1v6s13 f1v11s18 0.913793
f1v6s13 f1v12s19 0.912281
f3v8s33 f3v9s34 0.954545
f3v8s33 f3v2s27 0.969697
f3v8s33 f3v0s25 0.984848
f3v8s33 f3v3s28 0.969697
f3v8s33 f3v13s38 0.955882
f3v8s33 f3v7s32 0.954545
f3v8s33 f3v1s26 0.954545
f3v8s33 f3v6s31 0.954545
f3v8s33 f3v11s36 0.939394
f3v8s33 f3v4s29 0.941176
f3v8s33 f3v12s37 0.955224
f3v8s33 f3v14s39 0.984848
f1v1s8 f1v14s21 0.916667
f1v1s8 f1v5s12 0.900000
f1v1s8 f1v4s11 0.933333
f1v1s8 f1v9s16 0.916667
f1v1s8 f1v10s17 0.900000
f1v1s8 f1v0s7 0.933333
f1v1s8 f1v7s14 0.933333
f1v1s8 f1v3s10 0.933333
f1v1s8 f1v13s20 0.900000
f1v1s8 f1v11s18 0.916667
f1v1s8 f1v12s19 0.916667
f1v14s21 f1v5s12 0.883333
f1v14s21 f1v4s11 0.948276
f1v14s21 f1v9s16 0.900000
f1v14s21 f1v10s17 0.883333
f1v14s21 f1v0s7 0.948276
f1v14s21 f1v7s14 0.948276
f1v14s21 f1v3s10 0.948276
f1v14s21 f1v13s20 0.946429
f1v14s21 f1v11s18 0.931034
f1v14s21 f1v12s19 0.929825
f0v1s1 f2v0s22 0.971014
f0v1s1 f1v2s9 1.000000
f0v1s1 f0v5s5 0.971014
f0v1s1 f0v6s6 0.927536
f0v1s1 f0v2s2 0.971014
f0v1s1 f0v3s3 0.942029
f0v1s1 f0v0s0 0.985507
f1v5s12 f1v4s11 0.933333
f1v5s12 f1v9s16 0.916667
f1v5s12 f1v10s17 0.916667
f1v5s12 f1v0s7 0.933333
f1v5s12 f1v7s14 0.933333
f1v5s12 f1v3s10 0.933333
f1v5s12 f1v13s20 0.900000
f1v5s12 f1v11s18 0.916667
f1v5s12 f1v12s19 0.916667
f1v4s11 f1v9s16 0.950000
f1v4s11 f1v10s17 0.933333
f1v4s11 f1v0s7 1.000000
f1v4s11 f1v7s14 1.000000
f1v4s11 f1v3s10 1.000000
f1v4s11 f1v13s20 0.965517
f1v4s11 f1v11s18 0.982759
f1v4s11 f1v12s19 0.965517
f1v9s16 f1v10s17 0.916667
f1v9s16 f1v0s7 0.950000
f1v9s16 f1v7s14 0.950000
f1v9s16 f1v3s10 0.950000
f1v9s16 f1v13s20 0.916667
f1v9s16 f1v11s18 0.933333
f1v9s16 f1v12s19 0.916667
f1v10s17 f1v0s7 0.933333
f1v10s17 f1v7s14 0.933333
f1v10s17 f1v3s10 0.933333
f1v10s17 f1v13s20 0.900000
f1v10s17 f1v11s18 0.916667
f1v10s17 f1v12s19 0.916667
f1v0s7 f1v7s14 1.000000
f1v0s7 f1v3s10 1.000000
f1v0s7 f1v13s20 0.965517
f1v0s7 f1v11s18 0.982759
f1v0s7 f1v12s19 0.965517
f3v9s34 f3v2s27 0.969231
f3v9s34 f3v0s25 0.969697
f3v9s34 f3v3s28 0.954545
f3v9s34 f3v13s38 0.941176
f3v9s34 f3v7s32 1.000000
f3v9s34 f3v1s26 0.953846
f3v9s34 f3v6s31 1.000000
f3v9s34 f3v11s36 0.938462
f3v9s34 f3v4s29 0.926471
f3v9s34 f3v12s37 0.940299
f3v9s34 f3v14s39 0.969697
f4v0s40 f4v1s41 0.983607
f1v7s14 f1v3s10 1.000000
f1v7s14 f1v13s20 0.965517
f1v7s14 f1v11s18 0.982759
f1v7s14 f1v12s19 0.965517
f3v2s27 f3v0s25 0.984848
f3v2s27 f3v3s28 0.969697
f3v2s27 f3v13s38 0.955882
f3v2s27 f3v7s32 0.969231
f3v2s27 f3v1s26 0.969231
f3v2s27 f3v6s31 0.969231
f3v2s27 f3v11s36 0.953846
f3v2s27 f3v4s29 0.941176
f3v2s27 f3v12s37 0.955224
f3v2s27 f3v14s39 0.984848
f2v0s22 f1v2s9 0.971014
f2v0s22 f0v5s5 0.971014
f2v0s22 f0v6s6 0.927536
f2v0s22 f0v2s2 1.000000
f2v0s22 f0v3s3 0.942029
f2v0s22 f0v0s0 0.985507
f1v2s9 f0v5s5 0.971014
f1v2s9 f0v6s6 0.927536
f1v2s9 f0v2s2 0.971014
f1v2s9 f0v3s3 0.942029
f1v2s9 f0v0s0 0.985507
f1v3s10 f1v13s20 0.965517
f1v3s10 f1v11s18 0.982759
f1v3s10 f1v12s19 0.965517
f3v0s25 f3v3s28 0.984848
f3v0s25 f3v13s38 0.970588
f3v0s25 f3v7s32 0.969697
f3v0s25 f3v1s26 0.969697
f3v0s25 f3v6s31 0.969697
f3v0s25 f3v11s36 0.954545
f3v0s25 f3v4s29 0.955882
f3v0s25 f3v12s37 0.970149
f3v0s25 f3v14s39 1.000000
f3v3s28 f3v13s38 0.955882
f3v3s28 f3v7s32 0.954545
f3v3s28 f3v1s26 0.954545
f3v3s28 f3v6s31 0.954545
f3v3s28 f3v11s36 0.939394
f3v3s28 f3v4s29 0.941176
f3v3s28 f3v12s37 0.955224
f3v3s28 f3v14s39 0.984848
f3v13s38 f3v7s32 0.941176
f3v13s38 f3v1s26 0.941176
f3v13s38 f3v6s31 0.941176
f3v13s38 f3v11s36 0.926471
f3v13s38 f3v4s29 0.955882
f3v13s38 f3v12s37 0.955882
f3v13s38 f3v14s39 0.970588
f3v7s32 f3v1s26 0.953846
f3v7s32 f3v6s31 1.000000
f3v7s32 f3v11s36 0.938462
f3v7s32 f3v4s29 0.926471
f3v7s32 f3v12s37 0.940299
f3v7s32 f3v14s39 0.969697
f3v1s26 f3v6s31 0.953846
f3v1s26 f3v11s36 0.938462
f3v1s26 f3v4s29 0.926471
f3v1s26 f3v12s37 0.940299
f3v1s26 f3v14s39 0.969697
f3v6s31 f3v11s36 0.938462
f3v6s31 f3v4s29 0.926471
f3v6s31 f3v12s37 0.940299
f3v6s31 f3v14s39 0.969697
f1v13s20 f1v11s18 0.948276
f1v13s20 f1v12s19 0.947368
f3v11s36 f3v4s29 0.911765
f3v11s36 f3v12s37 0.925373
f3v11s36 f3v14s39 0.954545
f0v5s5 f0v6s6 0.927536
f0v5s5 f0v2s2 0.971014
f0v5s5 f0v3s3 0.942029
f0v5s5 f0v0s0 0.985507
f1v11s18 f1v12s19 0.948276
f0v6s6 f0v2s2 0.927536
f0v6s6 f0v3s3 0.898551
f0v6s6 f0v0s0 0.942029
f3v4s29 f3v12s37 0.941176
f3v4s29 f3v14s39 0.955882
f0v2s2 f0v3s3 0.942029
f0v2s2 f0v0s0 0.985507
f3v12s37 f3v14s39 0.970149
f0v3s3 f0v0s0 0.956522
+249
View File
@@ -0,0 +1,249 @@
f3v10s35 f3v5s30 0.865672
f3v10s35 f3v8s33 0.910448
f3v10s35 f3v9s34 0.910448
f3v10s35 f3v2s27 0.910448
f3v10s35 f3v0s25 0.925373
f3v10s35 f3v3s28 0.897059
f3v10s35 f3v13s38 0.898551
f3v10s35 f3v7s32 0.910448
f3v10s35 f3v1s26 0.910448
f3v10s35 f3v6s31 0.910448
f3v10s35 f3v11s36 0.867647
f3v10s35 f3v4s29 0.884058
f3v10s35 f3v12s37 0.897059
f3v10s35 f3v14s39 0.925373
f3v5s30 f3v8s33 0.924242
f3v5s30 f3v9s34 0.909091
f3v5s30 f3v2s27 0.924242
f3v5s30 f3v0s25 0.939394
f3v5s30 f3v3s28 0.910448
f3v5s30 f3v13s38 0.911765
f3v5s30 f3v7s32 0.909091
f3v5s30 f3v1s26 0.910448
f3v5s30 f3v6s31 0.909091
f3v5s30 f3v11s36 0.893939
f3v5s30 f3v4s29 0.897059
f3v5s30 f3v12s37 0.910448
f3v5s30 f3v14s39 0.939394
f1v8s15 f2v1s23 0.982759
f1v8s15 f1v6s13 0.947368
f1v8s15 f1v1s8 0.916667
f1v8s15 f1v14s21 0.931034
f1v8s15 f1v5s12 0.916667
f1v8s15 f1v4s11 0.982759
f1v8s15 f1v9s16 0.933333
f1v8s15 f1v10s17 0.916667
f1v8s15 f1v0s7 0.982759
f1v8s15 f1v7s14 0.982759
f1v8s15 f1v3s10 0.982759
f1v8s15 f1v13s20 0.948276
f1v8s15 f1v11s18 0.965517
f1v8s15 f1v12s19 0.948276
f2v1s23 f1v6s13 0.931034
f2v1s23 f1v1s8 0.933333
f2v1s23 f1v14s21 0.948276
f2v1s23 f1v5s12 0.933333
f2v1s23 f1v4s11 1.000000
f2v1s23 f1v9s16 0.950000
f2v1s23 f1v10s17 0.933333
f2v1s23 f1v0s7 1.000000
f2v1s23 f1v7s14 1.000000
f2v1s23 f1v3s10 1.000000
f2v1s23 f1v13s20 0.965517
f2v1s23 f1v11s18 0.982759
f2v1s23 f1v12s19 0.965517
f4v2s42 f4v0s40 0.967213
f4v2s42 f4v1s41 0.951613
f0v4s4 f0v1s1 1.000000
f0v4s4 f2v0s22 0.943662
f0v4s4 f1v2s9 1.000000
f0v4s4 f0v5s5 0.943662
f0v4s4 f0v6s6 0.901408
f0v4s4 f0v2s2 0.943662
f0v4s4 f0v3s3 0.915493
f0v4s4 f0v0s0 0.971429
f1v6s13 f1v1s8 0.866667
f1v6s13 f1v14s21 0.879310
f1v6s13 f1v5s12 0.866667
f1v6s13 f1v4s11 0.931034
f1v6s13 f1v9s16 0.883333
f1v6s13 f1v10s17 0.883333
f1v6s13 f1v0s7 0.931034
f1v6s13 f1v7s14 0.931034
f1v6s13 f1v3s10 0.931034
f1v6s13 f1v13s20 0.896552
f1v6s13 f1v11s18 0.913793
f1v6s13 f1v12s19 0.896552
f3v8s33 f3v9s34 0.954545
f3v8s33 f3v2s27 0.969697
f3v8s33 f3v0s25 0.984848
f3v8s33 f3v3s28 0.955224
f3v8s33 f3v13s38 0.955882
f3v8s33 f3v7s32 0.954545
f3v8s33 f3v1s26 0.954545
f3v8s33 f3v6s31 0.954545
f3v8s33 f3v11s36 0.925373
f3v8s33 f3v4s29 0.941176
f3v8s33 f3v12s37 0.955224
f3v8s33 f3v14s39 0.984848
f1v1s8 f1v14s21 0.916667
f1v1s8 f1v5s12 0.870968
f1v1s8 f1v4s11 0.933333
f1v1s8 f1v9s16 0.887097
f1v1s8 f1v10s17 0.870968
f1v1s8 f1v0s7 0.933333
f1v1s8 f1v7s14 0.933333
f1v1s8 f1v3s10 0.933333
f1v1s8 f1v13s20 0.900000
f1v1s8 f1v11s18 0.916667
f1v1s8 f1v12s19 0.916667
f1v14s21 f1v5s12 0.883333
f1v14s21 f1v4s11 0.948276
f1v14s21 f1v9s16 0.900000
f1v14s21 f1v10s17 0.883333
f1v14s21 f1v0s7 0.948276
f1v14s21 f1v7s14 0.948276
f1v14s21 f1v3s10 0.948276
f1v14s21 f1v13s20 0.913793
f1v14s21 f1v11s18 0.931034
f1v14s21 f1v12s19 0.913793
f0v1s1 f2v0s22 0.943662
f0v1s1 f1v2s9 1.000000
f0v1s1 f0v5s5 0.943662
f0v1s1 f0v6s6 0.901408
f0v1s1 f0v2s2 0.943662
f0v1s1 f0v3s3 0.915493
f0v1s1 f0v0s0 0.971429
f1v5s12 f1v4s11 0.933333
f1v5s12 f1v9s16 0.887097
f1v5s12 f1v10s17 0.887097
f1v5s12 f1v0s7 0.933333
f1v5s12 f1v7s14 0.933333
f1v5s12 f1v3s10 0.933333
f1v5s12 f1v13s20 0.900000
f1v5s12 f1v11s18 0.916667
f1v5s12 f1v12s19 0.916667
f1v4s11 f1v9s16 0.950000
f1v4s11 f1v10s17 0.933333
f1v4s11 f1v0s7 1.000000
f1v4s11 f1v7s14 1.000000
f1v4s11 f1v3s10 1.000000
f1v4s11 f1v13s20 0.965517
f1v4s11 f1v11s18 0.982759
f1v4s11 f1v12s19 0.965517
f1v9s16 f1v10s17 0.887097
f1v9s16 f1v0s7 0.950000
f1v9s16 f1v7s14 0.950000
f1v9s16 f1v3s10 0.950000
f1v9s16 f1v13s20 0.916667
f1v9s16 f1v11s18 0.933333
f1v9s16 f1v12s19 0.916667
f1v10s17 f1v0s7 0.933333
f1v10s17 f1v7s14 0.933333
f1v10s17 f1v3s10 0.933333
f1v10s17 f1v13s20 0.900000
f1v10s17 f1v11s18 0.916667
f1v10s17 f1v12s19 0.916667
f1v0s7 f1v7s14 1.000000
f1v0s7 f1v3s10 1.000000
f1v0s7 f1v13s20 0.965517
f1v0s7 f1v11s18 0.982759
f1v0s7 f1v12s19 0.965517
f3v9s34 f3v2s27 0.954545
f3v9s34 f3v0s25 0.969697
f3v9s34 f3v3s28 0.940299
f3v9s34 f3v13s38 0.941176
f3v9s34 f3v7s32 1.000000
f3v9s34 f3v1s26 0.939394
f3v9s34 f3v6s31 1.000000
f3v9s34 f3v11s36 0.910448
f3v9s34 f3v4s29 0.926471
f3v9s34 f3v12s37 0.940299
f3v9s34 f3v14s39 0.969697
f4v0s40 f4v1s41 0.983607
f1v7s14 f1v3s10 1.000000
f1v7s14 f1v13s20 0.965517
f1v7s14 f1v11s18 0.982759
f1v7s14 f1v12s19 0.965517
f3v2s27 f3v0s25 0.984848
f3v2s27 f3v3s28 0.955224
f3v2s27 f3v13s38 0.955882
f3v2s27 f3v7s32 0.954545
f3v2s27 f3v1s26 0.969231
f3v2s27 f3v6s31 0.954545
f3v2s27 f3v11s36 0.925373
f3v2s27 f3v4s29 0.941176
f3v2s27 f3v12s37 0.955224
f3v2s27 f3v14s39 0.984848
f2v0s22 f1v2s9 0.943662
f2v0s22 f0v5s5 0.943662
f2v0s22 f0v6s6 0.901408
f2v0s22 f0v2s2 1.000000
f2v0s22 f0v3s3 0.915493
f2v0s22 f0v0s0 0.971429
f1v2s9 f0v5s5 0.943662
f1v2s9 f0v6s6 0.901408
f1v2s9 f0v2s2 0.943662
f1v2s9 f0v3s3 0.915493
f1v2s9 f0v0s0 0.971429
f1v3s10 f1v13s20 0.965517
f1v3s10 f1v11s18 0.982759
f1v3s10 f1v12s19 0.965517
f3v0s25 f3v3s28 0.970149
f3v0s25 f3v13s38 0.970588
f3v0s25 f3v7s32 0.969697
f3v0s25 f3v1s26 0.969697
f3v0s25 f3v6s31 0.969697
f3v0s25 f3v11s36 0.940299
f3v0s25 f3v4s29 0.955882
f3v0s25 f3v12s37 0.970149
f3v0s25 f3v14s39 1.000000
f3v3s28 f3v13s38 0.955882
f3v3s28 f3v7s32 0.940299
f3v3s28 f3v1s26 0.940299
f3v3s28 f3v6s31 0.940299
f3v3s28 f3v11s36 0.911765
f3v3s28 f3v4s29 0.941176
f3v3s28 f3v12s37 0.941176
f3v3s28 f3v14s39 0.970149
f3v13s38 f3v7s32 0.941176
f3v13s38 f3v1s26 0.941176
f3v13s38 f3v6s31 0.941176
f3v13s38 f3v11s36 0.913043
f3v13s38 f3v4s29 0.942029
f3v13s38 f3v12s37 0.942029
f3v13s38 f3v14s39 0.970588
f3v7s32 f3v1s26 0.939394
f3v7s32 f3v6s31 1.000000
f3v7s32 f3v11s36 0.910448
f3v7s32 f3v4s29 0.926471
f3v7s32 f3v12s37 0.940299
f3v7s32 f3v14s39 0.969697
f3v1s26 f3v6s31 0.939394
f3v1s26 f3v11s36 0.910448
f3v1s26 f3v4s29 0.926471
f3v1s26 f3v12s37 0.940299
f3v1s26 f3v14s39 0.969697
f3v6s31 f3v11s36 0.910448
f3v6s31 f3v4s29 0.926471
f3v6s31 f3v12s37 0.940299
f3v6s31 f3v14s39 0.969697
f1v13s20 f1v11s18 0.948276
f1v13s20 f1v12s19 0.931034
f3v11s36 f3v4s29 0.898551
f3v11s36 f3v12s37 0.911765
f3v11s36 f3v14s39 0.940299
f0v5s5 f0v6s6 0.901408
f0v5s5 f0v2s2 0.943662
f0v5s5 f0v3s3 0.915493
f0v5s5 f0v0s0 0.971429
f1v11s18 f1v12s19 0.948276
f0v6s6 f0v2s2 0.901408
f0v6s6 f0v3s3 0.873239
f0v6s6 f0v0s0 0.928571
f3v4s29 f3v12s37 0.927536
f3v4s29 f3v14s39 0.955882
f0v2s2 f0v3s3 0.915493
f0v2s2 f0v0s0 0.971429
f3v12s37 f3v14s39 0.970149
f0v3s3 f0v0s0 0.942857
+161
View File
@@ -0,0 +1,161 @@
f3v5s30 f3v0s25 4.000000
f3v5s30 f3v14s39 4.000000
f1v8s15 f2v1s23 1.000000
f1v8s15 f1v6s13 3.000000
f1v8s15 f1v14s21 4.000000
f1v8s15 f1v4s11 1.000000
f1v8s15 f1v9s16 4.000000
f1v8s15 f1v0s7 1.000000
f1v8s15 f1v7s14 1.000000
f1v8s15 f1v3s10 1.000000
f1v8s15 f1v13s20 3.000000
f1v8s15 f1v11s18 2.000000
f1v8s15 f1v12s19 3.000000
f2v1s23 f1v6s13 4.000000
f2v1s23 f1v1s8 4.000000
f2v1s23 f1v14s21 3.000000
f2v1s23 f1v5s12 4.000000
f2v1s23 f1v4s11 0.000000
f2v1s23 f1v9s16 3.000000
f2v1s23 f1v10s17 4.000000
f2v1s23 f1v0s7 0.000000
f2v1s23 f1v7s14 0.000000
f2v1s23 f1v3s10 0.000000
f2v1s23 f1v13s20 2.000000
f2v1s23 f1v11s18 1.000000
f2v1s23 f1v12s19 2.000000
f4v2s42 f4v0s40 2.000000
f4v2s42 f4v1s41 3.000000
f0v4s4 f0v1s1 0.000000
f0v4s4 f2v0s22 4.000000
f0v4s4 f1v2s9 0.000000
f0v4s4 f0v5s5 4.000000
f0v4s4 f0v2s2 4.000000
f0v4s4 f0v0s0 2.000000
f1v6s13 f1v4s11 4.000000
f1v6s13 f1v0s7 4.000000
f1v6s13 f1v7s14 4.000000
f1v6s13 f1v3s10 4.000000
f3v8s33 f3v9s34 3.000000
f3v8s33 f3v2s27 2.000000
f3v8s33 f3v0s25 1.000000
f3v8s33 f3v3s28 3.000000
f3v8s33 f3v13s38 3.000000
f3v8s33 f3v7s32 3.000000
f3v8s33 f3v1s26 3.000000
f3v8s33 f3v6s31 3.000000
f3v8s33 f3v4s29 4.000000
f3v8s33 f3v12s37 3.000000
f3v8s33 f3v14s39 1.000000
f1v1s8 f1v4s11 4.000000
f1v1s8 f1v0s7 4.000000
f1v1s8 f1v7s14 4.000000
f1v1s8 f1v3s10 4.000000
f1v14s21 f1v4s11 3.000000
f1v14s21 f1v0s7 3.000000
f1v14s21 f1v7s14 3.000000
f1v14s21 f1v3s10 3.000000
f1v14s21 f1v11s18 4.000000
f0v1s1 f2v0s22 4.000000
f0v1s1 f1v2s9 0.000000
f0v1s1 f0v5s5 4.000000
f0v1s1 f0v2s2 4.000000
f0v1s1 f0v0s0 2.000000
f1v5s12 f1v4s11 4.000000
f1v5s12 f1v0s7 4.000000
f1v5s12 f1v7s14 4.000000
f1v5s12 f1v3s10 4.000000
f1v4s11 f1v9s16 3.000000
f1v4s11 f1v10s17 4.000000
f1v4s11 f1v0s7 0.000000
f1v4s11 f1v7s14 0.000000
f1v4s11 f1v3s10 0.000000
f1v4s11 f1v13s20 2.000000
f1v4s11 f1v11s18 1.000000
f1v4s11 f1v12s19 2.000000
f1v9s16 f1v0s7 3.000000
f1v9s16 f1v7s14 3.000000
f1v9s16 f1v3s10 3.000000
f1v9s16 f1v11s18 4.000000
f1v10s17 f1v0s7 4.000000
f1v10s17 f1v7s14 4.000000
f1v10s17 f1v3s10 4.000000
f1v0s7 f1v7s14 0.000000
f1v0s7 f1v3s10 0.000000
f1v0s7 f1v13s20 2.000000
f1v0s7 f1v11s18 1.000000
f1v0s7 f1v12s19 2.000000
f3v9s34 f3v2s27 3.000000
f3v9s34 f3v0s25 2.000000
f3v9s34 f3v3s28 4.000000
f3v9s34 f3v13s38 4.000000
f3v9s34 f3v7s32 0.000000
f3v9s34 f3v1s26 4.000000
f3v9s34 f3v6s31 0.000000
f3v9s34 f3v12s37 4.000000
f3v9s34 f3v14s39 2.000000
f4v0s40 f4v1s41 1.000000
f1v7s14 f1v3s10 0.000000
f1v7s14 f1v13s20 2.000000
f1v7s14 f1v11s18 1.000000
f1v7s14 f1v12s19 2.000000
f3v2s27 f3v0s25 1.000000
f3v2s27 f3v3s28 3.000000
f3v2s27 f3v13s38 3.000000
f3v2s27 f3v7s32 3.000000
f3v2s27 f3v1s26 2.000000
f3v2s27 f3v6s31 3.000000
f3v2s27 f3v4s29 4.000000
f3v2s27 f3v12s37 3.000000
f3v2s27 f3v14s39 1.000000
f2v0s22 f1v2s9 4.000000
f2v0s22 f0v5s5 4.000000
f2v0s22 f0v2s2 0.000000
f2v0s22 f0v0s0 2.000000
f1v2s9 f0v5s5 4.000000
f1v2s9 f0v2s2 4.000000
f1v2s9 f0v0s0 2.000000
f1v3s10 f1v13s20 2.000000
f1v3s10 f1v11s18 1.000000
f1v3s10 f1v12s19 2.000000
f3v0s25 f3v3s28 2.000000
f3v0s25 f3v13s38 2.000000
f3v0s25 f3v7s32 2.000000
f3v0s25 f3v1s26 2.000000
f3v0s25 f3v6s31 2.000000
f3v0s25 f3v11s36 4.000000
f3v0s25 f3v4s29 3.000000
f3v0s25 f3v12s37 2.000000
f3v0s25 f3v14s39 0.000000
f3v3s28 f3v13s38 3.000000
f3v3s28 f3v7s32 4.000000
f3v3s28 f3v1s26 4.000000
f3v3s28 f3v6s31 4.000000
f3v3s28 f3v4s29 4.000000
f3v3s28 f3v12s37 4.000000
f3v3s28 f3v14s39 2.000000
f3v13s38 f3v7s32 4.000000
f3v13s38 f3v1s26 4.000000
f3v13s38 f3v6s31 4.000000
f3v13s38 f3v4s29 4.000000
f3v13s38 f3v12s37 4.000000
f3v13s38 f3v14s39 2.000000
f3v7s32 f3v1s26 4.000000
f3v7s32 f3v6s31 0.000000
f3v7s32 f3v12s37 4.000000
f3v7s32 f3v14s39 2.000000
f3v1s26 f3v6s31 4.000000
f3v1s26 f3v12s37 4.000000
f3v1s26 f3v14s39 2.000000
f3v6s31 f3v12s37 4.000000
f3v6s31 f3v14s39 2.000000
f1v13s20 f1v11s18 3.000000
f1v13s20 f1v12s19 4.000000
f3v11s36 f3v14s39 4.000000
f0v5s5 f0v2s2 4.000000
f0v5s5 f0v0s0 2.000000
f1v11s18 f1v12s19 3.000000
f3v4s29 f3v14s39 3.000000
f0v2s2 f0v0s0 2.000000
f3v12s37 f3v14s39 2.000000
f0v3s3 f0v0s0 4.000000
+454
View File
@@ -0,0 +1,454 @@
f3v10s35 f3v5s30 58.000000
f3v10s35 f0v4s4 40.000000
f3v10s35 f3v8s33 61.000000
f3v10s35 f0v1s1 40.000000
f3v10s35 f3v9s34 61.000000
f3v10s35 f3v2s27 61.000000
f3v10s35 f2v0s22 40.000000
f3v10s35 f1v2s9 40.000000
f3v10s35 f3v0s25 62.000000
f3v10s35 f3v3s28 61.000000
f3v10s35 f3v13s38 62.000000
f3v10s35 f3v7s32 61.000000
f3v10s35 f3v1s26 61.000000
f3v10s35 f3v6s31 61.000000
f3v10s35 f3v11s36 59.000000
f3v10s35 f3v4s29 61.000000
f3v10s35 f0v2s2 40.000000
f3v10s35 f3v12s37 61.000000
f3v10s35 f0v3s3 40.000000
f3v10s35 f3v14s39 62.000000
f3v10s35 f0v0s0 40.000000
f3v5s30 f3v8s33 61.000000
f3v5s30 f3v9s34 60.000000
f3v5s30 f3v2s27 61.000000
f3v5s30 f2v0s22 40.000000
f3v5s30 f3v0s25 62.000000
f3v5s30 f3v3s28 61.000000
f3v5s30 f3v13s38 62.000000
f3v5s30 f3v7s32 60.000000
f3v5s30 f3v1s26 61.000000
f3v5s30 f3v6s31 60.000000
f3v5s30 f3v11s36 59.000000
f3v5s30 f0v6s6 41.000000
f3v5s30 f3v4s29 61.000000
f3v5s30 f0v2s2 40.000000
f3v5s30 f3v12s37 61.000000
f3v5s30 f0v3s3 40.000000
f3v5s30 f3v14s39 62.000000
f3v5s30 f0v0s0 40.000000
f1v8s15 f2v1s23 57.000000
f1v8s15 f1v6s13 54.000000
f1v8s15 f1v1s8 55.000000
f1v8s15 f1v14s21 54.000000
f1v8s15 f1v5s12 55.000000
f1v8s15 f1v4s11 57.000000
f1v8s15 f1v9s16 56.000000
f1v8s15 f1v10s17 55.000000
f1v8s15 f1v0s7 57.000000
f1v8s15 f3v9s34 40.000000
f1v8s15 f1v7s14 57.000000
f1v8s15 f1v3s10 57.000000
f1v8s15 f3v13s38 40.000000
f1v8s15 f3v7s32 40.000000
f1v8s15 f3v6s31 40.000000
f1v8s15 f1v13s20 55.000000
f1v8s15 f1v11s18 56.000000
f1v8s15 f3v4s29 40.000000
f1v8s15 f3v12s37 40.000000
f1v8s15 f1v12s19 55.000000
f2v1s23 f1v6s13 54.000000
f2v1s23 f1v1s8 56.000000
f2v1s23 f1v14s21 55.000000
f2v1s23 f1v5s12 56.000000
f2v1s23 f1v4s11 58.000000
f2v1s23 f1v9s16 57.000000
f2v1s23 f1v10s17 56.000000
f2v1s23 f1v0s7 58.000000
f2v1s23 f3v9s34 40.000000
f2v1s23 f1v7s14 58.000000
f2v1s23 f1v3s10 58.000000
f2v1s23 f3v13s38 40.000000
f2v1s23 f3v7s32 40.000000
f2v1s23 f3v6s31 40.000000
f2v1s23 f1v13s20 56.000000
f2v1s23 f1v11s18 57.000000
f2v1s23 f3v4s29 40.000000
f2v1s23 f3v12s37 40.000000
f2v1s23 f1v12s19 56.000000
f4v2s42 f4v0s40 59.000000
f4v2s42 f4v1s41 59.000000
f4v2s42 f2v0s22 41.000000
f4v2s42 f0v5s5 40.000000
f4v2s42 f0v6s6 41.000000
f4v2s42 f0v2s2 41.000000
f4v2s42 f0v0s0 40.000000
f0v4s4 f3v8s33 41.000000
f0v4s4 f0v1s1 69.000000
f0v4s4 f3v9s34 40.000000
f0v4s4 f3v2s27 40.000000
f0v4s4 f2v0s22 67.000000
f0v4s4 f1v2s9 69.000000
f0v4s4 f3v0s25 40.000000
f0v4s4 f3v3s28 40.000000
f0v4s4 f3v13s38 40.000000
f0v4s4 f3v7s32 40.000000
f0v4s4 f3v6s31 40.000000
f0v4s4 f0v5s5 67.000000
f0v4s4 f0v6s6 64.000000
f0v4s4 f3v4s29 42.000000
f0v4s4 f0v2s2 67.000000
f0v4s4 f3v12s37 40.000000
f0v4s4 f0v3s3 65.000000
f0v4s4 f3v14s39 40.000000
f0v4s4 f0v0s0 68.000000
f1v6s13 f1v1s8 52.000000
f1v6s13 f1v14s21 51.000000
f1v6s13 f1v5s12 52.000000
f1v6s13 f1v4s11 54.000000
f1v6s13 f1v9s16 53.000000
f1v6s13 f1v10s17 53.000000
f1v6s13 f1v0s7 54.000000
f1v6s13 f1v7s14 54.000000
f1v6s13 f1v3s10 54.000000
f1v6s13 f1v13s20 52.000000
f1v6s13 f1v11s18 53.000000
f1v6s13 f3v4s29 40.000000
f1v6s13 f3v12s37 40.000000
f1v6s13 f1v12s19 52.000000
f3v8s33 f1v1s8 40.000000
f3v8s33 f0v1s1 41.000000
f3v8s33 f1v10s17 40.000000
f3v8s33 f3v9s34 63.000000
f3v8s33 f3v2s27 64.000000
f3v8s33 f2v0s22 42.000000
f3v8s33 f1v2s9 41.000000
f3v8s33 f3v0s25 65.000000
f3v8s33 f3v3s28 64.000000
f3v8s33 f3v13s38 65.000000
f3v8s33 f3v7s32 63.000000
f3v8s33 f3v1s26 63.000000
f3v8s33 f3v6s31 63.000000
f3v8s33 f3v11s36 62.000000
f3v8s33 f0v5s5 41.000000
f3v8s33 f0v6s6 41.000000
f3v8s33 f3v4s29 64.000000
f3v8s33 f0v2s2 42.000000
f3v8s33 f3v12s37 64.000000
f3v8s33 f0v3s3 41.000000
f3v8s33 f3v14s39 65.000000
f3v8s33 f0v0s0 42.000000
f1v1s8 f1v14s21 55.000000
f1v1s8 f1v5s12 54.000000
f1v1s8 f1v4s11 56.000000
f1v1s8 f1v9s16 55.000000
f1v1s8 f1v10s17 54.000000
f1v1s8 f1v0s7 56.000000
f1v1s8 f3v9s34 41.000000
f1v1s8 f1v7s14 56.000000
f1v1s8 f3v2s27 40.000000
f1v1s8 f1v3s10 56.000000
f1v1s8 f3v0s25 40.000000
f1v1s8 f3v3s28 40.000000
f1v1s8 f3v13s38 41.000000
f1v1s8 f3v7s32 41.000000
f1v1s8 f3v1s26 40.000000
f1v1s8 f3v6s31 41.000000
f1v1s8 f1v13s20 54.000000
f1v1s8 f1v11s18 55.000000
f1v1s8 f3v4s29 41.000000
f1v1s8 f3v12s37 41.000000
f1v1s8 f3v14s39 40.000000
f1v1s8 f1v12s19 55.000000
f1v14s21 f1v5s12 53.000000
f1v14s21 f1v4s11 55.000000
f1v14s21 f1v9s16 54.000000
f1v14s21 f1v10s17 53.000000
f1v14s21 f1v0s7 55.000000
f1v14s21 f1v7s14 55.000000
f1v14s21 f1v3s10 55.000000
f1v14s21 f1v13s20 53.000000
f1v14s21 f1v11s18 54.000000
f1v14s21 f1v12s19 53.000000
f0v1s1 f3v9s34 40.000000
f0v1s1 f3v2s27 40.000000
f0v1s1 f2v0s22 67.000000
f0v1s1 f1v2s9 69.000000
f0v1s1 f3v0s25 40.000000
f0v1s1 f3v3s28 40.000000
f0v1s1 f3v13s38 40.000000
f0v1s1 f3v7s32 40.000000
f0v1s1 f3v6s31 40.000000
f0v1s1 f0v5s5 67.000000
f0v1s1 f0v6s6 64.000000
f0v1s1 f3v4s29 42.000000
f0v1s1 f0v2s2 67.000000
f0v1s1 f3v12s37 40.000000
f0v1s1 f0v3s3 65.000000
f0v1s1 f3v14s39 40.000000
f0v1s1 f0v0s0 68.000000
f1v5s12 f1v4s11 56.000000
f1v5s12 f1v9s16 55.000000
f1v5s12 f1v10s17 55.000000
f1v5s12 f1v0s7 56.000000
f1v5s12 f3v9s34 40.000000
f1v5s12 f1v7s14 56.000000
f1v5s12 f2v0s22 40.000000
f1v5s12 f1v3s10 56.000000
f1v5s12 f3v13s38 40.000000
f1v5s12 f3v7s32 40.000000
f1v5s12 f3v6s31 40.000000
f1v5s12 f1v13s20 54.000000
f1v5s12 f1v11s18 55.000000
f1v5s12 f3v4s29 40.000000
f1v5s12 f0v2s2 40.000000
f1v5s12 f3v12s37 40.000000
f1v5s12 f0v0s0 40.000000
f1v5s12 f1v12s19 55.000000
f1v4s11 f1v9s16 57.000000
f1v4s11 f1v10s17 56.000000
f1v4s11 f1v0s7 58.000000
f1v4s11 f3v9s34 40.000000
f1v4s11 f1v7s14 58.000000
f1v4s11 f1v3s10 58.000000
f1v4s11 f3v13s38 40.000000
f1v4s11 f3v7s32 40.000000
f1v4s11 f3v6s31 40.000000
f1v4s11 f1v13s20 56.000000
f1v4s11 f1v11s18 57.000000
f1v4s11 f3v4s29 40.000000
f1v4s11 f3v12s37 40.000000
f1v4s11 f1v12s19 56.000000
f1v9s16 f1v10s17 55.000000
f1v9s16 f1v0s7 57.000000
f1v9s16 f1v7s14 57.000000
f1v9s16 f2v0s22 40.000000
f1v9s16 f1v3s10 57.000000
f1v9s16 f3v13s38 40.000000
f1v9s16 f1v13s20 55.000000
f1v9s16 f0v5s5 40.000000
f1v9s16 f1v11s18 56.000000
f1v9s16 f3v4s29 40.000000
f1v9s16 f0v2s2 40.000000
f1v9s16 f3v12s37 40.000000
f1v9s16 f0v3s3 41.000000
f1v9s16 f0v0s0 40.000000
f1v9s16 f1v12s19 55.000000
f1v10s17 f1v0s7 56.000000
f1v10s17 f3v9s34 41.000000
f1v10s17 f1v7s14 56.000000
f1v10s17 f3v2s27 40.000000
f1v10s17 f1v3s10 56.000000
f1v10s17 f3v0s25 40.000000
f1v10s17 f3v3s28 40.000000
f1v10s17 f3v13s38 41.000000
f1v10s17 f3v7s32 41.000000
f1v10s17 f3v6s31 41.000000
f1v10s17 f1v13s20 54.000000
f1v10s17 f3v11s36 41.000000
f1v10s17 f1v11s18 55.000000
f1v10s17 f3v4s29 40.000000
f1v10s17 f3v12s37 41.000000
f1v10s17 f0v3s3 40.000000
f1v10s17 f3v14s39 40.000000
f1v10s17 f0v0s0 40.000000
f1v10s17 f1v12s19 55.000000
f1v0s7 f3v9s34 40.000000
f1v0s7 f1v7s14 58.000000
f1v0s7 f1v3s10 58.000000
f1v0s7 f3v13s38 40.000000
f1v0s7 f3v7s32 40.000000
f1v0s7 f3v6s31 40.000000
f1v0s7 f1v13s20 56.000000
f1v0s7 f1v11s18 57.000000
f1v0s7 f3v4s29 40.000000
f1v0s7 f3v12s37 40.000000
f1v0s7 f1v12s19 56.000000
f3v9s34 f1v7s14 40.000000
f3v9s34 f3v2s27 63.000000
f3v9s34 f2v0s22 40.000000
f3v9s34 f1v2s9 40.000000
f3v9s34 f1v3s10 40.000000
f3v9s34 f3v0s25 64.000000
f3v9s34 f3v3s28 63.000000
f3v9s34 f3v13s38 64.000000
f3v9s34 f3v7s32 65.000000
f3v9s34 f3v1s26 62.000000
f3v9s34 f3v6s31 65.000000
f3v9s34 f3v11s36 61.000000
f3v9s34 f0v5s5 40.000000
f3v9s34 f1v11s18 40.000000
f3v9s34 f3v4s29 63.000000
f3v9s34 f0v2s2 40.000000
f3v9s34 f3v12s37 63.000000
f3v9s34 f0v3s3 41.000000
f3v9s34 f3v14s39 64.000000
f3v9s34 f0v0s0 41.000000
f4v0s40 f4v1s41 60.000000
f1v7s14 f1v3s10 58.000000
f1v7s14 f3v13s38 40.000000
f1v7s14 f3v7s32 40.000000
f1v7s14 f3v6s31 40.000000
f1v7s14 f1v13s20 56.000000
f1v7s14 f1v11s18 57.000000
f1v7s14 f3v4s29 40.000000
f1v7s14 f3v12s37 40.000000
f1v7s14 f1v12s19 56.000000
f3v2s27 f2v0s22 41.000000
f3v2s27 f1v2s9 40.000000
f3v2s27 f3v0s25 65.000000
f3v2s27 f3v3s28 64.000000
f3v2s27 f3v13s38 65.000000
f3v2s27 f3v7s32 63.000000
f3v2s27 f3v1s26 63.000000
f3v2s27 f3v6s31 63.000000
f3v2s27 f3v11s36 62.000000
f3v2s27 f0v5s5 40.000000
f3v2s27 f0v6s6 40.000000
f3v2s27 f3v4s29 64.000000
f3v2s27 f0v2s2 41.000000
f3v2s27 f3v12s37 64.000000
f3v2s27 f0v3s3 41.000000
f3v2s27 f3v14s39 65.000000
f3v2s27 f0v0s0 41.000000
f2v0s22 f1v2s9 67.000000
f2v0s22 f3v0s25 41.000000
f2v0s22 f3v3s28 41.000000
f2v0s22 f3v13s38 41.000000
f2v0s22 f3v7s32 40.000000
f2v0s22 f3v1s26 40.000000
f2v0s22 f3v6s31 40.000000
f2v0s22 f0v5s5 67.000000
f2v0s22 f0v6s6 64.000000
f2v0s22 f3v4s29 43.000000
f2v0s22 f0v2s2 69.000000
f2v0s22 f3v12s37 42.000000
f2v0s22 f0v3s3 65.000000
f2v0s22 f3v14s39 41.000000
f2v0s22 f0v0s0 68.000000
f1v2s9 f3v0s25 40.000000
f1v2s9 f3v3s28 40.000000
f1v2s9 f3v13s38 40.000000
f1v2s9 f3v7s32 40.000000
f1v2s9 f3v6s31 40.000000
f1v2s9 f0v5s5 67.000000
f1v2s9 f0v6s6 64.000000
f1v2s9 f3v4s29 42.000000
f1v2s9 f0v2s2 67.000000
f1v2s9 f3v12s37 40.000000
f1v2s9 f0v3s3 65.000000
f1v2s9 f3v14s39 40.000000
f1v2s9 f0v0s0 68.000000
f1v3s10 f3v13s38 40.000000
f1v3s10 f3v7s32 40.000000
f1v3s10 f3v6s31 40.000000
f1v3s10 f1v13s20 56.000000
f1v3s10 f1v11s18 57.000000
f1v3s10 f3v4s29 40.000000
f1v3s10 f3v12s37 40.000000
f1v3s10 f1v12s19 56.000000
f3v0s25 f3v3s28 65.000000
f3v0s25 f3v13s38 66.000000
f3v0s25 f3v7s32 64.000000
f3v0s25 f3v1s26 64.000000
f3v0s25 f3v6s31 64.000000
f3v0s25 f3v11s36 63.000000
f3v0s25 f0v5s5 40.000000
f3v0s25 f0v6s6 40.000000
f3v0s25 f3v4s29 65.000000
f3v0s25 f0v2s2 41.000000
f3v0s25 f3v12s37 65.000000
f3v0s25 f0v3s3 41.000000
f3v0s25 f3v14s39 66.000000
f3v0s25 f0v0s0 41.000000
f3v3s28 f3v13s38 65.000000
f3v3s28 f3v7s32 63.000000
f3v3s28 f3v1s26 63.000000
f3v3s28 f3v6s31 63.000000
f3v3s28 f3v11s36 62.000000
f3v3s28 f0v5s5 40.000000
f3v3s28 f0v6s6 40.000000
f3v3s28 f3v4s29 64.000000
f3v3s28 f0v2s2 41.000000
f3v3s28 f3v12s37 64.000000
f3v3s28 f0v3s3 41.000000
f3v3s28 f3v14s39 65.000000
f3v3s28 f0v0s0 41.000000
f3v13s38 f3v7s32 64.000000
f3v13s38 f3v1s26 64.000000
f3v13s38 f3v6s31 64.000000
f3v13s38 f3v11s36 63.000000
f3v13s38 f0v5s5 40.000000
f3v13s38 f1v11s18 40.000000
f3v13s38 f0v6s6 40.000000
f3v13s38 f3v4s29 65.000000
f3v13s38 f0v2s2 41.000000
f3v13s38 f3v12s37 65.000000
f3v13s38 f0v3s3 41.000000
f3v13s38 f3v14s39 66.000000
f3v13s38 f0v0s0 41.000000
f3v7s32 f3v1s26 62.000000
f3v7s32 f3v6s31 65.000000
f3v7s32 f3v11s36 61.000000
f3v7s32 f0v5s5 40.000000
f3v7s32 f1v11s18 40.000000
f3v7s32 f3v4s29 63.000000
f3v7s32 f0v2s2 40.000000
f3v7s32 f3v12s37 63.000000
f3v7s32 f0v3s3 41.000000
f3v7s32 f3v14s39 64.000000
f3v7s32 f0v0s0 41.000000
f3v1s26 f3v6s31 62.000000
f3v1s26 f3v11s36 61.000000
f3v1s26 f3v4s29 63.000000
f3v1s26 f0v2s2 40.000000
f3v1s26 f3v12s37 63.000000
f3v1s26 f0v3s3 40.000000
f3v1s26 f3v14s39 64.000000
f3v1s26 f0v0s0 40.000000
f3v6s31 f3v11s36 61.000000
f3v6s31 f0v5s5 40.000000
f3v6s31 f1v11s18 40.000000
f3v6s31 f3v4s29 63.000000
f3v6s31 f0v2s2 40.000000
f3v6s31 f3v12s37 63.000000
f3v6s31 f0v3s3 41.000000
f3v6s31 f3v14s39 64.000000
f3v6s31 f0v0s0 41.000000
f1v13s20 f1v11s18 55.000000
f1v13s20 f1v12s19 54.000000
f3v11s36 f3v4s29 62.000000
f3v11s36 f3v12s37 62.000000
f3v11s36 f3v14s39 63.000000
f0v5s5 f1v11s18 40.000000
f0v5s5 f0v6s6 64.000000
f0v5s5 f3v4s29 42.000000
f0v5s5 f0v2s2 67.000000
f0v5s5 f3v12s37 40.000000
f0v5s5 f0v3s3 65.000000
f0v5s5 f3v14s39 40.000000
f0v5s5 f0v0s0 68.000000
f1v11s18 f3v4s29 40.000000
f1v11s18 f3v12s37 40.000000
f1v11s18 f1v12s19 55.000000
f0v6s6 f3v4s29 42.000000
f0v6s6 f0v2s2 64.000000
f0v6s6 f3v12s37 40.000000
f0v6s6 f0v3s3 62.000000
f0v6s6 f3v14s39 40.000000
f0v6s6 f0v0s0 65.000000
f3v4s29 f0v2s2 43.000000
f3v4s29 f3v12s37 64.000000
f3v4s29 f0v3s3 43.000000
f3v4s29 f3v14s39 65.000000
f3v4s29 f0v0s0 43.000000
f0v2s2 f3v12s37 42.000000
f0v2s2 f0v3s3 65.000000
f0v2s2 f3v14s39 41.000000
f0v2s2 f0v0s0 68.000000
f3v12s37 f0v3s3 41.000000
f3v12s37 f3v14s39 65.000000
f3v12s37 f0v0s0 41.000000
f0v3s3 f3v14s39 41.000000
f0v3s3 f0v0s0 66.000000
f3v14s39 f0v0s0 41.000000
@@ -0,0 +1,249 @@
f3v10s35 f3v5s30 58.000000
f3v10s35 f3v8s33 61.000000
f3v10s35 f3v9s34 61.000000
f3v10s35 f3v2s27 61.000000
f3v10s35 f3v0s25 62.000000
f3v10s35 f3v3s28 61.000000
f3v10s35 f3v13s38 62.000000
f3v10s35 f3v7s32 61.000000
f3v10s35 f3v1s26 61.000000
f3v10s35 f3v6s31 61.000000
f3v10s35 f3v11s36 59.000000
f3v10s35 f3v4s29 61.000000
f3v10s35 f3v12s37 61.000000
f3v10s35 f3v14s39 62.000000
f3v5s30 f3v8s33 61.000000
f3v5s30 f3v9s34 60.000000
f3v5s30 f3v2s27 61.000000
f3v5s30 f3v0s25 62.000000
f3v5s30 f3v3s28 61.000000
f3v5s30 f3v13s38 62.000000
f3v5s30 f3v7s32 60.000000
f3v5s30 f3v1s26 61.000000
f3v5s30 f3v6s31 60.000000
f3v5s30 f3v11s36 59.000000
f3v5s30 f3v4s29 61.000000
f3v5s30 f3v12s37 61.000000
f3v5s30 f3v14s39 62.000000
f1v8s15 f2v1s23 57.000000
f1v8s15 f1v6s13 54.000000
f1v8s15 f1v1s8 55.000000
f1v8s15 f1v14s21 54.000000
f1v8s15 f1v5s12 55.000000
f1v8s15 f1v4s11 57.000000
f1v8s15 f1v9s16 56.000000
f1v8s15 f1v10s17 55.000000
f1v8s15 f1v0s7 57.000000
f1v8s15 f1v7s14 57.000000
f1v8s15 f1v3s10 57.000000
f1v8s15 f1v13s20 55.000000
f1v8s15 f1v11s18 56.000000
f1v8s15 f1v12s19 55.000000
f2v1s23 f1v6s13 54.000000
f2v1s23 f1v1s8 56.000000
f2v1s23 f1v14s21 55.000000
f2v1s23 f1v5s12 56.000000
f2v1s23 f1v4s11 58.000000
f2v1s23 f1v9s16 57.000000
f2v1s23 f1v10s17 56.000000
f2v1s23 f1v0s7 58.000000
f2v1s23 f1v7s14 58.000000
f2v1s23 f1v3s10 58.000000
f2v1s23 f1v13s20 56.000000
f2v1s23 f1v11s18 57.000000
f2v1s23 f1v12s19 56.000000
f4v2s42 f4v0s40 59.000000
f4v2s42 f4v1s41 59.000000
f0v4s4 f0v1s1 69.000000
f0v4s4 f2v0s22 67.000000
f0v4s4 f1v2s9 69.000000
f0v4s4 f0v5s5 67.000000
f0v4s4 f0v6s6 64.000000
f0v4s4 f0v2s2 67.000000
f0v4s4 f0v3s3 65.000000
f0v4s4 f0v0s0 68.000000
f1v6s13 f1v1s8 52.000000
f1v6s13 f1v14s21 51.000000
f1v6s13 f1v5s12 52.000000
f1v6s13 f1v4s11 54.000000
f1v6s13 f1v9s16 53.000000
f1v6s13 f1v10s17 53.000000
f1v6s13 f1v0s7 54.000000
f1v6s13 f1v7s14 54.000000
f1v6s13 f1v3s10 54.000000
f1v6s13 f1v13s20 52.000000
f1v6s13 f1v11s18 53.000000
f1v6s13 f1v12s19 52.000000
f3v8s33 f3v9s34 63.000000
f3v8s33 f3v2s27 64.000000
f3v8s33 f3v0s25 65.000000
f3v8s33 f3v3s28 64.000000
f3v8s33 f3v13s38 65.000000
f3v8s33 f3v7s32 63.000000
f3v8s33 f3v1s26 63.000000
f3v8s33 f3v6s31 63.000000
f3v8s33 f3v11s36 62.000000
f3v8s33 f3v4s29 64.000000
f3v8s33 f3v12s37 64.000000
f3v8s33 f3v14s39 65.000000
f1v1s8 f1v14s21 55.000000
f1v1s8 f1v5s12 54.000000
f1v1s8 f1v4s11 56.000000
f1v1s8 f1v9s16 55.000000
f1v1s8 f1v10s17 54.000000
f1v1s8 f1v0s7 56.000000
f1v1s8 f1v7s14 56.000000
f1v1s8 f1v3s10 56.000000
f1v1s8 f1v13s20 54.000000
f1v1s8 f1v11s18 55.000000
f1v1s8 f1v12s19 55.000000
f1v14s21 f1v5s12 53.000000
f1v14s21 f1v4s11 55.000000
f1v14s21 f1v9s16 54.000000
f1v14s21 f1v10s17 53.000000
f1v14s21 f1v0s7 55.000000
f1v14s21 f1v7s14 55.000000
f1v14s21 f1v3s10 55.000000
f1v14s21 f1v13s20 53.000000
f1v14s21 f1v11s18 54.000000
f1v14s21 f1v12s19 53.000000
f0v1s1 f2v0s22 67.000000
f0v1s1 f1v2s9 69.000000
f0v1s1 f0v5s5 67.000000
f0v1s1 f0v6s6 64.000000
f0v1s1 f0v2s2 67.000000
f0v1s1 f0v3s3 65.000000
f0v1s1 f0v0s0 68.000000
f1v5s12 f1v4s11 56.000000
f1v5s12 f1v9s16 55.000000
f1v5s12 f1v10s17 55.000000
f1v5s12 f1v0s7 56.000000
f1v5s12 f1v7s14 56.000000
f1v5s12 f1v3s10 56.000000
f1v5s12 f1v13s20 54.000000
f1v5s12 f1v11s18 55.000000
f1v5s12 f1v12s19 55.000000
f1v4s11 f1v9s16 57.000000
f1v4s11 f1v10s17 56.000000
f1v4s11 f1v0s7 58.000000
f1v4s11 f1v7s14 58.000000
f1v4s11 f1v3s10 58.000000
f1v4s11 f1v13s20 56.000000
f1v4s11 f1v11s18 57.000000
f1v4s11 f1v12s19 56.000000
f1v9s16 f1v10s17 55.000000
f1v9s16 f1v0s7 57.000000
f1v9s16 f1v7s14 57.000000
f1v9s16 f1v3s10 57.000000
f1v9s16 f1v13s20 55.000000
f1v9s16 f1v11s18 56.000000
f1v9s16 f1v12s19 55.000000
f1v10s17 f1v0s7 56.000000
f1v10s17 f1v7s14 56.000000
f1v10s17 f1v3s10 56.000000
f1v10s17 f1v13s20 54.000000
f1v10s17 f1v11s18 55.000000
f1v10s17 f1v12s19 55.000000
f1v0s7 f1v7s14 58.000000
f1v0s7 f1v3s10 58.000000
f1v0s7 f1v13s20 56.000000
f1v0s7 f1v11s18 57.000000
f1v0s7 f1v12s19 56.000000
f3v9s34 f3v2s27 63.000000
f3v9s34 f3v0s25 64.000000
f3v9s34 f3v3s28 63.000000
f3v9s34 f3v13s38 64.000000
f3v9s34 f3v7s32 65.000000
f3v9s34 f3v1s26 62.000000
f3v9s34 f3v6s31 65.000000
f3v9s34 f3v11s36 61.000000
f3v9s34 f3v4s29 63.000000
f3v9s34 f3v12s37 63.000000
f3v9s34 f3v14s39 64.000000
f4v0s40 f4v1s41 60.000000
f1v7s14 f1v3s10 58.000000
f1v7s14 f1v13s20 56.000000
f1v7s14 f1v11s18 57.000000
f1v7s14 f1v12s19 56.000000
f3v2s27 f3v0s25 65.000000
f3v2s27 f3v3s28 64.000000
f3v2s27 f3v13s38 65.000000
f3v2s27 f3v7s32 63.000000
f3v2s27 f3v1s26 63.000000
f3v2s27 f3v6s31 63.000000
f3v2s27 f3v11s36 62.000000
f3v2s27 f3v4s29 64.000000
f3v2s27 f3v12s37 64.000000
f3v2s27 f3v14s39 65.000000
f2v0s22 f1v2s9 67.000000
f2v0s22 f0v5s5 67.000000
f2v0s22 f0v6s6 64.000000
f2v0s22 f0v2s2 69.000000
f2v0s22 f0v3s3 65.000000
f2v0s22 f0v0s0 68.000000
f1v2s9 f0v5s5 67.000000
f1v2s9 f0v6s6 64.000000
f1v2s9 f0v2s2 67.000000
f1v2s9 f0v3s3 65.000000
f1v2s9 f0v0s0 68.000000
f1v3s10 f1v13s20 56.000000
f1v3s10 f1v11s18 57.000000
f1v3s10 f1v12s19 56.000000
f3v0s25 f3v3s28 65.000000
f3v0s25 f3v13s38 66.000000
f3v0s25 f3v7s32 64.000000
f3v0s25 f3v1s26 64.000000
f3v0s25 f3v6s31 64.000000
f3v0s25 f3v11s36 63.000000
f3v0s25 f3v4s29 65.000000
f3v0s25 f3v12s37 65.000000
f3v0s25 f3v14s39 66.000000
f3v3s28 f3v13s38 65.000000
f3v3s28 f3v7s32 63.000000
f3v3s28 f3v1s26 63.000000
f3v3s28 f3v6s31 63.000000
f3v3s28 f3v11s36 62.000000
f3v3s28 f3v4s29 64.000000
f3v3s28 f3v12s37 64.000000
f3v3s28 f3v14s39 65.000000
f3v13s38 f3v7s32 64.000000
f3v13s38 f3v1s26 64.000000
f3v13s38 f3v6s31 64.000000
f3v13s38 f3v11s36 63.000000
f3v13s38 f3v4s29 65.000000
f3v13s38 f3v12s37 65.000000
f3v13s38 f3v14s39 66.000000
f3v7s32 f3v1s26 62.000000
f3v7s32 f3v6s31 65.000000
f3v7s32 f3v11s36 61.000000
f3v7s32 f3v4s29 63.000000
f3v7s32 f3v12s37 63.000000
f3v7s32 f3v14s39 64.000000
f3v1s26 f3v6s31 62.000000
f3v1s26 f3v11s36 61.000000
f3v1s26 f3v4s29 63.000000
f3v1s26 f3v12s37 63.000000
f3v1s26 f3v14s39 64.000000
f3v6s31 f3v11s36 61.000000
f3v6s31 f3v4s29 63.000000
f3v6s31 f3v12s37 63.000000
f3v6s31 f3v14s39 64.000000
f1v13s20 f1v11s18 55.000000
f1v13s20 f1v12s19 54.000000
f3v11s36 f3v4s29 62.000000
f3v11s36 f3v12s37 62.000000
f3v11s36 f3v14s39 63.000000
f0v5s5 f0v6s6 64.000000
f0v5s5 f0v2s2 67.000000
f0v5s5 f0v3s3 65.000000
f0v5s5 f0v0s0 68.000000
f1v11s18 f1v12s19 55.000000
f0v6s6 f0v2s2 64.000000
f0v6s6 f0v3s3 62.000000
f0v6s6 f0v0s0 65.000000
f3v4s29 f3v12s37 64.000000
f3v4s29 f3v14s39 65.000000
f0v2s2 f0v3s3 65.000000
f0v2s2 f0v0s0 68.000000
f3v12s37 f3v14s39 65.000000
f0v3s3 f0v0s0 66.000000
+249
View File
@@ -0,0 +1,249 @@
f3v10s35 f3v5s30 0.920635
f3v10s35 f3v8s33 0.938462
f3v10s35 f3v9s34 0.938462
f3v10s35 f3v2s27 0.938462
f3v10s35 f3v0s25 0.953846
f3v10s35 f3v3s28 0.938462
f3v10s35 f3v13s38 0.953846
f3v10s35 f3v7s32 0.938462
f3v10s35 f3v1s26 0.938462
f3v10s35 f3v6s31 0.938462
f3v10s35 f3v11s36 0.907692
f3v10s35 f3v4s29 0.938462
f3v10s35 f3v12s37 0.938462
f3v10s35 f3v14s39 0.953846
f3v5s30 f3v8s33 0.968254
f3v5s30 f3v9s34 0.952381
f3v5s30 f3v2s27 0.968254
f3v5s30 f3v0s25 0.984127
f3v5s30 f3v3s28 0.968254
f3v5s30 f3v13s38 0.984127
f3v5s30 f3v7s32 0.952381
f3v5s30 f3v1s26 0.968254
f3v5s30 f3v6s31 0.952381
f3v5s30 f3v11s36 0.936508
f3v5s30 f3v4s29 0.968254
f3v5s30 f3v12s37 0.968254
f3v5s30 f3v14s39 0.984127
f1v8s15 f2v1s23 1.000000
f1v8s15 f1v6s13 0.964286
f1v8s15 f1v1s8 0.964912
f1v8s15 f1v14s21 0.964286
f1v8s15 f1v5s12 0.964912
f1v8s15 f1v4s11 1.000000
f1v8s15 f1v9s16 0.982456
f1v8s15 f1v10s17 0.964912
f1v8s15 f1v0s7 1.000000
f1v8s15 f1v7s14 1.000000
f1v8s15 f1v3s10 1.000000
f1v8s15 f1v13s20 0.982143
f1v8s15 f1v11s18 0.982456
f1v8s15 f1v12s19 0.964912
f2v1s23 f1v6s13 0.964286
f2v1s23 f1v1s8 0.965517
f2v1s23 f1v14s21 0.982143
f2v1s23 f1v5s12 0.965517
f2v1s23 f1v4s11 1.000000
f2v1s23 f1v9s16 0.982759
f2v1s23 f1v10s17 0.965517
f2v1s23 f1v0s7 1.000000
f2v1s23 f1v7s14 1.000000
f2v1s23 f1v3s10 1.000000
f2v1s23 f1v13s20 1.000000
f2v1s23 f1v11s18 0.982759
f2v1s23 f1v12s19 0.982456
f4v2s42 f4v0s40 0.983333
f4v2s42 f4v1s41 0.967213
f0v4s4 f0v1s1 1.000000
f0v4s4 f2v0s22 0.971014
f0v4s4 f1v2s9 1.000000
f0v4s4 f0v5s5 0.971014
f0v4s4 f0v6s6 0.927536
f0v4s4 f0v2s2 0.971014
f0v4s4 f0v3s3 0.970149
f0v4s4 f0v0s0 0.985507
f1v6s13 f1v1s8 0.928571
f1v6s13 f1v14s21 0.910714
f1v6s13 f1v5s12 0.928571
f1v6s13 f1v4s11 0.964286
f1v6s13 f1v9s16 0.946429
f1v6s13 f1v10s17 0.946429
f1v6s13 f1v0s7 0.964286
f1v6s13 f1v7s14 0.964286
f1v6s13 f1v3s10 0.964286
f1v6s13 f1v13s20 0.928571
f1v6s13 f1v11s18 0.946429
f1v6s13 f1v12s19 0.928571
f3v8s33 f3v9s34 0.969231
f3v8s33 f3v2s27 0.984615
f3v8s33 f3v0s25 0.984848
f3v8s33 f3v3s28 0.969697
f3v8s33 f3v13s38 0.984848
f3v8s33 f3v7s32 0.969231
f3v8s33 f3v1s26 0.969231
f3v8s33 f3v6s31 0.969231
f3v8s33 f3v11s36 0.953846
f3v8s33 f3v4s29 0.969697
f3v8s33 f3v12s37 0.969697
f3v8s33 f3v14s39 0.984848
f1v1s8 f1v14s21 0.982143
f1v1s8 f1v5s12 0.900000
f1v1s8 f1v4s11 0.965517
f1v1s8 f1v9s16 0.916667
f1v1s8 f1v10s17 0.900000
f1v1s8 f1v0s7 0.965517
f1v1s8 f1v7s14 0.965517
f1v1s8 f1v3s10 0.965517
f1v1s8 f1v13s20 0.964286
f1v1s8 f1v11s18 0.948276
f1v1s8 f1v12s19 0.964912
f1v14s21 f1v5s12 0.946429
f1v14s21 f1v4s11 0.982143
f1v14s21 f1v9s16 0.964286
f1v14s21 f1v10s17 0.946429
f1v14s21 f1v0s7 0.982143
f1v14s21 f1v7s14 0.982143
f1v14s21 f1v3s10 0.982143
f1v14s21 f1v13s20 0.946429
f1v14s21 f1v11s18 0.964286
f1v14s21 f1v12s19 0.946429
f0v1s1 f2v0s22 0.971014
f0v1s1 f1v2s9 1.000000
f0v1s1 f0v5s5 0.971014
f0v1s1 f0v6s6 0.927536
f0v1s1 f0v2s2 0.971014
f0v1s1 f0v3s3 0.970149
f0v1s1 f0v0s0 0.985507
f1v5s12 f1v4s11 0.965517
f1v5s12 f1v9s16 0.916667
f1v5s12 f1v10s17 0.916667
f1v5s12 f1v0s7 0.965517
f1v5s12 f1v7s14 0.965517
f1v5s12 f1v3s10 0.965517
f1v5s12 f1v13s20 0.964286
f1v5s12 f1v11s18 0.948276
f1v5s12 f1v12s19 0.964912
f1v4s11 f1v9s16 0.982759
f1v4s11 f1v10s17 0.965517
f1v4s11 f1v0s7 1.000000
f1v4s11 f1v7s14 1.000000
f1v4s11 f1v3s10 1.000000
f1v4s11 f1v13s20 1.000000
f1v4s11 f1v11s18 0.982759
f1v4s11 f1v12s19 0.982456
f1v9s16 f1v10s17 0.916667
f1v9s16 f1v0s7 0.982759
f1v9s16 f1v7s14 0.982759
f1v9s16 f1v3s10 0.982759
f1v9s16 f1v13s20 0.982143
f1v9s16 f1v11s18 0.965517
f1v9s16 f1v12s19 0.964912
f1v10s17 f1v0s7 0.965517
f1v10s17 f1v7s14 0.965517
f1v10s17 f1v3s10 0.965517
f1v10s17 f1v13s20 0.964286
f1v10s17 f1v11s18 0.948276
f1v10s17 f1v12s19 0.964912
f1v0s7 f1v7s14 1.000000
f1v0s7 f1v3s10 1.000000
f1v0s7 f1v13s20 1.000000
f1v0s7 f1v11s18 0.982759
f1v0s7 f1v12s19 0.982456
f3v9s34 f3v2s27 0.969231
f3v9s34 f3v0s25 0.984615
f3v9s34 f3v3s28 0.969231
f3v9s34 f3v13s38 0.984615
f3v9s34 f3v7s32 1.000000
f3v9s34 f3v1s26 0.953846
f3v9s34 f3v6s31 1.000000
f3v9s34 f3v11s36 0.938462
f3v9s34 f3v4s29 0.969231
f3v9s34 f3v12s37 0.969231
f3v9s34 f3v14s39 0.984615
f4v0s40 f4v1s41 1.000000
f1v7s14 f1v3s10 1.000000
f1v7s14 f1v13s20 1.000000
f1v7s14 f1v11s18 0.982759
f1v7s14 f1v12s19 0.982456
f3v2s27 f3v0s25 1.000000
f3v2s27 f3v3s28 0.984615
f3v2s27 f3v13s38 1.000000
f3v2s27 f3v7s32 0.969231
f3v2s27 f3v1s26 0.969231
f3v2s27 f3v6s31 0.969231
f3v2s27 f3v11s36 0.953846
f3v2s27 f3v4s29 0.984615
f3v2s27 f3v12s37 0.984615
f3v2s27 f3v14s39 1.000000
f2v0s22 f1v2s9 0.971014
f2v0s22 f0v5s5 0.971014
f2v0s22 f0v6s6 0.927536
f2v0s22 f0v2s2 1.000000
f2v0s22 f0v3s3 0.970149
f2v0s22 f0v0s0 0.985507
f1v2s9 f0v5s5 0.971014
f1v2s9 f0v6s6 0.927536
f1v2s9 f0v2s2 0.971014
f1v2s9 f0v3s3 0.970149
f1v2s9 f0v0s0 0.985507
f1v3s10 f1v13s20 1.000000
f1v3s10 f1v11s18 0.982759
f1v3s10 f1v12s19 0.982456
f3v0s25 f3v3s28 0.984848
f3v0s25 f3v13s38 1.000000
f3v0s25 f3v7s32 0.984615
f3v0s25 f3v1s26 0.984615
f3v0s25 f3v6s31 0.984615
f3v0s25 f3v11s36 0.969231
f3v0s25 f3v4s29 0.984848
f3v0s25 f3v12s37 0.984848
f3v0s25 f3v14s39 1.000000
f3v3s28 f3v13s38 0.984848
f3v3s28 f3v7s32 0.969231
f3v3s28 f3v1s26 0.969231
f3v3s28 f3v6s31 0.969231
f3v3s28 f3v11s36 0.953846
f3v3s28 f3v4s29 0.969697
f3v3s28 f3v12s37 0.969697
f3v3s28 f3v14s39 0.984848
f3v13s38 f3v7s32 0.984615
f3v13s38 f3v1s26 0.984615
f3v13s38 f3v6s31 0.984615
f3v13s38 f3v11s36 0.969231
f3v13s38 f3v4s29 0.955882
f3v13s38 f3v12s37 0.970149
f3v13s38 f3v14s39 1.000000
f3v7s32 f3v1s26 0.953846
f3v7s32 f3v6s31 1.000000
f3v7s32 f3v11s36 0.938462
f3v7s32 f3v4s29 0.969231
f3v7s32 f3v12s37 0.969231
f3v7s32 f3v14s39 0.984615
f3v1s26 f3v6s31 0.953846
f3v1s26 f3v11s36 0.938462
f3v1s26 f3v4s29 0.969231
f3v1s26 f3v12s37 0.969231
f3v1s26 f3v14s39 0.984615
f3v6s31 f3v11s36 0.938462
f3v6s31 f3v4s29 0.969231
f3v6s31 f3v12s37 0.969231
f3v6s31 f3v14s39 0.984615
f1v13s20 f1v11s18 0.982143
f1v13s20 f1v12s19 0.964286
f3v11s36 f3v4s29 0.953846
f3v11s36 f3v12s37 0.953846
f3v11s36 f3v14s39 0.969231
f0v5s5 f0v6s6 0.927536
f0v5s5 f0v2s2 0.971014
f0v5s5 f0v3s3 0.970149
f0v5s5 f0v0s0 0.985507
f1v11s18 f1v12s19 0.964912
f0v6s6 f0v2s2 0.927536
f0v6s6 f0v3s3 0.925373
f0v6s6 f0v0s0 0.942029
f3v4s29 f3v12s37 0.955224
f3v4s29 f3v14s39 0.984848
f0v2s2 f0v3s3 0.970149
f0v2s2 f0v0s0 0.985507
f3v12s37 f3v14s39 0.984848
f0v3s3 f0v0s0 0.985075
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
View File
Whitespace-only changes.
Whitespace-only changes.
+265
View File
@@ -0,0 +1,265 @@
f3v10s35 f2v9s19 40.000000
f3v10s35 f2v12s22 40.000000
f3v10s35 f2v6s16 40.000000
f3v10s35 f2v1s11 40.000000
f3v10s35 f2v11s21 40.000000
f3v10s35 f2v14s24 40.000000
f2v1s23 f0v0s0 40.000000
f2v1s23 f1v6s8 40.000000
f2v1s23 f2v6s16 40.000000
f2v1s23 f0v1s1 40.000000
f2v1s23 f2v5s15 40.000000
f2v1s23 f2v11s21 40.000000
f4v2s42 f2v9s19 40.000000
f4v2s42 f2v12s22 40.000000
f4v2s42 f0v0s0 43.000000
f4v2s42 f1v6s8 43.000000
f4v2s42 f2v13s23 40.000000
f4v2s42 f2v7s17 40.000000
f4v2s42 f2v10s20 40.000000
f4v2s42 f0v1s1 43.000000
f4v2s42 f2v0s10 40.000000
f4v2s42 f2v14s24 41.000000
f0v4s4 f2v9s19 40.000000
f0v4s4 f2v12s22 40.000000
f0v4s4 f0v0s0 44.000000
f0v4s4 f1v6s8 44.000000
f0v4s4 f2v13s23 40.000000
f0v4s4 f2v3s13 40.000000
f0v4s4 f2v2s12 40.000000
f0v4s4 f2v6s16 40.000000
f0v4s4 f2v7s17 40.000000
f0v4s4 f2v10s20 40.000000
f0v4s4 f2v1s11 41.000000
f0v4s4 f0v1s1 44.000000
f0v4s4 f2v0s10 40.000000
f0v4s4 f2v11s21 40.000000
f0v4s4 f2v14s24 41.000000
f1v1s8 f2v9s19 40.000000
f1v1s8 f2v12s22 40.000000
f1v1s8 f0v0s0 40.000000
f1v1s8 f1v6s8 40.000000
f1v1s8 f2v13s23 40.000000
f1v1s8 f2v2s12 40.000000
f1v1s8 f2v6s16 41.000000
f1v1s8 f2v7s17 40.000000
f1v1s8 f2v10s20 40.000000
f1v1s8 f0v1s1 40.000000
f1v1s8 f2v0s10 40.000000
f1v1s8 f2v5s15 41.000000
f1v1s8 f2v11s21 41.000000
f1v1s8 f2v14s24 40.000000
f1v14s21 f0v0s0 40.000000
f1v14s21 f1v6s8 40.000000
f1v14s21 f0v1s1 40.000000
f0v1s1 f2v9s19 40.000000
f0v1s1 f2v12s22 40.000000
f0v1s1 f0v0s0 44.000000
f0v1s1 f1v6s8 44.000000
f0v1s1 f2v13s23 40.000000
f0v1s1 f2v3s13 40.000000
f0v1s1 f2v2s12 40.000000
f0v1s1 f2v6s16 40.000000
f0v1s1 f2v7s17 40.000000
f0v1s1 f2v10s20 40.000000
f0v1s1 f2v1s11 41.000000
f0v1s1 f0v1s1 44.000000
f0v1s1 f2v0s10 40.000000
f0v1s1 f2v11s21 40.000000
f0v1s1 f2v14s24 41.000000
f1v5s12 f0v0s0 40.000000
f1v5s12 f1v6s8 40.000000
f1v5s12 f0v1s1 40.000000
f1v4s11 f0v0s0 40.000000
f1v4s11 f1v6s8 40.000000
f1v4s11 f2v6s16 40.000000
f1v4s11 f0v1s1 40.000000
f1v4s11 f2v5s15 40.000000
f1v4s11 f2v11s21 40.000000
f1v9s16 f2v9s19 40.000000
f1v9s16 f2v12s22 40.000000
f1v9s16 f0v0s0 42.000000
f1v9s16 f1v6s8 42.000000
f1v9s16 f2v13s23 40.000000
f1v9s16 f2v2s12 40.000000
f1v9s16 f2v6s16 40.000000
f1v9s16 f2v7s17 40.000000
f1v9s16 f2v10s20 40.000000
f1v9s16 f0v1s1 42.000000
f1v9s16 f2v0s10 40.000000
f1v9s16 f2v5s15 41.000000
f1v9s16 f2v11s21 40.000000
f1v9s16 f2v14s24 40.000000
f1v10s17 f0v0s0 42.000000
f1v10s17 f1v6s8 42.000000
f1v10s17 f0v1s1 42.000000
f1v0s7 f0v0s0 40.000000
f1v0s7 f1v6s8 40.000000
f1v0s7 f2v6s16 40.000000
f1v0s7 f0v1s1 40.000000
f1v0s7 f2v5s15 40.000000
f1v0s7 f2v11s21 40.000000
f4v0s40 f2v9s19 40.000000
f4v0s40 f0v0s0 42.000000
f4v0s40 f1v6s8 42.000000
f4v0s40 f2v13s23 40.000000
f4v0s40 f2v7s17 40.000000
f4v0s40 f2v10s20 40.000000
f4v0s40 f0v1s1 42.000000
f4v0s40 f2v0s10 40.000000
f1v7s14 f0v0s0 40.000000
f1v7s14 f1v6s8 40.000000
f1v7s14 f2v6s16 40.000000
f1v7s14 f0v1s1 40.000000
f1v7s14 f2v5s15 40.000000
f1v7s14 f2v11s21 40.000000
f4v1s41 f2v9s19 40.000000
f4v1s41 f0v0s0 42.000000
f4v1s41 f1v6s8 42.000000
f4v1s41 f2v13s23 40.000000
f4v1s41 f2v6s16 40.000000
f4v1s41 f2v7s17 40.000000
f4v1s41 f2v10s20 40.000000
f4v1s41 f0v1s1 42.000000
f4v1s41 f2v0s10 40.000000
f4v1s41 f2v11s21 40.000000
f2v0s22 f2v9s19 41.000000
f2v0s22 f2v12s22 41.000000
f2v0s22 f0v0s0 44.000000
f2v0s22 f1v6s8 44.000000
f2v0s22 f2v13s23 41.000000
f2v0s22 f2v4s14 40.000000
f2v0s22 f2v3s13 40.000000
f2v0s22 f2v2s12 40.000000
f2v0s22 f2v6s16 40.000000
f2v0s22 f2v7s17 41.000000
f2v0s22 f2v10s20 41.000000
f2v0s22 f2v1s11 41.000000
f2v0s22 f0v1s1 44.000000
f2v0s22 f2v8s18 40.000000
f2v0s22 f2v0s10 41.000000
f2v0s22 f2v5s15 40.000000
f2v0s22 f2v11s21 40.000000
f2v0s22 f2v14s24 41.000000
f1v2s9 f2v9s19 40.000000
f1v2s9 f2v12s22 40.000000
f1v2s9 f0v0s0 44.000000
f1v2s9 f1v6s8 44.000000
f1v2s9 f2v13s23 40.000000
f1v2s9 f2v3s13 40.000000
f1v2s9 f2v2s12 40.000000
f1v2s9 f2v6s16 40.000000
f1v2s9 f2v7s17 40.000000
f1v2s9 f2v10s20 40.000000
f1v2s9 f2v1s11 41.000000
f1v2s9 f0v1s1 44.000000
f1v2s9 f2v0s10 40.000000
f1v2s9 f2v11s21 40.000000
f1v2s9 f2v14s24 41.000000
f1v3s10 f0v0s0 40.000000
f1v3s10 f1v6s8 40.000000
f1v3s10 f2v6s16 40.000000
f1v3s10 f0v1s1 40.000000
f1v3s10 f2v5s15 40.000000
f1v3s10 f2v11s21 40.000000
f3v13s38 f2v9s19 40.000000
f3v13s38 f2v14s24 40.000000
f1v13s20 f2v6s16 40.000000
f1v13s20 f2v11s21 40.000000
f0v5s5 f2v9s19 40.000000
f0v5s5 f2v12s22 40.000000
f0v5s5 f0v0s0 43.000000
f0v5s5 f1v6s8 43.000000
f0v5s5 f2v13s23 40.000000
f0v5s5 f2v3s13 40.000000
f0v5s5 f2v7s17 40.000000
f0v5s5 f2v10s20 40.000000
f0v5s5 f2v1s11 40.000000
f0v5s5 f0v1s1 43.000000
f0v5s5 f2v0s10 40.000000
f0v5s5 f2v14s24 41.000000
f1v11s18 f0v0s0 41.000000
f1v11s18 f1v6s8 41.000000
f1v11s18 f2v6s16 40.000000
f1v11s18 f0v1s1 41.000000
f1v11s18 f2v5s15 40.000000
f1v11s18 f2v11s21 40.000000
f0v6s6 f2v9s19 40.000000
f0v6s6 f2v12s22 40.000000
f0v6s6 f0v0s0 43.000000
f0v6s6 f1v6s8 43.000000
f0v6s6 f2v13s23 40.000000
f0v6s6 f2v3s13 40.000000
f0v6s6 f2v2s12 40.000000
f0v6s6 f2v6s16 40.000000
f0v6s6 f2v7s17 40.000000
f0v6s6 f2v10s20 40.000000
f0v6s6 f2v1s11 41.000000
f0v6s6 f0v1s1 43.000000
f0v6s6 f2v0s10 40.000000
f0v6s6 f2v11s21 40.000000
f0v6s6 f2v14s24 42.000000
f3v4s29 f2v12s22 40.000000
f3v4s29 f0v0s0 40.000000
f3v4s29 f1v6s8 40.000000
f3v4s29 f0v1s1 40.000000
f0v2s2 f2v9s19 41.000000
f0v2s2 f2v12s22 41.000000
f0v2s2 f0v0s0 44.000000
f0v2s2 f1v6s8 44.000000
f0v2s2 f2v13s23 41.000000
f0v2s2 f2v4s14 40.000000
f0v2s2 f2v3s13 40.000000
f0v2s2 f2v2s12 40.000000
f0v2s2 f2v6s16 40.000000
f0v2s2 f2v7s17 41.000000
f0v2s2 f2v10s20 41.000000
f0v2s2 f2v1s11 41.000000
f0v2s2 f0v1s1 44.000000
f0v2s2 f2v8s18 40.000000
f0v2s2 f2v0s10 41.000000
f0v2s2 f2v5s15 40.000000
f0v2s2 f2v11s21 40.000000
f0v2s2 f2v14s24 41.000000
f3v12s37 f2v9s19 41.000000
f3v12s37 f2v12s22 40.000000
f3v12s37 f0v0s0 40.000000
f3v12s37 f1v6s8 40.000000
f3v12s37 f2v13s23 40.000000
f3v12s37 f2v4s14 40.000000
f3v12s37 f2v3s13 40.000000
f3v12s37 f2v2s12 40.000000
f3v12s37 f2v7s17 40.000000
f3v12s37 f2v10s20 40.000000
f3v12s37 f0v1s1 40.000000
f3v12s37 f2v8s18 40.000000
f3v12s37 f2v0s10 40.000000
f3v12s37 f2v14s24 40.000000
f0v3s3 f2v9s19 40.000000
f0v3s3 f2v12s22 40.000000
f0v3s3 f0v0s0 42.000000
f0v3s3 f1v6s8 42.000000
f0v3s3 f2v13s23 40.000000
f0v3s3 f2v7s17 40.000000
f0v3s3 f2v10s20 40.000000
f0v3s3 f2v1s11 40.000000
f0v3s3 f0v1s1 42.000000
f0v3s3 f2v0s10 40.000000
f0v3s3 f2v14s24 40.000000
f0v0s0 f2v9s19 40.000000
f0v0s0 f2v12s22 40.000000
f0v0s0 f0v0s0 44.000000
f0v0s0 f1v6s8 44.000000
f0v0s0 f2v13s23 40.000000
f0v0s0 f2v2s12 40.000000
f0v0s0 f2v6s16 40.000000
f0v0s0 f2v7s17 40.000000
f0v0s0 f2v10s20 40.000000
f0v0s0 f2v1s11 41.000000
f0v0s0 f0v1s1 44.000000
f0v0s0 f2v0s10 40.000000
f0v0s0 f2v11s21 40.000000
f0v0s0 f2v14s24 41.000000
f1v12s19 f0v0s0 40.000000
f1v12s19 f1v6s8 40.000000
f1v12s19 f0v1s1 40.000000
Whitespace-only changes.
Whitespace-only changes.
-136
View File
@@ -1,136 +0,0 @@
package obiclust
import (
"math"
"sort"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
)
// center is a copy of the entry of a center, with its own table: scanning
// the centers of a list then reads contiguous memory.
type center struct {
entry
idx int // index of the entry in the dataset
rank int // rank of the center in the order of creation
}
const tabChunk = 1024
// A bucket holds the centers of one length, in the order of creation, and
// their tables by blocks (see tableBlock).
type bucket struct {
cents []center
blocks []tableBlock
}
// centerSet stores the centers by length. A sequence can only be attached to a
// center whose length is compatible with its own (see lengthCompatible), so
// it only visits the buckets of these lengths, instead of all the centers.
type centerSet struct {
width int // centers per block of transposed tables, 0 if unused
byLen map[int]*bucket
lens []int // lengths that have a bucket, increasing
tabs [][]table4 // chunks holding the tables of the centers
n int
}
func newCenterSet(width int) *centerSet {
return &centerSet{width: width, byLen: make(map[int]*bucket)}
}
// add stores a copy of the entry e, which is the entry idx of the dataset, as
// the next center, and returns it.
func (s *centerSet) add(e entry, idx int) center {
if s.n%tabChunk == 0 {
s.tabs = append(s.tabs, make([]table4, tabChunk))
}
tab := &s.tabs[len(s.tabs)-1][s.n%tabChunk]
if e.table != nil {
*tab = *e.table
}
e.table = tab
b := s.byLen[e.length]
if b == nil {
b = new(bucket)
s.byLen[e.length] = b
s.lens = append(s.lens, e.length)
sort.Ints(s.lens)
}
if w := s.width; w > 0 && e.table != nil {
if len(b.cents)%w == 0 {
b.blocks = append(b.blocks, newTableBlock(w))
}
b.blocks[len(b.blocks)-1].set(w, len(b.cents)%w, tab)
}
ctr := center{entry: e, idx: idx, rank: s.n}
b.cents = append(b.cents, ctr)
s.n++
return ctr
}
// scan compares entry i with all the centers of the set, and returns the
// first one it matches (in fast mode) or the best one (in exact mode, the
// first of them in case of tie), exactly as compare would on the list of the
// centers in the order of creation.
//
// Only the buckets of compatible lengths are visited: the other centers would
// give the worst score. In each bucket the first match is the one of lowest
// rank, so the first match of the whole set is the one of lowest rank among
// the buckets. In exact mode, the best of each bucket is compared, ties going
// to the lowest rank.
func (c *clustering) scan(i int, buf *obialign.BandedLCSBuffer) attachment {
q := &c.entries[i]
set := c.set
width := set.width
useBlocks := width > 0 && q.sparse != nil
best := attachment{-1, c.sc.worst}
bestRank := math.MaxInt
var common [64]uint8
for _, length := range set.lens {
if !c.sc.lengthCompatible(q.length, length) {
continue
}
b := set.byLen[length]
local := attachment{-1, c.sc.worst}
localRank := 0
for k := range b.cents {
ctr := &b.cents[k]
if c.fast && ctr.rank > bestRank {
break // a center of lower rank has been found in another bucket
}
cw := -1
if useBlocks {
if k%width == 0 {
b.blocks[k/width].common(width, q.sparse, common[:])
}
cw = int(common[k%width])
}
s := c.sc.pairScore(q, &ctr.entry, cw, buf)
if c.sc.selects(s, local.score) {
local, localRank = attachment{ctr.idx, s}, ctr.rank
if c.fast {
break
}
}
}
if local.center < 0 {
continue
}
if c.fast {
if localRank < bestRank {
best, bestRank = local, localRank
}
} else if best.center < 0 || c.sc.beats(local.score, best.score) ||
(local.score == best.score && localRank < bestRank) {
best, bestRank = local, localRank
}
}
return best
}
+21 -14
View File
@@ -6,6 +6,7 @@ import (
"sync/atomic" "sync/atomic"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
) )
// clustering is the state of the star clustering of the distinct sequences, // clustering is the state of the star clustering of the distinct sequences,
@@ -32,16 +33,16 @@ import (
// The result does not depend on the size of the blocks, which only trades the // The result does not depend on the size of the blocks, which only trades the
// sequential work of phase B against the synchronizations. // sequential work of phase B against the synchronizations.
type clustering struct { type clustering struct {
entries []entry entries []sim.Entry
sc *scoring sc *sim.Scoring
fast bool fast bool
workers int workers int
// bounds of the size of the blocks, 0 for the defaults (tests only) // bounds of the size of the blocks, 0 for the defaults (tests only)
blockMin, blockMax int blockMin, blockMax int
centers []int // indices of the centers, in the order of creation centers []int // indices of the centers, in the order of creation
set *centerSet index *sim.Index
fresh []center // the centers created in the current block fresh []sim.Member // the centers created in the current block
center []int // for each entry, the index of its center, -1 if it has none center []int // for each entry, the index of its center, -1 if it has none
score []float64 // for each entry, the score with its center score []float64 // for each entry, the score with its center
@@ -54,7 +55,7 @@ type attachment struct {
score float64 score float64
} }
func newClustering(entries []entry, sc *scoring, fast bool, workers int) *clustering { func newClustering(entries []sim.Entry, sc *sim.Scoring, fast bool, workers int) *clustering {
c := &clustering{ c := &clustering{
entries: entries, entries: entries,
sc: sc, sc: sc,
@@ -67,26 +68,32 @@ func newClustering(entries []entry, sc *scoring, fast bool, workers int) *cluste
for i := range c.center { for i := range c.center {
c.center[i] = -1 c.center[i] = -1
} }
c.set = newCenterSet(simdBlockWidth()) c.index = sim.NewIndex()
return c return c
} }
func (c *clustering) addCenter(i int) { func (c *clustering) addCenter(i int) {
c.fresh = append(c.fresh, c.set.add(c.entries[i], i)) c.fresh = append(c.fresh, c.index.Add(c.entries[i], i))
c.centers = append(c.centers, i) c.centers = append(c.centers, i)
c.center[i] = i c.center[i] = i
c.score[i] = c.sc.centerScore(c.entries[i].length) c.score[i] = c.sc.SelfScore(c.entries[i].Length)
}
// selects tells if a pair of score s, ok telling that it was scored, must
// replace the best attachment found so far.
func (c *clustering) selects(s float64, ok bool, best attachment) bool {
return ok && c.sc.Passes(s) && (best.center < 0 || c.sc.Beats(s, best.score))
} }
// compare looks for the best center of entry i among the given ones. The // compare looks for the best center of entry i among the given ones. The
// attachment `from` is the best one already known. The search stops at the // attachment `from` is the best one already known. The search stops at the
// first match in fast mode. // first match in fast mode.
func (c *clustering) compare(i int, cents []center, from attachment, buf *obialign.BandedLCSBuffer) attachment { func (c *clustering) compare(i int, cents []sim.Member, from attachment, buf *obialign.BandedLCSBuffer) attachment {
best := from best := from
for k := range cents { for k := range cents {
s := c.sc.pairScore(&c.entries[i], &cents[k].entry, -1, buf) s, ok := c.sc.PairScore(&c.entries[i], &cents[k].Entry, -1, buf)
if c.sc.selects(s, best.score) { if c.selects(s, ok, best) {
best = attachment{cents[k].idx, s} best = attachment{cents[k].ID, s}
if c.fast { if c.fast {
break break
} }
@@ -162,7 +169,7 @@ func (c *clustering) run(progress func(done int)) {
} }
unmatched++ unmatched++
*a = c.compare(i, c.fresh, *a, &c.bufs[0]) *a = c.compare(i, c.fresh, *a, &c.bufs[0])
if a.center < 0 && !c.entries[i].ambiguous { if a.center < 0 && !c.entries[i].Ambiguous {
newCenters = append(newCenters, i) newCenters = append(newCenters, i)
c.addCenter(i) c.addCenter(i)
} }
@@ -181,7 +188,7 @@ func (c *clustering) run(progress func(done int)) {
for i := pos; i < end; i++ { for i := pos; i < end; i++ {
if a := att[i-pos]; a.center >= 0 { if a := att[i-pos]; a.center >= 0 {
c.center[i] = a.center c.center[i] = a.center
c.score[i] = c.sc.memberScore(a.score) c.score[i] = c.sc.Reported(a.score)
} }
} }
-47
View File
@@ -1,47 +0,0 @@
package obiclust
// table4 is the 4-mer occurrence table of a sequence, as sumaclust builds it:
// one saturating counter per word, and the number of occurrences that did
// not fit in the counters.
type table4 struct {
count [256]uint8
overflow int
}
// buildTable4 counts the 4-mers of a sequence made of the letters a, c, g
// and t. The 2-bit code of a base is (letter>>1)&3, i.e. a=0, c=1, t=2, g=3,
// which is the encoding of sumaclust.
func buildTable4(seq []byte) *table4 {
t := new(table4)
t.fill(seq)
return t
}
// fill counts the 4-mers of seq in a zeroed table.
func (t *table4) fill(seq []byte) {
if len(seq) < 4 {
return
}
w := uint(0)
for i, c := range seq {
w = (w<<2 | uint(c>>1)&3) & 0xFF
if i < 3 {
continue
}
if t.count[w] < 255 {
t.count[w]++
} else {
t.overflow++
}
}
}
// minCommonWords is the minimum number of 4-mers that two sequences must
// share when the longest has length reflen and they have a common
// subsequence of length lcs (integer arithmetic of sumaclust, thresholdLCS4).
func minCommonWords(reflen, lcs int) int {
nbfrag := (reflen-lcs)*2 + 1
smin := lcs / nbfrag
r := lcs - smin*nbfrag
return max(smin-2, 0)*r + max(smin-3, 0)*(nbfrag-r)
}
-14
View File
@@ -1,14 +0,0 @@
//go:build !goexperiment.simd
package obiclust
// commonWords is the upper bound sumaclust uses for the number of 4-mers
// shared by two sequences: the sum of the minima of the counters, plus the
// minimum of the two overflows.
func commonWords(t1, t2 *table4) int {
total := 0
for i := range t1.count {
total += int(min(t1.count[i], t2.count[i]))
}
return total + min(t1.overflow, t2.overflow)
}
-71
View File
@@ -1,71 +0,0 @@
package obiclust
import (
"math/rand"
"testing"
)
// commonWordsRef is the definition of commonWords, spelled out.
func commonWordsRef(t1, t2 *table4) int {
total := 0
for i := range t1.count {
total += int(min(t1.count[i], t2.count[i]))
}
return total + min(t1.overflow, t2.overflow)
}
func TestCommonWords(t *testing.T) {
rng := rand.New(rand.NewSource(3))
seq := func(n int, alpha string) []byte {
s := make([]byte, n)
for i := range s {
s[i] = alpha[rng.Intn(len(alpha))]
}
return s
}
for it := 0; it < 3000; it++ {
alpha := []string{"acgt", "ac", "a"}[it%3]
t1 := buildTable4(seq(rng.Intn(1200), alpha))
t2 := buildTable4(seq(rng.Intn(1200), alpha))
if got, want := commonWords(t1, t2), commonWordsRef(t1, t2); got != want {
t.Fatalf("commonWords = %d, want %d", got, want)
}
}
}
// TestBuildTable4 checks the table against the 4-mers counted the long way,
// including the saturation of the counters.
func TestBuildTable4(t *testing.T) {
code := map[byte]int{'a': 0, 'c': 1, 't': 2, 'g': 3}
rng := rand.New(rand.NewSource(4))
for it := 0; it < 500; it++ {
alpha := []string{"acgt", "a", "ac"}[it%3]
n := rng.Intn(900)
s := make([]byte, n)
for i := range s {
s[i] = alpha[rng.Intn(len(alpha))]
}
var counts [256]int
for i := 0; i+4 <= n; i++ {
w := 0
for _, c := range s[i : i+4] {
w = w<<2 | code[c]
}
counts[w]++
}
tab := buildTable4(s)
over := 0
for w, c := range counts {
if c > 255 {
over += c - 255
c = 255
}
if int(tab.count[w]) != c {
t.Fatalf("word %d: got %d, want %d", w, tab.count[w], c)
}
}
if tab.overflow != over {
t.Fatalf("overflow = %d, want %d", tab.overflow, over)
}
}
}
+25 -74
View File
@@ -2,57 +2,18 @@ package obiclust
import ( import (
"os" "os"
"sync"
"sync/atomic"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obidefault"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiiter"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obicsv"
"github.com/schollz/progressbar/v3" "github.com/schollz/progressbar/v3"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
// buildEntries describes the distinct sequences of the groups, the 4-mer
// tables being computed in parallel.
func buildEntries(recs []record, groups []group, workers int) []entry {
entries := make([]entry, len(groups))
tables := make([]table4, len(groups)) // contiguous, in the order the centers are scanned
var next atomic.Int64
var wg sync.WaitGroup
for w := 0; w < max(workers, 1); w++ {
wg.Add(1)
go func() {
defer wg.Done()
for {
g := int(next.Add(1)) - 1
if g >= len(groups) {
return
}
head := &recs[groups[g].start]
var sparse []uint16
if !head.ambiguous {
tables[g].fill(head.clean)
sparse = sparseWords(&tables[g])
}
entries[g] = entry{
seq: head.clean,
length: len(head.clean),
count: groups[g].count,
table: &tables[g],
sparse: sparse,
ambiguous: head.ambiguous,
}
}
}()
}
wg.Wait()
return entries
}
// Params are the parameters of the clustering. // Params are the parameters of the clustering.
type Params struct { type Params struct {
Threshold float64 Threshold float64
@@ -60,7 +21,7 @@ type Params struct {
Exact bool // attach a sequence to the best center, not to the first matching one Exact bool // attach a sequence to the best center, not to the first matching one
Distance bool // the score is a distance, not a similarity Distance bool // the score is a distance, not a similarity
Normalized bool // the score is normalized by the reference length Normalized bool // the score is normalized by the reference length
Reference reference Reference sim.Reference
SortKey string // "count", "None", or an attribute SortKey string // "count", "None", or an attribute
Ascending bool Ascending bool
AcceptAmbiguous bool // keep the sequences with IUPAC letters other than acgt (they cannot be centers) AcceptAmbiguous bool // keep the sequences with IUPAC letters other than acgt (they cannot be centers)
@@ -84,34 +45,20 @@ func ParamsFromCLI() Params {
} }
// newScoring builds the scoring from the parameters, checking them as sumaclust does. // newScoring builds the scoring from the parameters, checking them as sumaclust does.
func newScoring(p Params, entries []entry) *scoring { func newScoring(p Params, entries []sim.Entry) *sim.Scoring {
threshold := p.Threshold if p.Threshold <= 0 {
if threshold <= 0 || (p.Normalized && threshold > 1.0) {
log.Fatal("Please specify a threshold > 0, and < 1 when scores are normalized.") log.Fatal("Please specify a threshold > 0, and < 1 when scores are normalized.")
} }
sc, err := sim.NewScoring(sim.Params{
sc := &scoring{ Threshold: p.Threshold,
normalize: p.Normalized, Normalized: p.Normalized,
lcsmode: !p.Distance, Distance: p.Distance,
ref: p.Reference, Reference: p.Reference,
ratio: p.Ratio, Ratio: p.Ratio,
}, entries)
if err != nil {
log.Fatalf("Please specify a threshold > 0, and < 1 when scores are normalized: %v", err)
} }
if !sc.lcsmode && sc.normalize {
threshold = 1.0 - threshold
}
sc.threshold = threshold
lmax := 0
for i := range entries {
lmax = max(lmax, entries[i].length)
}
if sc.similarityLike() {
sc.worst = 0.0
} else {
sc.worst = float64(lmax)
}
sc.prepareLengths(lmax)
return sc return sc
} }
@@ -153,19 +100,22 @@ func Cluster(db obiseq.BioSequenceSlice, p Params, progress func(done, total int
} }
log.Infof("%d distinct sequences", len(groups)) log.Infof("%d distinct sequences", len(groups))
entries := buildEntries(recs, groups, p.Workers) entries := sim.BuildEntries(len(groups), func(g int) ([]byte, int, bool) {
head := &recs[groups[g].start]
return head.clean, groups[g].count, head.ambiguous
}, p.Workers)
for i := range entries { for i := range entries {
if entries[i].length > obialign.MaxBandedLCSLength { if entries[i].Length > obialign.MaxBandedLCSLength {
log.Fatalf("The sequence %s is too long (%d bp, maximum %d bp)", log.Fatalf("The sequence %s is too long (%d bp, maximum %d bp)",
recs[groups[i].start].seq.Id(), entries[i].length, obialign.MaxBandedLCSLength) recs[groups[i].start].seq.Id(), entries[i].Length, obialign.MaxBandedLCSLength)
} }
} }
sc := newScoring(p, entries) sc := newScoring(p, entries)
if sc.similarityLike() { if sc.SimilarityLike() {
log.Infof("Clustering sequences when similarity >= %f", sc.threshold) log.Infof("Clustering sequences when similarity >= %f", sc.Threshold())
} else { } else {
log.Infof("Clustering sequences when distance <= %f", sc.threshold) log.Infof("Clustering sequences when distance <= %f", sc.Threshold())
} }
cl := newClustering(entries, sc, !p.Exact, p.Workers) cl := newClustering(entries, sc, !p.Exact, p.Workers)
@@ -185,10 +135,11 @@ func CLIOBIClust(iterator obiiter.IBioSequence) obiiter.IBioSequence {
log.Infof("Sequence dataset of %d sequences loaded", len(db)) log.Infof("Sequence dataset of %d sequences loaded", len(db))
var bar *progressbar.ProgressBar var bar *progressbar.ProgressBar
barChecked := false // the bar is created once, even when it is disabled
last := 0 last := 0
res := Cluster(db, ParamsFromCLI(), func(done, total int) { res := Cluster(db, ParamsFromCLI(), func(done, total int) {
if bar == nil { if !barChecked {
bar = progressBar(total) bar, barChecked = progressBar(total), true
} }
if bar != nil { if bar != nil {
bar.Add(done - last) bar.Add(done - last)
+28 -125
View File
@@ -12,6 +12,7 @@ import (
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
) )
// readTestFasta reads a fasta file whose headers are "id count=N; key=V;". // readTestFasta reads a fasta file whose headers are "id count=N; key=V;".
@@ -75,11 +76,11 @@ func paramsFromSumaclust(t testing.TB, args []string) Params {
case "-e": case "-e":
p.Exact = true p.Exact = true
case "-l": case "-l":
p.Reference = refShortest p.Reference = sim.RefShortest
case "-L": case "-L":
p.Reference = refLongest p.Reference = sim.RefLongest
case "-a": case "-a":
p.Reference = refAlignment p.Reference = sim.RefAlignment
case "-d": case "-d":
p.Distance = true p.Distance = true
case "-r": case "-r":
@@ -138,37 +139,37 @@ func TestSumaclustResults(t *testing.T) {
} }
// referenceCluster transcribes the sequential algorithm of sumaclust. // referenceCluster transcribes the sequential algorithm of sumaclust.
func referenceCluster(entries []entry, sc *scoring, fast bool) (center []int, score []float64) { func referenceCluster(entries []sim.Entry, sc *sim.Scoring, fast bool) (center []int, score []float64) {
n := len(entries) n := len(entries)
center, score = make([]int, n), make([]float64, n) center, score = make([]int, n), make([]float64, n)
var centers []int var centers []int
var buf obialign.BandedLCSBuffer var buf obialign.BandedLCSBuffer
for i := range entries { for i := range entries {
scoremax, best := sc.worst, -1 best, bestScore := -1, 0.0
for _, c := range centers { for _, c := range centers {
s := sc.pairScore(&entries[i], &entries[c], -1, &buf) s, ok := sc.PairScore(&entries[i], &entries[c], -1, &buf)
if sc.selects(s, scoremax) { if ok && sc.Passes(s) && (best < 0 || sc.Beats(s, bestScore)) {
scoremax, best = s, c best, bestScore = c, s
if fast { if fast {
break break
} }
} }
} }
if best >= 0 { if best >= 0 {
center[i], score[i] = best, sc.memberScore(scoremax) center[i], score[i] = best, sc.Reported(bestScore)
} else if entries[i].ambiguous { } else if entries[i].Ambiguous {
center[i] = -1 center[i] = -1
} else { } else {
center[i], score[i] = i, sc.centerScore(entries[i].length) center[i], score[i] = i, sc.SelfScore(entries[i].Length)
centers = append(centers, i) centers = append(centers, i)
} }
} }
return center, score return center, score
} }
func randomEntries(rng *rand.Rand, n int) []entry { func randomEntries(rng *rand.Rand, n int) []sim.Entry {
var roots [][]byte var roots [][]byte
entries := make([]entry, 0, n) entries := make([]sim.Entry, 0, n)
for len(entries) < n { for len(entries) < n {
var s []byte var s []byte
if len(roots) == 0 || rng.Intn(5) == 0 { if len(roots) == 0 || rng.Intn(5) == 0 {
@@ -191,8 +192,8 @@ func randomEntries(rng *rand.Rand, n int) []entry {
} }
} }
} }
tab := buildTable4(s) tab := sim.NewTable4(s)
entries = append(entries, entry{seq: s, length: len(s), count: 1 + rng.Intn(20), table: tab, sparse: sparseWords(tab)}) entries = append(entries, sim.Entry{Seq: s, Length: len(s), Count: 1 + rng.Intn(20), Table: tab, Sparse: sim.SparseWords(tab)})
} }
return entries return entries
} }
@@ -202,22 +203,25 @@ func randomEntries(rng *rand.Rand, n int) []entry {
// result of the sequential algorithm. // result of the sequential algorithm.
func TestParallelClusteringIsSequential(t *testing.T) { func TestParallelClusteringIsSequential(t *testing.T) {
rng := rand.New(rand.NewSource(21)) rng := rand.New(rand.NewSource(21))
scorings := []scoring{ scorings := []sim.Params{
{threshold: 0.9, normalize: true, lcsmode: true, ref: refAlignment, ratio: 1, worst: 0}, {Threshold: 0.9, Normalized: true, Reference: sim.RefAlignment, Ratio: 1},
{threshold: 0.85, normalize: true, lcsmode: true, ref: refShortest, ratio: 2, worst: 0}, {Threshold: 0.85, Normalized: true, Reference: sim.RefShortest, Ratio: 2},
{threshold: 0.9, normalize: true, lcsmode: false, ref: refLongest, ratio: 1, worst: 0}, {Threshold: 0.9, Normalized: true, Distance: true, Reference: sim.RefLongest, Ratio: 1},
{threshold: 35, normalize: false, lcsmode: true, ref: refAlignment, ratio: 1, worst: 0}, {Threshold: 35, Reference: sim.RefAlignment, Ratio: 1},
{threshold: 5, normalize: false, lcsmode: false, ref: refAlignment, ratio: 1, worst: 80}, {Threshold: 5, Distance: true, Reference: sim.RefAlignment, Ratio: 1},
} }
for round := 0; round < 4; round++ { for round := 0; round < 4; round++ {
entries := randomEntries(rng, 300) entries := randomEntries(rng, 300)
for si := range scorings { for si := range scorings {
sc := scorings[si] sc, err := sim.NewScoring(scorings[si], entries)
if err != nil {
t.Fatal(err)
}
for _, fast := range []bool{true, false} { for _, fast := range []bool{true, false} {
wantCenter, wantScore := referenceCluster(entries, &sc, fast) wantCenter, wantScore := referenceCluster(entries, sc, fast)
for _, workers := range []int{1, 3, 8} { for _, workers := range []int{1, 3, 8} {
for _, blocks := range [][2]int{{0, 0}, {1, 1}, {2, 5}, {7, 7}, {50, 300}} { for _, blocks := range [][2]int{{0, 0}, {1, 1}, {2, 5}, {7, 7}, {50, 300}} {
cl := newClustering(entries, &sc, fast, workers) cl := newClustering(entries, sc, fast, workers)
cl.blockMin, cl.blockMax = blocks[0], blocks[1] cl.blockMin, cl.blockMax = blocks[0], blocks[1]
cl.run(func(int) {}) cl.run(func(int) {})
for i := range entries { for i := range entries {
@@ -233,28 +237,6 @@ func TestParallelClusteringIsSequential(t *testing.T) {
} }
} }
func TestClassify(t *testing.T) {
cases := []struct {
in string
accept bool
kept bool
ambiguous bool
}{
{"acgt", false, true, false}, {"acgt", true, true, false},
{"acgtn", false, false, false}, {"acgtn", true, true, true},
{"acgtx", true, false, false}, {"nacgt", false, false, false},
{"acgt-", true, false, false}, {"acgu", true, true, true},
{"ACGT", true, false, false}, {"", true, false, false},
{"rykmswbdhvn", true, true, true}, {"rykmswbdhvn", false, false, false},
}
for _, c := range cases {
got, amb := classify([]byte(c.in), c.accept)
if (got != nil) != c.kept || amb != c.ambiguous {
t.Errorf("classify(%q, %v) = (%q, %v), want kept=%v ambiguous=%v", c.in, c.accept, got, amb, c.kept, c.ambiguous)
}
}
}
func makeSeq(id, seq string, count int, key float64) *obiseq.BioSequence { func makeSeq(id, seq string, count int, key float64) *obiseq.BioSequence {
s := obiseq.NewBioSequence(id, []byte(seq), "") s := obiseq.NewBioSequence(id, []byte(seq), "")
s.SetAttribute("count", count) s.SetAttribute("count", count)
@@ -353,82 +335,3 @@ func TestAmbiguousSequences(t *testing.T) {
} }
} }
} }
// TestLengthTable checks that the values precomputed by length give the
// scores of the direct computation, in every mode.
func TestLengthTable(t *testing.T) {
rng := rand.New(rand.NewSource(33))
entries := randomEntries(rng, 120)
for i := 0; i < 20; i++ { // some very short sequences, which skip the filter
s := entries[i].seq[:8+rng.Intn(10)]
entries[i] = entry{seq: s, length: len(s), count: 1, table: buildTable4(s)}
}
lmax := 0
for i := range entries {
lmax = max(lmax, entries[i].length)
}
var buf obialign.BandedLCSBuffer
for _, ref := range []reference{refAlignment, refLongest, refShortest} {
for _, mode := range []scoring{
{threshold: 0.9, normalize: true, lcsmode: true},
{threshold: 0.8, normalize: true, lcsmode: false},
{threshold: 30, normalize: false, lcsmode: true},
{threshold: 6, normalize: false, lcsmode: false},
} {
direct := mode
direct.ref, direct.ratio = ref, 3
table := direct
table.prepareLengths(lmax)
if (ref == refShortest) != (table.byLength == nil) {
t.Fatalf("ref %v: table presence is wrong", ref)
}
for i := range entries {
for j := range entries {
a, b := direct.pairScore(&entries[i], &entries[j], -1, &buf), table.pairScore(&entries[i], &entries[j], -1, &buf)
if a != b {
t.Fatalf("ref %v mode %+v pair %d,%d: %v with the table, %v directly", ref, mode, i, j, b, a)
}
}
}
}
}
}
// TestBlockCommon checks the sums of a block of transposed tables against
// commonWords.
func TestBlockCommon(t *testing.T) {
width := simdBlockWidth()
if width == 0 {
t.Skip("blocks of tables are used with GOEXPERIMENT=simd only")
}
rng := rand.New(rand.NewSource(8))
seq := func(n int, alpha string) []byte {
s := make([]byte, n)
for i := range s {
s[i] = alpha[rng.Intn(len(alpha))]
}
return s
}
for it := 0; it < 200; it++ {
alpha := []string{"acgt", "ac", "a"}[it%3]
block := newTableBlock(width)
tabs := make([]*table4, width)
for j := range tabs {
tabs[j] = buildTable4(seq(rng.Intn(600), alpha))
block.set(width, j, tabs[j])
}
q := buildTable4(seq(rng.Intn(260), alpha))
words := sparseWords(q)
if words == nil {
continue
}
out := make([]uint8, 64)
block.common(width, words, out)
for j, tab := range tabs {
want := commonWordsRef(q, tab) - min(q.overflow, tab.overflow)
if int(out[j]) != want {
t.Fatalf("lane %d: %d, want %d", j, out[j], want)
}
}
}
}
+6 -15
View File
@@ -1,21 +1,12 @@
package obiclust package obiclust
import ( import (
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obitools/obiconvert"
"github.com/DavidGamba/go-getoptions" "github.com/DavidGamba/go-getoptions"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
// reference is the length used to normalize a score (or to express a raw
// distance): the alignment length, the longest or the shortest sequence.
type reference int
const (
refAlignment reference = iota
refLongest
refShortest
)
var _threshold = 0.97 var _threshold = 0.97
var _ratio = 1.0 var _ratio = 1.0
var _exact = false var _exact = false
@@ -76,7 +67,7 @@ func ObiclustOptionSet(options *getoptions.GetOpt) {
options.Alias("R"), options.Alias("R"),
options.ArgName("RATIO"), options.ArgName("RATIO"),
options.Description("Maximum ratio between the counts of two sequences so that the less abundant one "+ options.Description("Maximum ratio between the counts of two sequences so that the less abundant one "+
"can be considered as a variant of the more abundant one (default: %3.2f).")) "can be considered as a variant of the more abundant one."))
options.StringVar(&_sortKey, "sort", _sortKey, options.StringVar(&_sortKey, "sort", _sortKey,
options.Alias("s"), options.Alias("s"),
@@ -133,16 +124,16 @@ func CLINormalized() bool {
} }
// CLIReference returns the length used as reference to normalize the score. // CLIReference returns the length used as reference to normalize the score.
func CLIReference() reference { func CLIReference() sim.Reference {
n := 0 n := 0
ref := refAlignment ref := sim.RefAlignment
if _refShortest { if _refShortest {
n++ n++
ref = refShortest ref = sim.RefShortest
} }
if _refLongest { if _refLongest {
n++ n++
ref = refLongest ref = sim.RefLongest
} }
if _refAlignment { if _refAlignment {
n++ n++
+4 -42
View File
@@ -7,6 +7,7 @@ import (
"strings" "strings"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiseq"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils" "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obiutils"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
) )
@@ -30,45 +31,6 @@ type group struct {
key float64 key float64
} }
// nucleotide classes of a byte
const (
notNucleotide = iota
plainNucleotide
ambiguousNucleotide
)
var nucleotideClass = func() (t [256]uint8) {
for _, c := range "acgt" {
t[c] = plainNucleotide
}
for _, c := range "umrwsykvhdbn" {
t[c] = ambiguousNucleotide
}
return t
}()
// classify returns the nucleotides of a sequence and tells if it contains
// IUPAC letters other than a, c, g and t. nil is returned if the sequence is
// empty, or contains anything else than IUPAC letters (and also IUPAC letters
// other than a, c, g and t unless ambiguous ones are accepted).
func classify(s []byte, acceptAmbiguous bool) (clean []byte, ambiguous bool) {
if len(s) == 0 {
return nil, false
}
for _, c := range s {
switch nucleotideClass[c] {
case notNucleotide:
return nil, false
case ambiguousNucleotide:
if !acceptAmbiguous {
return nil, false
}
ambiguous = true
}
}
return s, ambiguous
}
// atof reads the leading number of a string as C atof does. // atof reads the leading number of a string as C atof does.
func atof(v interface{}) float64 { func atof(v interface{}) float64 {
if s, ok := v.(string); ok { if s, ok := v.(string); ok {
@@ -120,12 +82,12 @@ func prepare(db obiseq.BioSequenceSlice, key string, ascending, acceptAmbiguous
discarded := 0 discarded := 0
for pos, s := range db { for pos, s := range db {
clean, ambiguous := classify(s.Sequence(), acceptAmbiguous) ok, ambiguous := sim.Classify(s.Sequence(), acceptAmbiguous)
if clean == nil { if !ok {
discarded++ discarded++
continue continue
} }
r := record{seq: s, pos: pos, clean: clean, count: s.Count(), ambiguous: ambiguous} r := record{seq: s, pos: pos, clean: s.Sequence(), count: s.Count(), ambiguous: ambiguous}
if key != "None" { if key != "None" {
r.key = sortKeyOf(s, key) r.key = sortKeyOf(s, key)
} }
+63
View File
@@ -0,0 +1,63 @@
package obiclust
import (
"math"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
sim "git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obisimilarity"
)
// scan compares entry i with all the centers of the index, and returns the
// first one it matches (in fast mode) or the best one (in exact mode, the
// first of them in case of tie), exactly as compare would on the list of the
// centers in the order of creation.
//
// Only the buckets of compatible lengths are visited: the other centers would
// not match. In each bucket the first match is the one of lowest rank, so the
// first match of the whole index is the one of lowest rank among the buckets.
// In exact mode, the best of each bucket is compared, ties going to the
// lowest rank.
func (c *clustering) scan(i int, buf *obialign.BandedLCSBuffer) attachment {
q := &c.entries[i]
best := attachment{-1, 0}
bestRank := math.MaxInt
var commons sim.Commons
for _, length := range c.index.Lengths() {
if !c.sc.LengthCompatible(q.Length, length) {
continue
}
b := c.index.Bucket(length)
commons.Reset()
local := attachment{-1, 0}
localRank := 0
for k := range b.Members {
m := &b.Members[k]
if c.fast && m.Rank > bestRank {
break // a center of lower rank has been found in another bucket
}
s, ok := c.sc.PairScore(q, &m.Entry, b.Common(k, q.Sparse, &commons), buf)
if c.selects(s, ok, local) {
local, localRank = attachment{m.ID, s}, m.Rank
if c.fast {
break
}
}
}
if local.center < 0 {
continue
}
if c.fast {
if localRank < bestRank {
best, bestRank = local, localRank
}
} else if best.center < 0 || c.sc.Beats(local.score, best.score) ||
(local.score == best.score && localRank < bestRank) {
best, bestRank = local, localRank
}
}
return best
}
-233
View File
@@ -1,233 +0,0 @@
package obiclust
import (
"math"
"git.metabarcoding.org/obitools/obitools4/obitools4/pkg/obialign"
log "github.com/sirupsen/logrus"
)
// entry is a distinct sequence of the dataset with what the clustering needs.
type entry struct {
seq []byte
length int
count int // cumulated count of the identical sequences
table *table4
sparse []uint16 // words of the table (see sparseWords), nil if unusable
// ambiguous sequences contain IUPAC letters other than a, c, g and t:
// they have no 4-mer table, and cannot be the center of a cluster
ambiguous bool
}
// scoring holds the way sumaclust scores a pair of sequences and decides
// whether it passes the threshold. It reproduces the arithmetic of the
// reference implementation (integer truncations, floating point
// comparisons) so that the same pairs are accepted with the same scores.
type scoring struct {
threshold float64 // threshold as used for the comparison (1 - t for a normalized distance)
normalize bool
lcsmode bool // true: score is a similarity, false: it is a distance
ref reference
ratio float64
worst float64 // score of a pair that cannot be attached
// byLength gives, for the pairs whose longest sequence has a length l,
// the values that depend on l only. It is built when the reference is not
// the shortest sequence, otherwise those values depend on both lengths.
byLength []lengthInfo
}
type lengthInfo struct {
lcsMin int32 // see lcsMin
minCommon int32 // see minCommon
}
// prepareLengths fills byLength for the lengths up to lmax.
func (sc *scoring) prepareLengths(lmax int) {
if sc.ref == refShortest {
return
}
sc.byLength = make([]lengthInfo, lmax+1)
for l := range sc.byLength {
sc.byLength[l] = lengthInfo{int32(sc.lcsMin(l, l)), int32(sc.minCommon(l, l))}
}
}
// similarityLike tells if the comparison with the threshold is "score >= threshold".
func (sc *scoring) similarityLike() bool { return sc.lcsmode || sc.normalize }
// lcsMin is the smallest LCS score that a pair of lengths l1 >= l2 can have
// and still pass the threshold (calculateLCSmin of sumaclust).
func (sc *scoring) lcsMin(l1, l2 int) int {
switch {
case sc.threshold <= 0:
return 0
case sc.normalize:
if sc.ref == refShortest {
return int(sc.threshold * float64(l2))
}
return int(sc.threshold * float64(l1))
case sc.lcsmode:
return int(sc.threshold)
case sc.ref == refShortest:
return int(float64(l2) - sc.threshold)
default:
return int(float64(l1) - sc.threshold)
}
}
// minCommon is the number of 4-mers that two sequences of lengths l1 >= l2
// must share to be possibly similar enough (isPossibleSumathings).
func (sc *scoring) minCommon(l1, l2 int) int {
reflen := l2
if sc.ref == refAlignment || sc.ref == refLongest {
reflen = l1
}
var lcs int
if sc.normalize {
lcs = int(math.Ceil(float64(reflen) * sc.threshold))
} else {
th := sc.threshold
if !sc.lcsmode {
th = float64(reflen) - th
}
lcs = int(th)
}
return minCommonWords(l1, lcs)
}
// pairScore returns the score of a query sequence against a center, or the
// worst score when the pair cannot be attached.
//
// common, if not negative, is the sum of the minima of the 4-mer counters of
// the two sequences, already computed by a block of tables.
func (sc *scoring) pairScore(q, c *entry, common int, buf *obialign.BandedLCSBuffer) float64 {
// The quotient of two counts is not above 1 when the first is not above
// the second, which spares the division in the usual case.
if !(sc.ratio >= 1 && q.count <= c.count) && float64(q.count)/float64(c.count) > sc.ratio {
return sc.worst
}
l1, l2 := q.length, c.length
long, short := q, c
if l1 < l2 {
l1, l2 = l2, l1
long, short = c, q
}
var lcsMin, minCommon int
if sc.byLength != nil {
info := sc.byLength[l1]
lcsMin, minCommon = int(info.lcsMin), int(info.minCommon)
} else {
lcsMin, minCommon = sc.lcsMin(l1, l2), sc.minCommon(l1, l2)
}
if l2 < lcsMin {
return sc.worst
}
// The 4-mer filter counts identical words: it does not hold when IUPAC
// codes can match different letters. It lets short sequences pass.
if l1 >= 12 && l2 >= 12 && !long.ambiguous && !short.ambiguous {
if common >= 0 {
common += min(long.table.overflow, short.table.overflow)
} else {
common = commonWords(long.table, short.table)
}
if common < minCommon {
return sc.worst
}
}
// The length of the alignment is needed only to normalize by it, or to
// express a distance with it; the score alone is much cheaper.
var lcs, alilen int
var err error
if sc.ref == refAlignment && (sc.normalize || !sc.lcsmode) {
lcs, alilen, err = buf.AtLeast(q.seq, c.seq, lcsMin)
} else {
lcs, err = buf.ScoreAtLeast(q.seq, c.seq, lcsMin)
}
if err != nil {
log.Fatalf("Cannot align two sequences: %v", err)
}
if lcs < 0 {
// The best alignment has a score under lcsMin: the pair cannot pass.
return sc.worst
}
id := float64(lcs)
if !sc.lcsmode && !sc.normalize {
switch sc.ref {
case refAlignment:
id = float64(alilen) - id
case refLongest:
id = float64(l1) - id
case refShortest:
id = float64(l2) - id
}
}
if sc.normalize {
switch sc.ref {
case refAlignment:
id /= float64(alilen)
case refLongest:
id /= float64(l1)
case refShortest:
id /= float64(l2)
}
}
return id
}
// beats tells if the score s is better than the score best (without any
// threshold).
func (sc *scoring) beats(s, best float64) bool {
if sc.similarityLike() {
return s > best
}
return s < best
}
// lcsMinFor is lcsMin for sequences of lengths l1 >= l2, from the table when it exists.
func (sc *scoring) lcsMinFor(l1, l2 int) int {
if sc.byLength != nil {
return int(sc.byLength[l1].lcsMin)
}
return sc.lcsMin(l1, l2)
}
// lengthCompatible tells if two sequences of these lengths may be similar enough:
// the shortest cannot be shorter than the minimum LCS score of the pair.
func (sc *scoring) lengthCompatible(la, lb int) bool {
l1, l2 := max(la, lb), min(la, lb)
return l2 >= sc.lcsMinFor(l1, l2)
}
// selects tells if a pair of score s must replace the best pair found so far,
// of score best.
func (sc *scoring) selects(s, best float64) bool {
if sc.similarityLike() {
return s >= sc.threshold && s > best
}
return s <= sc.threshold && s < best
}
// centerScore is the score of a sequence with itself.
func (sc *scoring) centerScore(length int) float64 {
switch {
case sc.normalize && sc.lcsmode:
return 1.0
case !sc.lcsmode:
return 0.0
default:
return float64(length)
}
}
// memberScore is the score reported for a sequence attached to a center
// with the score s.
func (sc *scoring) memberScore(s float64) float64 {
if !sc.lcsmode && sc.normalize {
return 1.0 - s
}
return s
}