More debug messages and error checks.
authorTom Clegg <tom@curii.com>
Thu, 25 Nov 2021 19:41:01 +0000 (14:41 -0500)
committerTom Clegg <tom@curii.com>
Thu, 25 Nov 2021 19:41:01 +0000 (14:41 -0500)
refs #18438

Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

mask.go
slicenumpy.go

diff --git a/mask.go b/mask.go
index 7d614fa4aa6c6f6f2f2dc9279111f0db43bf3e5e..9daf606d663bb97faf321092b7c1e5865a321386 100644 (file)
--- a/mask.go
+++ b/mask.go
@@ -27,6 +27,9 @@ type mask struct {
 }
 
 func (m *mask) Add(seqname string, start, end int) {
+       if m.frozen {
+               panic("bug: (*mask)Add() called after Freeze()")
+       }
        if m.intervals == nil {
                m.intervals = map[string][]interval{}
        }
@@ -48,6 +51,17 @@ func (m *mask) Check(seqname string, start, end int) bool {
        return m.itrees[seqname].check(0, interval{start, end})
 }
 
+func (m *mask) Len() int {
+       if !m.frozen {
+               return 0
+       }
+       n := 0
+       for _, intervals := range m.intervals {
+               n += len(intervals)
+       }
+       return n
+}
+
 func (m *mask) freeze(in []interval) intervalTree {
        if len(in) == 0 {
                return nil
index fe1a77497ee4e3325fa294fd7d0cf62d23605e74..91e7cb2622227ec766f74e54b05c0fa3a5f28973 100644 (file)
@@ -211,7 +211,6 @@ func (cmd *sliceNumpy) RunCommand(prog string, args []string, stdin io.Reader, s
        for seqname, cseq := range refseq {
                seqname, cseq := seqname, cseq
                throttleCPU.Go(func() error {
-                       defer log.Printf("... %s done", seqname)
                        pos := 0
                        for _, libref := range cseq {
                                rt := reftile[libref.Tag]
@@ -221,23 +220,30 @@ func (cmd *sliceNumpy) RunCommand(prog string, args []string, stdin io.Reader, s
                                }
                                pos += len(rt.tiledata) - taglen
                        }
+                       log.Printf("... %s done, len %d", seqname, pos)
                        return nil
                })
        }
-       throttleCPU.Wait()
+       err = throttleCPU.Wait()
+       if err != nil {
+               return 1
+       }
 
        var mask *mask
        if *regionsFilename != "" {
+               log.Printf("loading regions from %s", *regionsFilename)
                mask, err = makeMask(*regionsFilename, *expandRegions)
                if err != nil {
                        return 1
                }
-               // Delete reftile entries for masked-out regions.
+               log.Printf("before applying mask, len(reftile) == %d", len(reftile))
+               log.Printf("deleting reftile entries for regions outside %d intervals", mask.Len())
                for tag, rt := range reftile {
                        if !mask.Check(strings.TrimPrefix(rt.seqname, "chr"), rt.pos, rt.pos+len(rt.tiledata)) {
                                delete(reftile, tag)
                        }
                }
+               log.Printf("after applying mask, len(reftile) == %d", len(reftile))
        }
 
        var toMerge [][]int16