public void TestMethod1() { string fn = Path.Combine(TestData.DataPath, "SimpleResponseFunction.csv"); var csv = new CsvFile(fn); var diversion = new DataTableSeries(csv, TimeInterval.Daily, "Date", "Input"); diversion.Read(); var expected = new DataTableSeries(csv, TimeInterval.Daily, "Date", "ExpectedResponse"); expected.Read(); var responseFunction = new DataTableSeries(csv, TimeInterval.Daily, "Date", "ResponseFunction"); responseFunction.Read(); Console.WriteLine(" responseFunction has " + responseFunction.Count + " points"); Console.WriteLine("diversion has " + diversion.Count); Series lag = Math.RoutingWithLags(diversion, responseFunction.Values); Assert.AreEqual(7, lag.Count); lag.WriteToConsole(); if (lag.Count != expected.Count) { Console.WriteLine("Error: expected count not the same as lag count"); } double sumDiff = System.Math.Abs(Math.Sum(expected - lag)); Console.WriteLine("Sum of difference = " + sumDiff); Assert.AreEqual(0, sumDiff, 0.0000001); }
public override ParserResult Lookup(string name, TimeInterval defaultInterval) { if (data.Columns.IndexOf(name) >= 0) { Series s = new DataTableSeries(data, m_interval, dateColumn, name); return(new ParserResult(s)); } else { return(base.Lookup(name, defaultInterval)); } }
public void UnregulatedFlow() { var fn = Path.Combine(TestData.DataPath, "calculationtests_jck_qu.csv"); var csv = new CsvFile(fn); Series af = new DataTableSeries(csv, TimeInterval.Daily, "Date", "jck af"); Series qd = new DataTableSeries(csv, TimeInterval.Daily, "Date", "jck qd"); var qu = new CalculationSeries(); qu.Parser.VariableResolver.Add("jck_af", af); qu.Parser.VariableResolver.Add("jck_qd", qd); qu.Expression = "(jck_af[t]-jck_af[t-1])/1.98347+jck_qd"; DateTime t1 = DateTime.Parse("12/25/2010"); DateTime t2 = DateTime.Parse("12/27/2010"); qu.Calculate(t1, t2); qu.WriteToConsole(); Assert.AreEqual(674.39, qu["12/26/2010"].Value, .01); }
public void ConvertToCelcius() { var fn = Path.Combine(TestData.DataPath, "calculationtests_convert.csv"); var csv = new CsvFile(fn); Series s = new DataTableSeries(csv, TimeInterval.Daily, "Date", "value"); s.Units = "degrees C"; s.Name = "series1"; CalculationSeries c = new CalculationSeries(); c.Parser.VariableResolver.Add("series1", s); c.Expression = "5/9*(series1-32)"; c.Read(); // c.WriteToConsole(); c.Clear(); c.Calculate(); //t,t.AddDays(3)); c.WriteToConsole(); Assert.AreEqual(0, c[0].Value, 0.01); Assert.AreEqual(100, c[1].Value, 0.01); }
public void SevenDayMovingDaily() { string fn = Path.Combine(TestData.DataPath, "SpecificationTestData.csv"); var csv = new CsvFile(fn); DataTableSeries s = new DataTableSeries(csv, TimeInterval.Daily, "Date", "JulianDay"); Series expected = new DataTableSeries(csv, TimeInterval.Daily, "Date", "SevenDayMovingAverage"); s.Read(); expected.Read(); Series s2 = Reclamation.TimeSeries.Math.SevenDayMovingAverage(s); Assert.AreEqual(2798, s2.Count); expected.RemoveMissing(); Assert.AreEqual(expected.Count, s2.Count); Series diff = expected - s2; double d = Reclamation.TimeSeries.Math.Sum(diff); Assert.AreEqual(0, d, 0.001); }
private static void ConvertToDailyAndSaveInDatabase() { //Date,WY1949,WY1950,WY1951,WY1952,WY1953,WY1954,WY1955,WY1956,WY1957,WY1958,WY1959,WY1960,WY1961,WY1962,WY1963,WY1964,WY1965,WY1966,WY1967,WY1968,WY1969,WY1970,WY1971,WY1972,WY1973,WY1974,WY1975,WY1976,WY1977,WY1978,WY1979,WY1980,WY1981,WY1982,WY1983,WY1984,WY1985,WY1986,WY1987,WY1988,WY1989,WY1990,WY1991,WY1992,WY1993,WY1994,WY1995,WY1996,WY1997,WY1998,WY1999,WY2000,WY2001,WY2002,WY2003,WY2004,WY2005,WY2006,WY2007,WY2008,WY2009,WY2010,WY2011,WY2012,WY2013,WY2014,WY2015 SQLiteServer svr = new SQLiteServer(@"C:\temp\test.pdb"); TimeSeriesDatabase db = new TimeSeriesDatabase(svr); string fn = @"c:\temp\HEII1_QINE.ESPF10.csv"; CsvFile csv = new CsvFile(fn); Series merged = new Series(); for (int i = 1; i < csv.Columns.Count; i++) { DataTableSeries s = new DataTableSeries(csv, TimeInterval.Irregular, "Date", csv.Columns[i].ColumnName); s.Read(); merged.Add(Reclamation.TimeSeries.Math.ShiftToYear(s, 1995)); var daily = Reclamation.TimeSeries.Math.DailyAverage(s); daily.Table.TableName = csv.Columns[i].ColumnName; daily.Name = daily.Table.TableName; db.AddSeries(daily); } var scenarios = db.GetScenarios(); for (int yr = 1949; yr < 2015; yr++) { // scenarios.AddScenarioRow(yr.ToString(), yr == 1949, yr.ToString()); } db.Server.SaveTable(scenarios); //Series s = new ExcelDataReaderSeries(csv, "HEII1_QINE.ESPF10", "Date", col[i], "kcfs"); //s.Read(); //s.SiteID = "Snake River nr Heise"; //s.Table.TableName = col[i]; //db.AddSeries(s); }