Beispiel #1
0
        private void addVariabilityParameterIn(ISpatialStructure spatialStructure)
        {
            var organism = getOrganism(spatialStructure);

            if (organism == null)
            {
                return;
            }

            var lumen = organism.EntityAt <IContainer>("Lumen");

            if (lumen == null)
            {
                return;
            }

            var parameter = _objectBaseFactory.Create <IDistributedParameter>()
                            .WithName(EFFECTIVE_SURFACE_AREA_VARIABILITY_FACTOR)
                            .WithDescription("Effective surface area variability factor");

            parameter.WithGroup("GI_ANATOMY_AEFF_FACTOR");

            var meanParameter       = effectiveSurfaceAreaMeanParameter();
            var deviationParameter  = effectiveSurfaceAreaDeviationParameter();
            var percentileParameter = effectiveSurfaceAreaPercentileParameter();

            parameter.Add(meanParameter);
            parameter.Add(deviationParameter);
            parameter.Add(percentileParameter);
            parameter.Formula = _distributionFormulaFactory.CreateLogNormalDistributionFormulaFor(parameter, meanParameter, deviationParameter);

            lumen.Add(parameter);
        }
        public void UpdateDistributionFormula()
        {
            IDistributionFormula newFormula;

            switch (_distributedParameterDTO.FormulaType)
            {
            case DistributionFormulaType.DiscreteDistribution:
                checkChildrenForDiscreteDistributionProperties();
                newFormula = _distributionFormulaFactory.CreateDiscreteDistributionFormulaFor(_distributedParameter,
                                                                                              getChildParameter(Constants.Distribution.MEAN));
                break;

            case DistributionFormulaType.NormalDistribution:

                checkChildrenForNormalDistributionProperties();
                newFormula = _distributionFormulaFactory.CreateNormalDistributionFormulaFor(_distributedParameter,
                                                                                            getChildParameter(Constants.Distribution.MEAN),
                                                                                            getChildParameter(Constants.Distribution.DEVIATION));
                break;

            case DistributionFormulaType.UniformDistribution:
                checkChildrenForUniformDistributionProperties();
                newFormula = _distributionFormulaFactory.CreateUniformDistributionFormulaFor(_distributedParameter,
                                                                                             getChildParameter(Constants.Distribution.MINIMUM),
                                                                                             getChildParameter(Constants.Distribution.MAXIMUM));
                break;

            case DistributionFormulaType.LogNormalDistribution:
                checkChildrenForLogNormalDistributionProperties();
                newFormula = _distributionFormulaFactory.CreateLogNormalDistributionFormulaFor(_distributedParameter,
                                                                                               getChildParameter(Constants.Distribution.MEAN),
                                                                                               getChildParameter(Constants.Distribution.GEOMETRIC_DEVIATION));
                break;

            default:
                throw new ArgumentOutOfRangeException("distributionFormulaType");
            }
            updateDistributedFormula(newFormula);
            rebind();
        }