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.
-
#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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/bio-vcf/vcfsample.rb', line 64
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
51
52
53
|
# File 'lib/bio-vcf/vcfsample.rb', line 51
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
|
# File 'lib/bio-vcf/vcfsample.rb', line 41
def gti
v = fetch_values("GT")
v.split(/[\/\|]/).map{ |v| (v=='.' ? nil : v.to_i) }
end
|
#gts ⇒ Object
Split GT into into a nucleode sequence
47
48
49
|
# File 'lib/bio-vcf/vcfsample.rb', line 47
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
|