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."); } }
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); }
/// <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); } }
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; }
/// <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); }
/// <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; } }