public static void AddRawThinned(ref Culture culture, int skip = 0, bool isFirstDeriv = false, CalibrationFunction calibrationFunction = null) { var raw = culture.GrowthMeasurements.GetMeasurements(DataType.Raw); var thinRaw = new List <GrowthMeasurement>(); for (int i = 0; i < raw.Count; i += skip + 1) { var measurement = raw[i]; thinRaw.Add(measurement); } culture.GrowthMeasurements.SetMeasurements(thinRaw, DataType.RawThinned); var processesThinned = Modules.ReProccessedDatapoints(thinRaw, BlankValue, calibrationFunction); if (isFirstDeriv) { var firstDeriv = Modules.CalculateFirstDerivative(processesThinned, FirstDerivWindow); culture.GrowthMeasurements.SetMeasurements(firstDeriv, DataType.FirstDerivative); } culture.GrowthMeasurements.SetMeasurements(processesThinned, DataType.ProcessedThinned); if (Modules.NoGrowth(processesThinned)) { return; } var metaDataThinned = new GrowthVariableMetaData(); var macroLagData = Modules.GetLag(processesThinned); metaDataThinned.Lag = macroLagData.InterceptStretchs; var macroYieldData = Modules.GetYield(processesThinned); metaDataThinned.Yield = macroYieldData.YieldAnchors; var macroRateData = Modules.GetGT(processesThinned); metaDataThinned.Rate = macroRateData.RateSlopeAnchors; culture.GrowthMeasurements.SetMetaData(DataType.ProcessedThinned, metaDataThinned); }
public static void ReProcess(Culture culture) { var raw = culture.GrowthMeasurements.GetMeasurements(DataType.Raw); var thinRaw = culture.GrowthMeasurements.GetMeasurements(DataType.RawThinned); if (thinRaw != null) { var processesThinned = Modules.ProccessedDatapoints(thinRaw, BlankValue, TrueODCalibartionFunction); culture.GrowthMeasurements.SetMeasurements(processesThinned, DataType.ProcessedThinned); if (!Modules.NoGrowth(processesThinned)) { var metaDataThinned = new GrowthVariableMetaData(); var macroLagData = Modules.GetLag(processesThinned); metaDataThinned.Lag = macroLagData.InterceptStretchs; var macroYieldData = Modules.GetYield(processesThinned); metaDataThinned.Yield = macroYieldData.YieldAnchors; var macroRateData = Modules.GetGT(processesThinned); metaDataThinned.Rate = macroRateData.RateSlopeAnchors; culture.GrowthMeasurements.SetMetaData(DataType.ProcessedThinned, metaDataThinned); } } var smooth = Modules.ProccessedDatapoints(raw, BlankValue, TrueODCalibartionFunction); culture.GrowthMeasurements.SetMeasurements(smooth, DataType.Processed); var firstDeriv = Modules.CalculateFirstDerivative(smooth, FirstDerivWindow); culture.GrowthMeasurements.SetMeasurements(firstDeriv, DataType.FirstDerivative); culture.GrowthMeasurements.SetMeasurements(Modules.ConvertBioScreenTimeToHrs(raw), DataType.Raw); double lag; double yield; double gt; var metaData = new GrowthVariableMetaData(); var processed = culture.GrowthMeasurements.GetMeasurements(DataType.Processed); if (Modules.NoGrowth(processed)) { lag = 48; yield = double.NaN; gt = double.NaN; } else { 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.GetGT(processed); gt = macroRateData.GT; metaData.Rate = macroRateData.RateSlopeAnchors; } culture.Lag = lag; culture.Rate = gt; culture.Yield = yield; culture.GrowthMeasurements.SetMetaData(DataType.Processed, metaData); }
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; }