X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/80c6ae7fcdf650d0cdc211aa3c12008aab4564f7..4ef1b78b8c8d118e2318376079b921aa5244aa1c:/diff.go diff --git a/diff.go b/diff.go index 43ed90ce3f..4a328ac756 100644 --- a/diff.go +++ b/diff.go @@ -1,4 +1,8 @@ -package main +// Copyright (C) The Lightning Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package lightning import ( "bufio" @@ -8,7 +12,7 @@ import ( "io" "os" - "github.com/curii/lightning/hgvs" + "github.com/arvados/lightning/hgvs" ) type diffFasta struct{} @@ -24,6 +28,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 +53,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 +69,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 }