bio-vcf 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +8 -2
- data/Gemfile +4 -6
- data/README.md +92 -57
- data/Rakefile +3 -41
- data/TAGS +115 -0
- data/VERSION +1 -1
- data/bin/bio-vcf +58 -70
- data/bio-vcf.gemspec +23 -75
- data/features/cli.feature +6 -1
- data/features/multisample.feature +12 -0
- data/features/step_definitions/cli-feature.rb +2 -2
- data/features/step_definitions/multisample.rb +19 -0
- data/features/step_definitions/vcf_header.rb +1 -1
- data/features/support/env.rb +0 -9
- data/lib/bio-vcf/pcows.rb +210 -0
- data/lib/bio-vcf/vcfheader.rb +28 -9
- data/lib/bio-vcf/vcfheader_line.rb +455 -160
- data/lib/bio-vcf/vcfrecord.rb +30 -15
- data/ragel/gen_vcfheaderline_parser.rl +68 -25
- data/ragel/generate.sh +4 -1
- data/template/vcf2json.erb +16 -16
- data/template/vcf2json_full_header.erb +16 -17
- data/template/vcf2json_use_meta.erb +35 -35
- data/test/data/input/gatk_exome.vcf +237 -0
- data/test/data/input/gatk_wgs.vcf +1000 -0
- data/test/data/input/test.bed +632 -0
- data/test/data/regression/eval_once-stderr.new +1 -0
- data/test/data/regression/eval_once.new +1 -0
- data/test/data/regression/eval_once.ref +1 -0
- data/test/data/regression/eval_r.info.dp-stderr.new +4 -0
- data/test/data/regression/eval_r.info.dp.new +150 -0
- data/test/data/regression/ifilter_s.dp-stderr.new +28 -0
- data/test/data/regression/ifilter_s.dp.new +31 -0
- data/test/data/regression/r.info.dp-stderr.new +4 -0
- data/test/data/regression/r.info.dp.new +147 -0
- data/test/data/regression/rewrite.info.sample-stderr.new +4 -0
- data/test/data/regression/rewrite.info.sample.new +150 -0
- data/test/data/regression/s.dp-stderr.new +12 -0
- data/test/data/regression/s.dp.new +145 -0
- data/test/data/regression/seval_s.dp-stderr.new +4 -0
- data/test/data/regression/seval_s.dp.new +36 -0
- data/test/data/regression/sfilter_seval_s.dp-stderr.new +12 -0
- data/test/data/regression/sfilter_seval_s.dp.new +31 -0
- data/test/data/regression/thread4-stderr.new +4 -0
- data/test/data/regression/thread4.new +150 -0
- data/test/data/regression/thread4_4-stderr.new +15 -0
- data/test/data/regression/thread4_4.new +150 -0
- data/test/data/regression/thread4_4_failed_filter-stderr.new +5 -0
- data/test/data/regression/thread4_4_failed_filter-stderr.ref +5 -2
- data/test/data/regression/thread4_4_failed_filter.new +110 -0
- data/test/data/regression/vcf2json_full_header-stderr.new +4 -0
- data/test/data/regression/vcf2json_full_header.new +225 -0
- data/test/data/regression/vcf2json_full_header.ref +222 -258
- data/test/data/regression/vcf2json_use_meta-stderr.new +4 -0
- data/test/data/regression/vcf2json_use_meta.new +4697 -0
- data/test/data/regression/vcf2json_use_meta.ref +4697 -0
- data/test/performance/metrics.md +18 -1
- data/test/tmp/test.vcf +12469 -0
- metadata +38 -62
- data/Gemfile.lock +0 -81
- data/ragel/gen_vcfheaderline_parser.rb +0 -483
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1364a1b5bd401632c6c2ae2497a358c206d7a9e6
|
4
|
+
data.tar.gz: 2a8cad615012dcd175cc3bb614888b33db16483b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8420c9926835ff632cd8dd93c057c08f37dc557c86d76fd1766a044dcc5a8b7c573553c2ef6efe8e348d868666c7fa6d62b34779e214b090cf3287e087e61c8
|
7
|
+
data.tar.gz: b666a3d97a63ac18ef7ff88e002b88dee8a81e703cadaacaffc968fe7f634591bcf5df40cd930b9493e293530047d8cc6a31df446ebf1e5cd7bfb2f6164e3e0a
|
data/.travis.yml
CHANGED
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 "
|
11
|
-
gem "
|
12
|
-
gem "
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
VCF
|
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
|
18
|
-
7. Bio-vcf
|
19
|
-
8. Bio-vcf
|
20
|
-
9. Bio-vcf has
|
21
|
-
10. Bio-vcf
|
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
|
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
|
32
|
-
real
|
33
|
-
user
|
34
|
-
sys
|
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
|
-
|
56
|
+
The same with SnpSift v4.0 takes
|
38
57
|
|
39
58
|
```sh
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
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
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
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
|