BiasCorrectQ.Program.DoBiasCorrection C# (CSharp) Method

DoBiasCorrection() static private method

static private DoBiasCorrection ( string observedFile, string baselineFile, string futureFile, TextFormat infmt ) : List
observedFile string
baselineFile string
futureFile string
infmt TextFormat
return List
        internal static List<Point> DoBiasCorrection(string observedFile,
            string baselineFile, string futureFile, TextFormat infmt)
        {
            //get input data
            List<Point> observed = GetInputData(observedFile, infmt);
            List<Point> baseline = GetInputData(baselineFile, infmt);
            List<Point> future = GetInputData(futureFile, infmt);
            if (observed.Count == 0 || baseline.Count == 0 || future.Count == 0)
            {
            Console.WriteLine("error parsing input file(s)");
            return new List<Point> { };
            }

            //get monthly data
            List<Point> observedMonthly = DataToMonthly(observed);
            List<Point> baselineMonthly = DataToMonthly(baseline);
            List<Point> futureMonthly = DataToMonthly(future);
            if (observedMonthly.Count == 0 || baselineMonthly.Count == 0
                || futureMonthly.Count == 0)
            {
            Console.WriteLine("error parsing input file(s) to monthly");
            return new List<Point> { };
            }

            //truncate inputs to water year data
            Utils.TruncateToWYs(observedMonthly);
            Utils.TruncateToWYs(baselineMonthly);
            Utils.TruncateToWYs(futureMonthly);
            Utils.TruncateToWYs(future);

            //align baseline and observed records for proper quantile lookup
            Utils.AlignPeriods(observedMonthly, baselineMonthly);

            //do monthly bias correction
            List<Point> biasedMonthly = DoMonthlyBiasCorrection(observedMonthly,
                                    baselineMonthly, futureMonthly);
            List<Point> biasedFinal = DoAnnualBiasCorrection(observedMonthly,
                                  baselineMonthly, futureMonthly, biasedMonthly);

            //do daily adjustments
            if (Utils.IsDataDaily(future))
            {
            List<Point> biasedDaily = AdjDailyToMonthly(future, biasedFinal);
            AdjMonthlyBoundary(biasedDaily);
            biasedFinal = AdjDailyToMonthly(biasedDaily, biasedFinal);
            }

            return biasedFinal;
        }