public static void Process(Culture culture, ref float maxTime, ref float minOD, ref float maxOD, float blankValue, bool doFit, string trueODCalibartionFunction, RateTraitExtractionMethod rateTraitExtractionMethod, bool skipMonotonicFilter) { ProcessData(culture, blankValue, doFit, trueODCalibartionFunction, skipMonotonicFilter); UpdateMaximums(culture, ref maxTime, ref maxOD, ref minOD); ExtractTraits(culture, rateTraitExtractionMethod); }
public static void Process(Culture culture, ref float maxTime, ref float minOD, ref float maxOD, float blankValue, bool doFit, float calibrationCoefA, float calibrationCoefB, float calibrationCoefC, RateTraitExtractionMethod rateTraitExtractionMethod, bool skipMonotonicFilter = false) { var trueODCalibartionFunction = SetCalibrationFunction(calibrationCoefA, calibrationCoefB, calibrationCoefC); ProcessData(culture, blankValue, doFit, trueODCalibartionFunction, skipMonotonicFilter); UpdateMaximums(culture, ref maxTime, ref maxOD, ref minOD); ExtractTraits(culture, rateTraitExtractionMethod); }
private static void ExtractTraits(Culture culture, RateTraitExtractionMethod rateTraitExtractionMethod) { const bool getRawMetada = false; double lag; double yield; double gt; var qIdx = new QualityIndex(); var processed = culture.GrowthMeasurements.GetMeasurements(DataType.Processed); if (Modules.NoGrowth(processed)) { lag = 48; yield = double.NaN; gt = double.NaN; } else { var metaData = new GrowthVariableMetaData(); var macroLagData = Modules.GetLag(processed); lag = macroLagData.Lag; metaData.Lag = macroLagData.InterceptStretchs; var macroYieldData = Modules.GetYield(processed); yield = macroYieldData.Yield; metaData.Yield = macroYieldData.YieldAnchors; //var macroRateData = Modules.GetGtSim(processed); MacroRateData macroRateData; switch (rateTraitExtractionMethod) { case RateTraitExtractionMethod.Default: macroRateData = Modules.GetGT(processed); break; case RateTraitExtractionMethod.LinearRegression: macroRateData = Modules.GetGTLinearRegression(processed); break; default: throw new ArgumentOutOfRangeException(nameof(rateTraitExtractionMethod), rateTraitExtractionMethod, null); } gt = macroRateData.GT; metaData.Rate = macroRateData.RateSlopeAnchors; qIdx = Modules.GetQualityIndex(culture, DataType.Raw); culture.GrowthMeasurements.SetMetaData(DataType.Processed, metaData); if (getRawMetada) { var raw = culture.GrowthMeasurements.GetMeasurements(DataType.Raw); var rawMetaData = new GrowthVariableMetaData(); var rawMacroLagData = Modules.GetLag(raw); rawMetaData.Lag = rawMacroLagData.InterceptStretchs; var rawMacroYieldData = Modules.GetYield(raw); rawMetaData.Yield = rawMacroYieldData.YieldAnchors; var rawMacroRateData = Modules.GetGT(raw); rawMetaData.Rate = rawMacroRateData.RateSlopeAnchors; culture.GrowthMeasurements.SetMetaData(DataType.Raw, rawMetaData); } } culture.Lag = lag; culture.Rate = gt; culture.Yield = yield; culture.QualityIndex = qIdx; }