Beispiel #1
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            var dataList = primitives.SelectMany(x => x.Select(y => !((bool)y.SampleValue)));
            var dataSum = dataList.Sum(x => Convert.ToInt32(x));
            var dataCount = dataList.Count();

            var p = 0.0;
            var np = 0.0;
            var delta = 0.0;
            if (samples.Any())
            {
                p = (double) dataSum/dataCount;
                np = ParentPanel.SubgroupSize * p;
                delta = 3 * Math.Sqrt(np * (1 - p));

                Mean = Math.Round(np, 2);

                UCL = Math.Round(Mean + delta, 2);
                LCL = Math.Round(Math.Max(Mean - delta, 0), 2);
            }

            foreach (var sample in samples)
            {
                sample.SetUCL(UCL);
                sample.SetMean(Mean);
                sample.SetLCL(LCL);

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
Beispiel #2
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

            foreach (var sample in samples)
            {
                sample.SetUCL(UCL);
                sample.SetMean(Mean);
                sample.SetLCL(LCL);

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
Beispiel #3
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {            
            Mean = samples.Any(x => x.SampleValue != null) ? Math.Round(samples.Where(x => x.SampleValue != null).Average(x => (double)x.SampleValue), 2) : 0;

            UCL = Math.Round(Mean * StatisticConstants.D4(ParentPanel.SubgroupSize), 2);
            LCL = Math.Round(Math.Max(Mean * StatisticConstants.D3(ParentPanel.SubgroupSize), 0), 2);

            foreach (var sample in samples)
            {
                sample.SetUCL(UCL);
                sample.SetMean(Mean);
                sample.SetLCL(LCL);

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
Beispiel #4
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            var stdDevAv = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

            Mean = Math.Round(stdDevAv, 3);
            UCL = Math.Round(StatisticConstants.B4(ParentPanel.SubgroupSize) * Mean, 2);
            LCL = Math.Round(StatisticConstants.B3(ParentPanel.SubgroupSize) * Mean, 2);

            foreach (var sample in samples)
            {
                sample.SetUCL(UCL);
                sample.SetMean(Mean);
                sample.SetLCL(LCL);

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
Beispiel #5
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            var rValues = primitives.Select(t => t.Select(x => (double)x.SampleValue).Range()).ToList();

            Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

            var rBar = rValues.Any() ? rValues.Average() : 0;

            UCL = Math.Round(rBar * StatisticConstants.D4(ParentPanel.SubgroupSize), 2);
            LCL = Math.Round(rBar * StatisticConstants.D3(ParentPanel.SubgroupSize), 2);

            foreach (var sample in samples)
            {
                sample.SetUCL(UCL);
                sample.SetMean(Mean);
                sample.SetLCL(LCL);

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
        private IFilterDescriptor PrepareFilter()
        {
            var list = new MobileObservableCollection<IFilterDescriptor>();

            foreach (var filter in _filterValues)
            {
                list.Add(new FilterDescriptor(filter.Key, FilterOperator.Contains, filter.Value));
            }

            return list.Any() ? new FilterDescriptor(LogicalOperators.And, list) : null;
        }
Beispiel #7
0
        protected override void UpdateLevelsValues(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            var dataList = primitives.SelectMany(x => x.Select(y => !((bool) y.SampleValue)));
            var dataSum = dataList.Sum(x => Convert.ToInt32(x));
            var dataCount = dataList.Count();

            var averageSampleSize = primitives.Select(x => x.Count).Average();            

            Mean = samples.Any() ? Math.Round((double) dataSum / dataCount, 4) : 0;

            var delta = 3 * Math.Sqrt((Mean * (1 - Mean)) / averageSampleSize);

            UCL = Math.Round(Math.Min(Mean + delta, 1), 4);
            LCL = Math.Round(Math.Max(Mean - delta, 0), 4);

            foreach (var sample in samples)
            {
                if (AverageLimits)
                {
                    sample.SetUCL(UCL);
                    sample.SetMean(Mean);
                    sample.SetLCL(LCL);
                }
                else
                {
                    delta = 3 * Math.Sqrt((Mean * (1 - Mean)) / sample.SampleSize);

                    sample.SetUCL(Math.Round(Math.Min(Mean + delta, 1), 4));
                    sample.SetMean(Mean);
                    sample.SetLCL(Math.Round(Math.Max(Mean - delta, 0), 4));
                }

                sample.SetUCL(ParentPanel.CustomUCL, true);
                sample.SetLCL(ParentPanel.CustomLCL, true);

                sample.SetUSL(ParentPanel.USL);
                sample.SetLSL(ParentPanel.LSL);
            }
        }
Beispiel #8
0
        private void ResolveLimitsCalculationMethod(List<List<SamplePrimitive>> primitives, MobileObservableCollection<SampleUnit> samples)
        {
            var allRenderedCharts = ParentPanel.Charts.Select(x => x.ChartType);

            if (allRenderedCharts.Contains(ChartTypesEnum.RChart))
            {
                var rValues = new List<double>();

                for (var i = 0; i < primitives.Count; i++)
                    rValues.Add(primitives[i].Select(x => (double)x.SampleValue).Range());

                var rBar = rValues.Any() ? rValues.Average() : 0;
                Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

                var a2 = StatisticConstants.A2(ParentPanel.SubgroupSize);

                UCL = Math.Round(Mean + rBar * a2, 2);
                LCL = Math.Round(Mean - rBar * a2, 2);
            }
            else if (allRenderedCharts.Contains(ChartTypesEnum.StDevChart))
            {
                var stDevList = new List<double>();
                for (var i = 0; i < primitives.Count; i++)
                {
                    var data = primitives[i].Select(x => x.SampleValue).Cast<double>();
                    var calculatedValue = data != null && data.Any() ? Math.Round(data.StdDev(), 3) : 0;
                    stDevList.Add(calculatedValue);
                }
                var stdDevAv = stDevList.Any() ? stDevList.Average() : 0;

                Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

                var a3 = StatisticConstants.A3(ParentPanel.SubgroupSize);

                UCL = Math.Round(Mean + stdDevAv * a3, 2);
                LCL = Math.Round(Mean - stdDevAv * a3, 2);
            }
            else if (allRenderedCharts.Contains(ChartTypesEnum.XMRChart))
            {
                var mrList = new List<double>();
                var list = primitives.SelectMany(x => x.Select(y => y.SampleValue)).Cast<double>().ToList();

                for (var i = 0; i < list.Count; i++)
                {
                    if (i >= ParentPanel.SubgroupSize - 1)
                    {
                        var data = list.GetRange(i - (ParentPanel.SubgroupSize - 1), ParentPanel.SubgroupSize);
                        var sampleValue = data != null && data.Any() ? (double?)Math.Abs(data.Max() - data.Min()) : null;
                        if (sampleValue.HasValue)
                            mrList.Add(sampleValue.Value);
                    }
                }
                var mrAv = mrList.Any() ? mrList.Average() : 0;

                Mean = samples.Any() ? Math.Round(samples.Average(x => (double)x.SampleValue), 2) : 0;

                var d2 = StatisticConstants.d2(ParentPanel.SubgroupSize);

                UCL = Math.Round(Mean + 3 * (mrAv / d2), 2);
                LCL = Math.Round(Mean - 3 * (mrAv / d2), 2);
            }
        }
Beispiel #9
0
        private void AddMandatoryFilter(MobileObservableCollection<IFilterDescriptor> filterList, string processSystemName)
        {
            var filterInfoType = DynamicTypeManager.GetFilterInfoType(processSystemName);
            if (filterInfoType != null)
            {
                IFilter[] filters = (IFilter[])filterInfoType.GetProperty("FilterList", BindingFlags.Static | BindingFlags.Public).GetValue(null, null);

                if (filters != null)
                {
                    IList<int> identityRoles = ((Library.Security.MQ1Identity)ApplicationContext.User.Identity).RolesId;
                    if (identityRoles == null || identityRoles.Count == 0) return;

                    var mandatoryFilters = filters.Where(x => !string.IsNullOrEmpty(x.RoleIds));
                    foreach (IFilter filter in mandatoryFilters)
                    {
                        var filterRoles = filter.RoleIds.Split(',').Select(int.Parse).ToList();
                        if (filterRoles.Contains(Constants.AllRolesId) || identityRoles.Intersect(filterRoles).Any())
                        {
                            IFilterDescriptor filterDescriptor = (FilterDescriptor)FilterDescriptor.FromJSON(filter.Definition);

                            var filterValue = filterDescriptor.Value as FilterValue;
                            if (filterValue != null && filterValue.Type == FilterValueType.Udp)
                                filterValue.ProvidedValue = filterValue.DefaultValue;

                            filterDescriptor.ReplacePredefinedValues(null);
                            if (!filterList.Any(f => f.FilterGuid.Equals(filterDescriptor.FilterGuid)))
                                filterList.Add(filterDescriptor);
                        }
                    }
                }
            }
        }
Beispiel #10
0
        public void UpdateLevelValues(MobileObservableCollection<SampleUnit> samples, bool recalculateSamples = false)
        {
            if (recalculateSamples)
            {
                var sampleList = OriginalData.Select(item => new SamplePrimitive(item.YValue, 0, "Number")).ToList();
                samples.Clear();
                foreach (var computeSubgroup in ComputeSubgroups(sampleList, 0, 0))
                    samples.Add(computeSubgroup);
                return;
            }

            var minX = 0.0;
            var maxx = 0.0;

            var standardStepCount = GetStepCount(OriginalData.Count);
            _minimum = OriginalData.Count > 0 ? Math.Floor(OriginalData.Min(x => (double)x.YValue)) : 0;
            var max = OriginalData.Count > 0 ? OriginalData.Max(x => (double)x.YValue) : 0;
            var integerMax = Math.Ceiling(max);
            if ((max % integerMax).Equals(0.0))
                integerMax++;
            _maximum = integerMax;
            _stepWidth = Math.Abs(_maximum - _minimum) / ParentPanel.RangeSteps;

            if (_stepWidth > 1 && ParentPanel.RangeSteps == standardStepCount)
            {
                _stepWidth = Convert.ToInt32(_stepWidth);
                ParentPanel.SetSilently(ChartPanel.ExponentProperty, 0);
            }
            else
            {
                var e = ParentPanel.Exponent == 0 ? (int) Math.Ceiling(Math.Log10(1/_stepWidth)) : ParentPanel.Exponent;
                if (ParentPanel.Exponent < e)
                    ParentPanel.SetSilently(ChartPanel.ExponentProperty, e);
                else
                    e = ParentPanel.Exponent;

                _stepWidth = Math.Round(_stepWidth, e);
            }

            if (samples.Any())
                _maximum = Convert.ToDouble(samples.Last().CategoryValue.LabelValue, CultureInfo.InvariantCulture);

            var list = new List<double>();
            if (ShowLSL)
                list.Add(ParentPanel.LSL);
            list.Add(UseCustomCLs ? ParentPanel.CustomLCL : LCL);
            list.Add(_minimum);
            minX = list.Min();

            list = new List<double>();
            if (ShowUSL)
                list.Add(ParentPanel.USL);
            list.Add(UseCustomCLs ? ParentPanel.CustomUCL : UCL);
            list.Add(_maximum);
            maxx = list.Max();

            var deltaMin = _minimum - minX;
            if (deltaMin > 0)
            {
                var newDelta = deltaMin + (_stepWidth - (deltaMin % _stepWidth));
                var deltaLength = newDelta / _stepWidth;

                var startValue = _minimum - _stepWidth;

                for (var i = 0; i < deltaLength; i++)
                {
                    var subgroupSample = SpcManager.CreateSample(null, 0, i);
                    subgroupSample.SetXLabelValue(startValue, LabelValueDataTypes.Number);
                    subgroupSample.SetSampleSize(0);
                    samples.Insert(0, subgroupSample);

                    startValue -= _stepWidth;
                }

                _minimum = startValue + _stepWidth;
            }
            else
            {
                var sample = SpcManager.CreateSample(null, 0, 0);
                sample.SetXLabelValue(_minimum - _stepWidth, LabelValueDataTypes.Number);
                sample.SetSampleSize(0);
                samples.Insert(0, sample);
            }

            var deltaMax = maxx - _maximum;
            if (deltaMax > 0)
            {
                var newDelta = deltaMax + (_stepWidth - (deltaMax % _stepWidth));
                var deltaLength = newDelta / _stepWidth;

                var startValue = _maximum + _stepWidth;

                for (var i = 0; i < deltaLength; i++)
                {
                    var subgroupSample = SpcManager.CreateSample(null, 0, i);
                    subgroupSample.SetXLabelValue(startValue, LabelValueDataTypes.Number);
                    subgroupSample.SetSampleSize(0);
                    samples.Add(subgroupSample);

                    startValue += _stepWidth;
                }

                _maximum = startValue - _stepWidth;
            }
            else
            {
                var sample = SpcManager.CreateSample(null, 0, 0);
                sample.SetXLabelValue(_maximum + _stepWidth, LabelValueDataTypes.Number);
                sample.SetSampleSize(0);
                samples.Add(sample);
            }

            for (var i = 0; i < samples.Count; i++)
            {
                samples[i].SetIndex(i);
                samples[i].CategoryValue.Index = i;
            }

            MinXValue = _minimum = deltaMin > 0 ? _minimum : _minimum - _stepWidth;
            MaxXValue = _maximum = deltaMax > 0 ? _maximum + _stepWidth : _maximum + _stepWidth * 2;
            XStep = _stepWidth;

            BellCurveData = new MobileObservableCollection<ElementarySampleInfo>();
            var nh = 0.0;
            if (OriginalData != null)
                nh = (OriginalData.Count * XStep); //needed to bring bell curve to the scale of histogram
            var floatingSigma = Mean - 4 * Sigma;
            for (var i = 0; i < 49; i++)
            {
                var value = (1 / (Sigma * Math.Sqrt(2 * Math.PI))) * Math.Pow(Math.E, -0.5 * Math.Pow((floatingSigma - Mean) / Sigma, 2)) * nh;
                BellCurveData.Add(DataPortal.Fetch<ElementarySampleInfo>(new LimitData(floatingSigma, value)));

                floatingSigma += 1 / 6.0 * Sigma;
            }
        }
Beispiel #11
0
 /// <summary>
 /// Updates the list.
 /// </summary>
 /// <param name="newValue">The new value.</param>
 /// <param name="list">The list.</param>
 private void UpdateList(MobileObservableCollection<DisponibleProcess> newValue, IList<IRecentEntry> list)
 {
     for (var i = list.Count - 1; i >= 0 ; i--)
     {
         if (!newValue.Any(e => e.ProcessId == list[i].Id && e.ProcessName == list[i].Name))
             //new environment or process renamed/removed
             list.Remove(list[i]);
     }
 }