4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/bioinform/conversion_algorithms/pcm2pwm_converter.rb', line 4
def self.convert(pcm, parameters = {})
default_parameters = {pseudocount: Math.log(pcm.count),
probability: (pcm.probability || [0.25, 0.25, 0.25, 0.25])
}
parameters = default_parameters.merge(parameters)
probability = parameters[:probability]
pseudocount = parameters[:pseudocount]
matrix = pcm.each_position.map do |pos|
pos.each_index.map do |index|
Math.log((pos[index] + probability[index] * pseudocount) / (probability[index]*(pcm.count + pseudocount)) )
end
end
PWM.new(pcm.get_parameters.merge(matrix: matrix))
end
|