X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/b434670421c4d7337859b538921ca9e2773cea1b..1a6f0cb5b203d3fae1518fee0231fd05200a506d:/diff.go diff --git a/diff.go b/diff.go index 40cc1c7b9f..2318c9f00b 100644 --- a/diff.go +++ b/diff.go @@ -8,7 +8,7 @@ import ( "io" "os" - "git.arvados.org/lightning.git/hgvs" + "github.com/arvados/lightning/hgvs" ) type diffFasta struct{} @@ -24,6 +24,7 @@ func (cmd *diffFasta) RunCommand(prog string, args []string, stdin io.Reader, st flags.SetOutput(stderr) offset := flags.Int("offset", 0, "coordinate offset") sequence := flags.String("sequence", "chr1", "sequence label") + timeout := flags.Duration("timeout", 0, "timeout (examples: \"1s\", \"1ms\")") err = flags.Parse(args) if err == flag.ErrHelp { err = nil @@ -48,6 +49,7 @@ func (cmd *diffFasta) RunCommand(prog string, args []string, stdin io.Reader, st } defer f.Close() scanner := bufio.NewScanner(f) + scanner.Buffer(nil, 64*1024*1024) for scanner.Scan() { buf := scanner.Bytes() if len(buf) > 0 && buf[0] != '>' { @@ -63,14 +65,14 @@ func (cmd *diffFasta) RunCommand(prog string, args []string, stdin io.Reader, st } } - variants := hgvs.Diff(string(fasta[0]), string(fasta[1])) + variants, timedOut := hgvs.Diff(string(fasta[0]), string(fasta[1]), *timeout) if *offset != 0 { for i := range variants { variants[i].Position += *offset } } for _, v := range variants { - fmt.Fprintf(stdout, "%s:g.%s\t%s\t%d\t%s\t%s\n", *sequence, v.String(), *sequence, v.Position, v.Ref, v.New) + fmt.Fprintf(stdout, "%s:g.%s\t%s\t%d\t%s\t%s\t%v\n", *sequence, v.String(), *sequence, v.Position, v.Ref, v.New, timedOut) } return 0 }