Class: Bioinform::Motif

Inherits:
Object show all
Includes:
Parameters
Defined in:
lib/bioinform/data_models/motif.rb

Instance Method Summary collapse

Methods included from Parameters

#get_parameters, included, #parameter_defined?, #parameters, #set_parameters

Constructor Details

#initialize(parameters = {}) ⇒ Motif

0)Motif.new() 1)Motif.new(pcm: …, pwm: …, name: …,threshold: …) 2)Motif.new(my_pcm) 3)Motif.new(pm: my_pcm, threshold: …) 2) and 3) cases will automatically choose data model What if pm already is a Motif



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/bioinform/data_models/motif.rb', line 15

def initialize(parameters = {})
  case parameters
  when PM
    pm = parameters
    motif_type = pm.class.name.downcase.sub(/^.+::/,'').to_sym
    self.original_data_model = motif_type
    set_parameters(motif_type => pm)
  when Hash
    if parameters.has_key?(:pm) && parameters[:pm].is_a?(PM)
      pm = parameters.delete(:pm)
      motif_type = pm.class.name.downcase.sub(/^.+::/,'').to_sym
      self.original_data_model = motif_type
      set_parameters(motif_type => pm)
    end
    set_parameters(parameters)
  else
    raise ArgumentError, "Motif::new doesn't accept argument #{parameters} of class #{parameters.class}"
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args) ⇒ Object



44
45
46
# File 'lib/bioinform/data_models/motif.rb', line 44

def method_missing(meth, *args)
  parameters.__send__(meth, *args)
end

Instance Method Details

#==(other) ⇒ Object



48
49
50
# File 'lib/bioinform/data_models/motif.rb', line 48

def ==(other)
  parameters == other.parameters
end

#nameObject

def pcm=(pcm); parameters.pcm = pcm; end def pwm=(pwm); parameters.pwm = pwm; end def ppm=(ppm); parameters.ppm = ppm; end



42
# File 'lib/bioinform/data_models/motif.rb', line 42

def name; parameters.name || pm.name; end

#pmObject



35
# File 'lib/bioinform/data_models/motif.rb', line 35

def pm; ((original_data_model || :pm) == :pm) ? parameters.pm : send(original_data_model); end

#ppmObject



38
# File 'lib/bioinform/data_models/motif.rb', line 38

def ppm; parameters.ppm || pcm.try(:to_ppm); end

#pwmObject

def pcm; parameters.pcm; end



37
# File 'lib/bioinform/data_models/motif.rb', line 37

def pwm; parameters.pwm || pcm.try(:to_pwm); end

#to_sObject



52
53
54
# File 'lib/bioinform/data_models/motif.rb', line 52

def to_s
  parameters.to_s
end