Class: PPM
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
Instance Method Summary collapse
- #get_line(v) ⇒ Object
- #get_logo(icd_mode) ⇒ Object
- #get_logo_discrete ⇒ Object
- #get_logo_weblogo ⇒ Object
- #get_ppm ⇒ Object
- #revcomp ⇒ Object
Instance Attribute Details
#name ⇒ Object
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 get_logo(icd_mode) case icd_mode.to_s when 'weblogo' get_logo_weblogo when 'discrete' get_logo_discrete end end |
#get_logo_discrete ⇒ Object
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_weblogo ⇒ Object
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 get_logo_weblogo 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_ppm ⇒ Object
27 28 29 |
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 27 def get_ppm self end |
#revcomp ⇒ Object
82 83 84 |
# File 'lib/sequence_logo/ytilib/ppm_support.rb', line 82 def revcomp deep_dup.revcomp! end |