Esempio n. 1
0
        private AxisOptions getAxisOptions(DistributionSettings settings, ContinuousDistributionData data)
        {
            var axisOptions = new AxisOptions(DefaultConverter.Instance)
            {
                XLabel        = settings.XAxisTitle,
                YLabel        = settings.YAxisTitle,
                Title         = settings.PlotCaption,
                EnlargeLimits = false,
                YMin          = 0,
                YMajorGrid    = true,
                LegendOptions = new LegendOptions {
                    LegendPosition = LegendOptions.LegendPositions.NorthEast
                }
            };

            if (isSingleValueDistribution(data))
            {
                var value = getSingleValueDistributionValue(data);
                if (!float.IsNaN(value))
                {
                    axisOptions.XMin   = value - (float)data.BarWidth;
                    axisOptions.XMax   = value + (float)data.BarWidth;
                    axisOptions.XTicks = new [] { value };
                }
            }

            return(axisOptions);
        }
Esempio n. 2
0
        private void plot <TObjectToPlot, TVectorialParametersContainer>(TVectorialParametersContainer populationDataCollector, TObjectToPlot objectToPlot,
                                                                         Func <TVectorialParametersContainer, DistributionSettings, TObjectToPlot, IDimension, Unit, ContinuousDistributionData> distributionCreator,
                                                                         Action <TObjectToPlot, DistributionSettings, Unit> updatePlotOptionAction,
                                                                         DistributionSettings settings, IDimension dimension, Unit displayUnit) where TObjectToPlot : IWithDimension
        {
            var dimensionToUse = dimension ?? objectToPlot.Dimension;
            var settingsToUse  = settings ?? new DistributionSettings();

            updatePlotOptionAction(objectToPlot, settingsToUse, displayUnit);
            _view.Plot(distributionCreator(populationDataCollector, settingsToUse, objectToPlot, dimensionToUse, displayUnit), settingsToUse);
        }
Esempio n. 3
0
        private static void updateStandardSettings(DistributionSettings settings)
        {
            if (string.IsNullOrEmpty(settings.YAxisTitle))
            {
                settings.YAxisTitle = settings.AxisCountMode.ToString();
            }

            if (string.IsNullOrEmpty(settings.SelectedGender))
            {
                settings.SelectedGender = CoreConstants.Population.AllGender;
            }
        }
Esempio n. 4
0
 protected override void Context()
 {
     base.Context();
     _population  = A.Fake <IPopulationDataCollector>();
     _pkParameter = new QuantityPKParameter {
         Dimension = A.Fake <IDimension>(), Name = "toto", QuantityPath = "A|B|C"
     };
     A.CallTo(() => _pkParameterRepository.DisplayNameFor(_pkParameter.Name)).Returns("totoDisplay");
     _settings    = new DistributionSettings();
     _displayUnit = A.Fake <Unit>();
     _data        = new ContinuousDistributionData(AxisCountMode.Count, 10);
     A.CallTo(() => _displayUnitRetriever.PreferredUnitFor(_pkParameter.Dimension)).Returns(_displayUnit);
     A.CallTo(() => _distributionDataCreator.CreateFor(_population, _settings, _pkParameter, _pkParameter.Dimension, _displayUnit)).Returns(_data);
 }
Esempio n. 5
0
        private void updatePlotOptionsDefaultsFor(string xCaption, DistributionSettings settings, string plotCaption = null)
        {
            if (string.IsNullOrEmpty(settings.XAxisTitle))
            {
                settings.XAxisTitle = xCaption;
            }

            updateStandardSettings(settings);

            if (string.IsNullOrEmpty(settings.PlotCaption))
            {
                settings.PlotCaption = plotCaption ?? xCaption;
            }
        }
Esempio n. 6
0
 protected AdvancedParameterDistributionPresenter(IAdvancedParameterDistributionView view, IPopulationParameterGroupsPresenter parametersPresenter,
                                                  IRepresentationInfoRepository representationInfoRepository, IEntityPathResolver entityPathResolver, IPopulationDistributionPresenter populationParameterDistributionPresenter,
                                                  IProjectChangedNotifier projectChangedNotifier)
     : base(view)
 {
     _parametersPresenter                      = parametersPresenter;
     _representationInfoRepository             = representationInfoRepository;
     _entityPathResolver                       = entityPathResolver;
     _populationParameterDistributionPresenter = populationParameterDistributionPresenter;
     _projectChangedNotifier                   = projectChangedNotifier;
     _defaultSettings = new DistributionSettings();
     _parametersPresenter.GroupNodeSelected     += (o, e) => activateNode(e.Node);
     _parametersPresenter.ParameterNodeSelected += (o, e) => activateNode(e.Node);
     _view.UpdateParameterGroupView(_parametersPresenter.View);
     _allParametersCache = new PathCache <IParameter>(_entityPathResolver);
     _view.AddDistributionView(_populationParameterDistributionPresenter.View);
     AddSubPresenters(_parametersPresenter, _populationParameterDistributionPresenter);
 }
Esempio n. 7
0
        private BarPlotOptions getBarPlotOptions(DistributionSettings settings, ContinuousDistributionData data)
        {
            var width = data.BarWidth;
            var shift = Helper.Length(2, Helper.MeasurementUnits.pt);

            if (settings.BarType == BarType.SideBySide)
            {
                width /= (double)getGroups(data).Rows.Count;
            }
            else
            {
                shift = string.Empty;
            }

            return(new BarPlotOptions
            {
                BarPlotType = getBarPlotType(settings.BarType),
                Width = width.ToString(CultureInfo.InvariantCulture),
                Shift = shift
            });
        }
Esempio n. 8
0
        public ContinuousDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IParameter parameter, IDimension dimension, Unit displayUnit)
        {
            var allValues = parameterContainer.AllValuesFor(_entityPathResolver.PathFor(parameter));

            return(CreateFor(parameterContainer, settings, allValues, dimension, displayUnit));
        }
Esempio n. 9
0
        public ContinuousDistributionData CreateFor(IPopulationDataCollector populationDataCollector, DistributionSettings settings, QuantityPKParameter parameter, IDimension dimension, Unit displayUnit)
        {
            var allValues = populationDataCollector.AllPKParameterValuesFor(parameter.QuantityPath, parameter.Name);

            return(CreateFor(populationDataCollector, settings, allValues, dimension, displayUnit));
        }
Esempio n. 10
0
        public DiscreteDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IReadOnlyList <string> allDiscreteValues, IComparer <string> comparer)
        {
            var data = new DiscreteDistributionData(settings.AxisCountMode);

            //all genders
            var allGenders = allGendersFrom(parameterContainer, allDiscreteValues.Count);
            int allItemsForSelectedGender = numberOfItemsFor(allGenders, settings.SelectedGender);

            //group the values by gender
            var valueGenders = allDiscreteValues.Select((value, index) => new { Value = value, Gender = allGenders[index] })
                               .OrderBy(x => x.Value, comparer)
                               .GroupBy(x => x.Gender);

            foreach (var valueGender in valueGenders)
            {
                if (!shouldDisplayGender(valueGender.Key, settings.SelectedGender))
                {
                    continue;
                }

                var valuesByGenderAndCovariates = valueGender.GroupBy(x => x.Value).ToList();
                foreach (var value in valuesByGenderAndCovariates)
                {
                    double count = value.Count();
                    if (settings.AxisCountMode == AxisCountMode.Percent)
                    {
                        count = count * 100.0 / allItemsForSelectedGender;
                    }

                    data.AddData(value.Key, count, _representationInfoRepository.DisplayNameFor(valueGender.Key));
                }
            }
            return(data);
        }
Esempio n. 11
0
        public void Plot(IVectorialParametersContainer vectorialParametersContainer, IReadOnlyList <string> values, string caption, IComparer <string> comparer, DistributionSettings settings)
        {
            var settingsToUse = settings ?? new DistributionSettings();

            updatePlotOptionsDefaultsFor(caption, settingsToUse);
            _view.Plot(_distributionDataCreator.CreateFor(vectorialParametersContainer, settingsToUse, values, comparer), settingsToUse);
        }
Esempio n. 12
0
        public void Plot(IVectorialParametersContainer vectorialParametersContainer, string covariate, DistributionSettings settings = null)
        {
            var settingsToUse = settings ?? new DistributionSettings();

            updatePlotOptionsDefaultsFor(covariate, settingsToUse);
            _view.Plot(_distributionDataCreator.CreateFor(vectorialParametersContainer, settingsToUse, covariate), settingsToUse);
        }
Esempio n. 13
0
 public void Plot(ContinuousDistributionData dataToPlot, DistributionSettings settings)
 {
     chart.Plot(dataToPlot, settings);
 }
Esempio n. 14
0
        public void Plot(IPopulationDataCollector populationDataCollector, QuantityPKParameter pkParameter, DistributionSettings settings = null, IDimension dimension = null, Unit displayUnit = null)
        {
            var displayUnitToUse = displayUnit ?? _displayUnitRetriever.PreferredUnitFor(pkParameter.Dimension);

            plot(populationDataCollector, pkParameter, _distributionDataCreator.CreateFor, updatePlotOptionsDefaultsFor, settings, dimension, displayUnitToUse);
        }
Esempio n. 15
0
        public DiscreteDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, string covariate)
        {
            var allValues = parameterContainer.AllCovariateValuesFor(covariate);

            return(CreateFor(parameterContainer, settings, allValues, Comparer <string> .Default));
        }
Esempio n. 16
0
 private void updatePlotOptionsDefaultsFor(QuantityPKParameter parameter, DistributionSettings settings, Unit displayUnit)
 {
     updatePlotOptionsDefaultsFor(getTitleFor(parameter, displayUnit), settings, parameter.QuantityPath);
 }
Esempio n. 17
0
 private void updatePlotOptionsDefaultsFor(IParameter parameter, DistributionSettings settings, Unit displayUnit)
 {
     updatePlotOptionsDefaultsFor(getTitleFor(parameter, displayUnit), settings, _representationInfoRepository.DisplayNameFor(parameter));
 }
Esempio n. 18
0
 public void Plot(DiscreteDistributionData dataToPlot, DistributionSettings settings)
 {
     chart.Plot(dataToPlot, settings);
 }
Esempio n. 19
0
        public ContinuousDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IReadOnlyList <double> values, IDimension dimension, Unit displayUnit)
        {
            var allValuesInDisplayUnit = values.Select(value => dimension.BaseUnitValueToUnitValue(displayUnit, value)).ToList();
            var allGenders             = allGendersFrom(parameterContainer, allValuesInDisplayUnit.Count);
            var allValidValues         = allValuesInDisplayUnit.Where(x => !double.IsNaN(x)).ToList();

            var allIntervals = _binIntervalsCreator.CreateUniformIntervalsFor(allValidValues);

            var data = new ContinuousDistributionData(settings.AxisCountMode, allIntervals.Count);

            if (!allValidValues.Any())
            {
                return(data);
            }

            int allItemsForSelectedGender = numberOfItemsFor(allGenders, settings.SelectedGender);

            //group the values by gender
            var valueGenders = allValuesInDisplayUnit.Select((value, index) => new { Value = value, Gender = allGenders[index] })
                               .Where(x => !double.IsNaN(x.Value))
                               .GroupBy(x => x.Gender)
                               .ToList();


            foreach (var interval in allIntervals)
            {
                var currentInterval = interval;
                foreach (var valueGender in valueGenders)
                {
                    if (!shouldDisplayGender(valueGender.Key, settings.SelectedGender))
                    {
                        continue;
                    }

                    double count = valueGender.Count(item => currentInterval.Contains(item.Value));
                    if (settings.AxisCountMode == AxisCountMode.Percent)
                    {
                        count = count * 100.0 / allItemsForSelectedGender;
                    }

                    data.AddData(currentInterval.MeanValue, count, _representationInfoRepository.DisplayNameFor(valueGender.Key));
                }
            }

            data.XMinData = allValidValues.Min();
            data.XMaxData = allValidValues.Max();

            return(data);
        }
Esempio n. 20
0
        public void Plot(IVectorialParametersContainer vectorialParametersContainer, IParameter parameter, DistributionSettings settings = null, IDimension dimension = null, Unit displayUnit = null)
        {
            var displayUnitToUse = displayUnit ?? _displayUnitRetriever.PreferredUnitFor(parameter);

            plot(vectorialParametersContainer, parameter, _distributionDataCreator.CreateFor, updatePlotOptionsDefaultsFor, settings, dimension, displayUnitToUse);
        }