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 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); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType( PsaParameterType.EngineRpm).GetDoubles(); IList <double> injectionTimeData = set.GetParameterOfType( PsaParameterType.InjectionTime).GetDoubles(); CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(rpmData, injectionTimeData, 5); double value = extractor.GetForBaseValue((int)rpm); if (double.IsNaN(value)) { return; } ISettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = applier.GetMarkForValue(value); if (double.IsNaN(mark)) { return; } MarksHistory[date] = mark; }
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); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> pressureDeltaData = set.GetParameterOfType(PsaParameterType.FuelSystemPressureDelta).GetDoubles(); CorrelatedMedianExtractor medianExtractor = new CorrelatedMedianExtractor(rpmData, pressureDeltaData, 5); double value = medianExtractor.GetForBaseValue(Convert.ToDouble((int)Rpm)); if (double.IsNaN(value)) { return; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(value); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmLine = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> chargeTimeLine = set.GetParameterOfType(requiredParameter).GetDoubles(); CorrelatedMedianExtractor exractor = new CorrelatedMedianExtractor( rpmLine, chargeTimeLine, 5); double value = exractor.GetForBaseValue((int)Rpm); if (double.IsNaN(value)) { return; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(value); }
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); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { // 1. get our target rpm from settings PsaParameterData rpmParameter = set.GetParameterOfType(PsaParameterType.EngineRpm); // 2. find data in the dataset PsaParameterData oxygenSensorVoltageParameter = set.GetParameterOfType(GetOxygenSensorParameter()); // 3. get base line (rpm) IList <double> baseLine = rpmParameter.GetDoubles(); // 4. get dependant line (probe voltage) IList <double> dependantLine = oxygenSensorVoltageParameter.GetDoubles(); // 5. extract correlated median for base RPM value CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(baseLine, dependantLine, BaseValuesDifferencePercentageThreshold); CheckpointRpm rpm = GetTargetRpm(); double corellatedMedian = extractor.GetForBaseValue(Convert.ToDouble(rpm)); if (double.IsNaN(corellatedMedian)) { return; } // 6. apply atom settings SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = Math.Round(applier.GetMarkForValue(corellatedMedian), 1); // 7. save to marks history MarksHistory[date] = mark; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet source) { IList <double> baseLine = source.GetParameterOfType( PsaParameterType.EngineRpm).GetDoubles(); IList <double> dependantLine = source. GetCertainInjectorCorrections(injectorNumber).GetDoubles(); CorrelatedMedianExtractor correlatedMedianExtractor = new CorrelatedMedianExtractor(baseLine, dependantLine, BaseValuesDifferencePercentageThreshold); CheckpointRpm targetRpm = RuleTypeToRpm.Map(settings.RuleType); double resultValue = correlatedMedianExtractor.GetForBaseValue( Convert.ToDouble(targetRpm)); if (double.IsNaN(resultValue)) { return; } SettingsAtomApplierByAbsoluteValue applier = new SettingsAtomApplierByAbsoluteValue( settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(resultValue); }