Ejemplo n.º 1
0
        private ModuleState(
            _ModuleStateDTO dto,
            ISimEvidence evidence,
            IAppService appService,
            EstimationDesigns estimationDesigns
            )
        {
            _estimationDesigns = estimationDesigns;

            PriorsState.SelectedPrior = dto.PriorsState?.SelectedPrior;

            LikelihoodState.SelectedOutput = dto.LikelihoodState?.SelectedOutput;

            DesignState.Iterations = dto.DesignState?.Iterations;
            DesignState.BurnIn     = dto.DesignState?.BurnIn;
            DesignState.Chains     = dto.DesignState?.Chains;

            SimulationState.SelectedParameter = dto.SimulationState?.SelectedParameter;

            if (!dto.PriorStates.IsNullOrEmpty())
            {
                _priorStates = dto.PriorStates
                               .Select(ps =>
                {
                    var name               = ps.Name.AssertNotNull();
                    var distributionType   = Enum.TryParse(ps.DistributionType, out DistributionType dt) ? dt : DistributionType.None;
                    var distributionStates = Distribution.DeserializeDistributions(ps.DistributionStates.AssertNotNull());
                    var isSelected         = ps.IsSelected;
                    return(new ParameterState(name, distributionType, distributionStates, isSelected));
                })
                               .ToArr();
            }

            if (!dto.OutputStates.IsNullOrEmpty())
            {
                _outputStates = dto.OutputStates
                                .Select(os =>
                {
                    var name             = os.Name.AssertNotNull();
                    var errorModelType   = Enum.TryParse(os.ErrorModelType, out ErrorModelType emt) ? emt : ErrorModelType.None;
                    var errorModelStates = ErrorModel.DeserializeErrorModels(os.ErrorModelStates.AssertNotNull());
                    var isSelected       = os.IsSelected;
                    return(new OutputState(name, errorModelType, errorModelStates, isSelected));
                })
                                .ToArr();
            }

            _selectedObservations = dto.SelectedObservationsReferences.IsNullOrEmpty()
        ? default
        : dto.SelectedObservationsReferences
                                    .Select(r => evidence.GetObservations(r))
                                    .Somes()
                                    .ToArr();

            if (dto.EstimationDesign.IsAString())
            {
                try
                {
                    var createdOn = dto.EstimationDesign.FromDirectoryName();
                    EstimationDesign = estimationDesigns.Load(createdOn);
                    var pathToEstimationDesign = estimationDesigns.GetPathToEstimationDesign(EstimationDesign);
                    ChainStates    = ChainState.Load(pathToEstimationDesign);
                    PosteriorState = PosteriorState.Load(pathToEstimationDesign);
                }
                catch (Exception) { /* logged elsewhere */ }
            }

            RootExportDirectory = dto.RootExportDirectory;
            OpenAfterExport     = dto.OpenAfterExport;

            _autoApplyParameterSharedState    = dto.AutoApplyParameterSharedState;
            _autoShareParameterSharedState    = dto.AutoShareParameterSharedState;
            _autoApplyElementSharedState      = dto.AutoApplyElementSharedState;
            _autoShareElementSharedState      = dto.AutoShareElementSharedState;
            _autoApplyObservationsSharedState = dto.AutoApplyObservationsSharedState;
            _autoShareObservationsSharedState = dto.AutoShareObservationsSharedState;

            _reactiveSafeInvoke = appService.GetReactiveSafeInvoke();

            _subscriptions = new CompositeDisposable(

                evidence.ObservationsChanges.Subscribe(
                    _reactiveSafeInvoke.SuspendAndInvoke <(Arr <SimObservations> Observations, ObservableQualifier ObservableQualifier)>(
                        ObserveEvidenceObservationsChanges
                        )
                    )

                );
        }
Ejemplo n.º 2
0
        private ModuleState(_ModuleStateDTO dto, SensitivityDesigns sensitivityDesigns)
        {
            ParametersState.SelectedParameter = dto.ParametersState?.SelectedParameter;

            DesignState.SensitivityMethod =
                Enum.TryParse(dto.DesignState?.SensitivityMethod, out SensitivityMethod sensitivityMethod)
        ? sensitivityMethod
        : default(SensitivityMethod?);

            DesignState.NoOfRuns    = dto.DesignState?.NoOfRuns;
            DesignState.NoOfSamples = dto.DesignState?.NoOfSamples;

            DesignState.SelectedElementName = dto.DesignState?.SelectedElementName;

            if (dto.TraceState == default)
            {
                TraceState.VerticalAxisMinimum         = 0d;
                TraceState.VerticalAxisAbsoluteMinimum = 0d;
            }
            else
            {
                TraceState.ViewHeight = dto.TraceState.ViewHeight;
                TraceState.ChartTitle = dto.TraceState.ChartTitle;
                TraceState.XAxisTitle = dto.TraceState.XAxisTitle;
                TraceState.YAxisTitle = dto.TraceState.YAxisTitle;
                if (dto.TraceState?.MarkerFill.IsAString() == true)
                {
                    TraceState.MarkerFill = OxyColor.Parse(dto.TraceState.MarkerFill);
                }
                if (dto.TraceState?.SeriesColor.IsAString() == true)
                {
                    TraceState.SeriesColor = OxyColor.Parse(dto.TraceState.SeriesColor);
                }
                TraceState.HorizontalAxisMinimum         = dto.TraceState?.HorizontalAxisMinimum ?? TraceState.HorizontalAxisMinimum;
                TraceState.HorizontalAxisMaximum         = dto.TraceState?.HorizontalAxisMaximum ?? TraceState.HorizontalAxisMaximum;
                TraceState.HorizontalAxisAbsoluteMinimum = dto.TraceState?.HorizontalAxisAbsoluteMinimum ?? TraceState.HorizontalAxisAbsoluteMinimum;
                TraceState.HorizontalAxisAbsoluteMaximum = dto.TraceState?.HorizontalAxisAbsoluteMaximum ?? TraceState.HorizontalAxisAbsoluteMaximum;
                TraceState.VerticalAxisMinimum           = dto.TraceState?.VerticalAxisMinimum ?? TraceState.VerticalAxisMinimum;
                TraceState.VerticalAxisMaximum           = dto.TraceState?.VerticalAxisMaximum ?? TraceState.VerticalAxisMaximum;
                TraceState.VerticalAxisAbsoluteMinimum   = dto.TraceState?.VerticalAxisAbsoluteMinimum ?? TraceState.VerticalAxisAbsoluteMinimum;
                TraceState.VerticalAxisAbsoluteMaximum   = dto.TraceState?.VerticalAxisAbsoluteMaximum ?? TraceState.VerticalAxisAbsoluteMaximum;
            }

            if (dto.LowryState == default)
            {
                LowryState.YAxisTitle = "Total (= Main Effect + Interaction)";
            }
            else
            {
                LowryState.ChartTitle = dto.LowryState.ChartTitle;
                LowryState.XAxisTitle = dto.LowryState.XAxisTitle;
                LowryState.YAxisTitle = dto.LowryState.YAxisTitle;
                if (dto.LowryState.InteractionsFillColor?.IsAString() == true)
                {
                    LowryState.InteractionsFillColor = OxyColor.Parse(dto.LowryState.InteractionsFillColor);
                }
                if (dto.LowryState.MainEffectsFillColor?.IsAString() == true)
                {
                    LowryState.MainEffectsFillColor = OxyColor.Parse(dto.LowryState.MainEffectsFillColor);
                }
                if (dto.LowryState.SmokeFill?.IsAString() == true)
                {
                    LowryState.SmokeFill = OxyColor.Parse(dto.LowryState.SmokeFill);
                }
            }

            MeasuresState.SelectedOutputName = dto.MeasuresState?.SelectedOutputName;

            if (!dto.ParameterStates.IsNullOrEmpty())
            {
                _parameterStates = dto.ParameterStates
                                   .Select(ps =>
                {
                    var name               = ps.Name.AssertNotNull();
                    var distributionType   = Enum.TryParse(ps.DistributionType, out DistributionType dt) ? dt : DistributionType.None;
                    var distributionStates = Distribution.DeserializeDistributions(ps.DistributionStates.AssertNotNull());
                    var isSelected         = ps.IsSelected;
                    return(new ParameterState(name, distributionType, distributionStates, isSelected));
                })
                                   .ToArr();
            }

            if (dto.SensitivityDesign.IsAString())
            {
                try
                {
                    var createdOn = dto.SensitivityDesign.FromDirectoryName();
                    SensitivityDesign = sensitivityDesigns.Load(createdOn);
                    Trace             = sensitivityDesigns.LoadTrace(SensitivityDesign);
                    Ranking           = sensitivityDesigns.LoadRanking(SensitivityDesign);
                }
                catch (Exception) { /* logged elsewhere */ }
            }

            RootExportDirectory = dto.RootExportDirectory;
            OpenAfterExport     = dto.OpenAfterExport;

            _autoApplyParameterSharedState    = dto.AutoApplyParameterSharedState;
            _autoShareParameterSharedState    = dto.AutoShareParameterSharedState;
            _autoApplyElementSharedState      = dto.AutoApplyElementSharedState;
            _autoShareElementSharedState      = dto.AutoShareElementSharedState;
            _autoApplyObservationsSharedState = dto.AutoApplyObservationsSharedState;
            _autoShareObservationsSharedState = dto.AutoShareObservationsSharedState;
        }