X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/f50e2e9f8c572357ecab7117991efb7c9bea13e7..76fbc75a359348e2a91546a70b8d2c738865cce2:/pipeline_test.go diff --git a/pipeline_test.go b/pipeline_test.go index 16ad4843e1..c917b3610d 100644 --- a/pipeline_test.go +++ b/pipeline_test.go @@ -6,6 +6,8 @@ import ( "io" "io/ioutil" "os" + "sort" + "strings" "sync" "gopkg.in/check.v1" @@ -35,7 +37,7 @@ func (s *pipelineSuite) TestImport(c *check.C) { wg.Add(1) go func() { defer wg.Done() - code := (&stats{}).RunCommand("lightning stats", []string{"-local"}, statsin, statsout, os.Stderr) + code := (&statscmd{}).RunCommand("lightning stats", []string{"-local"}, statsin, statsout, os.Stderr) c.Check(code, check.Equals, 0) }() wg.Wait() @@ -49,8 +51,8 @@ func (s *pipelineSuite) TestImportMerge(c *check.C) { var wg sync.WaitGroup for i, infile := range []string{ - "testdata/pipeline1/", "testdata/ref.fasta", + "testdata/pipeline1/", } { i, infile := i, infile c.Logf("TestImportMerge: %s", infile) @@ -58,7 +60,13 @@ func (s *pipelineSuite) TestImportMerge(c *check.C) { wg.Add(1) go func() { defer wg.Done() - code := (&importer{}).RunCommand("lightning import", []string{"-local=true", "-o=" + libfile[i], "-skip-ooo=true", "-output-tiles", "-tag-library", "testdata/tags", infile}, bytes.NewReader(nil), &bytes.Buffer{}, os.Stderr) + args := []string{"-local=true", "-o=" + libfile[i], "-skip-ooo=true", "-output-tiles", "-tag-library", "testdata/tags"} + if i == 0 { + // ref only + args = append(args, "-save-incomplete-tiles") + } + args = append(args, infile) + code := (&importer{}).RunCommand("lightning import", args, bytes.NewReader(nil), &bytes.Buffer{}, os.Stderr) c.Check(code, check.Equals, 0) }() } @@ -70,7 +78,7 @@ func (s *pipelineSuite) TestImportMerge(c *check.C) { c.Logf("len(merged) %d", merged.Len()) statsout := &bytes.Buffer{} - code = (&stats{}).RunCommand("lightning stats", []string{"-local"}, bytes.NewReader(merged.Bytes()), statsout, os.Stderr) + code = (&statscmd{}).RunCommand("lightning stats", []string{"-local"}, bytes.NewReader(merged.Bytes()), statsout, os.Stderr) c.Check(code, check.Equals, 0) c.Check(statsout.Len() > 0, check.Equals, true) c.Logf("%s", statsout.String()) @@ -78,19 +86,83 @@ func (s *pipelineSuite) TestImportMerge(c *check.C) { c.Check(ioutil.WriteFile(tmpdir+"/merged.gob", merged.Bytes(), 0666), check.IsNil) hgvsout := &bytes.Buffer{} - code = (&exportHGVS{}).RunCommand("lightning export-hgvs", []string{"-local", "-ref", "testdata/ref.fasta", "-i", tmpdir + "/merged.gob"}, bytes.NewReader(nil), hgvsout, os.Stderr) + code = (&exporter{}).RunCommand("lightning export", []string{"-local", "-ref", "testdata/ref.fasta", "-output-format", "hgvs", "-i", tmpdir + "/merged.gob"}, bytes.NewReader(nil), hgvsout, os.Stderr) c.Check(code, check.Equals, 0) c.Check(hgvsout.Len() > 0, check.Equals, true) c.Logf("%s", hgvsout.String()) - c.Check(hgvsout.String(), check.Equals, `chr1:g.[41_42delinsAA];[41=] -chr1:g.[161=];[161A>T] -chr1:g.[178=];[178A>T] -chr1:g.222_224del -chr1:g.[302=];[302_305delinsAAAA] -chr2:g.[813_826del];[813=] -chr2:g.[830_841delinsAA];[830=] -chr2:g.[887C>A];[887=] -chr2:g.[1042_1044del];[1042=] -chr2:g.[1043=];[1043_1044delinsAA] + c.Check(hgvsout.String(), check.Equals, `chr1:g.1_3delinsGGC . +chr1:g.[41_42delinsAA];[41=] . +chr1:g.[161=];[161A>T] . +chr1:g.[178=];[178A>T] . +chr1:g.222_224del . +chr1:g.[302=];[302_305delinsAAAA] . +. chr2:g.[1=];[1_3delinsAAA] +. chr2:g.125_127delinsAAA +chr2:g.[241_254del];[241=] . +chr2:g.[258_269delinsAA];[258=] . +chr2:g.[315C>A];[315=] . +chr2:g.[470_472del];[470=] . +chr2:g.[471=];[471_472delinsAA] . +`) + + vcfout := &bytes.Buffer{} + code = (&exporter{}).RunCommand("lightning export", []string{"-local", "-ref", "testdata/ref.fasta", "-output-format", "vcf", "-i", tmpdir + "/merged.gob", "-output-bed", tmpdir + "/export.bed"}, bytes.NewReader(nil), vcfout, os.Stderr) + c.Check(code, check.Equals, 0) + c.Check(vcfout.Len() > 0, check.Equals, true) + c.Logf("%s", vcfout.String()) + c.Check(vcfout.String(), check.Equals, `chr1 1 NNN GGC 1/1 0/0 +chr1 41 TT AA 1/0 0/0 +chr1 161 A T 0/1 0/0 +chr1 178 A T 0/1 0/0 +chr1 221 TCCA T 1/1 0/0 +chr1 302 TTTT AAAA 0/1 0/0 +chr2 1 TTT AAA 0/0 0/1 +chr2 125 CTT AAA 0/0 1/1 +chr2 240 ATTTTTCTTGCTCTC A 1/0 0/0 +chr2 258 CCTTGTATTTTT AA 1/0 0/0 +chr2 315 C A 1/0 0/0 +chr2 469 GTGG G 1/0 0/0 +chr2 471 GG AA 0/1 0/0 `) + bedout, err := ioutil.ReadFile(tmpdir + "/export.bed") + c.Check(err, check.IsNil) + c.Logf("%s", string(bedout)) + c.Check(string(bedout), check.Equals, `chr1 0 248 0 1000 . 0 224 +chr1 224 372 1 1000 . 248 348 +chr1 348 496 2 1000 . 372 472 +chr1 472 572 3 1000 . 496 572 +chr2 0 248 4 1000 . 0 224 +chr2 224 372 5 750 . 248 348 +chr2 348 496 6 1000 . 372 472 +chr2 472 572 7 1000 . 496 572 +`) + + annotateout := &bytes.Buffer{} + code = (&annotatecmd{}).RunCommand("lightning annotate", []string{"-local", "-variant-hash=true", "-i", tmpdir + "/merged.gob"}, bytes.NewReader(nil), annotateout, os.Stderr) + c.Check(code, check.Equals, 0) + c.Check(annotateout.Len() > 0, check.Equals, true) + sorted := sortLines(annotateout.String()) + c.Logf("%s", sorted) + c.Check(sorted, check.Equals, sortLines(`0,8d4fe9a63921b,chr1:g.161A>T +0,8d4fe9a63921b,chr1:g.178A>T +0,8d4fe9a63921b,chr1:g.1_3delinsGGC +0,8d4fe9a63921b,chr1:g.222_224del +0,ba4263ca4199c,chr1:g.1_3delinsGGC +0,ba4263ca4199c,chr1:g.222_224del +0,ba4263ca4199c,chr1:g.41_42delinsAA +1,139890345dbb8,chr1:g.302_305delinsAAAA +4,cbfca15d241d3,chr2:g.125_127delinsAAA +4,cbfca15d241d3,chr2:g.1_3delinsAAA +4,f5fafe9450b02,chr2:g.241_245delinsAAAAA +4,f5fafe9450b02,chr2:g.291C>A +4,fe9a71a42adb4,chr2:g.125_127delinsAAA +6,e36dce85efbef,chr2:g.471_472delinsAA +6,f81388b184f4a,chr2:g.470_472del +`)) +} + +func sortLines(txt string) string { + lines := strings.Split(strings.TrimRightFunc(txt, func(c rune) bool { return c == '\n' }), "\n") + sort.Strings(lines) + return strings.Join(lines, "\n") + "\n" }