IsDataDaily() static private method

static private IsDataDaily ( List data ) : bool
data List
return bool
Example #1
0
        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);

            //truncate baseline to observed record for proper quantile lookup
            Utils.TruncateToObs(observedMonthly, ref 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);
        }
Example #2
0
 private static List <Point> DataToMonthly(List <Point> data)
 {
     /* if data is monthly return data, if data is daily process
      * data, otherwise print error message and get out of here */
     if (Utils.IsDataMonthly(data))
     {
         return(data);
     }
     else if (Utils.IsDataDaily(data))
     {
         return(DailyToMonthly(data));
     }
     else
     {
         Console.WriteLine("error: only monthly or daily inputs supported");
         return(new List <Point> {
         });
     }
 }
Example #3
0
        private static void WriteFile(List <Point> sim_new, string filename,
                                      TextFormat fmt)
        {
            //make sure directory to filename exists
            string outdir = Path.GetDirectoryName(Path.GetFullPath(filename));

            if (!Directory.Exists(outdir))
            {
                Directory.CreateDirectory(outdir);
            }

            //fill lines with sim new data
            string[] lines = new string[sim_new.Count];
            for (int i = 0; i < sim_new.Count; i++)
            {
                Point pt = sim_new[i];

                if (fmt == TextFormat.vic)
                {
                    lines[i] = string.Format("{0} {1} {2:0.000}", pt.Date.Year, pt.Date.Month,
                                             pt.Value);
                    if (Utils.IsDataDaily(sim_new))
                    {
                        lines[i] = string.Format("{0} {1} {2} {3:0.000}", pt.Date.Year, pt.Date.Month,
                                                 pt.Date.Day, pt.Value);
                    }
                }
                if (fmt == TextFormat.csv)
                {
                    lines[i] = string.Format("{0:M/d/yyyy},{1:0.000}", pt.Date, pt.Value);
                }
            }

            //write file
            File.WriteAllLines(filename, lines);
        }