public override void Compute()
        {
            TLExperimentsResultsCollection allExperimentResults = (TLExperimentsResultsCollection)Workspace.Load("ExperimentResults");

            if (allExperimentResults == null)
            {
                throw new ComponentException("Received null results");
            }
            if (allExperimentResults != null && allExperimentResults.Count > 0)
            {
                SortedDictionary <string, Dictionary <string, Chart> > allResults = ResultsVisualizationHelper.ProcessResults(allExperimentResults);
                if (allResults != null && allResults.Count > 0)
                {
                    ResultsVisualizationWindow resultsWindow = new ResultsVisualizationWindow(allResults);
                    resultsWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
                    resultsWindow.ShowDialog();
                }
                else
                {
                    throw new ComponentException("Results could not be displayed because no metrics were found. Check selection on Metric Computation Component.");
                }
            }
            else
            {
                throw new ComponentException("Results could not be displayed because TLExperimentsResultsCollection is null or empty.");
            }
        }
예제 #2
0
        public override void Compute()
        {
            TLExperimentsResultsCollection results = ResultsController.Instance.GenerateSummaryResults();

            if (results.Count == 0)
            {
                throw new ComponentException("No results found.");
            }
            Workspace.Store("ExperimentResults", results);
        }
        public TLExperimentsResultsCollection ComputeResults()
        {
            TLExperimentsResultsCollection allResults = new TLExperimentsResultsCollection();

            foreach (GroupOfTracingResults <T> tracingResults in m_allTracingResults)
            {
                var datasetResults = ComputeMetricResultsForDataset(tracingResults);
                allResults.Add(datasetResults);
            }

            return(allResults);
        }
예제 #4
0
 /// <summary>
 /// Generates a TLExperimentsResultsCollection containing summary data of results.
 /// This operation is thread-safe.
 /// </summary>
 /// <returns>Results summaries</returns>
 public TLExperimentsResultsCollection GenerateSummaryResults()
 {
     lock (_lock)
     {
         TLExperimentsResultsCollection ExperimentsResultsCollection = new TLExperimentsResultsCollection();
         // iterate over techniques
         foreach (string technique in _techniques)
         {
             TLExperimentResults TechniqueResults = new TLExperimentResults(technique);
             // iterate over datasets
             foreach (string dataset in _datasets)
             {
                 // get list of results for technique + dataset
                 List <IMetricComputation> list = null;
                 string key = ComputeKey(technique, dataset);
                 _results.TryGetValue(key, out list);
                 if (list != null)
                 {
                     DatasetResults data = new DatasetResults(dataset);
                     // add results to dataset
                     foreach (IMetricComputation computation in list)
                     {
                         if (!computation.HasRun)
                         {
                             computation.Compute();
                         }
                         data.AddMetric(computation.GenerateSummary());
                     }
                     // add dataset to technique
                     if (data.Metrics.Count() > 0)
                     {
                         TechniqueResults.AddDatasetResult(data);
                     }
                 }
             }
             // add technique to collection
             if (TechniqueResults.DatasetsResults.Count() > 0)
             {
                 ExperimentsResultsCollection.Add(TechniqueResults);
             }
         }
         return(ExperimentsResultsCollection);
     }
 }
예제 #5
0
        public override void Compute()
        {
            //load dataset from workspace
            TLDatasetsList datasets = (TLDatasetsList)Workspace.Load("datasets");
            TLSimilarityMatricesCollection resultSimilarityMatrices = (TLSimilarityMatricesCollection)Workspace.Load("resultSimilarityMatrices");

            //wrap result similarity matrix into TracingResult
            var tracingResults = Adapt(resultSimilarityMatrices, "Current technique");

            MetricComputationEngine engine = new MetricComputationEngine(datasets, Logger, m_config);

            engine.AddTracingResults(tracingResults);

            TLExperimentsResultsCollection allExperimentResults = engine.ComputeResults();

            //set base data from which all metrics were computed from
            allExperimentResults["Current technique"].BaseData = resultSimilarityMatrices;

            //check if baseline results are in the workspace
            var baseline = (TLExperimentResults)Workspace.Load("BASELINE");

            if (baseline != null)
            {
                //if so, add them to collection of experiment results, so that it can be viewed by GUI component
                allExperimentResults.Add(baseline);

                TLSimilarityMatricesCollection baselineMatrices = baseline.BaseData as TLSimilarityMatricesCollection;

                //compute the score
                allExperimentResults["Current technique"].Score = ScoreComputation.ComputeScore(baselineMatrices, resultSimilarityMatrices, datasets, m_config);
            }
            else
            {
                allExperimentResults["Current technique"].Score = 0.0;
            }

            Workspace.Store("comparedResults", allExperimentResults);
            Workspace.Store("currentResults", allExperimentResults["Current technique"]);
        }
        /// <summary>
        /// Processes the results and stores them in a collection were results are grouped by dataset first
        /// and metric second.
        /// </summary>
        /// <param name="allResults">Results across all datasets and metrics.</param>
        /// <returns>
        /// Collection of results categorized by datasets and metrics.
        /// </returns>
        public static SortedDictionary<string, Dictionary<string, Chart>> ProcessResults(TLExperimentsResultsCollection allResults)
        {
            SortedDictionary<string, Dictionary<string, Chart>> AllDatasetMetricCharts = new SortedDictionary<string, Dictionary<string, Chart>>();

            foreach (TLExperimentResults expResults in allResults)
            {
                // Technique Name
                string techniqueName = expResults.TechniqueName;

                foreach (DatasetResults result in expResults.DatasetsResults)
                {
                    // Dataset Name
                    string datasetName = result.DatasetName;

                    foreach (Metric metric in result.Metrics)
                    {
                        StoreTechnique(AllDatasetMetricCharts, datasetName, metric, techniqueName);
                    }
                }
            }

            return AllDatasetMetricCharts;
        }
예제 #7
0
        /// <summary>
        /// Processes the results and stores them in a collection were results are grouped by dataset first
        /// and metric second.
        /// </summary>
        /// <param name="allResults">Results across all datasets and metrics.</param>
        /// <returns>
        /// Collection of results categorized by datasets and metrics.
        /// </returns>
        public static SortedDictionary <string, Dictionary <string, Chart> > ProcessResults(TLExperimentsResultsCollection allResults)
        {
            SortedDictionary <string, Dictionary <string, Chart> > AllDatasetMetricCharts = new SortedDictionary <string, Dictionary <string, Chart> >();

            foreach (TLExperimentResults expResults in allResults)
            {
                // Technique Name
                string techniqueName = expResults.TechniqueName;

                foreach (DatasetResults result in expResults.DatasetsResults)
                {
                    // Dataset Name
                    string datasetName = result.DatasetName;

                    foreach (Metric metric in result.Metrics)
                    {
                        StoreTechnique(AllDatasetMetricCharts, datasetName, metric, techniqueName);
                    }
                }
            }

            return(AllDatasetMetricCharts);
        }
예제 #8
0
 /// <summary>
 /// Generates a TLExperimentsResultsCollection containing summary data of results.
 /// This operation is thread-safe.
 /// </summary>
 /// <returns>Results summaries</returns>
 public TLExperimentsResultsCollection GenerateSummaryResults()
 {
     lock (_lock)
     {
         TLExperimentsResultsCollection ExperimentsResultsCollection = new TLExperimentsResultsCollection();
         // iterate over techniques
         foreach (string technique in _techniques)
         {
             TLExperimentResults TechniqueResults = new TLExperimentResults(technique);
             // iterate over datasets
             foreach (string dataset in _datasets)
             {
                 // get list of results for technique + dataset
                 List<IMetricComputation> list = null;
                 string key = ComputeKey(technique, dataset);
                 _results.TryGetValue(key, out list);
                 if (list != null)
                 {
                     DatasetResults data = new DatasetResults(dataset);
                     // add results to dataset
                     foreach (IMetricComputation computation in list)
                     {
                         if (!computation.HasRun)
                         {
                             computation.Compute();
                         }
                         data.AddMetric(computation.GenerateSummary());
                     }
                     // add dataset to technique
                     if (data.Metrics.Count() > 0)
                     {
                         TechniqueResults.AddDatasetResult(data);
                     }
                 }
             }
             // add technique to collection
             if (TechniqueResults.DatasetsResults.Count() > 0)
             {
                 ExperimentsResultsCollection.Add(TechniqueResults);
             }
         }
         return ExperimentsResultsCollection;
     }
 }