Beispiel #1
0
 protected override void Context()
 {
     base.Context();
     _sourceParameterSelection = A.Fake <SensitivityParameter>();
     _parameterSelection       = A.Fake <ParameterSelection>();
     _sourceParameterSelection.ParameterSelection = _parameterSelection;
 }
        protected override void Context()
        {
            _sensitivityAnalysisParametersView = A.Fake <ISensitivityAnalysisParametersView>();
            _sensitivityParameterFactory       = A.Fake <ISensitivityParameterFactory>();
            _sensitivityParameterToSensitivityParameterDTOMapper = A.Fake <ISensitivityParameterToSensitivityParameterDTOMapper>();
            _sensitivityAnalysisSetNMaxPresenter  = A.Fake <ISensitivityAnalysisSetValuePresenter>();
            _sensitivityAnalysisSetRangePresenter = A.Fake <ISensitivityAnalysisSetValuePresenter>();
            _sensitivityAnalysisTask = A.Fake <ISensitivityAnalysisTask>();

            sut = new SensitivityAnalysisParametersPresenter(_sensitivityAnalysisParametersView, _sensitivityParameterFactory,
                                                             _sensitivityParameterToSensitivityParameterDTOMapper, _sensitivityAnalysisSetNMaxPresenter,
                                                             _sensitivityAnalysisSetRangePresenter, _sensitivityAnalysisTask);
            _sensitivityAnalysis = new SensitivityAnalysis();

            _parameterDTO = A.Fake <IParameterDTO>();
            A.CallTo(() => _parameterDTO.Value).Returns(4.0);
            _selectedSensitivityParameter   = A.Fake <SensitivityParameter>();
            _unSelectedSensitivityParameter = A.Fake <SensitivityParameter>();
            _sensitivityAnalysis.AddSensitivityParameter(_selectedSensitivityParameter);
            _sensitivityAnalysis.AddSensitivityParameter(_unSelectedSensitivityParameter);
            A.CallTo(() => _selectedSensitivityParameter.NumberOfStepsParameter).Returns(new Parameter());
            A.CallTo(() => _selectedSensitivityParameter.VariationRangeParameter).Returns(new Parameter());
            A.CallTo(() => _unSelectedSensitivityParameter.NumberOfStepsParameter).Returns(new Parameter());
            A.CallTo(() => _unSelectedSensitivityParameter.VariationRangeParameter).Returns(new Parameter());
            _sensitivityParameterDTO = new SensitivityParameterDTO(_selectedSensitivityParameter);
            A.CallTo(() => _sensitivityAnalysisParametersView.SelectedParameters()).Returns(new[] { _sensitivityParameterDTO });

            A.CallTo(() => _sensitivityParameterToSensitivityParameterDTOMapper.MapFrom(_selectedSensitivityParameter)).Returns(_sensitivityParameterDTO);
            A.CallTo(() => _sensitivityParameterToSensitivityParameterDTOMapper.MapFrom(_unSelectedSensitivityParameter)).Returns(new SensitivityParameterDTO(_unSelectedSensitivityParameter));
        }
Beispiel #3
0
        private PKParameterSensitivity calculateParameterSensitivity(SensitivityParameter sensitivityParameter, int sensitivityParameterIndex, VariationData variationData, QuantityPKParameter pkParameter)
        {
            var defaultParameterValue = sensitivityParameter.DefaultValue;
            var defaultPKValue        = pkParameter.Values[variationData.DefaultVariationId];
            var allVariations         = variationData.VariationsFor(sensitivityParameter.Name);

            if (float.IsNaN(defaultPKValue) || defaultPKValue == 0 || defaultParameterValue == 0 || !allVariations.Any())
            {
                return(null);
            }

            var sensitivity = new PKParameterSensitivity
            {
                ParameterName   = sensitivityParameter.Name,
                PKParameterName = pkParameter.Name,
                QuantityPath    = pkParameter.QuantityPath,
                Value           = double.NaN
            };

            var delta = (from variation in allVariations
                         let deltaP = difference(variation.Variation[sensitivityParameterIndex], defaultParameterValue)
                                      let deltaPK = difference(pkParameter.Values[variation.VariationId], defaultPKValue)
                                                    select deltaPK / deltaP).Sum();

            sensitivity.Value = delta * defaultParameterValue / defaultPKValue / allVariations.Count;

            if (Math.Abs(sensitivity.Value) < Constants.SENSITIVITY_THRESHOLD)
            {
                sensitivity.Value = 0.0;
            }

            return(sensitivity);
        }
        protected override void Context()
        {
            base.Context();
            _numberOfVariations = 5;
            _pkParameter1       = new QuantityPKParameter {
                QuantityPath = "Output1", Name = "AUC"
            };
            _pkParameter1.SetNumberOfIndividuals(_numberOfVariations);
            _pkParameter1.SetValue(0, 10);
            _pkParameter1.SetValue(1, 11);
            _pkParameter1.SetValue(2, 12);
            _pkParameter1.SetValue(4, _defaultPK1Value);

            _pkParameter2 = new QuantityPKParameter {
                QuantityPath = "Output2", Name = "Cmax"
            };
            _pkParameter2.SetNumberOfIndividuals(_numberOfVariations);
            _pkParameter2.SetValue(0, 20);
            _pkParameter2.SetValue(1, 21);
            _pkParameter2.SetValue(2, 22);
            _pkParameter2.SetValue(3, 23);
            _pkParameter2.SetValue(4, _defaultPK2Value);

            _sensitivityParameter1 = A.Fake <SensitivityParameter>().WithName("SP1");
            A.CallTo(() => _sensitivityParameter1.DefaultValue).Returns(10);

            _sensitivityParameter2 = A.Fake <SensitivityParameter>().WithName("SP2");
            A.CallTo(() => _sensitivityParameter2.DefaultValue).Returns(20);

            _sensitivityParameter3 = A.Fake <SensitivityParameter>().WithName("SP3");
            A.CallTo(() => _sensitivityParameter3.DefaultValue).Returns(0);
            A.CallTo(() => _sensitivityParameter3.VariationRangeValue).Returns(0.8);

            _pkAnalyses.AddPKAnalysis(_pkParameter1);
            _pkAnalyses.AddPKAnalysis(_pkParameter2);

            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter1);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter2);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter3);

            var pv11 = new ParameterVariation {
                ParameterName = _sensitivityParameter1.Name, VariationId = 0, Variation = new[] { 15d, 200d, 300d }
            };
            var pv12 = new ParameterVariation {
                ParameterName = _sensitivityParameter1.Name, VariationId = 1, Variation = new[] { 20d, 200d, 300d }
            };
            var pv21 = new ParameterVariation {
                ParameterName = _sensitivityParameter2.Name, VariationId = 2, Variation = new[] { 100d, 21d, 300d }
            };
            var pv22 = new ParameterVariation {
                ParameterName = _sensitivityParameter2.Name, VariationId = 3, Variation = new[] { 100d, 31d, 300d }
            };

            _variationData.DefaultValues = new[] { 100d, 200d, 300d };
            _variationData.AddVariation(pv11);
            _variationData.AddVariation(pv12);
            _variationData.AddVariation(pv21);
            _variationData.AddVariation(pv22);
        }
        private string parameterFullPathFor(SensitivityParameter sensitivityParameter)
        {
            if (sensitivityParameter?.Parameter == null)
            {
                return(string.Empty);
            }

            return(_entityPathResolver.FullPathFor(sensitivityParameter.Parameter));
        }
        private string parameterDisplayPathFor(SensitivityParameter sensitivityParameter)
        {
            if (sensitivityParameter?.Parameter == null)
            {
                return(string.Empty);
            }

            return(_quantityDisplayPathMapper.DisplayPathAsStringFor(sensitivityParameter.Parameter, addSimulationName: true));
        }
        public void EditSensitivityAnalysis(SensitivityAnalysis sensitivityAnalysis)
        {
            _sensitivityAnalysis            = sensitivityAnalysis;
            _sensitivityParameterForUpdates = _sensitivityParameterFactory.EmptySensitivityParameter();
            _sensitivityAnalysisSetNMaxPresenter.Edit(_sensitivityParameterForUpdates.NumberOfStepsParameter);
            _sensitivityAnalysisSetRangePresenter.Edit(_sensitivityParameterForUpdates.VariationRangeParameter);

            updateView();
        }
Beispiel #8
0
        protected override void Context()
        {
            base.Context();
            _newSimulation = A.Fake <ISimulation>();
            var sensitivityParameter = new SensitivityParameter {
                ParameterSelection = new ParameterSelection(_oldSimulation, A.Fake <QuantitySelection>())
            };

            sut.AddSensitivityParameter(sensitivityParameter);
        }
        public SensitivityParameterDTO MapFrom(SensitivityParameter sensitivityParameter)
        {
            var sensitivityParameterDTO = new SensitivityParameterDTO(sensitivityParameter);

            sensitivityParameterDTO.NumberOfStepsParameter  = _parameterMapper.MapFrom(sensitivityParameter.NumberOfStepsParameter, sensitivityParameterDTO, x => x.NumberOfSteps, x => x.NumberOfStepsParameter);
            sensitivityParameterDTO.VariationRangeParameter = _parameterMapper.MapFrom(sensitivityParameter.VariationRangeParameter, sensitivityParameterDTO, x => x.VariationRange, x => x.VariationRangeParameter);

            sensitivityParameterDTO.DisplayPath = sensitivityParameter.Parameter != null?_quantityDisplayPathMapper.DisplayPathAsStringFor(sensitivityParameter.Parameter, addSimulationName : true) : sensitivityParameter.ParameterSelection.Path;

            return(sensitivityParameterDTO);
        }
        protected override void Context()
        {
            _simulation = A.Fake <ISimulation>();
            A.CallTo(() => _simulation.OutputSelections.HasSelection).Returns(true);

            _sensitivityAnalysis = new SensitivityAnalysis {
                Simulation = _simulation
            };
            sut = new SensitivityAnalysisValidator();

            _sensitivityParameter = DomainHelperForSpecs.SensitivityParameter();
            _sensitivityParameter.ParameterSelection = A.Fake <ParameterSelection>();
        }
Beispiel #11
0
 protected override void Context()
 {
     base.Context();
     _sensitivityAnalysis   = new SensitivityAnalysis();
     _sensitivityParameter  = new SensitivityParameter().WithName("OLD_NAME");
     _parameterSensitivity1 = new PKParameterSensitivity {
         ParameterName = _sensitivityParameter.Name
     };
     _parameterSensitivity2 = new PKParameterSensitivity {
         ParameterName = "Another name"
     };
     _sensitivityAnalysis.Results = new SensitivityAnalysisRunResult();
     _sensitivityAnalysis.Results.AddPKParameterSensitivity(_parameterSensitivity1);
     _sensitivityAnalysis.Results.AddPKParameterSensitivity(_parameterSensitivity2);
 }
        public override void GlobalContext()
        {
            base.GlobalContext();

            _sim1 = new IndividualSimulation
            {
                Id       = "Sim1",
                Name     = "Sim1",
                IsLoaded = true,
                Model    = new Model {
                    Root = new Container()
                }
            };
            _sim1.Model.Root.Add(new Container {
                new Parameter().WithName("P")
            }.WithName("Liver"));

            var objectBaseRepository = IoC.Resolve <IWithIdRepository>();
            var workspace            = IoC.Resolve <IWorkspace>();

            _project          = IoC.Resolve <PKSimProject>();
            workspace.Project = _project;
            objectBaseRepository.Register(_sim1);
            _project.AddBuildingBlock(_sim1);

            _sensitivityAnalysis = new SensitivityAnalysis
            {
                Name       = "SA",
                Simulation = _sim1
            };
            _sensitivityParameter1 = DomainHelperForSpecs.SensitivityParameter(range: 0.5d, steps: 5);
            _parameterSelection1   = new ParameterSelection(_sim1, new QuantitySelection("Liver|P", QuantityType.Parameter));
            _sensitivityParameter1.ParameterSelection = _parameterSelection1;

            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter1);

            _deserializedSensitivityAnalysis = SerializeAndDeserialize(_sensitivityAnalysis);
        }
Beispiel #13
0
        protected override void Context()
        {
            _oldSimulation       = A.Fake <ISimulation>();
            _sensitivityAnalysis = new SensitivityAnalysis {
                Simulation = _oldSimulation
            };
            _newSimulation = A.Fake <ISimulation>();

            _simulationQuantitySelectionFinder = A.Fake <ISimulationQuantitySelectionFinder>();
            sut = new SensitivityAnalysisSimulationSwapCorrector(_simulationQuantitySelectionFinder);

            _validSensitivityParameter = new SensitivityParameter {
                ParameterSelection = new ParameterSelection(_oldSimulation, "valid")
            };
            _sensitivityAnalysis.AddSensitivityParameter(_validSensitivityParameter);
            _invalidSensitivityParameter = new SensitivityParameter {
                ParameterSelection = new ParameterSelection(_oldSimulation, "invalid")
            };
            _sensitivityAnalysis.AddSensitivityParameter(_invalidSensitivityParameter);

            A.CallTo(() => _simulationQuantitySelectionFinder.SimulationHasSelection(_invalidSensitivityParameter.ParameterSelection, _newSimulation)).Returns(false);
            A.CallTo(() => _simulationQuantitySelectionFinder.SimulationHasSelection(_validSensitivityParameter.ParameterSelection, _newSimulation)).Returns(true);
        }
Beispiel #14
0
 protected override void ActionForMissingSensitivityParameterPaths(SensitivityAnalysis sensitivityAnalysis, ISimulation newSimulation, SensitivityParameter sensitivityParameter)
 {
     sensitivityAnalysis.RemoveSensitivityParameter(sensitivityParameter);
 }
 protected abstract void ActionForMissingSensitivityParameterPaths(SensitivityAnalysis sensitivityAnalysis, ISimulation newSimulation, SensitivityParameter sensitivityParameter);
Beispiel #16
0
 protected override void Because()
 {
     _result = sut.CreateFor(_parameterSelection, _sensitivityAnalysis);
 }
 protected override void ActionForMissingSensitivityParameterPaths(SensitivityAnalysis sensitivityAnalysis, ISimulation newSimulation, SensitivityParameter sensitivityParameter)
 {
     _validationResult.AddMessage(
         NotificationType.Warning,
         sensitivityAnalysis,
         Error.SensitivityAnalysis.SimulationDoesNotHaveParameterPath(newSimulation.Name, sensitivityParameter.ParameterSelection.Path));
 }
 private static void setNumberOfSteps(IParameterDTO parameterDTO, SensitivityParameter sensitivityParameter)
 {
     setParameterValues(parameterDTO, sensitivityParameter.NumberOfStepsParameter);
 }
Beispiel #19
0
 private void addParametersTo(SensitivityParameter sensitivityParameter)
 {
     sensitivityParameter.Add(createParameter(Constants.Parameters.VARIATION_RANGE, _dimensionFactory.Dimension(Constants.Dimension.FRACTION), defaultValue: 0.1, min: 0, minAllowed: false));
     sensitivityParameter.Add(createParameter(Constants.Parameters.NUMBER_OF_STEPS, Constants.Dimension.NO_DIMENSION, defaultValue: 2, min: 1, max: 10));
 }
Beispiel #20
0
        public void UpdateSensitivityParameterName(SensitivityAnalysis sensitivityAnalysis, SensitivityParameter sensitivityParameter, string newName)
        {
            var oldName = sensitivityParameter.Name;

            sensitivityParameter.Name = newName;
            if (!sensitivityAnalysis.HasResults)
            {
                return;
            }

            sensitivityAnalysis.Results.UpdateSensitivityParameterName(oldName, newName);
            _executionContext.PublishEvent(new SensitivityAnalysisResultsUpdatedEvent(sensitivityAnalysis));
        }
 private static void setRange(IParameterDTO parameterDTO, SensitivityParameter sensitivityParameter)
 {
     setParameterValues(parameterDTO, sensitivityParameter.VariationRangeParameter);
 }
        protected override void Context()
        {
            base.Context();
            _pkParameter1 = new QuantityPKParameter {
                QuantityPath = "Output1", Name = "AUC"
            };
            _pkParameter1.SetValue(0, 10);
            _pkParameter1.SetValue(1, 11);
            _pkParameter1.SetValue(2, 12);
            _pkParameter1.SetValue(4, _defaultPK1Value);

            _pkParameter2 = new QuantityPKParameter {
                QuantityPath = "Output2", Name = "Cmax"
            };
            _pkParameter2.SetValue(0, 20);
            _pkParameter2.SetValue(1, 21);
            _pkParameter2.SetValue(2, 22);
            _pkParameter2.SetValue(3, 23);
            _pkParameter2.SetValue(4, _defaultPK2Value);

            _pkAnalyses.AddPKAnalysis(_pkParameter1);
            _pkAnalyses.AddPKAnalysis(_pkParameter2);

            _sensitivityParameter1 = A.Fake <SensitivityParameter>().WithName("SP1");
            A.CallTo(() => _sensitivityParameter1.DefaultValue).Returns(10);
            A.CallTo(() => _sensitivityParameter1.ParameterSelection.Path).Returns("SP1-PATH");

            _sensitivityParameter2 = A.Fake <SensitivityParameter>().WithName("SP2");
            A.CallTo(() => _sensitivityParameter2.DefaultValue).Returns(20);
            A.CallTo(() => _sensitivityParameter2.ParameterSelection.Path).Returns("SP2-PATH");

            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter1);
            _sensitivityAnalysis.AddSensitivityParameter(_sensitivityParameter2);

            var pv11 = new ParameterVariation(parameterName: _sensitivityParameter1.Name, parameterIndex: 0, variationId: 0, variation: new[] { 15d, 200d, 300d });
            var pv12 = new ParameterVariation(parameterName: _sensitivityParameter1.Name, parameterIndex: 0, variationId: 1, variation: new[] { 20d, 200d, 300d });
            var pv21 = new ParameterVariation(parameterName: _sensitivityParameter2.Name, parameterIndex: 1, variationId: 2, variation: new[] { 100d, 21d, 300d });
            var pv22 = new ParameterVariation(parameterName: _sensitivityParameter2.Name, parameterIndex: 1, variationId: 3, variation: new[] { 100d, 31d, 300d });

            _variationData.DefaultValues = new[] { 100d, 200d, 300d };
            _variationData.AddVariation(pv11);
            _variationData.AddVariation(pv12);
            _variationData.AddVariation(pv21);
            _variationData.AddVariation(pv22);

            _timeValues = new QuantityValues {
                QuantityPath = "Time", Values = new[] { 1, 2, 3, 4, 5f }
            };

            _resV11 = new IndividualResults {
                IndividualId = 0, Time = _timeValues
            };
            _resV11.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 111.1f, 211.1f, 311.1f, 411.1f, 511.1f }
            });
            _resV11.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 111.2f, 211.2f, 311.2f, 411.2f, 511.2f }
            });
            _resV11.UpdateQuantityTimeReference();

            _resV12 = new IndividualResults {
                IndividualId = 1, Time = _timeValues
            };
            _resV12.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 112.1f, 212.1f, 312.1f, 412.1f, 512.1f }
            });
            _resV12.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 112.2f, 212.2f, 312.2f, 412.2f, 512.2f }
            });
            _resV12.UpdateQuantityTimeReference();

            _resV21 = new IndividualResults {
                IndividualId = 2, Time = _timeValues
            };
            _resV21.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 121.1f, 221.1f, 321.1f, 421.1f, 521.1f }
            });
            _resV21.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 121.2f, 221.2f, 321.2f, 421.2f, 521.2f }
            });
            _resV21.UpdateQuantityTimeReference();

            _resV22 = new IndividualResults {
                IndividualId = 3, Time = _timeValues
            };
            _resV22.Add(new QuantityValues {
                QuantityPath = "Output1", Values = new[] { 122.1f, 222.1f, 322.1f, 422.1f, 522.1f }
            });
            _resV22.Add(new QuantityValues {
                QuantityPath = "Output2", Values = new[] { 122.2f, 222.2f, 322.2f, 422.2f, 522.2f }
            });
            _resV22.UpdateQuantityTimeReference();


            _simulationResults.Add(_resV11);
            _simulationResults.Add(_resV12);
            _simulationResults.Add(_resV21);
            _simulationResults.Add(_resV22);
        }