/// <summary>
        /// Called from MetricComputation
        /// </summary>
        protected override void ComputeImplementation()
        {
            Results = new SerializableDictionary <string, double>();
            IMetricComputation avgP = new AveragePrecisionQueryComputation(_matrix, _oracle);

            avgP.Compute();
            Results.Add("MeanAveragePrecision", avgP.Results.Values.Average());
        }
 /// <summary>
 /// Called from MetricComputation
 /// </summary>
 protected override void ComputeImplementation()
 {
     Results = new SerializableDictionary<string, double>();
     IMetricComputation avgP = new AveragePrecisionQueryComputation(_matrix, _oracle);
     avgP.Compute();
     Results.Add("MeanAveragePrecision", avgP.Results.Values.Average());
 }
 public override void Compute()
 {
     Logger.Trace("Starting metrics computation: " + _config.TechniqueName);
     TLSimilarityMatrix matrix = (TLSimilarityMatrix)Workspace.Load("CandidateMatrix");
     TLSimilarityMatrix oracle = (TLSimilarityMatrix)Workspace.Load("AnswerMatrix");
     #region Precision
     if (_config.Precision)
     {
         Logger.Trace("Computing precision...");
         IMetricComputation computation = new PrecisionQueryComputation(matrix, oracle);
         computation.Compute();
         ResultsController.Instance.AddResult(_config.TechniqueName, _config.DatasetName, computation);
     }
     else
     {
         Logger.Trace("Skipped precision computation.");
     }
     #endregion
     #region Recall
     if (_config.Recall)
     {
         Logger.Trace("Computing recall...");
         IMetricComputation computation = new RecallQueryComputation(matrix, oracle);
         computation.Compute();
         ResultsController.Instance.AddResult(_config.TechniqueName, _config.DatasetName, computation);
     }
     else
     {
         Logger.Trace("Skipped recall computation.");
     }
     #endregion
     #region Average Precision
     if (_config.AveragePrecision)
     {
         Logger.Trace("Computing average precision...");
         IMetricComputation computation = new AveragePrecisionQueryComputation(matrix, oracle);
         computation.Compute();
         ResultsController.Instance.AddResult(_config.TechniqueName, _config.DatasetName, computation);
     }
     else
     {
         Logger.Trace("Skipped average precision computation.");
     }
     #endregion
     #region Mean Average Precision
     if (_config.MeanAveragePrecision)
     {
         Logger.Trace("Computing mean average precision...");
         IMetricComputation computation = new MeanAveragePrecisionComputation(matrix, oracle);
         computation.Compute();
         ResultsController.Instance.AddResult(_config.TechniqueName, _config.DatasetName, computation);
     }
     else
     {
         Logger.Trace("Skipped mean average precision computation.");
     }
     #endregion
 }