Beispiel #1
0
        public ISimulation CreateWithCalculationMethodsFrom(ISimulation templateSimulation, IEnumerable <CalculationMethodWithCompoundName> combination)
        {
            var simulation    = templateSimulation.DowncastTo <IndividualSimulation>();
            var newSimulation = createModelLessSimulationBasedOn(simulation);

            combination.GroupBy(x => x.CompoundName).Each(grouping =>
            {
                replaceCalculationMethodsWithNewCalculationMethods(grouping, newSimulation.CompoundPropertiesFor(grouping.Key));
            });

            _simulationModelCreator.CreateModelFor(newSimulation);

            return(newSimulation);
        }
        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);
        }
Beispiel #3
0
 public ICommand UpdateParameterValueOrigin(IParameter parameter, ValueOrigin valueOrigin, ISimulation simulation)
 {
     return(_quantityTask.UpdateQuantityValueOriginInSimulation(parameter, valueOrigin, simulation.DowncastTo <IMoBiSimulation>()));
 }
Beispiel #4
0
 public ICommand SetParameterValue(IParameter parameter, double value, ISimulation simulation)
 {
     return(_quantityTask.SetQuantityBaseValue(parameter, value, simulation.DowncastTo <IMoBiSimulation>()));
 }