bio-vcf 0.8.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +8 -2
  3. data/Gemfile +4 -6
  4. data/README.md +92 -57
  5. data/Rakefile +3 -41
  6. data/TAGS +115 -0
  7. data/VERSION +1 -1
  8. data/bin/bio-vcf +58 -70
  9. data/bio-vcf.gemspec +23 -75
  10. data/features/cli.feature +6 -1
  11. data/features/multisample.feature +12 -0
  12. data/features/step_definitions/cli-feature.rb +2 -2
  13. data/features/step_definitions/multisample.rb +19 -0
  14. data/features/step_definitions/vcf_header.rb +1 -1
  15. data/features/support/env.rb +0 -9
  16. data/lib/bio-vcf/pcows.rb +210 -0
  17. data/lib/bio-vcf/vcfheader.rb +28 -9
  18. data/lib/bio-vcf/vcfheader_line.rb +455 -160
  19. data/lib/bio-vcf/vcfrecord.rb +30 -15
  20. data/ragel/gen_vcfheaderline_parser.rl +68 -25
  21. data/ragel/generate.sh +4 -1
  22. data/template/vcf2json.erb +16 -16
  23. data/template/vcf2json_full_header.erb +16 -17
  24. data/template/vcf2json_use_meta.erb +35 -35
  25. data/test/data/input/gatk_exome.vcf +237 -0
  26. data/test/data/input/gatk_wgs.vcf +1000 -0
  27. data/test/data/input/test.bed +632 -0
  28. data/test/data/regression/eval_once-stderr.new +1 -0
  29. data/test/data/regression/eval_once.new +1 -0
  30. data/test/data/regression/eval_once.ref +1 -0
  31. data/test/data/regression/eval_r.info.dp-stderr.new +4 -0
  32. data/test/data/regression/eval_r.info.dp.new +150 -0
  33. data/test/data/regression/ifilter_s.dp-stderr.new +28 -0
  34. data/test/data/regression/ifilter_s.dp.new +31 -0
  35. data/test/data/regression/r.info.dp-stderr.new +4 -0
  36. data/test/data/regression/r.info.dp.new +147 -0
  37. data/test/data/regression/rewrite.info.sample-stderr.new +4 -0
  38. data/test/data/regression/rewrite.info.sample.new +150 -0
  39. data/test/data/regression/s.dp-stderr.new +12 -0
  40. data/test/data/regression/s.dp.new +145 -0
  41. data/test/data/regression/seval_s.dp-stderr.new +4 -0
  42. data/test/data/regression/seval_s.dp.new +36 -0
  43. data/test/data/regression/sfilter_seval_s.dp-stderr.new +12 -0
  44. data/test/data/regression/sfilter_seval_s.dp.new +31 -0
  45. data/test/data/regression/thread4-stderr.new +4 -0
  46. data/test/data/regression/thread4.new +150 -0
  47. data/test/data/regression/thread4_4-stderr.new +15 -0
  48. data/test/data/regression/thread4_4.new +150 -0
  49. data/test/data/regression/thread4_4_failed_filter-stderr.new +5 -0
  50. data/test/data/regression/thread4_4_failed_filter-stderr.ref +5 -2
  51. data/test/data/regression/thread4_4_failed_filter.new +110 -0
  52. data/test/data/regression/vcf2json_full_header-stderr.new +4 -0
  53. data/test/data/regression/vcf2json_full_header.new +225 -0
  54. data/test/data/regression/vcf2json_full_header.ref +222 -258
  55. data/test/data/regression/vcf2json_use_meta-stderr.new +4 -0
  56. data/test/data/regression/vcf2json_use_meta.new +4697 -0
  57. data/test/data/regression/vcf2json_use_meta.ref +4697 -0
  58. data/test/performance/metrics.md +18 -1
  59. data/test/tmp/test.vcf +12469 -0
  60. metadata +38 -62
  61. data/Gemfile.lock +0 -81
  62. data/ragel/gen_vcfheaderline_parser.rb +0 -483
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 515319faec0710075f13a0265a4027130ec5f10a
4
- data.tar.gz: aed2ff09861568291363ca21944567ad36987813
3
+ metadata.gz: 1364a1b5bd401632c6c2ae2497a358c206d7a9e6
4
+ data.tar.gz: 2a8cad615012dcd175cc3bb614888b33db16483b
5
5
  SHA512:
6
- metadata.gz: 94ff3bfda4357fc187a89c9a55116ceefe15fc2b8fa28af45e92afcad452c8d2bd65e5eae17dd2c40b046f89288c640ba5d4b40b8efb711781caed766e48f518
7
- data.tar.gz: 3d810db35d1ad862aad6f4ec81d695c6d7d74d46336d4e5563e925da267d04521387994d794ff7d8384cf10d8c94701e0e2af9380ddc0b4505e00edbbedb7c3e
6
+ metadata.gz: d8420c9926835ff632cd8dd93c057c08f37dc557c86d76fd1766a044dcc5a8b7c573553c2ef6efe8e348d868666c7fa6d62b34779e214b090cf3287e087e61c8
7
+ data.tar.gz: b666a3d97a63ac18ef7ff88e002b88dee8a81e703cadaacaffc968fe7f634591bcf5df40cd930b9493e293530047d8cc6a31df446ebf1e5cd7bfb2f6164e3e0a
@@ -1,8 +1,14 @@
1
+ sudo: false # required for the new containers
2
+
1
3
  language: ruby
2
4
  rvm:
3
5
  # - 1.9.3 <- No longer working
4
- - 2.0.0
5
- - 2.1.0
6
+ # - 2.0.0
7
+ # - 2.1.0
8
+ - 2.2.2
9
+
10
+ # install:
11
+ # - gem install cucumber rspec regressiontest
6
12
 
7
13
  branches:
8
14
  only:
data/Gemfile CHANGED
@@ -1,15 +1,13 @@
1
1
  source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
5
2
 
6
3
  # Add dependencies to develop your gem here.
7
4
  # Include everything needed to run rake, tests, features, etc.
8
5
  group :development do
9
6
  # gem "minitest"
10
- gem "rspec", ">= 2.14.0"
11
- gem "cucumber", ">= 1.3.11"
12
- gem "jeweler", ">= 2.0.1" # , "~> 1.8.4", :git => "https://github.com/technicalpickles/jeweler.git"
7
+ gem "rake"
8
+ gem "rspec"
9
+ gem "cucumber"
13
10
  gem "regressiontest", ">= 0.0.3"
14
11
  end
15
12
 
13
+
data/README.md CHANGED
@@ -2,10 +2,19 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/pjotrp/bioruby-vcf.png)](http://travis-ci.org/pjotrp/bioruby-vcf)
4
4
 
5
- A new generation VCF parser. Bio-vcf is not only fast for genome-wide
6
- (WGS) data, it also comes with a really nice filtering, evaluation and
7
- rewrite language and it can output any type of textual data, including
8
- VCF header and contents in RDF and JSON.
5
+ ## Updates
6
+
7
+ * The outputter now writes (properly) in parallel with the parser
8
+ * bio-vcf turns any VCF into JSON with header information, and
9
+ allows you to pipe that JSON directly into any JSON supporting
10
+ language, including Python and Javascript!
11
+
12
+ ## Bio-vcf
13
+
14
+ Bio-vcf is a new generation VCF parser, filter and converter. Bio-vcf is not only
15
+ very fast for genome-wide (WGS) data, it also comes with a really nice
16
+ filtering, evaluation and rewrite language and it can output any type
17
+ of textual data, including VCF header and contents in RDF and JSON.
9
18
 
10
19
  So, why would you use bio-vcf over other parsers? Because
11
20
 
@@ -14,36 +23,47 @@ So, why would you use bio-vcf over other parsers? Because
14
23
  3. Bio-vcf has great multi-sample support
15
24
  4. Bio-vcf has multiple global filters and sample filters
16
25
  5. Bio-vcf can access any VCF format
17
- 6. Bio-vcf can do calculations on fields
18
- 7. Bio-vcf allows for genotype processing
19
- 8. Bio-vcf has support for set analysis
20
- 9. Bio-vcf has sane error handling
21
- 10. Bio-vcf can convert *any* VCF to *any* output, including tabular data, HTML, LaTeX, RDF, JSON and JSON-LD and even other VCFs by using (erb) templates
26
+ 6. Bio-vcf can parse and query the VCF header (META)
27
+ 7. Bio-vcf can do calculations on fields
28
+ 8. Bio-vcf allows for genotype processing
29
+ 9. Bio-vcf has support for set analysis
30
+ 10. Bio-vcf has sane error handling
31
+ 11. Bio-vcf can convert *any* VCF to *any* output, including tabular data, BED, HTML, LaTeX, RDF, JSON and JSON-LD and even other VCFs by using (erb) templates
22
32
 
23
33
  Bio-vcf has better performance than other tools
24
34
  because of lazy parsing, multi-threading, and useful combinations of
25
- (fancy) command line filtering. For example on an 2 core machine
26
- bio-vcf is typically 50% faster than JVM based SnpSift. Adding
35
+ (fancy) command line filtering (who says Ruby is slow?). Adding
27
36
  cores, bio-vcf just does better. The more complicated the filters,
28
- the larger the gain.
37
+ the larger the gain. First the base line test to show IO performance
38
+
39
+ ```sh
40
+ time cat ESP6500SI-V2-SSA137.GRCh38-liftover.*.vcf|wc
41
+ 1987143 15897724 1003214613
42
+ real 0m7.823s
43
+ user 0m7.002s
44
+ sys 0m2.972s
45
+ ```
46
+
47
+ Next run the 1Gb data with bio-vcf effectively using 5 cores on AMD Opteron(tm) Processor 6174 using Linux
29
48
 
30
49
  ```sh
31
- time ./bin/bio-vcf -iv --num-threads 8 --filter 'r.info.cp>0.3' < ESP6500SI_V2_SSA137.vcf > test1.vcf
32
- real 0m21.095s
33
- user 1m41.101s
34
- sys 0m7.852s
50
+ time cat ESP6500SI-V2-SSA137.GRCh38-liftover.*.vcf|./bin/bio-vcf -iv --num-threads 8 --filter 'r.info.cp.to_f>0.3' > /dev/null
51
+ real 0m32.491s
52
+ user 2m34.767s
53
+ sys 0m12.733s
35
54
  ```
36
55
 
37
- while parsing with SnpSift takes
56
+ The same with SnpSift v4.0 takes
38
57
 
39
58
  ```sh
40
- time cat ESP6500SI_V2_SSA137.vcf |java -jar snpEff/SnpSift.jar filter "( CP>0.3 )" > test.vcf
41
- real 1m4.913s
42
- user 0m58.071s
43
- sys 0m7.982s
59
+ time cat ESP6500SI-V2-SSA137.GRCh38-liftover.*.vcf|java -jar snpEff/SnpSift.jar filter "( CP>0.3 )" > /dev/null
60
+ real 12m36.121s
61
+ user 12m53.273s
62
+ sys 0m9.913s
44
63
  ```
45
64
 
46
- Bio-vcf is perfect for parsing large data files. Parsing a 650 Mb GATK
65
+ This means that on this machine bio-vcf is 24x faster than SnpSift even for a simple filter.
66
+ In fact, bio-vcf is perfect for complex filters and parsing large data files on powerful machines. Parsing a 650 Mb GATK
47
67
  Illumina Hiseq VCF file and evaluating the results into a BED format on
48
68
  a 16 core machine takes
49
69
 
@@ -72,11 +92,17 @@ assumptions are made about the actual contents of the VCF file (field
72
92
  names are resolved on the fly), so bio-vcf should work with
73
93
  all VCF files.
74
94
 
75
- To fetch all entries where all samples have depth larger than 20 use
76
- a sample filter
95
+ To fetch all entries where all samples have depth larger than 20 and
96
+ filter set to PASS use a sample filter
77
97
 
78
98
  ```ruby
79
- bio-vcf --sfilter 'sample.dp>20' < file.vcf
99
+ bio-vcf --sfilter 'sample.dp>20 and rec.filter=="PASS"' < file.vcf
100
+ ```
101
+
102
+ or with a regex
103
+
104
+ ```ruby
105
+ bio-vcf --sfilter 'sample.dp>20 and rec.filter !~ /LowQD/' < file.vcf
80
106
  ```
81
107
 
82
108
  To only filter on some samples number 0 and 3:
@@ -265,6 +291,12 @@ Get the sample names
265
291
  NORMAL,TUMOR
266
292
  ```
267
293
 
294
+ Get information from the header (META)
295
+
296
+ ```ruby
297
+ bio-vcf -q --skip-header --eval-once 'header.meta["GATKCommandLine"]' < gatk_exome.vcf
298
+ ```
299
+
268
300
  The 'fields' array contains unprocessed data (strings). Print first
269
301
  five raw fields
270
302
 
@@ -304,7 +336,10 @@ Info fields are referenced by
304
336
  bio-vcf --filter 'rec.info.dp>100 and rec.info.readposranksum<=0.815' < file.vcf
305
337
  ```
306
338
 
307
- With subfields defined by rec.format
339
+ (alternatively you can use the indexed rec.info['DP'] and list INFO fields with
340
+ rec.info.fields).
341
+
342
+ Subfields defined by rec.format:
308
343
 
309
344
  ```ruby
310
345
  bio-vcf --filter 'rec.tumor.ss != 2' < file.vcf
@@ -695,7 +730,7 @@ template could be
695
730
  "seq:ref": "<%= rec.ref %>" ,
696
731
  "seq:alt": "<%= rec.alt[0] %>" ,
697
732
  "seq:maf": <%= rec.info.maf[0] %> ,
698
- "dp": <%= rec.info.dp %> ,
733
+ "dp": <%= rec.info.dp %>
699
734
  };
700
735
  ```
701
736
 
@@ -715,7 +750,7 @@ which renders
715
750
  "seq:ref": "C" ,
716
751
  "seq:alt": "T" ,
717
752
  "seq:maf": 0.0151 ,
718
- "dp": 86 ,
753
+ "dp": 86
719
754
  };
720
755
  ```
721
756
 
@@ -767,24 +802,23 @@ can be
767
802
  ```Javascript
768
803
  =HEADER
769
804
  <% require 'json' %>
770
- [
771
- { "HEADER": {
805
+ { "HEADER": {
772
806
  "options": <%= options.to_h.to_json %>,
773
807
  "files": <%= ARGV %>,
774
808
  "version": "<%= BIOVCF_VERSION %>"
775
809
  },
776
-
810
+ "BODY":[
777
811
  =BODY
778
-
779
- {
780
- "seq:chr": "<%= rec.chrom %>" ,
781
- "seq:pos": <%= rec.pos %> ,
782
- "seq:ref": "<%= rec.ref %>" ,
783
- "seq:alt": "<%= rec.alt[0] %>" ,
784
- "dp": <%= rec.info.dp %> ,
785
- },
812
+ {
813
+ "seq:chr": "<%= rec.chrom %>" ,
814
+ "seq:pos": <%= rec.pos %> ,
815
+ "seq:ref": "<%= rec.ref %>" ,
816
+ "seq:alt": "<%= rec.alt[0] %>" ,
817
+ "dp": <%= rec.info.dp %>
818
+ },
786
819
  =FOOTER
787
- ]
820
+ ]
821
+ }
788
822
  ```
789
823
 
790
824
  with
@@ -796,27 +830,28 @@ with
796
830
  may generate something like
797
831
 
798
832
  ```Javascript
799
- [
800
- { "HEADER": {
833
+ { "HEADER": {
801
834
  "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},
802
835
  "files": [],
803
836
  "version": "0.8.1-pre3"
804
837
  },
805
- {
806
- "seq:chr": "1" ,
807
- "seq:pos": 883516 ,
808
- "seq:ref": "G" ,
809
- "seq:alt": "A" ,
810
- "dp": ,
811
- },
812
- {
813
- "seq:chr": "1" ,
814
- "seq:pos": 891344 ,
815
- "seq:ref": "G" ,
816
- "seq:alt": "A" ,
817
- "dp": ,
818
- },
819
- ]
838
+ "BODY":[
839
+ {
840
+ "seq:chr": "1" ,
841
+ "seq:pos": 883516 ,
842
+ "seq:ref": "G" ,
843
+ "seq:alt": "A" ,
844
+ "dp":
845
+ },
846
+ {
847
+ "seq:chr": "1" ,
848
+ "seq:pos": 891344 ,
849
+ "seq:ref": "G" ,
850
+ "seq:alt": "A" ,
851
+ "dp": ,
852
+ },
853
+ ]
854
+ }
820
855
  ```
821
856
 
822
857
  Note that the template is not smart enough to remove the final comma
data/Rakefile CHANGED
@@ -1,50 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
4
  require 'rake'
13
5
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "bio-vcf"
18
- gem.homepage = "http://github.com/pjotrp/bioruby-vcf"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Fast multi-threaded VCF parser}
21
- gem.description = %Q{Smart lazy multi-threaded parser for VCF format with useful filtering and output rewriting}
22
- gem.email = "pjotr.public01@thebird.nl"
23
- gem.authors = ["Pjotr Prins"]
24
- gem.required_ruby_version = '>=2.0.0'
25
- # dependencies defined in Gemfile
26
- end
27
- Jeweler::RubygemsDotOrgTasks.new
28
-
29
- # require 'rspec/core'
30
- # require 'rspec/core/rake_task'
31
- # RSpec::Core::RakeTask.new(:spec) do |spec|
32
- # spec.pattern = FileList['spec/**/*_spec.rb']
33
- # end
34
-
35
- # RSpec::Core::RakeTask.new(:rcov) do |spec|
36
- # spec.pattern = 'spec/**/*_spec.rb'
37
- # spec.rcov = true
38
- # end
39
-
40
- # require 'rake/testtask'
41
-
42
- # Rake::TestTask.new do |t|
43
- # t.pattern = "spec/*_spec.rb"
44
- # end
45
-
46
6
  require 'cucumber/rake/task'
47
- Cucumber::Rake::Task.new(:features)
7
+ Cucumber::Rake::Task.new(:features) do |t|
8
+ # t.cucumber_opts = "--bundler false"
9
+ end
48
10
 
49
11
  task :default => :features
50
12
 
data/TAGS ADDED
@@ -0,0 +1,115 @@
1
+
2
+ ./bin/bio-vcf,0
3
+
4
+ ./lib/bio-vcf.rb,0
5
+
6
+ ./lib/bio-vcf/vcfgenotypefield.rb,1553
7
+ module BioVcf::BioVcf1,0
8
+ class VcfNucleotides::BioVcf::VcfNucleotides7,167
9
+ def initialize::BioVcf::VcfNucleotides#BioVcf::VcfNucleotides.new8,193
10
+ def []::BioVcf::VcfNucleotides#[]13,284
11
+ def to_ary::BioVcf::VcfNucleotides#to_ary27,628
12
+ def max::BioVcf::VcfNucleotides#max32,742
13
+ def min::BioVcf::VcfNucleotides#min37,856
14
+ def sum::BioVcf::VcfNucleotides#sum42,975
15
+ class VcfAltInfo::BioVcf::VcfAltInfo50,1082
16
+ def initialize::BioVcf::VcfAltInfo#BioVcf::VcfAltInfo.new51,1103
17
+ def []::BioVcf::VcfAltInfo#[]56,1194
18
+ def to_ary::BioVcf::VcfAltInfo#to_ary70,1512
19
+ def max::BioVcf::VcfAltInfo#max75,1626
20
+ def min::BioVcf::VcfAltInfo#min79,1702
21
+ def sum::BioVcf::VcfAltInfo#sum83,1783
22
+ class VcfGenotypeField::BioVcf::VcfGenotypeField88,1850
23
+ def initialize::BioVcf::VcfGenotypeField#BioVcf::VcfGenotypeField.new89,1877
24
+ def dp4::BioVcf::VcfGenotypeField#dp496,2020
25
+ def ad::BioVcf::VcfGenotypeField#ad100,2098
26
+ def pl::BioVcf::VcfGenotypeField#pl104,2174
27
+ def bcount::BioVcf::VcfGenotypeField#bcount108,2250
28
+ def bq::BioVcf::VcfGenotypeField#bq112,2343
29
+ def amq::BioVcf::VcfGenotypeField#amq116,2424
30
+ def method_missing::BioVcf::VcfGenotypeField#method_missing120,2507
31
+ class VcfGenotypeFields::BioVcf::VcfGenotypeFields130,2709
32
+ def initialize::BioVcf::VcfGenotypeFields#BioVcf::VcfGenotypeFields.new131,2737
33
+ def []::BioVcf::VcfGenotypeFields#[]141,3021
34
+ def method_missing::BioVcf::VcfGenotypeFields#method_missing145,3136
35
+
36
+ ./lib/bio-vcf/vcfrdf.rb,156
37
+ module BioVcf::BioVcf1,0
38
+ module VcfRdf::BioVcf::VcfRdf5,93
39
+ def VcfRdf::BioVcf::VcfRdf#VcfRdf7,112
40
+ def VcfRdf::BioVcf::VcfRdf#VcfRdf18,463
41
+
42
+ ./lib/bio-vcf/vcf.rb,27
43
+ module BioVcf::BioVcf2,1
44
+
45
+ ./lib/bio-vcf/vcfline.rb,118
46
+ module BioVcf::BioVcf1,0
47
+ module VcfLine::BioVcf::VcfLine2,16
48
+ def VcfLine.parse::BioVcf::VcfLine.parse5,82
49
+
50
+ ./lib/bio-vcf/vcfrecord.rb,1831
51
+ module BioVcf::BioVcf1,0
52
+ class VcfRecordInfo::BioVcf::VcfRecordInfo3,17
53
+ def initialize::BioVcf::VcfRecordInfo#BioVcf::VcfRecordInfo.new4,41
54
+ def method_missing::BioVcf::VcfRecordInfo#method_missing9,163
55
+ module VcfRecordParser::BioVcf::VcfRecordParser18,329
56
+ def VcfRecordParser.get_format::BioVcf::VcfRecordParser.get_format20,397
57
+ def VcfRecordParser.get_info::BioVcf::VcfRecordParser.get_info25,517
58
+ module VcfRecordCall::BioVcf::VcfRecordCall30,592
59
+ def call_diff::BioVcf::VcfRecordCall#call_diff31,617
60
+ def call_nuc::BioVcf::VcfRecordCall#call_nuc35,705
61
+ def call_tumor_count::BioVcf::VcfRecordCall#call_tumor_count39,764
62
+ def call_tumor_relative_count::BioVcf::VcfRecordCall#call_tumor_relative_count43,833
63
+ def call_normal_count::BioVcf::VcfRecordCall#call_normal_count47,955
64
+ def index::BioVcf::VcfRecordCall#index51,1026
65
+ class VcfRecord::BioVcf::VcfRecord56,1125
66
+ attr_reader :header::BioVcf::VcfRecord#header60,1173
67
+ def initialize::BioVcf::VcfRecord#BioVcf::VcfRecord.new62,1198
68
+ def chrom::BioVcf::VcfRecord#chrom67,1292
69
+ def pos::BioVcf::VcfRecord#pos71,1332
70
+ def ids::BioVcf::VcfRecord#ids75,1384
71
+ def id::BioVcf::VcfRecord#id79,1443
72
+ def ref::BioVcf::VcfRecord#ref83,1476
73
+ def alt::BioVcf::VcfRecord#alt87,1524
74
+ def qual::BioVcf::VcfRecord#qual91,1582
75
+ def info::BioVcf::VcfRecord#info95,1636
76
+ def format::BioVcf::VcfRecord#format99,1711
77
+ def normal::BioVcf::VcfRecord#normal104,1848
78
+ def tumor::BioVcf::VcfRecord#tumor109,1997
79
+ def sample::BioVcf::VcfRecord#sample114,2134
80
+ def sample_by_name::BioVcf::VcfRecord#sample_by_name118,2227
81
+ def missing_samples?::BioVcf::VcfRecord#missing_samples?122,2283
82
+ def method_missing::BioVcf::VcfRecord#method_missing126,2341
83
+
84
+ ./lib/bio-vcf/variant.rb,470
85
+ module BioVcf::BioVcf1,0
86
+ module Variant::BioVcf::Variant3,17
87
+ def Variant.diff::BioVcf::Variant.diff5,37
88
+ def Variant.threshold_diff::BioVcf::Variant.threshold_diff9,132
89
+ def Variant.relative_diff::BioVcf::Variant.relative_diff14,269
90
+ def Variant.relative_threshold_diff::BioVcf::Variant.relative_threshold_diff20,497
91
+ def Variant.index::BioVcf::Variant.index25,652
92
+ def Variant.apply_threshold::BioVcf::Variant.apply_threshold31,809
93
+
94
+ ./lib/bio-vcf/vcfheader.rb,598
95
+ module BioVcf::BioVcf2,1
96
+ module VcfHeaderParser::BioVcf::VcfHeaderParser4,18
97
+ def VcfHeaderParser.get_column_names::BioVcf::VcfHeaderParser.get_column_names5,45
98
+ class VcfHeader::BioVcf::VcfHeader18,339
99
+ attr_reader :lines::BioVcf::VcfHeader#lines20,360
100
+ def initialize::BioVcf::VcfHeader#BioVcf::VcfHeader.new22,384
101
+ def add::BioVcf::VcfHeader#add26,430
102
+ def version::BioVcf::VcfHeader#version30,483
103
+ def column_names::BioVcf::VcfHeader#column_names34,578
104
+ def columns::BioVcf::VcfHeader#columns38,674
105
+ def samples::BioVcf::VcfHeader#samples42,735
106
+
107
+ ./features/step_definitions/diff_count.rb,0
108
+
109
+ ./features/step_definitions/bio-vcf_steps.rb,0
110
+
111
+ ./features/step_definitions/somaticsniper.rb,0
112
+
113
+ ./features/step_definitions/multisample.rb,0
114
+
115
+ ./features/support/env.rb,0