Correction a a bug and transfert of the new matching rules from obirefidx to obitag

Former-commit-id: a28540f72a504ad4e7e8a8b6f7609116913445b4
This commit is contained in:
2023-05-05 07:37:19 +02:00
parent 88a9e38952
commit 3778ae9266
4 changed files with 78 additions and 80 deletions

View File

@@ -48,32 +48,44 @@ func IndexSequence(seqidx int,
obiutils.Reverse(*pseq, true)
// score := make([]int, len(references))
mindiff := make([]int, len(*pseq))
nseq := make([]int, len(*pseq))
/* nseq := make([]int, len(*pseq))
nali := make([]int, len(*pseq))
nok := make([]int, len(*pseq))
lseq := sequence.Len()
nfast := make([]int, len(*pseq))
nfastok := make([]int, len(*pseq))
*/ lseq := sequence.Len()
mini := -1
for i, ancestor := range *pseq {
for _, order := range ow {
if lca[order] == ancestor {
nseq[i]++
// nseq[i]++
wordmin := 0
if mini != -1 {
wordmin = obiutils.MaxInt(lseq-3-mini*4, 0)
}
lcs, alilength := -1, -1
if cw[order] >= wordmin {
nali[i]++
lcs, alilength = obialign.FastLCSScore(sequence, references[order], mini, &matrix)
if lcs >= 0 {
nok[i]++
errs := alilength - lcs
if mini == -1 || errs < mini {
mini = errs
errs := int(1e9)
if mini != -1 && mini <= 1 {
// nfast[i]++
d, _, _, _ := obialign.D1Or0(sequence, references[order])
if d >= 0 {
errs = d
// nfastok[i]++
}
} else {
if cw[order] >= wordmin {
// nali[i]++
lcs, alilength = obialign.FastLCSScore(sequence, references[order], mini, &matrix)
if lcs >= 0 {
// nok[i]++
errs = alilength - lcs
}
}
}
if mini == -1 || errs < mini {
mini = errs
}
}
}
mindiff[i] = mini
@@ -94,11 +106,13 @@ func IndexSequence(seqidx int,
}
}
// log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), obitag_index)
// log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nseq)
// log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nali)
// log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nok)
return obitag_index
/* log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), obitag_index)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nseq)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nfast)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nfastok)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nali)
log.Println(sequence.Id(), tseq.Taxid(), tseq.ScientificName(), tseq.Rank(), nok)
*/ return obitag_index
}
func IndexReferenceDB(iterator obiiter.IBioSequence) obiiter.IBioSequence {