Class: BioVcf::VcfSample::Sample
- Inherits:
-
Object
- Object
- BioVcf::VcfSample::Sample
show all
- Defined in:
- lib/bio-vcf/vcfsample.rb
Instance Method Summary
collapse
-
#[](name) ⇒ Object
-
#cache_method(name, &block) ⇒ Object
-
#efilter(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
-
#empty? ⇒ Boolean
-
#eval(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
-
#gti ⇒ Object
Split GT into index values.
-
#gtindex ⇒ Object
-
#gts ⇒ Object
Split GT into into a nucleode sequence.
-
#ifilter(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
-
#initialize(rec, genotypefield) ⇒ Sample
constructor
Initialized sample with rec and genotypefield.
-
#method_missing(m, *args, &block) ⇒ Object
-
#sfilter(expr, ignore_missing_data: false, quiet: true, do_cache: true) ⇒ Object
Constructor Details
#initialize(rec, genotypefield) ⇒ Sample
Initialized sample with rec and genotypefield
#<BioVcf::VcfGenotypeField:0x00000001a0c188 @values=[“0/0”, “151,8”, “159”, “99”, “0,195,2282”], @format=“AD”=>1, “DP”=>2, “GQ”=>3, “PL”=>4,
13
14
15
16
17
18
|
# File 'lib/bio-vcf/vcfsample.rb', line 13
def initialize rec,genotypefield
@rec = rec
@sample = genotypefield
@format = @sample.format
@values = @sample.values
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/bio-vcf/vcfsample.rb', line 79
def method_missing(m, *args, &block)
name = m.to_s.upcase
if name =~ /\?$/
return !VcfValue::empty?(fetch_values(name.chop))
else
if @format[name]
cache_method(m) {
v = fetch_values(name)
return nil if VcfValue::empty?(v)
ConvertStringToValue::convert(v)
}
self.send(m)
else
super(m, *args, &block)
end
end
end
|
Instance Method Details
#cache_method(name, &block) ⇒ Object
66
67
68
|
# File 'lib/bio-vcf/vcfsample.rb', line 66
def cache_method(name, &block)
self.class.send(:define_method, name, &block)
end
|
#efilter(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
36
37
38
|
# File 'lib/bio-vcf/vcfsample.rb', line 36
def efilter expr, ignore_missing_data: false, quiet: false, do_cache: true
caching_eval :efilter, :call_cached_efilter, expr, ignore_missing_data: ignore_missing_data, quiet: quiet, do_cache: do_cache
end
|
#empty? ⇒ Boolean
20
21
22
|
# File 'lib/bio-vcf/vcfsample.rb', line 20
def empty?
cache_empty ||= VcfSample::empty?(@sample.to_s)
end
|
#eval(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
24
25
26
|
# File 'lib/bio-vcf/vcfsample.rb', line 24
def eval expr, ignore_missing_data: false, quiet: false, do_cache: true
caching_eval :eval, :call_cached_eval, expr, ignore_missing_data: ignore_missing_data, quiet: quiet, do_cache: do_cache
end
|
#gti ⇒ Object
Split GT into index values
41
42
43
44
45
|
# File 'lib/bio-vcf/vcfsample.rb', line 41
def gti
v = fetch_values("GT")
v = './.' if v == '.' v.split(/[\/\|]/).map{ |v| (v=='.' ? nil : v.to_i) }
end
|
#gtindex ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/bio-vcf/vcfsample.rb', line 47
def gtindex
v = fetch_values("GT")
return case v
when nil then nil
when '.' then nil
when './.' then nil
when '0/0' then 0
when '0/1' then 1
when '1/1' then 2
else
raise "Unknown genotype #{v}"
end
end
|
#gts ⇒ Object
Split GT into into a nucleode sequence
62
63
64
|
# File 'lib/bio-vcf/vcfsample.rb', line 62
def gts
gti.map { |i| (i ? @rec.get_gt(i) : nil) }
end
|
#ifilter(expr, ignore_missing_data: false, quiet: false, do_cache: true) ⇒ Object
32
33
34
|
# File 'lib/bio-vcf/vcfsample.rb', line 32
def ifilter expr, ignore_missing_data: false, quiet: false, do_cache: true
caching_eval :ifilter, :call_cached_ifilter, expr, ignore_missing_data: ignore_missing_data, quiet: quiet, do_cache: do_cache
end
|
#sfilter(expr, ignore_missing_data: false, quiet: true, do_cache: true) ⇒ Object
28
29
30
|
# File 'lib/bio-vcf/vcfsample.rb', line 28
def sfilter expr, ignore_missing_data: false, quiet: true, do_cache: true
caching_eval :sfilter, :call_cached_sfilter, expr, ignore_missing_data: ignore_missing_data, quiet: quiet, do_cache: do_cache
end
|