X-Git-Url: https://git.arvados.org/lightning.git/blobdiff_plain/0a887c4dd0042085a4ac77844b31cf097336e952..b9a352b3c94fbefd189bf72694ef52fe561f0515:/diff.go diff --git a/diff.go b/diff.go index 259c870e4b..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" @@ -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 }