Class: BioVcf::VcfSample::Sample

Inherits:
Object
  • Object
show all
Defined in:
lib/bio-vcf/vcfsample.rb

Instance Method Summary collapse

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



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/bio-vcf/vcfsample.rb', line 55

def method_missing(m, *args, &block)
  name = m.to_s.upcase
  # p [:here,name,m ,@values]
  # p [:respond_to_call_cached_eval,respond_to?(:call_cached_eval)]
  if name =~ /\?$/
    # test for valid field
    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

Returns:

  • (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

#gtiObject

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

#gtsObject

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