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); }
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)); }
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)); } } }
public ReliabilityEvaluator(AnalyticStatisticsItem item) { if (item == null) { throw new ArgumentNullException("item"); } this.item = item; }
public InjectorCorrectionForRpmAggregator(AnalyticStatisticsItem item) { if (item == null) { throw new ArgumentNullException("item"); } this.item = item; }
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); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
public StandardAggregator(AnalyticStatisticsItem item) { this.item = item; }