1 // Copyright (C) The Lightning Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
12 "github.com/kshedden/gonpy"
16 type sliceSuite struct{}
18 var _ = check.Suite(&sliceSuite{})
20 func (s *sliceSuite) TestImportAndSlice(c *check.C) {
23 err := ioutil.WriteFile(tmpdir+"/chr1-12-100.bed", []byte("chr1\t12\t100\ttest.1\n"), 0644)
24 c.Check(err, check.IsNil)
26 c.Log("=== import testdata/ref ===")
27 exited := (&importer{}).RunCommand("import", []string{
29 "-tag-library", "testdata/tags",
31 "-save-incomplete-tiles",
32 "-o", tmpdir + "/library1.gob",
34 }, nil, os.Stderr, os.Stderr)
35 c.Assert(exited, check.Equals, 0)
37 c.Log("=== import testdata/pipeline1 ===")
38 exited = (&importer{}).RunCommand("import", []string{
40 "-tag-library", "testdata/tags",
42 "-o", tmpdir + "/library2.gob",
44 }, nil, os.Stderr, os.Stderr)
45 c.Assert(exited, check.Equals, 0)
47 c.Log("=== merge ===")
48 exited = (&merger{}).RunCommand("merge", []string{
50 "-o", tmpdir + "/library.gob",
51 tmpdir + "/library1.gob",
52 tmpdir + "/library2.gob",
53 }, nil, os.Stderr, os.Stderr)
54 c.Assert(exited, check.Equals, 0)
56 input := tmpdir + "/library.gob"
59 c.Log("=== slice ===")
60 exited = (&slicecmd{}).RunCommand("slice", []string{
62 "-input-dir=" + input,
63 "-output-dir=" + slicedir,
65 }, nil, os.Stderr, os.Stderr)
66 c.Check(exited, check.Equals, 0)
67 out, _ := exec.Command("find", slicedir, "-ls").CombinedOutput()
70 c.Log("=== slice-numpy ===")
72 exited = (&sliceNumpy{}).RunCommand("slice-numpy", []string{
74 "-input-dir=" + slicedir,
75 "-output-dir=" + npydir,
76 }, nil, os.Stderr, os.Stderr)
77 c.Check(exited, check.Equals, 0)
78 out, _ = exec.Command("find", npydir, "-ls").CombinedOutput()
81 f, err := os.Open(npydir + "/matrix.0000.npy")
82 c.Assert(err, check.IsNil)
84 npy, err := gonpy.NewReader(f)
85 c.Assert(err, check.IsNil)
86 c.Check(npy.Shape, check.DeepEquals, []int{2, 4})
87 variants, err := npy.GetInt16()
88 if c.Check(variants, check.HasLen, 8) {
89 c.Check(variants[4:], check.DeepEquals, []int16{-1, -1, 1, 1}) // TODO: check first row too, when stable
92 annotations, err := ioutil.ReadFile(npydir + "/matrix.0000.annotations.csv")
93 c.Assert(err, check.IsNil)
94 c.Logf("%s", annotations)
95 for _, s := range []string{
98 "chr1:g.1_3delinsGGC",
101 c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*")