class Ojo::Sorter
Attributes
magnitude_max[R]
results[RW]
Public Class Methods
new(results, magnitude_max)
click to toggle source
# File lib/ojo/sorter.rb, line 6 def initialize(results, magnitude_max) @results = results @magnitude_max = magnitude_max end
Public Instance Methods
sort()
click to toggle source
# File lib/ojo/sorter.rb, line 11 def sort sub_set = @results[:results] sub_set.sort! do |a, b| a_val = a[:not_same_pixel_count] ? a[:not_same_pixel_count] : 0 b_val = b[:not_same_pixel_count] ? b[:not_same_pixel_count] : 0 b_val <=> a_val end sub_set = scale_not_same_pixel_count(sub_set, magnitude_max) end
Private Instance Methods
scale_not_same_pixel_count(data, max)
click to toggle source
# File lib/ojo/sorter.rb, line 23 def scale_not_same_pixel_count(data, max) return data if data.first[:not_same_pixel_count] == 0 log_scaled_data_points = data.map { |point| Math.log(point[:not_same_pixel_count].to_s.to_f) }.map{ |point| point == -1.0/0.0 ? 0 : point } largest_data_point = log_scaled_data_points.first scale_factor = 1.0 * largest_data_point / max new_data = [] data.each_with_index do |v, i| modified = v.clone modified[:not_same_pixel_count] = log_scaled_data_points[i] / scale_factor new_data << modified end new_data end