Loading INAF.Apps.Uwp.SLabDataManager/ViewModels/UserControlViewModels/ChartPanels/SmoothingViewModel.cs +50 −52 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region smoothing spectrum dict #region SMOOTHING SPECTRUM DICT private void addOrUpdateIsSmoothingSpectrumTypeSavedOnCloudDictionary(SpectrumType spectrumType, SmoothingType smoothingType, bool isSaved) { Tuple<SpectrumType, SmoothingType> tuple = new Tuple<SpectrumType, SmoothingType>(spectrumType, smoothingType); Loading @@ -101,7 +101,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region methods #region METHODS public async Task checkSmoothingSpectraTypesAreSavedOnCloudAsync() { var remoteOperationsManager = serviceProvider.GetRequiredService<RemoteOperationsManager>(); Loading Loading @@ -228,7 +228,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region smoothing methods #region SMOOTHING public async Task<AppProcessingResult> applySmoothingBySegmentsAsync(SpectrumType destSpectrumType) { /* clone spectrum for smoothing */ Loading @@ -253,8 +253,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region retrieve values from cloud #region fit #region GET/SET VALUES ON CLOUD private async Task initFitFunctionsAsync() { var fitMethodsContainer = serviceProvider.GetRequiredService<FitMethodsHelper>(); Loading Loading @@ -321,55 +320,54 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels ExMsg = "SmoothingSettingSaveErrorMessage".GetText(); } #endregion #endregion #region smoothing procedure public async Task<(IChartSpectrumModel smoothedSpectrum, bool isOk)> applySmoothingToSegments(IChartSpectrumModel inputSpectrum) { (IChartSpectrumModel smoothedSpectrum, bool isOk) result = await Task.Run(() => { bool isOk = true; try { var savitzkyGolayHelper = serviceProvider.GetRequiredService<SavitzkyGolayHelper>(); foreach (var boundariesItem in SmoothingBySegmentsContainer.Segments) { var segment = inputSpectrum.Elements.Where(x => x.X >= boundariesItem.XStart && x.X <= boundariesItem.XEnd); var filteredValues = savitzkyGolayHelper.applySavitzkyGolayFilter(segment.Select(x => x.Y).ToArray(), boundariesItem.WindowSize, boundariesItem.PolynomialOrder); int elementsNum = segment.Count(); for (int i = 0; i < elementsNum; i++) { segment.ElementAt(i).updateY(filteredValues[i]); } } } catch (Exception ex) { isOk = false; logger.Write<SmoothingViewModel>($"{nameof(applySmoothingToSegments)} - ex: {ex.Message}", Serilog.Events.LogEventLevel.Error); } return (inputSpectrum, isOk); }); if (!result.isOk) return result; /* fill spectrum-model with values for smoothing */ SmoothingSettingsModel smoothingSettings = new SmoothingSettingsModel() { Segments = getSegments(inputSpectrum.Type) }; ((ChartSpectrumOfTypeSmoothedModel)inputSpectrum).SmoothingSettings = smoothingSettings; return result; } //public async Task<(IChartSpectrumModel smoothedSpectrum, bool isOk)> applySmoothingToSegments(IChartSpectrumModel inputSpectrum) //{ // (IChartSpectrumModel smoothedSpectrum, bool isOk) result = await Task.Run(() => // { // bool isOk = true; // try // { // var savitzkyGolayHelper = serviceProvider.GetRequiredService<SavitzkyGolayHelper>(); // foreach (var boundariesItem in SmoothingBySegmentsContainer.Segments) // { // var segment = inputSpectrum.Elements.Where(x => x.X >= boundariesItem.XStart && x.X <= boundariesItem.XEnd); // var filteredValues = savitzkyGolayHelper.applySavitzkyGolayFilter(segment.Select(x => x.Y).ToArray(), // boundariesItem.WindowSize, // boundariesItem.PolynomialOrder); // int elementsNum = segment.Count(); // for (int i = 0; i < elementsNum; i++) // { // segment.ElementAt(i).updateY(filteredValues[i]); // } // } // } // catch (Exception ex) // { // isOk = false; // logger.Write<SmoothingViewModel>($"{nameof(applySmoothingToSegments)} - ex: {ex.Message}", Serilog.Events.LogEventLevel.Error); // } // return (inputSpectrum, isOk); // }); // if (!result.isOk) // return result; // /* fill spectrum-model with values for smoothing */ // SmoothingSettingsModel smoothingSettings = new SmoothingSettingsModel() // { // Segments = getSegments(inputSpectrum.Type) // }; // ((ChartSpectrumOfTypeSmoothedModel)inputSpectrum).SmoothingSettings = smoothingSettings; // return result; //} public async Task<(IChartSpectrumModel filteredSpectrum, bool isOk)> applySmoothingToSpectrum(IChartSpectrumModel inputSpectrum) { Loading Loading
INAF.Apps.Uwp.SLabDataManager/ViewModels/UserControlViewModels/ChartPanels/SmoothingViewModel.cs +50 −52 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region smoothing spectrum dict #region SMOOTHING SPECTRUM DICT private void addOrUpdateIsSmoothingSpectrumTypeSavedOnCloudDictionary(SpectrumType spectrumType, SmoothingType smoothingType, bool isSaved) { Tuple<SpectrumType, SmoothingType> tuple = new Tuple<SpectrumType, SmoothingType>(spectrumType, smoothingType); Loading @@ -101,7 +101,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region methods #region METHODS public async Task checkSmoothingSpectraTypesAreSavedOnCloudAsync() { var remoteOperationsManager = serviceProvider.GetRequiredService<RemoteOperationsManager>(); Loading Loading @@ -228,7 +228,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region smoothing methods #region SMOOTHING public async Task<AppProcessingResult> applySmoothingBySegmentsAsync(SpectrumType destSpectrumType) { /* clone spectrum for smoothing */ Loading @@ -253,8 +253,7 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels } #endregion #region retrieve values from cloud #region fit #region GET/SET VALUES ON CLOUD private async Task initFitFunctionsAsync() { var fitMethodsContainer = serviceProvider.GetRequiredService<FitMethodsHelper>(); Loading Loading @@ -321,55 +320,54 @@ namespace INAF.Apps.Uwp.SLabDataManager.ViewModels.UserControlViewModels ExMsg = "SmoothingSettingSaveErrorMessage".GetText(); } #endregion #endregion #region smoothing procedure public async Task<(IChartSpectrumModel smoothedSpectrum, bool isOk)> applySmoothingToSegments(IChartSpectrumModel inputSpectrum) { (IChartSpectrumModel smoothedSpectrum, bool isOk) result = await Task.Run(() => { bool isOk = true; try { var savitzkyGolayHelper = serviceProvider.GetRequiredService<SavitzkyGolayHelper>(); foreach (var boundariesItem in SmoothingBySegmentsContainer.Segments) { var segment = inputSpectrum.Elements.Where(x => x.X >= boundariesItem.XStart && x.X <= boundariesItem.XEnd); var filteredValues = savitzkyGolayHelper.applySavitzkyGolayFilter(segment.Select(x => x.Y).ToArray(), boundariesItem.WindowSize, boundariesItem.PolynomialOrder); int elementsNum = segment.Count(); for (int i = 0; i < elementsNum; i++) { segment.ElementAt(i).updateY(filteredValues[i]); } } } catch (Exception ex) { isOk = false; logger.Write<SmoothingViewModel>($"{nameof(applySmoothingToSegments)} - ex: {ex.Message}", Serilog.Events.LogEventLevel.Error); } return (inputSpectrum, isOk); }); if (!result.isOk) return result; /* fill spectrum-model with values for smoothing */ SmoothingSettingsModel smoothingSettings = new SmoothingSettingsModel() { Segments = getSegments(inputSpectrum.Type) }; ((ChartSpectrumOfTypeSmoothedModel)inputSpectrum).SmoothingSettings = smoothingSettings; return result; } //public async Task<(IChartSpectrumModel smoothedSpectrum, bool isOk)> applySmoothingToSegments(IChartSpectrumModel inputSpectrum) //{ // (IChartSpectrumModel smoothedSpectrum, bool isOk) result = await Task.Run(() => // { // bool isOk = true; // try // { // var savitzkyGolayHelper = serviceProvider.GetRequiredService<SavitzkyGolayHelper>(); // foreach (var boundariesItem in SmoothingBySegmentsContainer.Segments) // { // var segment = inputSpectrum.Elements.Where(x => x.X >= boundariesItem.XStart && x.X <= boundariesItem.XEnd); // var filteredValues = savitzkyGolayHelper.applySavitzkyGolayFilter(segment.Select(x => x.Y).ToArray(), // boundariesItem.WindowSize, // boundariesItem.PolynomialOrder); // int elementsNum = segment.Count(); // for (int i = 0; i < elementsNum; i++) // { // segment.ElementAt(i).updateY(filteredValues[i]); // } // } // } // catch (Exception ex) // { // isOk = false; // logger.Write<SmoothingViewModel>($"{nameof(applySmoothingToSegments)} - ex: {ex.Message}", Serilog.Events.LogEventLevel.Error); // } // return (inputSpectrum, isOk); // }); // if (!result.isOk) // return result; // /* fill spectrum-model with values for smoothing */ // SmoothingSettingsModel smoothingSettings = new SmoothingSettingsModel() // { // Segments = getSegments(inputSpectrum.Type) // }; // ((ChartSpectrumOfTypeSmoothedModel)inputSpectrum).SmoothingSettings = smoothingSettings; // return result; //} public async Task<(IChartSpectrumModel filteredSpectrum, bool isOk)> applySmoothingToSpectrum(IChartSpectrumModel inputSpectrum) { Loading