示例#1
0
        private TableFormula createTableFormulaFrom(TableFormulaParameter <IDistributedParameter> parameter, IReadOnlyList <ParameterDistributionMetaData> allDistributionsWithAgeStrictBiggerThanOriginData)
        {
            if (allDistributionsWithAgeStrictBiggerThanOriginData.Count == 0)
            {
                return(null);
            }

            var tableFormula = _formulaFactory.CreateDistributedTableFormula();

            updateTableFormulaFrom(tableFormula, parameter.Parameter);
            tableFormula.Percentile = parameter.Percentile;

            if (parameter.PercentileIsInvalid)
            {
                throw new PKSimException(PKSimConstants.Error.CannotCreateAgingSimulationWithInvalidPercentile(_fullPathDisplayResolver.FullPathFor(parameter.Parameter), parameter.Percentile));
            }

            //0 because of the offset with age
            tableFormula.AddPoint(0, parameter.Value, DistributionMetaData.From(parameter.Parameter));

            foreach (var scaledDistribution in scaleDistributions(parameter, allDistributionsWithAgeStrictBiggerThanOriginData))
            {
                var age   = ageWithOffsetInMin(scaledDistribution.Age, parameter.OriginData.Age.Value);
                var value = valueFrom(scaledDistribution, parameter.Percentile);
                tableFormula.AddPoint(age, value, DistributionMetaData.From(scaledDistribution));
            }

            return(tableFormula);
        }
        protected override Task Context()
        {
            _tableFormulaMapper = A.Fake <TableFormulaMapper>();
            _formulaFactory     = A.Fake <IFormulaFactory>();
            sut = new DistributedTableFormulaMapper(_tableFormulaMapper, _formulaFactory);

            _distributedTableFormula = new DistributedTableFormula();

            _distributionMetaData1 = new DistributionMetaData
            {
                Mean         = 1,
                Deviation    = 2,
                Distribution = DistributionTypes.LogNormal
            };

            _distributionMetaData2 = new DistributionMetaData
            {
                Mean         = 3,
                Deviation    = 4,
                Distribution = DistributionTypes.Normal
            };


            _distributedTableFormula.AddDistributionMetaData(_distributionMetaData1);
            _distributedTableFormula.AddDistributionMetaData(_distributionMetaData2);

            _distributedTableFormula.Percentile = 0.8;

            return(Task.FromResult(true));
        }
示例#3
0
 protected override void Context()
 {
     base.Context();
     _distributionMetaData = new DistributionMetaData {
         Mean = 4, Distribution = DistributionTypes.Discrete
     };
 }
示例#4
0
 protected override void Context()
 {
     base.Context();
     _distributionMetaData = new DistributionMetaData {
         Deviation = 1, Mean = 4, Distribution = DistributionTypes.Uniform
     };
 }
 protected override void Context()
 {
     base.Context();
     _meta1 = new DistributionMetaData {
         Mean = 1, Deviation = 2, Distribution = DistributionTypes.Normal
     };
     sut.AddPoint(10, 20, _meta1);
 }
 protected override void Context()
 {
     base.Context();
     _distributionMetaData = new DistributionMetaData {
         Deviation = 2, Distribution = DistributionTypes.Normal, Mean = 5
     };
     _result = DistributionMetaData.From(_distributionMetaData);
 }
示例#7
0
 private Model.DistributionMetaData modelDistributionDataFrom(DistributionMetaData distributionMetaData)
 {
     return(new Model.DistributionMetaData
     {
         Mean = distributionMetaData.Mean,
         Deviation = distributionMetaData.Deviation,
         Distribution = DistributionTypes.ById(distributionMetaData.Distribution)
     });
 }
 protected override void Context()
 {
     base.Context();
     _meta1 = new DistributionMetaData {
         Mean = 1, Deviation = 2, Distribution = DistributionTypes.Normal
     };
     _meta2 = new DistributionMetaData {
         Mean = 3, Deviation = 4, Distribution = DistributionTypes.LogNormal
     };
 }
        private DistributedTableFormula formulaFrom(DataRepository dataRepository)
        {
            var        baseGrid = dataRepository.BaseGrid;
            var        valueColumns = dataRepository.AllButBaseGrid().ToList();
            DataColumn meanColumn, deviationColumn;

            if (valueColumns.Count == 1)
            {
                meanColumn = valueColumns[0];
                //dummy deviation filled with 1 since this was not defined in the import action
                deviationColumn = new DataColumn(Constants.Distribution.DEVIATION, _dimensionRepository.NoDimension, baseGrid)
                {
                    Values = new float[baseGrid.Count].InitializeWith(1f)
                };
            }
            else
            {
                meanColumn      = valueColumns.Single(x => x.RelatedColumns.Any());
                deviationColumn = valueColumns.Single(x => !x.RelatedColumns.Any());
            }

            var formula = _formulaFactory.CreateDistributedTableFormula().WithName(dataRepository.Name);

            formula.InitializedWith(CoreConstants.Parameters.PMA, dataRepository.Name, baseGrid.Dimension, meanColumn.Dimension);
            formula.XDisplayUnit = baseGrid.Dimension.Unit(baseGrid.DataInfo.DisplayUnitName);
            formula.YDisplayUnit = meanColumn.Dimension.Unit(meanColumn.DataInfo.DisplayUnitName);

            foreach (var ageValue in baseGrid.Values)
            {
                var mean         = meanColumn.GetValue(ageValue).ToDouble();
                var pma          = ageValue.ToDouble();
                var deviation    = deviationColumn.GetValue(ageValue).ToDouble();
                var distribution = new DistributionMetaData {
                    Mean = mean, Deviation = deviation, Distribution = DistributionTypes.LogNormal
                };
                formula.AddPoint(pma, mean, distribution);
            }
            return(formula);
        }
 protected override void Context()
 {
     base.Context();
     _distributedParameter = DomainHelperForSpecs.NormalDistributedParameter();
     _result = DistributionMetaData.From(_distributedParameter);
 }