| Class | Bio::KEGG::EXPRESSION |
| In: |
lib/bio/db/kegg/expression.rb
|
| Parent: | Object |
| max_intensity | [R] | |
| orf2ratio | [R] | |
| orf2rgb | [R] | |
| orf2val | [R] |
# File lib/bio/db/kegg/expression.rb, line 19
19: def initialize(entry)
20: @orf2val = Hash.new('')
21: @orf2rgb = Hash.new('')
22: @orf2ratio = Hash.new('')
23: @max_intensity = 10000
24: entry.split("\n").each do |line|
25: unless /^#/ =~ line
26: ary = line.split("\t")
27: orf = ary.shift
28: val = ary[2, 4].collect {|x| x.to_f}
29: @orf2val[orf] = val
30: end
31: end
32: end
# File lib/bio/db/kegg/expression.rb, line 38
38: def control_avg
39: sum = 0.0
40: @orf2val.values.each do |v|
41: sum += v[0] - v[1]
42: end
43: sum/orf2val.size
44: end
# File lib/bio/db/kegg/expression.rb, line 74
74: def control_sd
75: var = self.control_var
76: Math.sqrt(var)
77: end
# File lib/bio/db/kegg/expression.rb, line 54
54: def control_var
55: sum = 0.0
56: avg = self.control_avg
57: @orf2val.values.each do |v|
58: tmp = v[0] - v[1]
59: sum += (tmp - avg)*(tmp - avg)
60: end
61: sum/orf2val.size
62: end
# File lib/bio/db/kegg/expression.rb, line 98
98: def down_regulated(num=20, threshold=nil)
99: logy_minus_logx
100: ary = @orf2ratio.to_a.sort{|a, b| a[1] <=> b[1]}
101: if threshold != nil
102: i = 0
103: while ary[i][1] < threshold
104: i += 1
105: end
106: return ary[0..i]
107: else
108: return ary[0..num-1]
109: end
110: end
# File lib/bio/db/kegg/expression.rb, line 126
126: def logy_minus_logx
127: @orf2val.each do |k, v|
128: @orf2ratio[k] = (1.0/Math.log10(2))*(Math.log10(v[2]-v[3]) - Math.log10(v[0]-v[1]))
129: end
130: end
# File lib/bio/db/kegg/expression.rb, line 112
112: def regulated(num=20, threshold=nil)
113: logy_minus_logx
114: ary = @orf2ratio.to_a.sort{|a, b| b[1].abs <=> a[1].abs}
115: if threshold != nil
116: i = 0
117: while ary[i][1].abs > threshold
118: i += 1
119: end
120: return ary[0..i]
121: else
122: return ary[0..num-1]
123: end
124: end
# File lib/bio/db/kegg/expression.rb, line 46
46: def target_avg
47: sum = 0.0
48: @orf2val.values.each do |v|
49: sum += v[2] - v[3]
50: end
51: sum/orf2val.size
52: end
# File lib/bio/db/kegg/expression.rb, line 79
79: def target_sd
80: var = self.target_var
81: Math.sqrt(var)
82: end
# File lib/bio/db/kegg/expression.rb, line 64
64: def target_var
65: sum = 0.0
66: avg = self.target_avg
67: @orf2val.values.each do |v|
68: tmp = v[2] - v[3]
69: sum += (tmp - avg)*(tmp - avg)
70: end
71: sum/orf2val.size
72: end
# File lib/bio/db/kegg/expression.rb, line 84
84: def up_regulated(num=20, threshold=nil)
85: logy_minus_logx
86: ary = @orf2ratio.to_a.sort{|a, b| b[1] <=> a[1]}
87: if threshold != nil
88: i = 0
89: while ary[i][1] > threshold
90: i += 1
91: end
92: return ary[0..i]
93: else
94: return ary[0..num-1]
95: end
96: end
# File lib/bio/db/kegg/expression.rb, line 132
132: def val2rgb
133: col_unit = @max_intensity/255
134: @orf2val.each do |k, v|
135: tmp_val = ((v[0] - v[1])/col_unit).to_i
136: if tmp_val > 255
137: g = "ff"
138: else
139: g = format("%02x", tmp_val)
140: end
141: tmp_val = ((v[2] - v[3])/col_unit).to_i
142: if tmp_val > 255
143: r = "ff"
144: else
145: r = format("%02x", tmp_val)
146: end
147: @orf2rgb[k] = r + g + "00"
148: end
149:
150: end