public AnalyticStatisticsItem Get(PsaParametersSet set,
                                          DateTime sourceDataCaptureDateTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(Type,
                                                                       VehicleInfo.Engine.Family.Type, VehicleInfo.Engine.Type);
            PsaParameterData rpmData     = set.GetParameterOfType(PsaParameterType.EngineRpm);
            PsaParameterData voltageData = GetRequiredDependentData(set);

            if (rpmData == null || voltageData == null)
            {
                throw new Exception("set does not fit.");
            }
            CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(
                rpmData.GetDoubles(), voltageData.GetDoubles(),
                RpmCorrelationThresholdPercentage);
            double doubleValue = extractor.GetForBaseValue(Convert.ToDouble(TargetRpm));

            if (!double.IsNaN(doubleValue))
            {
                AnalyticStatisticsValue value =
                    new AnalyticStatisticsValue(doubleValue, info.Vin, set.Id,
                                                sourceDataCaptureDateTime);
                result.Values.Add(value);
            }
            return(result);
        }
Exemple #2
0
        public AnalyticStatisticsItem Get(PsaParametersSet set,
                                          DateTime sourceDataCaptureDateTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(
                AnalyticRuleType.EngineStartUndervoltage,
                info.Engine.Family.Type, info.Engine.Type);
            IList <double> rpmLine =
                set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double> voltagesLine =
                set.GetParameterOfType(PsaParameterType.BatteryVoltage).GetDoubles();
            EngineStartupDetector detector = new EngineStartupDetector(rpmLine);

            if (!detector.EngineStartupDetected())
            {
                return(result); // empty, will be assimilated and disappear
            }
            IList <int> startupPoints = detector.GetEngineStartupPointIndexes();

            // we will have as many statistical values as there is startup points
            foreach (int startupPointIndex in startupPoints)
            {
                StartupUndervoltageExtractor extractor =
                    new StartupUndervoltageExtractor(startupPointIndex, voltagesLine);
                double startupUndervoltage = extractor.Extract();
                if (!double.IsNaN(startupUndervoltage))
                {
                    result.Values.Add(new AnalyticStatisticsValue(
                                          startupUndervoltage, info.Vin, set.Id,
                                          sourceDataCaptureDateTime));
                }
            }
            return(result);
        }
        private void ExtractForInjector(PsaParametersSet set,
                                        AnalyticStatisticsItem result, int injectorNumber,
                                        DateTime sourceDataCaptureDateTime)
        {
            PsaParameterData forThisInjector =
                set.GetCertainInjectorCorrections(injectorNumber);

            if (forThisInjector == null)
            {
                return;
            }
            PsaParameterData rpmData =
                set.GetParameterOfType(PsaParameterType.EngineRpm);
            CorrelatedMedianExtractor extractor =
                new CorrelatedMedianExtractor(
                    rpmData.GetDoubles(), forThisInjector.GetDoubles(),
                    RpmCorrelationThresholdPercentage);
            double res = extractor.GetForBaseValue((int)RuleTypeToRpm.Map(type));

            if (double.IsNaN(res))
            {
                return;
            }
            // becuse we need correction's absolute value, it can be negative
            double abs = Math.Abs(res);

            result.Values.Add(new AnalyticStatisticsValue(
                                  abs, info.Vin, set.Id, sourceDataCaptureDateTime));
        }
Exemple #4
0
 public AnalyticStatisticsItemViewModel(AnalyticStatisticsItem model)
 {
     if (model == null)
     {
         throw new ArgumentNullException("model");
     }
     this.model = model;
     familyType =
         new EngineFamilyTypeViewModel(model.TargetEngineFamilyType);
     engineType =
         new EngineTypeViewModel(model.TargetEngineType);
     itemType = new AnalyticStatisticsItemTypeViewModel(model.Type);
     foreach (AnalyticStatisticsValue val in model.Values)
     {
         if (values.Any(v => v.Vin == val.SourceVin))
         {
             values.First(v => v.Vin == val.SourceVin).
             AddId(val.SourcePsaParametersSetId);
         }
         else
         {
             values.Add(new AnalyticStatisticsSourceVinViewModel(
                            val.SourceVin, val.SourcePsaParametersSetId));
         }
     }
 }
Exemple #5
0
 public ReliabilityEvaluator(AnalyticStatisticsItem item)
 {
     if (item == null)
     {
         throw new ArgumentNullException("item");
     }
     this.item = item;
 }
Exemple #6
0
 public InjectorCorrectionForRpmAggregator(AnalyticStatisticsItem item)
 {
     if (item == null)
     {
         throw new ArgumentNullException("item");
     }
     this.item = item;
 }
Exemple #7
0
 private void ExtractValues(
     PsaParametersSet set, AnalyticStatisticsItem result,
     DateTime sourceDataCaptureDateTime)
 {
     ExtractForInjector(set, result, 1, sourceDataCaptureDateTime);
     ExtractForInjector(set, result, 2, sourceDataCaptureDateTime);
     ExtractForInjector(set, result, 3, sourceDataCaptureDateTime);
     ExtractForInjector(set, result, 4, sourceDataCaptureDateTime);
 }
Exemple #8
0
        public AnalyticStatisticsItem Get(PsaParametersSet set,
                                          DateTime sourceDataCaptureDateTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(Type,
                                                                       VehicleInfo.Engine.Family.Type,
                                                                       VehicleInfo.Engine.Type);

            ExtractValues(set, result, sourceDataCaptureDateTime);
            return(result);
        }
 public AnalyticStatisticsItem Get(
     PsaParametersSet set, DateTime sourceDataCaptureDateTime)
 {
     AnalyticStatisticsItem result = new AnalyticStatisticsItem(Type,
         VehicleInfo.Engine.Family.Type,
         VehicleInfo.Engine.Type);
     int injectorNumber = GetInjectorNumber(Type);
     ExtractForInjector(set, result, 
         injectorNumber, sourceDataCaptureDateTime);
     return result;
 }
Exemple #10
0
        public static AnalyticStatisticsItem FromDtoToDomainObject(AnalyticStatisticsItemDto source)
        {
            AnalyticStatisticsItem target = new AnalyticStatisticsItem(
                (AnalyticRuleType)source.Type,
                (EngineFamilyType)source.TargetEngineFamilyType,
                (EngineType)source.TargetEngineType);

            target.DateGenerated    = source.DateGenerated;
            target.Id               = source.Id;
            target.VersionGenerated = new Version(source.VersionGenerated);
            foreach (AnalyticStatisticsValueDto value in source.Values)
            {
                target.Values.Add(AnalyticStatisticsValueAssembler.FromDtoToDomainObject(value));
            }
            return(target);
        }
Exemple #11
0
        public static AnalyticStatisticsItemDto FromDomainObjectToDto(AnalyticStatisticsItem source)
        {
            AnalyticStatisticsItemDto target = new AnalyticStatisticsItemDto();

            target.Values                 = new List <AnalyticStatisticsValueDto>();
            target.Id                     = source.Id;
            target.DateGenerated          = source.DateGenerated;
            target.TargetEngineFamilyType = (int)source.TargetEngineFamilyType;
            target.TargetEngineType       = (int)source.TargetEngineType;
            target.Type                   = (int)source.Type;
            target.VersionGenerated       = source.VersionGenerated.ToString();
            foreach (AnalyticStatisticsValue value in source.Values)
            {
                target.Values.Add(AnalyticStatisticsValueAssembler.FromDomainObjectToDto(value));
            }
            return(target);
        }
Exemple #12
0
        public AnalyticStatisticsItem Get(
            PsaParametersSet set, DateTime sourceCaptureTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(
                ruleType, info.Engine.Family.Type, info.Engine.Type);
            IList <double>            rpmData        = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>            chargeTimeData = set.GetParameterOfType(GetRequiredType()).GetDoubles();
            CorrelatedMedianExtractor extractor      = new CorrelatedMedianExtractor(rpmData, chargeTimeData, 5);
            double value = extractor.GetForBaseValue(Rpm);

            if (!double.IsNaN(value))
            {
                result.Values.Add(new AnalyticStatisticsValue(
                                      value, info.Vin, set.Id, sourceCaptureTime));
            }
            return(result);
        }
        public List <AnalyticStatisticsItem> RollAlong(PsaTrace trace)
        {
            List <AnalyticStatisticsItem> result =
                new List <AnalyticStatisticsItem>();

            foreach (PsaParametersSet set in trace.ParametersSets)
            {
                foreach (IFitter fitter in fitters)
                {
                    if (fitter.Fits(set))
                    {
                        AnalyticStatisticsItem item = fitter.Get(set, trace.Date);
                        if (item.Values.Count != 0)
                        {
                            result.Add(item);
                        }
                    }
                }
            }
            return(result);
        }
Exemple #14
0
        public AnalyticStatisticsItem Get(PsaParametersSet set,
                                          DateTime sourceDataCaptureDateTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(ruleType,
                                                                       info.Engine.Family.Type, info.Engine.Type);
            IList <double> baseValues =
                set.GetParameterOfType(baseParameter).GetDoubles();
            IList <double> dependantValues =
                set.GetParameterOfType(dependentParameter).GetDoubles();
            CorrelatedMedianExtractor extractor =
                new CorrelatedMedianExtractor(baseValues,
                                              dependantValues, baseParamDiffTresholdPercentage);
            double targetRpm = (int)RuleTypeToRpm.Map(ruleType);
            double value     = extractor.GetForBaseValue(targetRpm);

            if (!double.IsNaN(value))
            {
                result.Values.Add(new AnalyticStatisticsValue(
                                      value, info.Vin, set.Id, sourceDataCaptureDateTime));
            }
            return(result);
        }
Exemple #15
0
        public AnalyticStatisticsItem Get(PsaParametersSet set,
                                          DateTime sourceDataCaptureTime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(
                ruleType, info.Engine.Family.Type, info.Engine.Type);
            IList <double>        rpmData      = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>        requiredData = set.GetParameterOfType(RequiredType).GetDoubles();
            EngineStartupDetector detector     = new EngineStartupDetector(rpmData);

            if (!detector.EngineStartupDetected())
            {
                return(result);
            }
            IList <int> startupIndexes = detector.GetEngineStartupPointIndexes();

            foreach (int startupIndex in startupIndexes)
            {
                double res = StartupRegionExtractor.Extract(startupIndex, requiredData).Max();
                result.Values.Add(new AnalyticStatisticsValue(
                                      res, info.Vin, set.Id, sourceDataCaptureTime));
            }
            return(result);
        }
Exemple #16
0
        public AnalyticStatisticsItem Get(PsaParametersSet set, DateTime sourceDataCapturetime)
        {
            AnalyticStatisticsItem result = new AnalyticStatisticsItem(
                AnalyticRuleType.InjectionTimeStartupPeak,
                info.Engine.Family.Type, info.Engine.Type);
            IList <double>        rpmData  = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles();
            IList <double>        reqData  = set.GetParameterOfType(PsaParameterType.InjectionTime).GetDoubles();
            EngineStartupDetector detectro = new EngineStartupDetector(rpmData);

            if (detectro.EngineStartupDetected())
            {
                IList <int> startupIndexes = detectro.GetEngineStartupPointIndexes();
                foreach (int startupIndex in startupIndexes)
                {
                    AnalyticStatisticsValue value =
                        new AnalyticStatisticsValue(
                            StartupRegionExtractor.Extract(startupIndex, reqData).Max(),
                            info.Vin, set.Id, sourceDataCapturetime);
                    result.Values.Add(value);
                }
            }
            return(result);
        }
Exemple #17
0
 public StandardAggregator(AnalyticStatisticsItem item)
 {
     this.item = item;
 }