protected override void Context()
        {
            base.Context();
            _organism            = new Organism();
            _anotherTopContainer = new Container().WithName("Another container");
            _spatialStructure    = new PKSimSpatialStructure();
            _spatialStructure.AddTopContainer(_organism);
            _spatialStructure.AddTopContainer(_anotherTopContainer);

            _ga     = DomainHelperForSpecs.ConstantParameterWithValue().WithName(Constants.Parameters.GESTATIONAL_AGE);
            _age    = DomainHelperForSpecs.ConstantParameterWithValue().WithName(CoreConstants.Parameters.AGE);
            _height = DomainHelperForSpecs.ConstantParameterWithValue().WithName(CoreConstants.Parameters.HEIGHT);

            _distributedParameter = DomainHelperForSpecs.NormalDistributedParameter(isDefault: false, distributionParameterIsDefault: false).WithName("Distributed");
            _p1 = DomainHelperForSpecs.ConstantParameterWithValue().WithName("P1");
            _p2 = DomainHelperForSpecs.ConstantParameterWithValue().WithName("P2");
            _organism.Add(_ga);
            _organism.Add(_age);
            _organism.Add(_height);
            _organism.Add(_p1);
            _anotherTopContainer.Add(_p2);
            _organism.Add(_distributedParameter);
            _mean      = _distributedParameter.Parameter(Constants.Distribution.MEAN);
            _deviation = _distributedParameter.Parameter(Constants.Distribution.DEVIATION);
        }
Ejemplo n.º 2
0
        public IDistributionFormula CreateFor(IDistributionMetaData distribution, IDistributedParameter parameter)
        {
            var minParameter         = parameter.Parameter(Constants.Distribution.MINIMUM);
            var maxParameter         = parameter.Parameter(Constants.Distribution.MAXIMUM);
            var distributionMetaData = distribution as ParameterDistributionMetaData;

            if (distributionMetaData != null)
            {
                minParameter.Value = distributionMetaData.MinValue.Value;
                maxParameter.Value = distributionMetaData.MaxValue.Value;
            }
            return(_distributionFormulaFactory.CreateUniformDistributionFormulaFor(parameter, minParameter, maxParameter));
        }
        public void UpdateDistributionBasedOn(IEnumerable <ParameterDistributionMetaData> distributions, IDistributedParameter parameter, IDistributedParameter baseParameter, OriginData originData)
        {
            var knownSamples = from distribution in distributions
                               select new
            {
                Min = new Sample(distribution.Age, distribution.MinValue.Value),
                Max = new Sample(distribution.Age, distribution.MaxValue.Value),
            };

            knownSamples = knownSamples.ToList();
            parameter.Parameter(Constants.Distribution.MINIMUM).Value = _interpolation.Interpolate(knownSamples.Select(item => item.Min), originData.Age.Value);
            parameter.Parameter(Constants.Distribution.MAXIMUM).Value = _interpolation.Interpolate(knownSamples.Select(item => item.Max), originData.Age.Value);
            parameter.IsFixedValue = false;
        }
Ejemplo n.º 4
0
        private DistributedParameterValue distributedParameterValueFrom(IDistributedParameter parameter)
        {
            var    parameterPath = _entityPathResolver.PathFor(parameter);
            var    distributionType = parameter.Formula.DistributionType();
            double p1 = 0, p2 = 0;

            if (distributionType == DistributionTypes.Normal || distributionType == DistributionTypes.LogNormal)
            {
                p1 = parameter.MeanParameter.Value;
                p2 = parameter.DeviationParameter.Value;
            }
            else if (distributionType == DistributionTypes.Uniform)
            {
                p1 = parameter.Parameter(Constants.Distribution.MINIMUM).Value;
                p2 = parameter.Parameter(Constants.Distribution.MAXIMUM).Value;
            }
            return(new DistributedParameterValue(parameterPath, parameter.Value, parameter.Percentile, p1, p2, distributionType));
        }
 public IDistributionFormula CreateFor(IEnumerable <ParameterDistributionMetaData> distributions, IDistributedParameter parameter, OriginData originData)
 {
     UpdateDistributionBasedOn(distributions, parameter, null, originData);
     return(_distributionFormulaFactory.CreateUniformDistributionFormulaFor(parameter, parameter.Parameter(Constants.Distribution.MINIMUM), parameter.Parameter(Constants.Distribution.MAXIMUM)));
 }