protected override void Context() { base.Context(); _normalDistribution1 = new ParameterDistributionMetaData { Age = 20, Mean = 5, Deviation = 10 }; _normalDistribution2 = new ParameterDistributionMetaData { Age = 10, Mean = 15, Deviation = 30 }; _normalDistributions = new List <ParameterDistributionMetaData> { _normalDistribution1, _normalDistribution2 }; _parameter = A.Fake <IDistributedParameter>(); IParameter meanParameter = DomainHelperForSpecs.ConstantParameterWithValue(1).WithName("Mean"); IParameter deviationParameter = DomainHelperForSpecs.ConstantParameterWithValue(2).WithName("Deviation"); A.CallTo(() => _parameter.MeanParameter).Returns(meanParameter); A.CallTo(() => _parameter.DeviationParameter).Returns(deviationParameter); A.CallTo(() => _distrFormulaFactory.CreateNormalDistributionFormulaFor(_parameter, meanParameter, deviationParameter)).Returns(new NormalDistributionFormula()); _originData = new OriginData { Age = 12 }; }
bool isElderlyICRPVolumeParameterIn(ParameterDistributionMetaData pd, string organ) { return(pd.Population.Equals(CoreConstants.Population.ICRP) && pd.Age >= 40 && pd.ParameterName.Equals("Volume") && pd.ContainerType.Equals(CoreConstants.ContainerType.ORGAN) && pd.ContainerName.Equals(organ)); }
private void scaleDistributionMetaData(ParameterDistributionMetaData parameterDistributionMeta, double hrel, double alpha) { var scale = Math.Pow(hrel, alpha); parameterDistributionMeta.Mean *= scale; if (parameterDistributionMeta.DistributionType == CoreConstants.Distribution.Normal) { parameterDistributionMeta.Deviation *= scale; } }
protected override void Context() { _entityPathResolver = A.Fake <IEntityPathResolver>(); _parameterFactory = A.Fake <IParameterFactory>(); _objectBaseFactory = A.Fake <IObjectBaseFactory>(); _distributedParameter = A.Fake <IDistributedParameter>(); A.CallTo(() => _parameterFactory.CreateFor(A <ParameterDistributionMetaData> ._)) .Invokes(x => _distributionMetaData = x.GetArgument <ParameterDistributionMetaData>(0)).Returns(_distributedParameter); sut = new AdvancedParameterFactory(_entityPathResolver, _parameterFactory, _objectBaseFactory); }
private IEnumerable <ParameterDistributionMetaData> scaleDistributions(TableFormulaParameter <IDistributedParameter> parameter, IEnumerable <ParameterDistributionMetaData> distributionsToScale) { //Retrieve the mean height parameter for the given origin data var originData = parameter.OriginData; var individualParameter = parameter.Parameter; bool needHeightScaling = needScaling(originData, individualParameter); if (!needHeightScaling) { return(distributionsToScale); } //retrieve the height distribution for the original individual var heightDistributions = allDistributionsFor(_allHeightDistributionMaleParameters, _allHeightDistributionFemaleParameters, originData).ToList(); var heightDistributionParameters = distributionParametersFor(heightDistributions, originData); double meanHeight = heightDistributionParameters.Item1; double deviation = heightDistributionParameters.Item2; var heigthDistributionFormula = distributionFrom(DistributionTypes.Normal, meanHeight, deviation); double currentHeight = originData.Height.GetValueOrDefault(meanHeight); //same height, not need to scale if (ValueComparer.AreValuesEqual(meanHeight, currentHeight)) { return(distributionsToScale); } //is used in order to retrieve the percentile double currentPercentile = heigthDistributionFormula.CalculatePercentileForValue(currentHeight); double alpha = individualParameter.ParentContainer.Parameter(CoreConstants.Parameter.ALLOMETRIC_SCALE_FACTOR).Value; var currentOriginData = originData.Clone(); var scaledParameterDistributionMetaData = new List <ParameterDistributionMetaData>(); foreach (var originDistributionMetaData in distributionsToScale) { var distributionMetaData = ParameterDistributionMetaData.From(originDistributionMetaData); currentOriginData.Age = originDistributionMetaData.Age; double hrelForAge = calculateRelativeHeightForAge(heightDistributions, currentOriginData, currentPercentile); scaleDistributionMetaData(distributionMetaData, hrelForAge, alpha); scaledParameterDistributionMetaData.Add(distributionMetaData); } return(scaledParameterDistributionMetaData); }
protected override void Context() { base.Context(); _normalDistribution1 = new ParameterDistributionMetaData(); _normalDistribution1.DistributionType = CoreConstants.Distribution.Normal; _normalDistribution2 = new ParameterDistributionMetaData(); _normalDistribution2.DistributionType = CoreConstants.Distribution.Normal; _logNormalDistribution = new ParameterDistributionMetaData(); _logNormalDistribution.DistributionType = CoreConstants.Distribution.LogNormal; _onlyNormalDistributions = new List <ParameterDistributionMetaData> { _normalDistribution1, _normalDistribution2 }; _mixedDistributions = new List <ParameterDistributionMetaData> { _normalDistribution1, _logNormalDistribution }; }
private IReadOnlyList <ParameterDistributionMetaData> scaleDistributions(TableFormulaParameter <IDistributedParameter> parameter, IReadOnlyList <ParameterDistributionMetaData> distributionsToScale) { //Retrieve the mean height parameter for the given origin data var originData = parameter.OriginData; var individualParameter = parameter.Parameter; bool needHeightScaling = needScaling(originData, individualParameter); if (!needHeightScaling) { return(distributionsToScale); } var(meanHeight, currentHeight, currentPercentile, heightDistributionSamples) = heightDistributionsFor(originData); //same height, not need to scale if (ValueComparer.AreValuesEqual(meanHeight, currentHeight)) { return(distributionsToScale); } //is used in order to retrieve the percentile double alpha = individualParameter.ParentContainer.Parameter(CoreConstants.Parameters.ALLOMETRIC_SCALE_FACTOR).Value; var currentOriginData = originData.Clone(); var scaledParameterDistributionMetaData = new List <ParameterDistributionMetaData>(); foreach (var originDistributionMetaData in distributionsToScale) { var distributionMetaData = ParameterDistributionMetaData.From(originDistributionMetaData); currentOriginData.Age.Value = originDistributionMetaData.Age; var(mean, deviation) = heightDistributionSamples(currentOriginData); double heightAtPercentile = valueFrom(DistributionTypes.Normal, mean, deviation, currentPercentile); double hrelForAge = heightAtPercentile / mean; scaleDistributionMetaData(distributionMetaData, hrelForAge, alpha); scaledParameterDistributionMetaData.Add(distributionMetaData); } return(scaledParameterDistributionMetaData); }
protected override void Context() { base.Context(); _discreteDistribution1 = new ParameterDistributionMetaData { Age = 20, Mean = 5 }; _discreteDistribution2 = new ParameterDistributionMetaData { Age = 10, Mean = 15 }; _discreteDistributions = new List <ParameterDistributionMetaData> { _discreteDistribution1, _discreteDistribution2 }; _parameter = A.Fake <IDistributedParameter>(); var meanParameter = DomainHelperForSpecs.ConstantParameterWithValue(1).WithName("Mean"); A.CallTo(() => _parameter.MeanParameter).Returns(meanParameter); _originData = new OriginData { Age = 12 }; A.CallTo(() => _distrFormulaFactory.CreateDiscreteDistributionFormulaFor(_parameter, meanParameter)).Returns(new DiscreteDistributionFormula()); }
protected override void Context() { _compartment = A.Fake <Compartment>(); A.CallTo(() => _compartment.OrganName).Returns("MyParentOrgan"); _compartment.Name = "MyComp"; var containerPath = new ObjectPath(new[] { _compartment.OrganName, _compartment.Name }).ToString(); _containerPathRetriever = A.Fake <IEntityPathResolver>(); A.CallTo(() => _containerPathRetriever.PathFor(_compartment)).Returns(containerPath); _originData = new OriginData(); _originData.Population = new SpeciesPopulation(); var distributionDefinition = new ParameterDistributionMetaData(); var rateDefinition = new ParameterRateMetaData(); var valueDefinition = new ParameterValueMetaData(); distributionDefinition.ParameterName = "tutu"; var distributionRepository = A.Fake <IParameterDistributionRepository>(); A.CallTo(() => distributionRepository.AllFor(containerPath)).Returns(new List <ParameterDistributionMetaData> { distributionDefinition }); var rateRepository = A.Fake <IParameterRateRepository>(); A.CallTo(() => rateRepository.AllFor(containerPath)).Returns(new List <ParameterRateMetaData> { rateDefinition }); var valueRepository = A.Fake <IParameterValueRepository>(); A.CallTo(() => valueRepository.AllFor(containerPath)).Returns(new List <ParameterValueMetaData> { valueDefinition }); sut = new ParameterQuery(distributionRepository, valueRepository, rateRepository, _containerPathRetriever); }
protected override void Because() { _copy = ParameterDistributionMetaData.From(sut); }
private double valueFrom(ParameterDistributionMetaData distributionMetaData, double percentile) { return(valueFrom(distributionMetaData.Distribution, distributionMetaData.Mean, distributionMetaData.Deviation, percentile)); }