-package main
+package lightning
import (
"bytes"
"io"
"io/ioutil"
"os"
+ "sort"
+ "strings"
"sync"
"gopkg.in/check.v1"
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()
args := []string{"-local=true", "-o=" + libfile[i], "-skip-ooo=true", "-output-tiles", "-tag-library", "testdata/tags"}
if i == 0 {
// ref only
- args = append(args, "-include-no-calls")
+ args = append(args, "-save-incomplete-tiles")
}
args = append(args, infile)
code := (&importer{}).RunCommand("lightning import", args, bytes.NewReader(nil), &bytes.Buffer{}, os.Stderr)
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())
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.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.[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{}
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
-chr1 41 TT AA 1/0
-chr1 161 A T 0/1
-chr1 178 A T 0/1
-chr1 221 TCCA T 1/1
-chr1 302 TTTT AAAA 0/1
-chr2 812 ATTTTTCTTGCTCTC A 1/0
-chr2 830 CCTTGTATTTTT AA 1/0
-chr2 887 C A 1/0
-chr2 1041 GTGG G 1/0
-chr2 1043 GG AA 0/1
+ 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 500 . 248 348
-chr1 348 496 2 0 . 372 472
-chr1 472 572 3 0 . 496 572
-chr2 572 820 4 500 . 0 796
-chr2 796 944 5 0 . 820 920
-chr2 920 1068 6 1000 . 944 1044
-chr2 1044 1144 7 0 . 1068 1144
+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,0,8d4fe9a63921b,chr1:g.161A>T
+0,0,8d4fe9a63921b,chr1:g.178A>T
+0,0,8d4fe9a63921b,chr1:g.1_3delinsGGC
+0,0,8d4fe9a63921b,chr1:g.222_224del
+0,0,ba4263ca4199c,chr1:g.1_3delinsGGC
+0,0,ba4263ca4199c,chr1:g.222_224del
+0,0,ba4263ca4199c,chr1:g.41_42delinsAA
+1,1,139890345dbb8,chr1:g.302_305delinsAAAA
+4,4,cbfca15d241d3,chr2:g.125_127delinsAAA
+4,4,cbfca15d241d3,chr2:g.1_3delinsAAA
+4,4,f5fafe9450b02,chr2:g.241_245delinsAAAAA
+4,4,f5fafe9450b02,chr2:g.291C>A
+4,4,fe9a71a42adb4,chr2:g.125_127delinsAAA
+6,6,e36dce85efbef,chr2:g.471_472delinsAA
+6,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"
}