protected override void Context() { base.Context(); _simulation = A.Fake <ISimulation>(); _runResults = A.Fake <SimulationResults>(); var outputSelections = new OutputSelections(); outputSelections.AddOutput(new QuantitySelection("Liver|Cell|Drug|Concentration", QuantityType.Drug)); A.CallTo(() => _simulation.OutputSelections).Returns(outputSelections); var pKCalculationOptions = new PKCalculationOptions(); A.CallTo(_pkCalculationOptionsFactory).WithReturnType <PKCalculationOptions>().Returns(pKCalculationOptions); _p1 = new PKParameter { Name = "AUC", Mode = PKParameterMode.Single }; _userDefinedParameter1 = new UserDefinedPKParameter { Name = "Dynamic1", Mode = PKParameterMode.Single }; A.CallTo(() => _pkParameterRepository.All()).Returns(new[] { _p1, _userDefinedParameter1 }); var individualResults = A.Fake <IndividualResults>(); A.CallTo(() => _runResults.AllIndividualResults).Returns(new HashSet <IndividualResults>(new[] { individualResults })); var pKValues = new PKValues(); pKValues.AddValue(_p1.Name, 10f); pKValues.AddValue(_userDefinedParameter1.Name, 30f); A.CallTo(_pkValuesCalculator).WithReturnType <PKValues>().Returns(pKValues); }
protected override void Context() { base.Context(); _simulation = A.Fake <ISimulation>(); _runResults = A.Fake <SimulationResults>(); var outputSelections = new OutputSelections(); outputSelections.AddOutput(new QuantitySelection("Liver|Cell|Drug|Concentration", QuantityType.Drug)); A.CallTo(() => _simulation.OutputSelections).Returns(outputSelections); var pKCalculationOptions = new PKCalculationOptions(); A.CallTo(_pkCalculationOptionsFactory).WithReturnType <PKCalculationOptions>().Returns(pKCalculationOptions); _p1 = new PKParameter().WithName("AUC"); _p1.Mode = PKParameterMode.Single; _p2 = new PKParameter().WithName("AUC" + Constants.PKParameters.NormSuffix); _p2.Mode = PKParameterMode.Single; A.CallTo(() => _pkParameterRepository.All()).Returns(new[] { _p1, _p2 }); var individualResults = A.Fake <IndividualResults>(); A.CallTo(() => _runResults.AllIndividualResults).Returns(new HashSet <IndividualResults>(new[] { individualResults })); var pKValues = new PKValues(); pKValues.AddValue(_p1.Name, 10f); pKValues.AddValue(_p2.Name, 20f); A.CallTo(_pkValuesCalculator).WithReturnType <PKValues>().Returns(pKValues); }
protected override void Context() { sut = new UserDefinedPKParameter(); _options = new PKCalculationOptions { TotalDrugMassPerBodyWeight = 20 }; _interval0 = new DosingInterval { DrugMassPerBodyWeight = 2 }; _interval1 = new DosingInterval { DrugMassPerBodyWeight = 3 }; _interval2 = new DosingInterval { DrugMassPerBodyWeight = 4 }; _interval3 = new DosingInterval { DrugMassPerBodyWeight = 5 }; _interval4 = new DosingInterval { DrugMassPerBodyWeight = 6 }; _options.AddInterval(_interval0); _options.AddInterval(_interval1); _options.AddInterval(_interval2); _options.AddInterval(_interval3); _options.AddInterval(_interval4); }
public override void GlobalContext() { base.GlobalContext(); _singleDosing = DataColumnLoader.GetDataColumnFrom("SingleDosing_CL"); _pkOptions = new PKCalculationOptions { Dose = 10, }; }
public override void GlobalContext() { base.GlobalContext(); _singleDosing = DataColumnLoader.GetDataColumnFrom("SingleDosing_CL"); _pkOptions = new PKCalculationOptions { TotalDrugMassPerBodyWeight = 10, }; }
public override void GlobalContext() { base.GlobalContext(); _multipleDosingColumn = DataColumnLoader.GetDataColumnFrom("MultipleDosing_0_8_16"); _pkOptions = new PKCalculationOptions { TotalDrugMassPerBodyWeight = 10, }; _pkOptions.AddInterval(new DosingInterval { StartValue = 0, EndValue = 8, DrugMassPerBodyWeight = _firstDose }); _pkOptions.AddInterval(new DosingInterval { StartValue = 8, EndValue = 16, DrugMassPerBodyWeight = _oneMinusLastDose }); _pkOptions.AddInterval(new DosingInterval { StartValue = 16, EndValue = 48, DrugMassPerBodyWeight = _lastDose }); _cmax_tD1_tD2 = new UserDefinedPKParameter { StartApplicationIndex = 0, EndApplicationIndex = 1, StandardPKParameter = StandardPKParameter.C_max, Name = "MyCmaxD1D2" }; _cmax_tD1_tD2_DOSE_BW = new UserDefinedPKParameter { StartApplicationIndex = 0, EndApplicationIndex = 1, StandardPKParameter = StandardPKParameter.C_max, Name = "MyCmaxD1D2_Normalized", NormalizationFactor = _firstDose }; _cmax_tD1_tD2_DOSE_BW_auto = new UserDefinedPKParameter { StartApplicationIndex = 0, EndApplicationIndex = 1, StandardPKParameter = StandardPKParameter.C_max_norm, Name = "MyCmaxD1D2_Normalized_auto" }; _tmax_tD1_tD2 = new UserDefinedPKParameter { StartApplicationIndex = 0, EndApplicationIndex = 1, StandardPKParameter = StandardPKParameter.t_max, Name = "MyTmaxD1D2" }; _cmax_t1_t2 = new UserDefinedPKParameter { StartTime = 0, EndTime = 8, StandardPKParameter = StandardPKParameter.C_max, Name = "MyCmaxT1T2" }; _cmax_t1_t2_offset = new UserDefinedPKParameter { StartTime = 0, StartTimeOffset = 16, EndTime = 48, StandardPKParameter = StandardPKParameter.C_max, Name = "MyCmaxT1T2offset" }; _cmax_t1_offset_no_end = new UserDefinedPKParameter { StartTime = 0, StartTimeOffset = 16, StandardPKParameter = StandardPKParameter.C_max, Name = "MyCmaxT1offset_no_end" }; _tThreshold = new UserDefinedPKParameter { StartApplicationIndex = 0, StandardPKParameter = StandardPKParameter.Tthreshold, Name = "Threshold", ConcentrationThreshold = 4 }; _tThreshold_last = new UserDefinedPKParameter { StartApplicationIndex = 2, StandardPKParameter = StandardPKParameter.Tthreshold, Name = "Threshold_last", ConcentrationThreshold = 5 }; _allDynamicPkParameters = new[] { _cmax_tD1_tD2, _tmax_tD1_tD2, _cmax_t1_t2, _cmax_t1_t2_offset, _cmax_t1_offset_no_end, _cmax_tD1_tD2_DOSE_BW, _tThreshold, _tThreshold_last, _cmax_tD1_tD2_DOSE_BW_auto }; }
protected override void Context() { base.Context(); _baseGrid = new BaseGrid("BaseGrid", Constants.Dimension.NO_DIMENSION) { Values = new float[0] }; _emptyColums = new DataColumn("TEST", Constants.Dimension.NO_DIMENSION, _baseGrid) { Values = new float[0] }; _pkOptions = new PKCalculationOptions { Dose = 10, }; }
public double?EstimateDrugMassPerBodyWeight(PKCalculationOptions pkCalculationOptions) { // It can be quite complicated to estimate the total drug mass between two intervals // If a start time and end time is provided or any time offset, we cannot calculate for sure and we'll return NULL // if a start application and an end infusion index is provided, we'll sum up the interval between those two application // if a start application is provided, we'll sum up the drug mass starting at this application until the end // if an end application is provided, we'll sum up the drug mass from the start until the application if (StartTime.HasValue || EndTime.HasValue || EndTimeOffset.HasValue || StartTimeOffset.HasValue) { return(null); } //no intervals defined if (!StartApplicationIndex.HasValue && !EndApplicationIndex.HasValue) { return(pkCalculationOptions.TotalDrugMassPerBodyWeight); } var startApplicationIndex = StartApplicationIndex.GetValueOrDefault(0); var endApplicationIndex = EndApplicationIndex.GetValueOrDefault(pkCalculationOptions.DosingIntervals.Count); // invalid intervals if (startApplicationIndex >= endApplicationIndex) { return(null); } double drugMassPerBodyWeight = 0; for (int applicationIndex = startApplicationIndex; applicationIndex < endApplicationIndex; applicationIndex++) { //wrong indexes var interval = pkCalculationOptions.DosingIntervalAt(applicationIndex); if (interval == null) { return(null); } drugMassPerBodyWeight += interval.DrugMassPerBodyWeight.GetValueOrDefault(0); } return(drugMassPerBodyWeight); }
public override void GlobalContext() { base.GlobalContext(); _multipleDosingColumn = DataColumnLoader.GetDataColumnFrom("MultipleDosing_0_8_16"); _pkOptions = new PKCalculationOptions { FirstDosingStartValue = 0, FirstDosingEndValue = 8, LastMinusOneDosingStartValue = 8, LastDosingStartValue = 16, LastDosingEndValue = 48, Dose = 10, FirstDose = 4, LastMinusOneDose = 4, LastDose = 2 }; }
public override void GlobalContext() { base.GlobalContext(); _multipleDosingColumn = DataColumnLoader.GetDataColumnFrom("MultipleDosing_0_8_16"); _pkOptions = new PKCalculationOptions { TotalDrugMassPerBodyWeight = 10, }; _pkOptions.AddInterval(new DosingInterval { StartValue = 0, EndValue = 8, DrugMassPerBodyWeight = _firstDose }); _pkOptions.AddInterval(new DosingInterval { StartValue = 8, EndValue = 16, DrugMassPerBodyWeight = _oneMinusLastDose }); _pkOptions.AddInterval(new DosingInterval { StartValue = 16, EndValue = 48, DrugMassPerBodyWeight = _lastDose }); }
private IndividualPKAnalysis calculatePKFor(DataColumn dataColumn, string moleculeName, PKCalculationOptions options, GlobalPKAnalysis globalPKAnalysis = null) { var timeValue = dataColumn.BaseGrid.Values; var dimension = _dimensionRepository.MergedDimensionFor(dataColumn); var umolPerLiterUnit = dimension.UnitOrDefault(CoreConstants.Units.MicroMolPerLiter); var concentrationValueInMolL = dataColumn.Values.Select(v => dimension.BaseUnitValueToUnitValue(umolPerLiterUnit, v)).ToArray(); var pkAnalysis = _pkMapper.MapFrom(dataColumn, _pkValuesCalculator.CalculatePK(timeValue, concentrationValueInMolL, options), options.PKParameterMode, moleculeName); addWarningsTo(pkAnalysis, globalPKAnalysis, moleculeName); return(new IndividualPKAnalysis(dataColumn, pkAnalysis)); }
public PKValues CalculatePK(DataColumn column, PKCalculationOptions options) { return(_pkValuesCalculator.CalculatePK(column, options)); }
protected override void Because() { _options = sut.CreateFor(_simulation1, _moleculeName); }
protected override void Because() { _result = sut.CreateFor(_simulation1, _secondMetaboliteName); }
protected override void Because() { _result = sut.CreateFor(_populationSimulation, _appliedCompound); }
public override bool PKParameterCanBeUsed(PKParameter pkParameter, PKCalculationOptions pkCalculationOptions) { return(base.PKParameterCanBeUsed(pkParameter, pkCalculationOptions) && !isNormParameter(pkParameter)); }
public override void UpdateAppliedDose(ISimulation simulation, string moleculeName, PKCalculationOptions options, IReadOnlyList <ApplicationParameters> allApplicationParameters) { base.UpdateAppliedDose(simulation, moleculeName, options, allApplicationParameters); if (options.SingleDosing) { return; } //we have at least 2 applied applications at that stage since we are in multiple dosing mode var bodyWeight = simulation.DowncastTo <Simulation>().BodyWeight?.Value; var applicationCount = allApplicationParameters.Count; options.FirstDose = drugMassPerBodyWeightFor(allApplicationParameters[0].DrugMass, bodyWeight); options.LastMinusOneDose = drugMassPerBodyWeightFor(allApplicationParameters[applicationCount - 2].DrugMass, bodyWeight); options.LastDose = drugMassPerBodyWeightFor(allApplicationParameters[applicationCount - 1].DrugMass, bodyWeight); }