Commit f4b7f4b6 authored by Francesco Carraro's avatar Francesco Carraro
Browse files

fc

parent 2e43c03c
Loading
Loading
Loading
Loading
+50 −52
Original line number Diff line number Diff line
@@ -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);
@@ -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>();
@@ -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 */
@@ -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>();
@@ -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)
        {