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);
        }
예제 #2
0
 protected override void Context()
 {
     base.Context();
     sut.PKAnalyses = A.Fake <PopulationSimulationPKAnalyses>();
     _pkParameter   = A.Fake <QuantityPKParameter>();
     A.CallTo(() => _pkParameter.Values).Returns(new[] { 1f, 2, 3 });
     A.CallTo(() => sut.PKAnalyses.PKParameterFor("Path", "Cmax")).Returns(_pkParameter);
 }
 protected override void Context()
 {
     base.Context();
     _pkParameter = new QuantityPKParameter {
         QuantityPath = "Path", Name = "toto"
     };
     A.CallTo(() => _pkParameterRepository.DisplayNameFor(_pkParameter.Name)).Returns("totoDisplay");
 }
 protected override void Context()
 {
     base.Context();
     _pkParameter             = new QuantityPKParameter();
     _populationPivotAnalysis = new PopulationPivotAnalysis();
     _populationDataCollector = A.Fake <IPopulationDataCollector>();
     _field = A.Fake <PopulationAnalysisPKParameterField>();
     sut.StartAnalysis(_populationDataCollector, _populationPivotAnalysis);
 }
        private void validateLength(PopulationSimulation populationSimulation, QuantityPKParameter pkParameter, SimulationPKParametersImport importedPKParameter)
        {
            if (pkParameter.Count == populationSimulation.NumberOfItems)
            {
                return;
            }

            importedPKParameter.AddError(PKSimConstants.Error.NotEnoughPKValuesForParameter(pkParameter.Name, pkParameter.QuantityPath, populationSimulation.NumberOfItems, pkParameter.Count));
        }
예제 #6
0
        protected override async Task Context()
        {
            await base.Context();

            _importedPKParameter = A.Fake <QuantityPKParameter>();
            _importedPKParameter.QuantityPath = "Quantity";
            A.CallTo(() => _importedPKParameter.Count).Returns(10);
            A.CallTo(() => _populationSimulation.NumberOfItems).Returns(15);
            _importedPKParameters.Add(_importedPKParameter);
        }
예제 #7
0
 protected override void Context()
 {
     base.Context();
     _importedPKParameter = A.Fake <QuantityPKParameter>();
     _importedPKParameter.QuantityPath = "Quantity";
     _availableQuantities[_importedPKParameter.QuantityPath] = new Observer();
     A.CallTo(() => _importedPKParameter.Count).Returns(10);
     A.CallTo(() => _populationSimulation.NumberOfItems).Returns(15);
     _importedPKParameters.Add(_importedPKParameter);
 }
예제 #8
0
 private QuantityPKParameterDTO mapFrom(QuantityPKParameter quantityPKParameter, string quantityDisplayPath)
 {
     return(new QuantityPKParameterDTO
     {
         DisplayName = _pkParameterRepository.DisplayNameFor(quantityPKParameter.Name),
         PKParameter = quantityPKParameter,
         QuantityDisplayPath = quantityDisplayPath,
         Description = _pkParameterRepository.DescriptionFor(quantityPKParameter.Name)
     });
 }
예제 #9
0
        private PopulationAnalysisPKParameterField createFieldFrom(QuantityPKParameter pkParameter, string quantityDisplayPath)
        {
            var quantity = _allQuantities[pkParameter.QuantityPath];

            if (quantity == null)
            {
                return(null);
            }

            return(_populationAnalysisFieldFactory.CreateFor(pkParameter, quantity.QuantityType, quantityDisplayPath));
        }
 public PopulationAnalysisPKParameterField CreateFor(QuantityPKParameter pkParameter, QuantityType quantityType, string quantityDisplayPath)
 {
     return(new PopulationAnalysisPKParameterField
     {
         Name = new[] { quantityDisplayPath, _pkParameterRepository.DisplayNameFor(pkParameter.Name) }.ToPathString(),
         QuantityPath = pkParameter.QuantityPath,
         QuantityType = quantityType,
         PKParameter = pkParameter.Name,
         Dimension = pkParameter.Dimension,
     });
 }
예제 #11
0
        private void addValues(QuantityPKParameter pkParameter, CsvReader csv)
        {
            if (!_valuesCache.Contains(pkParameter))
            {
                _valuesCache.Add(pkParameter, new List <Tuple <int, float> >());
            }

            var coreUnit = convertValueToCoreValue(pkParameter.Dimension, csv.DoubleAt(VALUE), csv[UNIT]);

            _valuesCache[pkParameter].Add(new Tuple <int, float>(csv.IntAt(INDIVIDUAL_ID), coreUnit.ToFloat()));
        }
예제 #12
0
 protected override void Context()
 {
     base.Context();
     _importedPKParameter = A.Fake <QuantityPKParameter>();
     _existingPKParameter = A.Fake <QuantityPKParameter>();
     _importedPKParameter.QuantityPath = "Quantity";
     _availableQuantities[_importedPKParameter.QuantityPath] = new Observer();
     A.CallTo(() => _importedPKParameter.Id).Returns("IMPORTED PARAMETER");
     A.CallTo(() => _importedPKParameter.ToString()).Returns(_importedPKParameter.Id);
     _importedPKParameters.Add(_importedPKParameter);
     A.CallTo(() => _pkAnalyses.PKParameterBy(_importedPKParameter.Id)).Returns(_existingPKParameter);
 }
예제 #13
0
        protected override async Task Context()
        {
            await base.Context();

            _importedPKParameter = A.Fake <QuantityPKParameter>();
            _existingPKParameter = A.Fake <QuantityPKParameter>();
            _importedPKParameter.QuantityPath = "Quantity";
            A.CallTo(() => _importedPKParameter.Id).Returns("IMPORTED PARAMETER");
            A.CallTo(() => _importedPKParameter.ToString()).Returns(_importedPKParameter.Id);
            _importedPKParameters.Add(_importedPKParameter);
            A.CallTo(() => _pkAnalyses.PKParameterBy(_importedPKParameter.Id)).Returns(_existingPKParameter);
        }
예제 #14
0
 protected override void Context()
 {
     base.Context();
     _context      = A.Fake <IExecutionContext>();
     _pkParameter1 = A.Fake <QuantityPKParameter>();
     A.CallTo(() => _pkParameter1.Id).Returns("Id1");
     _pkParameter2 = A.Fake <QuantityPKParameter>();
     A.CallTo(() => _pkParameter2.Id).Returns("Id2");
     _pkParameters.Add(_pkParameter1);
     _pkParameters.Add(_pkParameter2);
     _pkAnalysis = new PopulationSimulationPKAnalyses();
     _populationSimulation.PKAnalyses = _pkAnalysis;
 }
예제 #15
0
 protected override void Context()
 {
     base.Context();
     _quantityPKParameter1 = new QuantityPKParameter {
         QuantityPath = "Path1", Name = "AUC"
     };
     _quantityPKParameter2 = new QuantityPKParameter {
         QuantityPath = "Path1", Name = "C_max"
     };
     _pop_pk = new PopulationSimulationPKAnalyses();
     _pop_pk.AddPKAnalysis(_quantityPKParameter1);
     _pop_pk.AddPKAnalysis(_quantityPKParameter2);
 }
예제 #16
0
 protected override void Context()
 {
     base.Context();
     _population  = A.Fake <IPopulationDataCollector>();
     _pkParameter = new QuantityPKParameter {
         Dimension = A.Fake <IDimension>(), Name = "toto", QuantityPath = "A|B|C"
     };
     A.CallTo(() => _pkParameterRepository.DisplayNameFor(_pkParameter.Name)).Returns("totoDisplay");
     _settings    = new DistributionSettings();
     _displayUnit = A.Fake <Unit>();
     _data        = new ContinuousDistributionData(AxisCountMode.Count, 10);
     A.CallTo(() => _displayUnitRetriever.PreferredUnitFor(_pkParameter.Dimension)).Returns(_displayUnit);
     A.CallTo(() => _distributionDataCreator.CreateFor(_population, _settings, _pkParameter, _pkParameter.Dimension, _displayUnit)).Returns(_data);
 }
        protected override void Context()
        {
            base.Context();
            _displayUnit                  = A.Fake <Unit>();
            _mergedDimension              = A.Fake <IDimension>();
            _pkParameterDimension         = A.Fake <IDimension>();
            _pkParameter                  = new QuantityPKParameter().WithName("AUC").WithDimension(_pkParameterDimension);
            _pkParameterField             = new PopulationAnalysisPKParameterField().WithDimension(_pkParameterDimension);
            _pkParameterField.DisplayUnit = _displayUnit;

            A.CallTo(() => _dimensionRepository.MergedDimensionFor(A <NumericFieldContext> ._))
            .Invokes(x => _numericFieldContect = x.GetArgument <NumericFieldContext>(0))
            .Returns(_mergedDimension);
        }
예제 #18
0
        private QuantityPKParameter createPKAnalyses(string path)
        {
            var pk = new QuantityPKParameter {
                QuantityPath = path
            };

            pk.Name = "AUC";

            for (int i = 0; i < _numberOfIndividuals; i++)
            {
                pk.SetValue(i, (float)_random.NextDouble() * 100);
            }

            return(pk);
        }
예제 #19
0
 protected override void Context()
 {
     base.Context();
     _populationSimulation = A.Fake <PopulationSimulation>();
     _pkParameter1         = new QuantityPKParameter();
     _pkParameter2         = new QuantityPKParameter();
     _pkAnalyses           = new List <QuantityPKParameter> {
         _pkParameter1, _pkParameter2
     };
     _importSimulationResultsPresenter = A.Fake <IImportSimulationPKAnalysesPresenter>();
     A.CallTo(() => _applicationController.Start <IImportSimulationPKAnalysesPresenter>()).Returns(_importSimulationResultsPresenter);
     A.CallTo(() => _importSimulationResultsPresenter.ImportPKAnalyses(_populationSimulation)).Returns(_pkAnalyses);
     A.CallTo(() => _buildingBlockTask.AddCommandToHistory(A <IPKSimCommand> ._))
     .Invokes(x => _command = x.GetArgument <IPKSimCommand>(0));
 }
예제 #20
0
        private QuantityPKParameter retrieveOrCreatePKParameterFor(CsvReader csv)
        {
            var parameterName = csv[PARAMETER_NAME];
            var quantityPath  = csv[QUANTITY_PATH];
            var id            = QuantityPKParameter.CreateId(quantityPath, parameterName);

            if (!_importedPK.Contains(id))
            {
                var dimension   = findDimensionFor(csv[UNIT]);
                var pkParameter = new QuantityPKParameter {
                    Name = parameterName, QuantityPath = quantityPath, Dimension = dimension
                };
                _importedPK.Add(pkParameter);
            }
            return(_importedPK[id]);
        }
        public void TestSerialization()
        {
            var x1 = new QuantityPKParameter
            {
                Name         = "C_max",
                Dimension    = DimensionMassConcentration,
                QuantityPath = "A|B|C"
            };

            x1.SetValue(1, 5.0f);
            x1.SetValue(2, 4.0f);
            x1.SetValue(8, 2.0f);
            var x2 = SerializeAndDeserialize(x1);

            AssertForSpecs.AreEqualQuantity(x2, x1);
        }
예제 #22
0
        private void addPKParametersForOutput(
            IModelCoreSimulation simulation,
            SimulationResults simulationResults,
            Action <int> performIndividualScalingAction,
            QuantitySelection selectedQuantity,
            PopulationSimulationPKAnalyses popAnalyses,
            string moleculeName,
            PKCalculationOptions pkCalculationOptions,
            IReadOnlyList <ApplicationParameters> allApplicationParameters)
        {
            var allPKParameters            = _pkParameterRepository.All().Where(p => PKParameterCanBeUsed(p, pkCalculationOptions)).ToList();
            var allUserDefinedPKParameters = allPKParameters.OfType <UserDefinedPKParameter>().ToList();

            //create pk parameter for each  pk parameters (predefined and dynamic)
            foreach (var pkParameter in allPKParameters)
            {
                var quantityPKParameter = new QuantityPKParameter {
                    Name = pkParameter.Name, QuantityPath = selectedQuantity.Path, Dimension = pkParameter.Dimension
                };
                popAnalyses.AddPKAnalysis(quantityPKParameter);
            }

            //add the values for each individual
            foreach (var individualResult in simulationResults.AllIndividualResults)
            {
                performIndividualScalingAction(individualResult.IndividualId);
                _pkCalculationOptionsFactory.UpdateTotalDrugMassPerBodyWeight(simulation, moleculeName, pkCalculationOptions, allApplicationParameters);

                var values = individualResult.QuantityValuesFor(selectedQuantity.Path);
                //This can happen is the results do not match the simulation
                if (values == null)
                {
                    continue;
                }

                var pkValues = _pkValuesCalculator.CalculatePK(individualResult.Time.Values, values.Values, pkCalculationOptions, allUserDefinedPKParameters);

                foreach (var quantityPKParameter in popAnalyses.AllPKParametersFor(selectedQuantity.Path))
                {
                    quantityPKParameter.SetValue(individualResult.IndividualId, pkValues.ValueOrDefaultFor(quantityPKParameter.Name));
                }
            }
        }
예제 #23
0
 protected override void Context()
 {
     base.Context();
     _pkParameter1 = new QuantityPKParameter {
         QuantityPath = "Path1", Name = "AUC"
     };
     _pkParameter2 = new QuantityPKParameter {
         QuantityPath = "Path2", Name = "AUC"
     };
     _pkParameter3 = new QuantityPKParameter {
         QuantityPath = "Path1", Name = "CMax"
     };
     _pkParameter4 = new QuantityPKParameter {
         QuantityPath = "Path1", Name = "TMax"
     };
     sut.AddPKAnalysis(_pkParameter1);
     sut.AddPKAnalysis(_pkParameter2);
     sut.AddPKAnalysis(_pkParameter3);
     sut.AddPKAnalysis(_pkParameter4);
 }
예제 #24
0
        public void Plot(IPopulationDataCollector populationDataCollector, QuantityPKParameter pkParameter, DistributionSettings settings = null, IDimension dimension = null, Unit displayUnit = null)
        {
            var displayUnitToUse = displayUnit ?? _displayUnitRetriever.PreferredUnitFor(pkParameter.Dimension);

            plot(populationDataCollector, pkParameter, _distributionDataCreator.CreateFor, updatePlotOptionsDefaultsFor, settings, dimension, displayUnitToUse);
        }
예제 #25
0
        public ContinuousDistributionData CreateFor(IPopulationDataCollector populationDataCollector, DistributionSettings settings, QuantityPKParameter parameter, IDimension dimension, Unit displayUnit)
        {
            var allValues = populationDataCollector.AllPKParameterValuesFor(parameter.QuantityPath, parameter.Name);

            return(CreateFor(populationDataCollector, settings, allValues, dimension, displayUnit));
        }
예제 #26
0
        private string getTitleFor(QuantityPKParameter pkParameter, Unit displayUnit)
        {
            var parameterDisplayName = _pkParameterRepository.DisplayNameFor(pkParameter.Name);

            return(Constants.NameWithUnitFor(parameterDisplayName, displayUnit));
        }
예제 #27
0
 private void updatePlotOptionsDefaultsFor(QuantityPKParameter parameter, DistributionSettings settings, Unit displayUnit)
 {
     updatePlotOptionsDefaultsFor(getTitleFor(parameter, displayUnit), settings, parameter.QuantityPath);
 }
예제 #28
0
 public void Plot(IPopulationDataCollector populationDataCollector, QuantityPKParameter pkParameter, PopulationAnalysisPKParameterField pkParameterField)
 {
     plotContinousData(populationDataCollector, pkParameter, pkParameterField, x => x.Plot);
 }
        private void warnIfParameterAlreadyExists(PopulationSimulationPKAnalyses pkAnalyses, QuantityPKParameter pkParameter, SimulationPKParametersImport importedPKParameter)
        {
            if (pkAnalyses.IsNull())
            {
                return;
            }

            if (pkAnalyses.PKParameterBy(pkParameter.Id) == null)
            {
                return;
            }

            importedPKParameter.AddWarning(PKSimConstants.Warning.PKParameterAlreadyExistsAndWillBeOverwritten(pkParameter.Name, pkParameter.QuantityPath));
        }
        private void verifyThatQuantityExistsInSimulation(PathCache <IQuantity> allQuantities, QuantityPKParameter pkParameter, SimulationPKParametersImport importedPKParameter)
        {
            if (allQuantities.Contains(pkParameter.QuantityPath))
            {
                return;
            }

            importedPKParameter.AddError(PKSimConstants.Error.CouldNotFindQuantityWithPath(pkParameter.QuantityPath));
        }