class Rankum::Metrics::FCPCalculator
Public Class Methods
run(context)
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 9 def self.run context FCPCalculator.new(context).run end
Public Instance Methods
run()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 13 def run execute { context.value = calculate_fcp } end
Private Instance Methods
actual_rank()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 52 def actual_rank @actual_rank ||= rank_reader.actual_rank end
actual_rank_pairs()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 22 def actual_rank_pairs @actual_rank_pairs ||= Rankum::Utils::FCPPair.to_a(actual_rank) end
calculate_fcp()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 26 def calculate_fcp total_pairs = perfect_rank_pair_count actual_rank_pairs.each do |pair| if perfect_rank_pairs[pair] > 0 perfect_rank_pairs[pair] -= 1 end end not_matched_pairs = perfect_rank_pair_count result = (total_pairs - not_matched_pairs).to_f / total_pairs result > 0 ? result : 0 end
perfect_rank()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 48 def perfect_rank @perfect_rank ||= rank_reader.perfect_rank end
perfect_rank_pair_count()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 40 def perfect_rank_pair_count perfect_rank_pairs.reduce(0) { |acc, (k,v)| acc += v } end
perfect_rank_pairs()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 18 def perfect_rank_pairs @perfect_rank_pairs ||= Rankum::Utils::FCPPair.to_h(perfect_rank) end
rank_reader()
click to toggle source
# File lib/rankum/metrics/fcp_calculator.rb, line 44 def rank_reader @reader ||= context.rank_reader end