retainNoCalls bool
skipOOO bool
retainTileSequences bool
+ useDups bool
taglib *tagLibrary
variant [][][blake2b.Size256]byte
}
skipped := 0
+
+ if !tilelib.useDups {
+ // Remove any tags that appeared more than once
+ dup := map[tagID]bool{}
+ for _, ft := range found {
+ _, dup[ft.tagid] = dup[ft.tagid]
+ }
+ dst := 0
+ for _, ft := range found {
+ if !dup[ft.tagid] {
+ found[dst] = ft
+ dst++
+ }
+ }
+ skipped += len(found) - dst
+ found = found[:dst]
+ }
+
if tilelib.skipOOO {
log.Infof("%s %s keeping longest increasing subsequence", filelabel, job.label)
keep := longestIncreasingSubsequence(len(found), func(i int) int { return int(found[i].tagid) })
for i, x := range keep {
found[i] = found[x]
}
- skipped = len(found) - len(keep)
+ skipped += len(found) - len(keep)
found = found[:len(keep)]
}
c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}}})
// tags appear in seq: 0, 1, 1, 2 -> skip second tag1
- tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true}
+ tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true, useDups: true}
tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+
s.tag[0]+
"cccccccccccccccccccc\n"+
c.Check(tseq, check.DeepEquals, tileSeq{"test-seq": []tileLibRef{{0, 1}, {1, 1}, {2, 1}}})
// tags appear in seq: 0, 1, 3, 0, 4 -> skip second tag0
- tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true}
+ tilelib = &tileLibrary{taglib: &s.taglib, skipOOO: true, useDups: true}
tseq, _, err = tilelib.TileFasta("test-label", bytes.NewBufferString(">test-seq\n"+
s.tag[0]+
"cccccccccccccccccccc\n"+