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) {
22 err := os.Mkdir(tmpdir+"/lib1", 0777)
23 c.Assert(err, check.IsNil)
24 err = os.Mkdir(tmpdir+"/lib2", 0777)
25 c.Assert(err, check.IsNil)
26 err = os.Mkdir(tmpdir+"/lib3", 0777)
27 c.Assert(err, check.IsNil)
28 cwd, err := os.Getwd()
29 c.Assert(err, check.IsNil)
30 err = os.Symlink(cwd+"/testdata/pipeline1", tmpdir+"/pipeline1")
31 c.Assert(err, check.IsNil)
32 err = os.Symlink(cwd+"/testdata/pipeline1", tmpdir+"/pipeline1dup")
33 c.Assert(err, check.IsNil)
35 err = ioutil.WriteFile(tmpdir+"/chr1-12-100.bed", []byte("chr1\t12\t100\ttest.1\n"), 0644)
36 c.Check(err, check.IsNil)
38 c.Log("=== import testdata/ref ===")
39 exited := (&importer{}).RunCommand("import", []string{
41 "-tag-library", "testdata/tags",
43 "-save-incomplete-tiles",
44 "-o", tmpdir + "/lib1/library1.gob",
46 }, nil, os.Stderr, os.Stderr)
47 c.Assert(exited, check.Equals, 0)
49 c.Log("=== import testdata/pipeline1 ===")
50 exited = (&importer{}).RunCommand("import", []string{
52 "-tag-library", "testdata/tags",
54 "-o", tmpdir + "/lib2/library2.gob",
55 tmpdir + "/pipeline1",
56 }, nil, os.Stderr, os.Stderr)
57 c.Assert(exited, check.Equals, 0)
59 c.Log("=== import pipeline1dup ===")
60 exited = (&importer{}).RunCommand("import", []string{
62 "-tag-library", "testdata/tags",
64 "-o", tmpdir + "/lib3/library3.gob",
65 tmpdir + "/pipeline1dup",
66 }, nil, os.Stderr, os.Stderr)
67 c.Assert(exited, check.Equals, 0)
71 c.Log("=== slice ===")
72 exited = (&slicecmd{}).RunCommand("slice", []string{
74 "-output-dir=" + slicedir,
79 }, nil, os.Stderr, os.Stderr)
80 c.Check(exited, check.Equals, 0)
81 out, _ := exec.Command("find", slicedir, "-ls").CombinedOutput()
84 c.Log("=== slice-numpy ===")
86 exited = (&sliceNumpy{}).RunCommand("slice-numpy", []string{
88 "-input-dir=" + slicedir,
89 "-output-dir=" + npydir,
90 }, nil, os.Stderr, os.Stderr)
91 c.Check(exited, check.Equals, 0)
92 out, _ = exec.Command("find", npydir, "-ls").CombinedOutput()
95 f, err := os.Open(npydir + "/matrix.0000.npy")
96 c.Assert(err, check.IsNil)
98 npy, err := gonpy.NewReader(f)
99 c.Assert(err, check.IsNil)
100 c.Check(npy.Shape, check.DeepEquals, []int{4, 4})
101 variants, err := npy.GetInt16()
102 c.Check(variants, check.DeepEquals, []int16{3, 2, 1, 2, -1, -1, 1, 1, 3, 2, 1, 2, -1, -1, 1, 1})
104 annotations, err := ioutil.ReadFile(npydir + "/matrix.0000.annotations.csv")
105 c.Assert(err, check.IsNil)
106 c.Logf("%s", annotations)
107 for _, s := range []string{
110 "chr1:g.1_3delinsGGC",
113 c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*")
116 annotations, err = ioutil.ReadFile(npydir + "/matrix.0002.annotations.csv")
117 c.Assert(err, check.IsNil)
118 c.Logf("%s", annotations)
119 for _, s := range []string{
120 ",2,chr2:g.1_3delinsAAA",
121 ",2,chr2:g.125_127delinsAAA",
122 ",4,chr2:g.125_127delinsAAA",
124 c.Check(string(annotations), check.Matches, "(?ms).*"+s+".*")