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 ) ) ); }
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; }