18 using System.Collections.Generic;
22 using TraceLabSDK.Types;
23 using TraceLabSDK.Types.Contests;
25 namespace TraceLab.Components.DevelopmentKit.Metrics.Traceability
34 private const string _name =
"Average Precision (ranklist granularity)";
35 private const string _description =
"Average precision measures average of the precision values for each correct link. This metric is calculated on the total ranklist.";
40 public override string Name
48 public override string Description
50 get {
return _description; }
53 private TLSimilarityMatrix _matrix;
54 private TLSimilarityMatrix _oracle;
66 _matrix = candidateMatrix;
67 _oracle = answerMatrix;
75 Results =
new SerializableDictionary<string, double>();
76 double sumOfPrecisions = 0.0;
79 TLLinksList links = _matrix.AllLinks;
81 foreach (TLSingleLink link
in links)
84 if (_oracle.IsLinkAboveThreshold(link.SourceArtifactId, link.TargetArtifactId))
87 sumOfPrecisions += correctSoFar / (double)currentLink;
90 Results.Add(
"AveragePrecision", sumOfPrecisions / _oracle.AllLinks.Count);
98 BoxSummaryData data =
new BoxSummaryData(Name, Description);
99 data.AddPoint(
new BoxPlotPoint(Results.Values.ToArray()));