return 0
} else if err != nil {
return 2
+ } else if flags.NArg() > 0 {
+ err = fmt.Errorf("errant command line arguments after parsed flags: %v", flags.Args())
+ return 2
}
if *pprof != "" {
retainTileSequences: true,
compactGenomes: map[string][]tileVariantID{},
}
- err = tilelib.LoadDir(context.Background(), *inputDir, nil)
+ err = tilelib.LoadDir(context.Background(), *inputDir)
if err != nil {
return 1
}
return
}
-func chooseTiles(tilelib *tileLibrary, regionsFilename string, expandRegions int) (drop []bool, err error) {
- if regionsFilename == "" {
- return
- }
+func makeMask(regionsFilename string, expandRegions int) (*mask, error) {
+ log.Printf("makeMask: reading %s", regionsFilename)
rfile, err := zopen(regionsFilename)
if err != nil {
- return
+ return nil, err
}
defer rfile.Close()
- regions, err := ioutil.ReadAll(rfile)
+ regions, err := io.ReadAll(rfile)
if err != nil {
- return
+ return nil, err
}
- log.Print("chooseTiles: building mask")
- mask := &mask{}
+ log.Print("makeMask: building mask")
+ var mask mask
for _, line := range bytes.Split(regions, []byte{'\n'}) {
if bytes.HasPrefix(line, []byte{'#'}) {
continue
// GFF/GTF
end++
} else {
- err = fmt.Errorf("cannot parse input line as BED or GFF/GTF: %q", line)
- return
+ return nil, fmt.Errorf("cannot parse input line as BED or GFF/GTF: %q", line)
}
}
mask.Add(refseqname, start-expandRegions, end+expandRegions)
}
- log.Print("chooseTiles: mask.Freeze")
+ log.Print("makeMask: mask.Freeze")
mask.Freeze()
+ return &mask, nil
+}
+
+func chooseTiles(tilelib *tileLibrary, regionsFilename string, expandRegions int) (drop []bool, err error) {
+ if regionsFilename == "" {
+ return
+ }
+ mask, err := makeMask(regionsFilename, expandRegions)
+ if err != nil {
+ return
+ }
tagset := tilelib.taglib.Tags()
if len(tagset) == 0 {
s = strings.TrimSuffix(s, ".2")
s = strings.TrimSuffix(s, ".gz")
s = strings.TrimSuffix(s, ".vcf")
+ s = strings.Replace(s, ",", "-", -1)
return s
}