Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
        }