forked from brentp/vcfanno
/
bench_test.go
74 lines (64 loc) · 1.6 KB
/
bench_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"bufio"
"fmt"
"io/ioutil"
"log"
"testing"
"github.com/BurntSushi/toml"
"github.com/brentp/bix"
"github.com/brentp/irelate"
"github.com/brentp/irelate/interfaces"
"github.com/brentp/vcfanno/api"
"github.com/brentp/vcfanno/shared"
"github.com/brentp/xopen"
)
func benchmarkAnno(b *testing.B) {
var configs shared.Config
if _, err := toml.DecodeFile("example/conf.toml", &configs); err != nil {
panic(err)
}
out := bufio.NewWriter(ioutil.Discard)
Js, _ := xopen.Ropen("example/custom.js")
jbytes, _ := ioutil.ReadAll(Js)
js_string := string(jbytes)
srcs, err := configs.Sources()
if err != nil {
log.Fatal(err)
}
a := api.NewAnnotator(srcs, js_string, false, true)
files, err := a.SetupStreams()
if err != nil {
log.Fatal(err)
}
for n := 0; n < b.N; n++ {
q, err := bix.New("example/query.vcf.gz", 1)
if err != nil {
log.Fatal(err)
}
bx, err := q.Query(nil)
if err != nil {
log.Fatal(err)
}
a.UpdateHeader(q)
//files := []string{"example/cadd.sub.txt.gz", "example/query.vcf.gz", "example/fitcons.bed.gz"}
//files := []string{"example/query.vcf.gz", "example/fitcons.bed.gz"}
queryables := make([]interfaces.Queryable, len(files))
for i, f := range files {
q, err := bix.New(f, 1)
if err != nil {
log.Fatal(err)
}
queryables[i] = q
}
fn := func(v interfaces.Relatable) {
a.AnnotateEnds(v, api.INTERVAL)
}
stream := irelate.PIRelate(4000, 20000, bx, false, fn, queryables...)
for interval := range stream {
fmt.Fprintf(out, "%s\n", interval)
}
out.Flush()
}
}
func BenchmarkNormal(b *testing.B) { benchmarkAnno(b) }