Better series palette.
[lightning.git] / filter.go
index 87d94ef62c9b0817af27e729aa6018ef3384ca20..89aa778f8bf5e0b9c03b9e8bfe45fc0b7fc709c3 100644 (file)
--- a/filter.go
+++ b/filter.go
@@ -8,12 +8,12 @@ import (
        "fmt"
        "io"
        "io/ioutil"
-       "log"
        "net/http"
        _ "net/http/pprof"
        "os"
 
        "git.arvados.org/arvados.git/sdk/go/arvados"
+       log "github.com/sirupsen/logrus"
 )
 
 type filterer struct {
@@ -32,10 +32,11 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
        pprof := flags.String("pprof", "", "serve Go profile data at http://`[addr]:port`")
        runlocal := flags.Bool("local", false, "run on local host (default: run in an arvados container)")
        projectUUID := flags.String("project", "", "project `UUID` for output data")
-       inputFilename := flags.String("i", "", "input `file`")
-       outputFilename := flags.String("o", "", "output `file`")
+       priority := flags.Int("priority", 500, "container request priority")
+       inputFilename := flags.String("i", "-", "input `file`")
+       outputFilename := flags.String("o", "-", "output `file`")
        maxvariants := flags.Int("max-variants", -1, "drop tiles with more than `N` variants")
-       mincoverage := flags.Float64("min-coverage", 1, "drop tiles with coverage less than `P` across all haplotypes (0 < P ≤ 1)")
+       mincoverage := flags.Float64("min-coverage", 0, "drop tiles with coverage less than `P` across all haplotypes (0 < P ≤ 1)")
        maxtag := flags.Int("max-tag", -1, "drop tiles with tag ID > `N`")
        err = flags.Parse(args)
        if err == flag.ErrHelp {
@@ -53,7 +54,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
        }
 
        if !*runlocal {
-               if *outputFilename != "" {
+               if *outputFilename != "-" {
                        err = errors.New("cannot specify output file in container mode: not implemented")
                        return 1
                }
@@ -63,6 +64,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
                        ProjectUUID: *projectUUID,
                        RAM:         64000000000,
                        VCPUs:       2,
+                       Priority:    *priority,
                }
                err = runner.TranslatePaths(inputFilename)
                if err != nil {
@@ -75,15 +77,17 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
                        "-min-coverage", fmt.Sprintf("%f", *mincoverage),
                        "-max-tag", fmt.Sprintf("%d", *maxtag),
                }
-               err = runner.Run()
+               var output string
+               output, err = runner.Run()
                if err != nil {
                        return 1
                }
+               fmt.Fprintln(stdout, output+"/library.gob")
                return 0
        }
 
        var infile io.ReadCloser
-       if *inputFilename == "" {
+       if *inputFilename == "-" {
                infile = ioutil.NopCloser(stdin)
        } else {
                infile, err = os.Open(*inputFilename)
@@ -134,7 +138,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
                }
        }
 
-       if *mincoverage < 1 {
+       if *mincoverage > 0 {
                mincov := int(*mincoverage * float64(len(cgs)*2))
                cov := make([]int, ntags)
                for _, cg := range cgs {
@@ -159,7 +163,7 @@ func (cmd *filterer) RunCommand(prog string, args []string, stdin io.Reader, std
        log.Print("filtering done")
 
        var outfile io.WriteCloser
-       if *outputFilename == "" {
+       if *outputFilename == "-" {
                outfile = nopCloser{cmd.output}
        } else {
                outfile, err = os.OpenFile(*outputFilename, os.O_CREATE|os.O_WRONLY, 0777)