Fix some tests.
[lightning.git] / plot.go
diff --git a/plot.go b/plot.go
deleted file mode 100644 (file)
index 98b7eec..0000000
--- a/plot.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (C) The Lightning Authors. All rights reserved.
-//
-// SPDX-License-Identifier: AGPL-3.0
-
-package lightning
-
-import (
-       _ "embed"
-       "flag"
-       "fmt"
-       "io"
-       _ "net/http/pprof"
-       "os/exec"
-       "strings"
-
-       "git.arvados.org/arvados.git/sdk/go/arvados"
-)
-
-type pythonPlot struct{}
-
-//go:embed plot.py
-var plotscript string
-
-func (cmd *pythonPlot) RunCommand(prog string, args []string, stdin io.Reader, stdout, stderr io.Writer) int {
-       var err error
-       defer func() {
-               if err != nil {
-                       fmt.Fprintf(stderr, "%s\n", err)
-               }
-       }()
-       flags := flag.NewFlagSet("", flag.ContinueOnError)
-       flags.SetOutput(stderr)
-       projectUUID := flags.String("project", "", "project `UUID` for output data")
-       inputFilename := flags.String("i", "-", "input `file`")
-       outputFilename := flags.String("o", "", "output `filename` (e.g., './plot.png')")
-       sampleListFilename := flags.String("samples", "", "use second column of `samples.csv` as complete list of sample IDs")
-       phenotypeFilename := flags.String("phenotype", "", "use `phenotype.csv` as id->phenotype mapping (column 0 is sample id)")
-       cat1Column := flags.Int("phenotype-cat1-column", 1, "0-based column `index` of 1st category in phenotype.csv file")
-       cat2Column := flags.Int("phenotype-cat2-column", -1, "0-based column `index` of 2nd category in phenotype.csv file")
-       xComponent := flags.Int("x", 1, "1-based PCA component to plot on x axis")
-       yComponent := flags.Int("y", 2, "1-based PCA component to plot on y axis")
-       priority := flags.Int("priority", 500, "container request priority")
-       runlocal := flags.Bool("local", false, "run on local host (default: run in an arvados container)")
-       err = flags.Parse(args)
-       if err == flag.ErrHelp {
-               err = nil
-               return 0
-       } else if err != nil {
-               return 2
-       }
-
-       runner := arvadosContainerRunner{
-               Name:        "lightning plot",
-               Client:      arvados.NewClientFromEnv(),
-               ProjectUUID: *projectUUID,
-               RAM:         4 << 30,
-               VCPUs:       1,
-               Priority:    *priority,
-               Mounts: map[string]map[string]interface{}{
-                       "/plot.py": map[string]interface{}{
-                               "kind":    "text",
-                               "content": plotscript,
-                       },
-               },
-       }
-       if !*runlocal {
-               err = runner.TranslatePaths(inputFilename, sampleListFilename, phenotypeFilename)
-               if err != nil {
-                       return 1
-               }
-               *outputFilename = "/mnt/output/plot.png"
-       }
-       args = []string{
-               *inputFilename,
-               fmt.Sprintf("%d", *xComponent),
-               fmt.Sprintf("%d", *yComponent),
-               *sampleListFilename,
-               *phenotypeFilename,
-               fmt.Sprintf("%d", *cat1Column),
-               fmt.Sprintf("%d", *cat2Column),
-               *outputFilename,
-       }
-       if *runlocal {
-               if *outputFilename == "" {
-                       fmt.Fprintln(stderr, "error: must specify -o filename.png in local mode (or try -help)")
-                       return 1
-               }
-               cmd := exec.Command("python3", append([]string{"-"}, args...)...)
-               cmd.Stdin = strings.NewReader(plotscript)
-               cmd.Stdout = stdout
-               cmd.Stderr = stderr
-               err = cmd.Run()
-               if err != nil {
-                       return 1
-               }
-               return 0
-       }
-       runner.Prog = "python3"
-       runner.Args = append([]string{"/plot.py"}, args...)
-       var output string
-       output, err = runner.Run()
-       if err != nil {
-               return 1
-       }
-       fmt.Fprintln(stdout, output+"/plot.png")
-       return 0
-}