diff options
| author | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2020-12-30 16:39:52 +0200 |
| commit | 00a491d93733d4625ad329b2ba8237f445364b3f (patch) | |
| tree | 4b24c6fa78d7648f4bb7cefafa464bb0b063fec4 /Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs | |
| parent | 124ad4150f80c6846fdee41dbbda9848c105f6e5 (diff) | |
| download | Tango-00a491d9.tar.gz Tango-00a491d9.zip | |
merge
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs')
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs deleted file mode 100644 index 663b72228..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("process")] - public class ProcessAnalyser : IProcessAnalyzer - { - private IReader<ProcessSample> _reader; - public IReader<ProcessSample> Reader { - get { return _reader; } - set { _reader = value; } - } - - public ProcessAnalyser() - { - Reader = new ProcessReader(); - } - - public Task<List<IAnalyzerResult>> Process(List<ProcessSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - ProcessAnalyzerResult result = new ProcessAnalyzerResult(); - result.BackgroundMode = backgroundMode; - double delta = Settings.GetValueByName(AnalyzerSettingsEnum.TimeInterval); - int startPoint = delta == 0? 0 : (int)(Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation) / delta); - int endPoint = delta == 0 ? (csvRows.Count -1) : (int)(Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation) / delta); - int takePoints = endPoint > startPoint ? (endPoint - startPoint) : (csvRows.Count - 1 - startPoint); - - List<ProcessSample> rangeValues = csvRows.Skip(startPoint).Take(takePoints).ToList(); - - result.MinValue = rangeValues.Min(x => x.Value); - result.MaxValue = rangeValues.Max(x => x.Value); - result.AverageValue = rangeValues.Average(x => x.Value); - result.StandardDeviation = ProcessAnalyser.StdDev(rangeValues.Select(x => x.Value)); - - result.Result = AnalyzerResultValue.Passed; - - //Move Average data - List<Task> tasks = new List<Task>(); - int calc_count = (int)csvRows.Count() / 4; - int start_index = 0; - while (start_index < csvRows.Count()) - { - int calc_amount = (start_index + calc_count) >= (csvRows.Count() - 4) ? csvRows.Count() - start_index : calc_count; - var source_filter = csvRows.Skip(start_index).Take(calc_amount).ToList(); - tasks.Add(Task.Run(() => - { - ProcessAnalyser.Filtering(source_filter); - })); - start_index += calc_amount; - } - Task.WaitAll(tasks.ToArray()); - - result.CreateMovingAvgGraph(csvRows); - results.Add(result); - return results; - }); - } - - public static double StdDev(IEnumerable<double> values) - { - double avg = values.Average(); - double sum = values.Sum(v => (v - avg) * (v - avg)); - double denominator = values.Count() - 1; - return denominator > 0.0 ? Math.Sqrt(sum / denominator) : -1; - } - public static void Filtering(List<ProcessSample> source) - { - int periodAverage = (int)Settings.GetValueByName(AnalyzerSettingsEnum.MovingAvg); - int count = (source.Count < periodAverage) ? source.Count : source.Count - periodAverage; - for (int i = 0; i < count; i++) - { - source[i].Value = source.Skip(i).Take(periodAverage).Average(x => x.Value); - } - } - - public void GetPoints(List<ProcessSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - points.Add(new OxyPlot.DataPoint(x.TimeIntervalSec, x.Value)); - }); - } - - } - - public class ProcessAnalyzerResult : AnalyzerResultBase - { - [Description("Selected Area")] - public string Header { get; set; } - - [Description("Average Value")] - public double AverageValue { get; set; } - [Description("Max value")] - public double MaxValue { get; set; } - [Description("Min value")] - public double MinValue { get; set; } - [Description("Standard deviation value")] - public double StandardDeviation { get; set; } - - - public ProcessAnalyzerResult() - { - double from = Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation); - double to = Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation); - Header = $"from {from} to {to} seconds"; - AverageValue = MaxValue = MinValue = 0.0; - Result = AnalyzerResultValue.Undetermined; - IsShowLineChartResult = true; - } - - public void CreateMovingAvgGraph(List<ProcessSample> avgValues) - { - if (!BackgroundMode) - { - var points = LineChart.Points; - points.Clear(); - avgValues.ForEach(x => - { - points.Add(new OxyPlot.DataPoint(x.TimeIntervalSec, x.Value)); - }); - - LineChart.Title = $"Moving Average Values"; - LineChart.UpdateData(); - } - } - - } -} |
