Class: PPM

Inherits:
Object show all
Defined in:
lib/sequence_logo/ytilib/ppm_support.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#nameObject

Returns the value of attribute name.



25
26
27
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 25

def name
  @name
end

Instance Method Details

#get_line(v) ⇒ Object



31
32
33
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 31

def get_line(v)
  ( (v - icd4of4) / icd4of4 ).abs
end

#get_logo(icd_mode) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 35

def (icd_mode)
  case icd_mode.to_s
  when 'weblogo'
    
  when 'discrete'
    get_logo_discrete
  end
end

#get_logo_discreteObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 64

def get_logo_discrete
  checkerr("words count is undefined") { !words_count }
  
  rseq = []
  @matrix['A'].each_index { |i|
    rseq << (icd4of4 == 0 ? 1.0 : ( (infocod(i) - icd4of4) / icd4of4 ).abs)
  }
  
  mat = {'A'=>[], 'C'=>[], 'G'=>[], 'T'=>[]}
  @matrix['A'].each_index { |i|
    ['A','C','G','T'].each { |l| 
      mat[l][i] = @matrix[l][i] * rseq[i]
    }
  }
  
  mat
end

#get_logo_weblogoObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 45

def 
  rseq = []
  @matrix['A'].each_index { |i|
    rseq << 2 + ['A','C','G','T'].inject(0) { |sum, l|
      pn = @matrix[l][i]
      sum += (pn == 0) ? 0 : pn * Math.log(pn) / Math.log(2)
    }
  }
  
  mat = {'A'=>[], 'C'=>[], 'G'=>[], 'T'=>[]}
  @matrix['A'].each_index { |i|
    ['A','C','G','T'].each { |l|
      mat[l][i]= @matrix[l][i] * rseq[i] / 2 # so we can handle a '2 bit' scale here
    }
  }
  
  mat
end

#get_ppmObject



27
28
29
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 27

def get_ppm
  self
end

#revcompObject



82
83
84
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 82

def revcomp
  deep_dup.revcomp!
end