Пример #1
0
        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);
        }
Пример #2
0
        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);
 }
Пример #4
0
        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 };
        }
Пример #7
0
 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,
     };
 }
Пример #8
0
        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);
        }
Пример #9
0
        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));
 }
Пример #13
0
 protected override void Because()
 {
     _options = sut.CreateFor(_simulation1, _moleculeName);
 }
Пример #14
0
 protected override void Because()
 {
     _result = sut.CreateFor(_simulation1, _secondMetaboliteName);
 }
Пример #15
0
 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);
        }