class EvocCLI::Analyze
Public Instance Methods
aggregator_range()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 35 def aggregator_range a = Evoc::Analyze.new(options) a.aggregator_range end
all()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 54 def all Evoc::Analyze.new(options).all end
avg_changes_per_file()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 59 def avg_changes_per_file a = Evoc::Analyze.new(options) $stdout.puts __method__ $stdout.puts a.average_changes_per_file end
avg_commit_size()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 111 def avg_commit_size a = Evoc::Analyze.new(options) $stdout.puts __method__ $stdout.puts a.average_commit_size end
avg_time_between_commits()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 81 def avg_time_between_commits a = Evoc::Analyze.new(options) unit = 'hours' $stdout.puts "#{__method__}_#{unit}" $stdout.puts a.average_time_between_commits(unit: unit) end
commit_size()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 105 def commit_size a = Evoc::Analyze.new(options) a.commit_size end
commits()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 16 def commits a = Evoc::Analyze.new(options) a.commits end
create_dict()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 118 def create_dict a = Evoc::Analyze.new(options) a.create_dict end
evolution()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 10 def evolution a = Evoc::Analyze.new(options) a.evolution end
file_frequency()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 97 def file_frequency a = Evoc::Analyze.new(options) a.file_frequency end
measure_ranges()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 29 def measure_ranges a = Evoc::Analyze.new(options) a.measure_ranges end
measure_values()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 23 def measure_values a = Evoc::Analyze.new(options) a.measure_values end
num_commits()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 66 def num_commits a = Evoc::Analyze.new(options) $stdout.puts __method__ $stdout.puts a.num_commits end
num_unique_files()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 89 def num_unique_files a = Evoc::Analyze.new(options) $stdout.puts __method__ $stdout.puts a.num_unique_files end
recommendation_meta()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 124 def recommendation_meta int i = 1 ARGF.each_line do |line| rec = JSON.parse(line) tx_id = rec["tx_id"] algorithm = rec["algorithm"] ap = rec["average_precision1000"] rank = nil if !ap.nil? if ap > 0 rat = ap.rationalize # the rank is only valid if we obtained a 1 in the numerator if rat.numerator == 1 rank = rat.denominator end end else $stderr.puts "AP was nil for #{tx_id}" end applicable = !rec["rules"].empty? positive_recommendation = !rank.nil? # find the confidence of the correct item expected_outcome = nil confidence_correct = nil rank_one = nil confidence_incorrect = nil discernibility = nil ordered_rec = unique_strongest_consequents(rec["rules"]) if ordered_rec.size > 0 if positive_recommendation expected_outcome = ordered_rec[rank-1][0] confidence_correct = ordered_rec[rank-1][1] else rank_one = ordered_rec[0][0] confidence_incorrect = ordered_rec[0][1] end discernibility = (ordered_rec.group_by{|(_,confidence)| confidence}.size).to_f/ordered_rec.size end # build output hash hash = {tx_id: tx_id, algorithm: algorithm, ap: ap, rank: rank, applicable: applicable, positive_recommendation: positive_recommendation, expected_outcome: expected_outcome, confidence_correct: confidence_correct, rank_one: rank_one, confidence_incorrect: confidence_incorrect, discernibility: discernibility} begin puts hash.to_json rescue JSON::GeneratorError => e $stderr.puts "Failed to convert hash to JSON, error was #{e}\n the hash was \n#{hash}\n\n" next end $stderr.print "#{i} lines processed" i += 1 end end
time_span()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 73 def time_span a = Evoc::Analyze.new(options) unit = 'years' $stdout.puts "#{__method__}_#{unit}" $stdout.puts a.time_span(unit: unit) end
uniqueness()
click to toggle source
# File lib/evoc_cli/analyze.rb, line 48 def uniqueness a = Evoc::Analyze.new(options) $stdout.puts a.uniqueness end
Private Instance Methods
unique_strongest_consequents(rules)
click to toggle source
# File lib/evoc_cli/analyze.rb, line 191 def unique_strongest_consequents(rules) selected_consequents = Hash.new{|h,k| h[k] = 0} rules.each do |rule| lhs = rule["lhs"] rhs = rule["rhs"] confidence = rule["measures"]["m_confidence"] if !confidence.nil? if confidence.to_r.to_f > selected_consequents[rhs] selected_consequents[rhs] = confidence.to_r.to_f end else $stderr.puts "Confidence was nil for rule #{lhs} -> #{rhs}" end end return selected_consequents.sort_by {|k,v| -v} end