- }
- }
-
- throttleCPU := throttle{Max: runtime.GOMAXPROCS(0)}
- log.Info("reconstructing reference sequences")
- for seqname, cseq := range refseq {
- seqname, cseq := seqname, cseq
- throttleCPU.Go(func() error {
- pos := 0
- for _, libref := range cseq {
- rt := reftile[libref.Tag]
- rt.pos = pos
- if len(rt.tiledata) == 0 {
- return fmt.Errorf("missing tiledata for tag %d variant %d in %s in ref", libref.Tag, libref.Variant, seqname)
+ if isdup[libref.Tag] {
+ log.Printf("dropping reference tile %+v from %s, tag not unique", libref, seqname)
+ } else if reftile[libref.Tag] != nil {
+ log.Printf("dropping reference tile %+v from %s, tag not unique", tileLibRef{Tag: libref.Tag, Variant: reftile[libref.Tag].variant}, reftile[libref.Tag].seqname)
+ delete(reftile, libref.Tag)
+ log.Printf("dropping reference tile %+v from %s, tag not unique", libref, seqname)
+ isdup[libref.Tag] = true
+ } else {
+ reftile[libref.Tag] = &reftileinfo{
+ seqname: seqname,
+ variant: libref.Variant,
+ tiledata: tiledata,
+ pos: pos,