bio-vcf 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da9c14380c66a497089fef836a22d44c7651f264
4
- data.tar.gz: 3291080afde13a1b7cd392d4f1f06ff275ec1f1b
3
+ metadata.gz: 90a933c33c683c1f0886a202fa5a9ee5ed2ad8ff
4
+ data.tar.gz: 1f769a89fcb3e3b44e22864ddf729ea3ac040260
5
5
  SHA512:
6
- metadata.gz: f1584a14d8de45dc04115ae6458f3d1b6e9c69c9d19092dfefc18e411fc347d660ed1ca586e3e3b4327d4774e323a78eabe3434a4cd8eab7d87b1f4e37915c0e
7
- data.tar.gz: d0a56668f17a272807167bde9caa066ba960ac597b9ce57a205fb2564b9944421e5ef4035f43ab855f72ab2c9ece6b963ef01043372db5601520f5593a1fe31b
6
+ metadata.gz: 308d93ca1bcb142fa9cd4be63d929edb0ad92b7ac0da0d4f2d51f4b363de6ef0b87ac3d2688af8c36257317e203f69355fdc3348c6a330adb7d997af7ab6714d
7
+ data.tar.gz: d7d328a13d90b209a6068f9d3f09d56e8a00262ccf7fba9d9d67ffe4935993b2ccbb2ddc2f9a4831dd8928258a9c5d468f050d9edfbb95737616f4bfaf184bb0
data/Gemfile CHANGED
@@ -12,3 +12,4 @@ group :development do
12
12
  gem "jeweler", "~> 2.0.1" # , "~> 1.8.4", :git => "https://github.com/technicalpickles/jeweler.git"
13
13
  gem "regressiontest", "~> 0.0.3"
14
14
  end
15
+
data/README.md CHANGED
@@ -16,7 +16,7 @@ RDF and JSON. Why would you use bio-vcf over other parsers?
16
16
  7. Bio-vcf allows for genotype processing
17
17
  8. Bio-vcf has support for set analysis
18
18
  9. Bio-vcf has sane error handling
19
- 10. Bio-vcf can output tabular data, HTML, LaTeX, RDF, JSON and JSON-LD using templates
19
+ 10. Bio-vcf can output tabular data, HTML, LaTeX, RDF, JSON and JSON-LD and even other VCFs using (erb) templates
20
20
 
21
21
  Bio-vcf has better performance than other tools
22
22
  because of lazy parsing, multi-threading, and useful combinations of
@@ -52,7 +52,7 @@ a 16 core machine takes
52
52
  sys 0m5.039s
53
53
  ```
54
54
 
55
- which shows pretty decent core utilisation (10x). We are running
55
+ which shows decent core utilisation (10x). We are running
56
56
  gzip compressed VCF files of 30+ Gb with similar performance gains.
57
57
 
58
58
  Use zcat to
@@ -633,6 +633,12 @@ To remove/select 3 samples:
633
633
  bio-vcf --samples 0,1,3 < mytest.vcf
634
634
  ```
635
635
 
636
+ Filter on a BED file and annotate the gene name in the resulting VCF
637
+
638
+ ```sh
639
+ bio-vcf -v --bed test/data/input/test.bed --rewrite 'rec.info["gene"]=bed[3]' < test/data/input/somaticsniper.vcf
640
+ ```
641
+
636
642
  ## RDF output
637
643
 
638
644
  You can use --rdf for turtle RDF output from simple one-liners, note the use of --id and
@@ -691,10 +697,11 @@ template could be
691
697
  };
692
698
  ```
693
699
 
694
- To get JSON, run with something like
700
+ To get JSON, run with something like (combining
701
+ with a filter)
695
702
 
696
703
  ```sh
697
- bio-vcf --template template/vcf2json.erb --filter 'r.info.maf[0]<0.01' < dbsnp.vcf
704
+ bio-vcf --template template/vcf2json.erb --filter 'r.info.sao==1' < dbsnp.vcf
698
705
  ```
699
706
 
700
707
  which renders
@@ -713,7 +720,7 @@ which renders
713
720
  Likewise for RDF output:
714
721
 
715
722
  ```sh
716
- bio-vcf --template template/vcf2rdf.erb --filter 'r.info.maf[0]<0.01' < dbsnp.vcf
723
+ bio-vcf --template template/vcf2rdf.erb --filter 'r.info.sao==1' < dbsnp.vcf
717
724
  ```
718
725
 
719
726
  renders the ERB template
@@ -728,7 +735,7 @@ renders the ERB template
728
735
  seq:pos <%= rec.pos %> ,
729
736
  seq:ref "<%= rec.ref %>" ,
730
737
  seq:alt "<%= rec.alt[0] %>" ,
731
- seq:maf <%= rec.info.maf[0] %> ,
738
+ seq:maf <%= (rec.info.maf[0]*100).round %> ,
732
739
  seq:dp <%= rec.info.dp %> ,
733
740
  db:vcf true .
734
741
  ```
@@ -742,12 +749,72 @@ into
742
749
  seq:pos 33703698 ,
743
750
  seq:ref "C" ,
744
751
  seq:alt "A" ,
745
- seq:maf 0.1567 ,
752
+ seq:maf 16 ,
746
753
  seq:dp 92 ,
747
754
  db:vcf true .
748
755
  ```
749
756
 
750
- Be creative! You can write templates for csv, HTML, XML, LaTeX, RDF, JSON, YAML, JSON-LD, etc. etc.!
757
+ Note the calculated field value for maf. Be creative! You can write templates for csv, HTML, XML, LaTeX, RDF, JSON, YAML, JSON-LD, etc. etc.!
758
+
759
+ ### Metadata
760
+
761
+ Templates can also print data as a header of the JSON/YAML/RDF output. For this
762
+ use the '=' prefix with HEADER, BODY, FOOTER keywords in the template. A small example
763
+ can be
764
+
765
+ ```Javascript
766
+ =HEADER
767
+ <% require 'json' %>
768
+ [
769
+ { "HEADER": {
770
+ "options": <%= options.to_h.to_json %>,
771
+ "files": <%= ARGV %>,
772
+ "version": "<%= BIOVCF_VERSION %>"
773
+ },
774
+
775
+ =BODY
776
+
777
+ {
778
+ "seq:chr": "<%= rec.chrom %>" ,
779
+ "seq:pos": <%= rec.pos %> ,
780
+ "seq:ref": "<%= rec.ref %>" ,
781
+ "seq:alt": "<%= rec.alt[0] %>" ,
782
+ "dp": <%= rec.info.dp %> ,
783
+ },
784
+ =FOOTER
785
+ ]
786
+ ```
787
+
788
+ may generate something like
789
+
790
+ ```Javascript
791
+ [
792
+ { "HEADER": {
793
+ "options": {"show_help":false,"source":"https://github.com/CuppenResearch/bioruby-vcf","version":"0.8.1-pre3 (Pjotr Prins)","date":"2014-11-26 12:51:36 +0000","thread_lines":40000,"template":"template/vcf2json.erb","skip_header":true},
794
+ "files": [],
795
+ "version": "0.8.1-pre3"
796
+ },
797
+ {
798
+ "seq:chr": "1" ,
799
+ "seq:pos": 883516 ,
800
+ "seq:ref": "G" ,
801
+ "seq:alt": "A" ,
802
+ "dp": ,
803
+ },
804
+ {
805
+ "seq:chr": "1" ,
806
+ "seq:pos": 891344 ,
807
+ "seq:ref": "G" ,
808
+ "seq:alt": "A" ,
809
+ "dp": ,
810
+ },
811
+ ]
812
+ ```
813
+
814
+ Note that the template is not smart enough to remove the final comma
815
+ from the last BODY element. To make it valid JSON that needs to be
816
+ removed. A future version may add a parameter to the BODY element or a
817
+ global rewrite function for this purpose. YAML and RDF have no such issue.
751
818
 
752
819
  ## Statistics
753
820
 
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{Smart lazy multi-threaded parser for VCF format with useful filtering and output rewriting}
22
22
  gem.email = "pjotr.public01@thebird.nl"
23
23
  gem.authors = ["Pjotr Prins"]
24
+ gem.required_ruby_version = '>=2.0.0'
24
25
  # dependencies defined in Gemfile
25
26
  end
26
27
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0
1
+ 0.8.1
@@ -58,6 +58,10 @@ opts = OptionParser.new do |o|
58
58
  options[:efilter_samples] = l
59
59
  end
60
60
 
61
+ o.on("--bed bedfile", String, "Filter on BED elements") do |bed|
62
+ options[:bed] = bed
63
+ end
64
+
61
65
  o.on('-e cmd', '--eval cmd',String, 'Evaluate command on each record') do |cmd|
62
66
  options[:eval] = cmd
63
67
  end
@@ -145,7 +149,9 @@ end
145
149
 
146
150
  opts.parse!(ARGV)
147
151
 
148
- $stderr.print "vcf #{version} (biogem Ruby #{RUBY_VERSION}) by Pjotr Prins 2014\n" if !options[:quiet]
152
+ BIOVCF_VERSION=version
153
+ BIOVCF_BANNER = "vcf #{version} (biogem Ruby #{RUBY_VERSION}) by Pjotr Prins 2014\n" if !options[:quiet]
154
+ $stderr.print BIOVCF_BANNER
149
155
 
150
156
  if options[:show_help]
151
157
  print opts
@@ -161,9 +167,11 @@ $stderr.print "Options: ",options,"\n" if !options[:quiet]
161
167
 
162
168
  if options[:template]
163
169
  include BioVcf::RDF
170
+ require 'bio-vcf/template'
164
171
  fn = options[:template]
165
172
  raise "No template #{fn}!" if not File.exist?(fn)
166
- template = ERB.new(File.read(fn))
173
+ # template = ERB.new(File.read(fn))
174
+ template = Bio::Template.new(fn)
167
175
  end
168
176
 
169
177
  if options[:num_threads] != 1
@@ -227,7 +235,7 @@ def parse_header line, samples, options
227
235
  end
228
236
 
229
237
  # Parse a VCF line and return the result as a string
230
- def parse_line line,header,options,samples,template,stats=nil
238
+ def parse_line line,header,options,bedfilter,samples,template,stats=nil
231
239
  fields = VcfLine.parse(line)
232
240
  rec = VcfRecord.new(fields,header)
233
241
  r = rec # alias
@@ -248,6 +256,11 @@ def parse_line line,header,options,samples,template,stats=nil
248
256
 
249
257
  # --------------------------
250
258
  # Filtering and set analysis
259
+ if bedfilter
260
+ bed = bedfilter.contains(rec)
261
+ return if not bed
262
+ end
263
+
251
264
  return if filter and not rec.filter(filter,ignore_missing_data: ignore_missing,quiet: quiet)
252
265
 
253
266
  if sfilter
@@ -315,7 +328,7 @@ def parse_line line,header,options,samples,template,stats=nil
315
328
  elsif options[:template]
316
329
  # Ruby ERB template
317
330
  begin
318
- template.result(binding)
331
+ template.body(binding)
319
332
  rescue Exception => e
320
333
  $stderr.print e,": ",fields,"\n"
321
334
  $stderr.print e.backtrace.inspect if options[:verbose]
@@ -343,11 +356,15 @@ chunks = []
343
356
  lines = []
344
357
  line_number=0
345
358
 
359
+ if options[:bed]
360
+ bedfilter = BedFilter.new(options[:bed])
361
+ end
362
+
346
363
  begin
347
364
  process = lambda { | lines |
348
365
  res = []
349
366
  lines.each do | line |
350
- res << parse_line(line,header,options,samples,template,stats)
367
+ res << parse_line(line,header,options,bedfilter,samples,template,stats)
351
368
  end
352
369
  res
353
370
  }
@@ -357,6 +374,7 @@ begin
357
374
  end
358
375
  } # end output
359
376
 
377
+ print template.header(binding) if template
360
378
  # ---- Main loop
361
379
  STDIN.each_line do | line |
362
380
  line_number += 1
@@ -410,6 +428,7 @@ begin
410
428
  process.call(chunk)
411
429
  }
412
430
  end
431
+ print template.footer(binding) if template
413
432
  stats.print if stats
414
433
 
415
434
  rescue Exception => e
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: bio-vcf 0.8.1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "bio-vcf"
8
- s.version = "0.8.0"
9
+ s.version = "0.8.1"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Pjotr Prins"]
12
- s.date = "2014-09-19"
14
+ s.date = "2014-11-26"
13
15
  s.description = "Smart lazy multi-threaded parser for VCF format with useful filtering and output rewriting"
14
16
  s.email = "pjotr.public01@thebird.nl"
15
17
  s.executables = ["bio-vcf"]
@@ -40,6 +42,8 @@ Gem::Specification.new do |s|
40
42
  "features/step_definitions/somaticsniper.rb",
41
43
  "features/support/env.rb",
42
44
  "lib/bio-vcf.rb",
45
+ "lib/bio-vcf/bedfilter.rb",
46
+ "lib/bio-vcf/template.rb",
43
47
  "lib/bio-vcf/utils.rb",
44
48
  "lib/bio-vcf/variant.rb",
45
49
  "lib/bio-vcf/vcf.rb",
@@ -53,6 +57,7 @@ Gem::Specification.new do |s|
53
57
  "template/gatk_vcf2rdf.erb",
54
58
  "template/vcf2json.erb",
55
59
  "template/vcf2rdf.erb",
60
+ "template/vcf2rdf_header.erb",
56
61
  "test/data/input/dbsnp.vcf",
57
62
  "test/data/input/multisample.vcf",
58
63
  "test/data/input/somaticsniper.vcf",
@@ -70,8 +75,8 @@ Gem::Specification.new do |s|
70
75
  ]
71
76
  s.homepage = "http://github.com/pjotrp/bioruby-vcf"
72
77
  s.licenses = ["MIT"]
73
- s.require_paths = ["lib"]
74
- s.rubygems_version = "2.0.3"
78
+ s.required_ruby_version = Gem::Requirement.new(">= 2.0.0")
79
+ s.rubygems_version = "2.2.2"
75
80
  s.summary = "Fast multi-threaded VCF parser"
76
81
 
77
82
  if s.respond_to? :specification_version then
@@ -63,3 +63,16 @@ Feature: Multi-sample VCF
63
63
  And I expect rec.sample.s3t2? to be true
64
64
  And I expect rec.missing_samples? to be true
65
65
 
66
+ # Phased genotype
67
+ Given multisample vcf line
68
+ """
69
+ 1 10723 . C G 73.85 . AC=4;AF=0.667;AN=6;BaseQRankSum=1.300;DP=18;Dels=0.00;FS=3.680;HaplotypeScore=0.0000;MLEAC=4;MLEAF=0.667;MQ=20.49;MQ0=11;MQRankSum=1.754;QD=8.21;ReadPosRankSum=0.000 GT:AD:DP:GQ:PL 0|1 ./. 1/1:2,2:4:6:66,6,0 1/1:4,1:5:3:36,3,0 ./. ./. 0/0:6,0:6:3:0,3,33
70
+ """
71
+ When I parse the record
72
+ Then I expect rec.pos to contain 10723
73
+ Then I expect rec.valid? to be true
74
+ And I expect r.original? to be true
75
+ And I expect r.original.gts? to be true
76
+ And I expect r.original.gts to be ["C","G"]
77
+ And I expect r.original.gts[0] to be "C"
78
+ And I expect r.original.gts[1] to be "G"
@@ -17,3 +17,4 @@ require 'bio-vcf/vcfgenotypefield'
17
17
  require 'bio-vcf/vcfrecord'
18
18
  require 'bio-vcf/variant'
19
19
  require 'bio-vcf/vcfstatistics'
20
+ require 'bio-vcf/bedfilter'
@@ -0,0 +1,43 @@
1
+ module BioVcf
2
+
3
+ class BedFilter
4
+ def initialize bedfilen
5
+ require 'binary_search/native'
6
+
7
+ # Parse Bed file and build up search array
8
+ chrs = {}
9
+ info = {}
10
+ File.open(bedfilen).each_line { | line |
11
+ (chr,start,stop,gene) = line.strip.split(/\t/)[0..3]
12
+ chrs[chr] ||= []
13
+ chrs[chr].push(stop.to_i)
14
+ info[chr+':'+stop] = [chr,start.to_i,stop.to_i,gene]
15
+ }
16
+ # Make sure chrs is sorted
17
+ @chrs = {}
18
+ chrs.each { | k,list |
19
+ @chrs[k] = list.sort
20
+ }
21
+ @info = info
22
+ end
23
+
24
+ def contains(rec)
25
+ stop_list = @chrs[rec.chrom]
26
+ if stop_list
27
+ pos = rec.pos
28
+ stop = stop_list.bsearch { |bedstop| bedstop >= pos }
29
+ if stop
30
+ rinfo = @info[rec.chrom+':'+stop.to_s]
31
+ raise "Unexpected error in BED record for #{rec.chrom}:#{stop} position" if rinfo == nil
32
+ start = rinfo[1]
33
+ if pos >= start
34
+ # p [rec.chrom,rec.pos,rinfo]
35
+ return rinfo
36
+ end
37
+ end
38
+ end
39
+ nil
40
+ end
41
+ end
42
+
43
+ end
@@ -0,0 +1,75 @@
1
+ require 'erb'
2
+
3
+ module Bio
4
+
5
+ class Template
6
+
7
+ def initialize fn
8
+ raise "Can not find template #{fn}!" if not File.exist?(fn)
9
+ parse(File.read(fn))
10
+ end
11
+
12
+ def parse buf
13
+ header = []
14
+ body = []
15
+ footer = []
16
+ where = :header
17
+ buf.split("\n").each do | line |
18
+ case where
19
+ when :header
20
+ next if line =~ /=HEADER/
21
+ if line =~ /=BODY/
22
+ body = []
23
+ where = :body
24
+ next
25
+ end
26
+ header << line
27
+ when :body
28
+ if line =~ /=FOOTER/
29
+ footer = []
30
+ where = :footer
31
+ next
32
+ end
33
+ body << line
34
+ else
35
+ footer << line
36
+ end
37
+ end
38
+ if body == []
39
+ body = header
40
+ header = []
41
+ end
42
+ @erb_header = ERB.new(header.join("\n")) if header.size
43
+ @erb_body = ERB.new(body.join("\n")) if body.size
44
+ @erb_footer = ERB.new(footer.join("\n")) if footer.size
45
+ end
46
+
47
+ def result env
48
+ @erb.result(env)
49
+ end
50
+
51
+ def header env
52
+ if @erb_header
53
+ @erb_header.result(env)
54
+ else
55
+ ""
56
+ end
57
+ end
58
+
59
+ def body env
60
+ if @erb_body
61
+ @erb_body.result(env)
62
+ else
63
+ ""
64
+ end
65
+ end
66
+
67
+ def footer env
68
+ if @erb_footer
69
+ @erb_footer.result(env)
70
+ else
71
+ ""
72
+ end
73
+ end
74
+ end
75
+ end
@@ -156,7 +156,7 @@ module BioVcf
156
156
  end
157
157
 
158
158
  def gti
159
- gt.split('/').map { |g| g.to_i }
159
+ gt.split(/[\/\|]/).map { |g| g.to_i }
160
160
  end
161
161
 
162
162
  def gts?
@@ -218,7 +218,12 @@ module BioVcf
218
218
  end
219
219
 
220
220
  def [] name
221
- @samples[name] ||= VcfGenotypeField.new(@fields[@sample_index[name]],@format,@header,@ref,@alt)
221
+ begin
222
+ @samples[name] ||= VcfGenotypeField.new(@fields[@sample_index[name]],@format,@header,@ref,@alt)
223
+ rescue TypeError
224
+ $stderr.print "Unknown field name <#{name}> in record, did you mean r.info.#{name}?\n"
225
+ raise
226
+ end
222
227
  end
223
228
 
224
229
  def method_missing(m, *args, &block)
@@ -60,13 +60,21 @@ module BioVcf
60
60
  end
61
61
 
62
62
  def samples
63
- @samples ||= column_names[9..-1]
63
+ @samples ||= if column_names.size > 8
64
+ column_names[9..-1]
65
+ else
66
+ []
67
+ end
64
68
  end
65
69
 
66
70
  def samples_index_array
67
71
  @all_samples_index ||= column_names[9..-1].fill{|i| i}
68
72
  end
69
73
 
74
+ def num_samples
75
+ @num_samples ||= ( samples == nil ? 0 : samples.size )
76
+ end
77
+
70
78
  def sample_index
71
79
  return @sample_index if @sample_index
72
80
  index = {}
@@ -40,7 +40,7 @@ module BioVcf
40
40
  # Split GT into index values
41
41
  def gti
42
42
  v = fetch_values("GT")
43
- v.split(/\//).map{ |v| (v=='.' ? nil : v.to_i) }
43
+ v.split(/[\/\|]/).map{ |v| (v=='.' ? nil : v.to_i) }
44
44
  end
45
45
 
46
46
  # Split GT into into a nucleode sequence
@@ -1,8 +1,20 @@
1
+ =HEADER
2
+ <% require 'json' %>
3
+ [
4
+ { "HEADER": {
5
+ "options": <%= options.to_h.to_json %>,
6
+ "files": <%= ARGV %>,
7
+ "version": "<%= BIOVCF_VERSION %>"
8
+ },
9
+
10
+ =BODY
11
+
1
12
  {
2
13
  "seq:chr": "<%= rec.chrom %>" ,
3
14
  "seq:pos": <%= rec.pos %> ,
4
15
  "seq:ref": "<%= rec.ref %>" ,
5
16
  "seq:alt": "<%= rec.alt[0] %>" ,
6
- "seq:maf": <%= rec.info.maf[0] %> ,
7
17
  "dp": <%= rec.info.dp %> ,
8
- };
18
+ },
19
+ =FOOTER
20
+ ]
@@ -0,0 +1,24 @@
1
+ =HEADER
2
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
3
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
4
+ @prefix dc: <http://purl.org/dc/elements/1.1/> .
5
+ @prefix hgnc: <http://identifiers.org/hgnc.symbol/> .
6
+ @prefix doi: <http://dx.doi.org/> .
7
+ @prefix seq: <http://biobeat.org/rdf/seq#> .
8
+ @prefix db: <http://biobeat.org/rdf/db#> .
9
+ @prefix : <http://biobeat.org/rdf/dbsnp#> .
10
+
11
+ =BODY
12
+ <%
13
+ id = Turtle::mangle_identifier(['ch'+rec.chrom,rec.pos,rec.alt.join('')].join('_'))
14
+ %>
15
+ :<%= id %>
16
+ :query_id "<%= id %>";
17
+ seq:chr "<%= rec.chrom %>" ;
18
+ seq:pos <%= rec.pos %> ;
19
+ seq:ref "<%= rec.ref %>" ;
20
+ seq:alt "<%= rec.alt[0] %>" ;
21
+ seq:dp <%= rec.info.dp %> ;
22
+ db:vcf true .
23
+
24
+ =FOOTER
@@ -1 +1,2 @@
1
1
  Error: Missing 'parallel' module. Install with command 'gem install parallel' if you want multiple threads
2
+ .Unknown field name <t> in record, did you mean r.info.t?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-vcf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pjotr Prins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-19 00:00:00.000000000 Z
11
+ date: 2014-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -98,6 +98,8 @@ files:
98
98
  - features/step_definitions/somaticsniper.rb
99
99
  - features/support/env.rb
100
100
  - lib/bio-vcf.rb
101
+ - lib/bio-vcf/bedfilter.rb
102
+ - lib/bio-vcf/template.rb
101
103
  - lib/bio-vcf/utils.rb
102
104
  - lib/bio-vcf/variant.rb
103
105
  - lib/bio-vcf/vcf.rb
@@ -111,6 +113,7 @@ files:
111
113
  - template/gatk_vcf2rdf.erb
112
114
  - template/vcf2json.erb
113
115
  - template/vcf2rdf.erb
116
+ - template/vcf2rdf_header.erb
114
117
  - test/data/input/dbsnp.vcf
115
118
  - test/data/input/multisample.vcf
116
119
  - test/data/input/somaticsniper.vcf
@@ -137,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
140
  requirements:
138
141
  - - ">="
139
142
  - !ruby/object:Gem::Version
140
- version: '0'
143
+ version: 2.0.0
141
144
  required_rubygems_version: !ruby/object:Gem::Requirement
142
145
  requirements:
143
146
  - - ">="
@@ -145,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
148
  version: '0'
146
149
  requirements: []
147
150
  rubyforge_project:
148
- rubygems_version: 2.0.3
151
+ rubygems_version: 2.2.2
149
152
  signing_key:
150
153
  specification_version: 4
151
154
  summary: Fast multi-threaded VCF parser