Sha256: 938ba7357f91f350c933472b501b4c63abc61cf3cc4394a2d306c354e4095bfb
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
require_relative "../utils/fcp_pair" require_relative "../utils/interactor" module Rankum module Metrics class FCPCalculator include Rankum::Utils::Interactor def self.run context FCPCalculator.new(context).run end def run execute { context.value = calculate_fcp } end private def perfect_rank_pairs @perfect_rank_pairs ||= Rankum::Utils::FCPPair.to_h(perfect_rank) end def actual_rank_pairs @actual_rank_pairs ||= Rankum::Utils::FCPPair.to_a(actual_rank) end 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 def perfect_rank_pair_count perfect_rank_pairs.reduce(0) { |acc, (k,v)| acc += v } end def rank_reader @reader ||= context.rank_reader end def perfect_rank @perfect_rank ||= rank_reader.perfect_rank end def actual_rank @actual_rank ||= rank_reader.actual_rank end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rankum-1.1.0 | lib/rankum/metrics/fcp_calculator.rb |
rankum-1.0.0 | lib/rankum/metrics/fcp_calculator.rb |