class Iroki::Color::TwoGroupGradient
Attributes
g1_counts[RW]
g1_rabunds[RW]
g2_counts[RW]
g2_rabunds[RW]
Public Class Methods
new(samples, g1_counts, g2_counts, min_lumin, max_lumin)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 24 def initialize samples, g1_counts, g2_counts, min_lumin, max_lumin assert(samples.count == g1_counts.count && g1_counts.count == g2_counts.count, "Samples and counts are different lengths. " + "Check your biom file.") @min_lumin = min_lumin @max_lumin = max_lumin @samples = samples @g1_counts = g1_counts @g2_counts = g2_counts @g1_rabunds = counts_to_rabunds g1_counts @g2_rabunds = counts_to_rabunds g2_counts @color_hex_codes = calc_hex_codes @g1_rabunds, @g2_rabunds end
Public Instance Methods
calc_hex_codes(g1_rabunds, g2_rabunds)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 94 def calc_hex_codes g1_rabunds, g2_rabunds g1_rabunds.zip(g2_rabunds).map do |ra1, ra2| if ra1.zero? && ra2.zero? Iroki::Color::GRAY.html else hex_code ra1, ra2 end end end
hex_code(ra1, ra2)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 84 def hex_code ra1, ra2 perc = mix_percent ra1, ra2 col = Iroki::Color::GREEN.mix_with Iroki::Color::BLUE, perc col.luminosity = lumin_level ra1, ra2 col.html end
lumin_level(ra1, ra2)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 68 def lumin_level ra1, ra2 if ra1 > ra2 scale_reverse ra1, new_min=@min_lumin, new_max=@max_lumin, old_min=0.0, old_max=1.0 else scale_reverse ra2, new_min=@min_lumin, new_max=@max_lumin, old_min=0.0, old_max=1.0 end end
mix_percent(ra1, ra2)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 64 def mix_percent ra1, ra2 1 - percent_of_group1_color(ra1, ra2) end
percent_of_group1_color(ra1, ra2)
click to toggle source
# File lib/iroki/color/two_group_gradient.rb, line 46 def percent_of_group1_color ra1, ra2 if ra1 > ra2 1 - scale(ra2 / ra1, new_min=0.0, new_max=0.5, old_min=0.0, old_max=1.0) elsif ra1 < ra2 scale(ra1 / ra2, new_min=0.0, new_max=0.5, old_min=0.0, old_max=1.0) else 0.5 end end