X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/f35bf68935079b520da1418fa75b08394d68b1ef..ed9183d5e6ce23f1cf6f9a7d65d3e68214393e8a:/slice_test.go diff --git a/slice_test.go b/slice_test.go index c73d3d7dc0..15dc220a74 100644 --- a/slice_test.go +++ b/slice_test.go @@ -19,8 +19,20 @@ var _ = check.Suite(&sliceSuite{}) func (s *sliceSuite) TestImportAndSlice(c *check.C) { tmpdir := c.MkDir() + err := os.Mkdir(tmpdir+"/lib1", 0777) + c.Assert(err, check.IsNil) + err = os.Mkdir(tmpdir+"/lib2", 0777) + c.Assert(err, check.IsNil) + err = os.Mkdir(tmpdir+"/lib3", 0777) + c.Assert(err, check.IsNil) + cwd, err := os.Getwd() + c.Assert(err, check.IsNil) + err = os.Symlink(cwd+"/testdata/pipeline1", tmpdir+"/pipeline1") + c.Assert(err, check.IsNil) + err = os.Symlink(cwd+"/testdata/pipeline1", tmpdir+"/pipeline1dup") + c.Assert(err, check.IsNil) - err := ioutil.WriteFile(tmpdir+"/chr1-12-100.bed", []byte("chr1\t12\t100\ttest.1\n"), 0644) + err = ioutil.WriteFile(tmpdir+"/chr1-12-100.bed", []byte("chr1\t12\t100\ttest.1\n"), 0644) c.Check(err, check.IsNil) c.Log("=== import testdata/ref ===") @@ -29,7 +41,7 @@ func (s *sliceSuite) TestImportAndSlice(c *check.C) { "-tag-library", "testdata/tags", "-output-tiles", "-save-incomplete-tiles", - "-o", tmpdir + "/library1.gob", + "-o", tmpdir + "/lib1/library1.gob", "testdata/ref.fasta", }, nil, os.Stderr, os.Stderr) c.Assert(exited, check.Equals, 0) @@ -39,63 +51,160 @@ func (s *sliceSuite) TestImportAndSlice(c *check.C) { "-local=true", "-tag-library", "testdata/tags", "-output-tiles", - "-o", tmpdir + "/library2.gob", - "testdata/pipeline1", + "-o", tmpdir + "/lib2/library2.gob", + tmpdir + "/pipeline1", }, nil, os.Stderr, os.Stderr) c.Assert(exited, check.Equals, 0) - c.Log("=== merge ===") - exited = (&merger{}).RunCommand("merge", []string{ + c.Log("=== import pipeline1dup ===") + exited = (&importer{}).RunCommand("import", []string{ "-local=true", - "-o", tmpdir + "/library.gob", - tmpdir + "/library1.gob", - tmpdir + "/library2.gob", + "-tag-library", "testdata/tags", + "-output-tiles", + "-o", tmpdir + "/lib3/library3.gob", + tmpdir + "/pipeline1dup", }, nil, os.Stderr, os.Stderr) c.Assert(exited, check.Equals, 0) - input := tmpdir + "/library.gob" slicedir := c.MkDir() c.Log("=== slice ===") exited = (&slicecmd{}).RunCommand("slice", []string{ "-local=true", - "-input-dir=" + input, "-output-dir=" + slicedir, "-tags-per-file=2", + tmpdir + "/lib1", + tmpdir + "/lib2", + tmpdir + "/lib3", }, nil, os.Stderr, os.Stderr) c.Check(exited, check.Equals, 0) out, _ := exec.Command("find", slicedir, "-ls").CombinedOutput() c.Logf("%s", out) c.Log("=== slice-numpy ===") - npydir := c.MkDir() - exited = (&sliceNumpy{}).RunCommand("slice-numpy", []string{ - "-local=true", - "-input-dir=" + slicedir, - "-output-dir=" + npydir, - }, nil, os.Stderr, os.Stderr) - c.Check(exited, check.Equals, 0) - out, _ = exec.Command("find", npydir, "-ls").CombinedOutput() - c.Logf("%s", out) + { + npydir := c.MkDir() + exited := (&sliceNumpy{}).RunCommand("slice-numpy", []string{ + "-local=true", + "-input-dir=" + slicedir, + "-output-dir=" + npydir, + }, nil, os.Stderr, os.Stderr) + c.Check(exited, check.Equals, 0) + out, _ := exec.Command("find", npydir, "-ls").CombinedOutput() + c.Logf("%s", out) - f, err := os.Open(npydir + "/matrix.0000.npy") - c.Assert(err, check.IsNil) - defer f.Close() - npy, err := gonpy.NewReader(f) - c.Assert(err, check.IsNil) - c.Check(npy.Shape, check.DeepEquals, []int{2, 4}) - variants, err := npy.GetInt16() - c.Check(variants, check.DeepEquals, []int16{3, 2, 1, 2, -1, -1, 1, 1}) + f, err := os.Open(npydir + "/matrix.0000.npy") + c.Assert(err, check.IsNil) + defer f.Close() + npy, err := gonpy.NewReader(f) + c.Assert(err, check.IsNil) + c.Check(npy.Shape, check.DeepEquals, []int{4, 4}) + variants, err := npy.GetInt16() + c.Check(variants, check.DeepEquals, []int16{2, 1, 1, 2, -1, -1, 1, 1, 2, 1, 1, 2, -1, -1, 1, 1}) - annotations, err := ioutil.ReadFile(npydir + "/matrix.0000.annotations.csv") - c.Assert(err, check.IsNil) - c.Logf("%s", annotations) - for _, s := range []string{ - "chr1:g.161A>T", - "chr1:g.178A>T", - "chr1:g.1_3delinsGGC", - "chr1:g.222_224del", - } { - c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*") + annotations, err := ioutil.ReadFile(npydir + "/matrix.0000.annotations.csv") + c.Assert(err, check.IsNil) + c.Logf("%s", annotations) + for _, s := range []string{ + "chr1:g.161A>T", + "chr1:g.178A>T", + "chr1:g.1_3delinsGGC", + "chr1:g.222_224del", + } { + c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*") + } + + annotations, err = ioutil.ReadFile(npydir + "/matrix.0002.annotations.csv") + c.Assert(err, check.IsNil) + c.Logf("%s", annotations) + for _, s := range []string{ + ",2,chr2:g.1_3delinsAAA", + ",2,chr2:g.125_127delinsAAA", + ",4,chr2:g.125_127delinsAAA", + } { + c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*") + } + } + + c.Log("=== slice-numpy + regions ===") + { + npydir := c.MkDir() + exited := (&sliceNumpy{}).RunCommand("slice-numpy", []string{ + "-local=true", + "-regions=" + tmpdir + "/chr1-12-100.bed", + "-input-dir=" + slicedir, + "-output-dir=" + npydir, + }, nil, os.Stderr, os.Stderr) + c.Check(exited, check.Equals, 0) + out, _ := exec.Command("find", npydir, "-ls").CombinedOutput() + c.Logf("%s", out) + + f, err := os.Open(npydir + "/matrix.0000.npy") + c.Assert(err, check.IsNil) + defer f.Close() + npy, err := gonpy.NewReader(f) + c.Assert(err, check.IsNil) + c.Check(npy.Shape, check.DeepEquals, []int{4, 2}) + variants, err := npy.GetInt16() + c.Check(variants, check.DeepEquals, []int16{2, 1, -1, -1, 2, 1, -1, -1}) + + annotations, err := ioutil.ReadFile(npydir + "/matrix.0000.annotations.csv") + c.Assert(err, check.IsNil) + c.Logf("%s", annotations) + for _, s := range []string{ + "chr1:g.161A>T", + "chr1:g.178A>T", + "chr1:g.1_3delinsGGC", + "chr1:g.222_224del", + } { + c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*") + } + + for _, fnm := range []string{ + npydir + "/matrix.0001.annotations.csv", + npydir + "/matrix.0002.annotations.csv", + } { + annotations, err := ioutil.ReadFile(fnm) + c.Assert(err, check.IsNil) + c.Check(string(annotations), check.Equals, "", check.Commentf(fnm)) + } + } + + err = ioutil.WriteFile(tmpdir+"/chr1and2-100-200.bed", []byte("chr1\t100\t200\ttest.1\nchr2\t100\t200\ttest.2\n"), 0644) + c.Check(err, check.IsNil) + + c.Log("=== slice-numpy + regions + merge ===") + { + npydir := c.MkDir() + exited := (&sliceNumpy{}).RunCommand("slice-numpy", []string{ + "-local=true", + "-regions=" + tmpdir + "/chr1and2-100-200.bed", + "-input-dir=" + slicedir, + "-output-dir=" + npydir, + "-merge-output=true", + }, nil, os.Stderr, os.Stderr) + c.Check(exited, check.Equals, 0) + out, _ := exec.Command("find", npydir, "-ls").CombinedOutput() + c.Logf("%s", out) + + f, err := os.Open(npydir + "/matrix.npy") + c.Assert(err, check.IsNil) + defer f.Close() + npy, err := gonpy.NewReader(f) + c.Assert(err, check.IsNil) + c.Check(npy.Shape, check.DeepEquals, []int{4, 4}) + variants, err := npy.GetInt16() + c.Check(variants, check.DeepEquals, []int16{2, 1, 3, 1, -1, -1, 4, 2, 2, 1, 3, 1, -1, -1, 4, 2}) + + annotations, err := ioutil.ReadFile(npydir + "/matrix.annotations.csv") + c.Assert(err, check.IsNil) + c.Logf("%s", annotations) + for _, s := range []string{ + "0,0,1,chr1:g.161A>T", + "0,0,1,chr1:g.178A>T", + "4,1,2,chr2:g.125_127delinsAAA", + } { + c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*") + } } }