You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@climate.apache.org by jo...@apache.org on 2013/08/15 20:47:38 UTC
svn commit: r1514435 -
/incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
Author: joyce
Date: Thu Aug 15 18:47:38 2013
New Revision: 1514435
URL: http://svn.apache.org/r1514435
Log:
CLIMATE-237 - Add basic subset test.
Modified:
incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
Modified: incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py
URL: http://svn.apache.org/viewvc/incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py?rev=1514435&r1=1514434&r2=1514435&view=diff
==============================================================================
--- incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py (original)
+++ incubator/climate/branches/RefactorInput/ocw/tests/test_dataset_processor.py Thu Aug 15 18:47:38 2013
@@ -27,120 +27,120 @@ class CustomAssertions:
def assert1DArraysEqual(self, array1, array2):
self.assertSequenceEqual(tuple(array1), tuple(array2))
-#class TestEnsemble(unittest.TestCase, CustomAssertions):
- #def test_unequal_dataset_shapes(self):
- #self.ten_year_dataset = ten_year_monthly_dataset()
- #self.two_year_dataset = two_year_daily_dataset()
- #with self.assertRaises(ValueError):
- #self.ensemble_dataset = dp.ensemble([self.ten_year_dataset, self.two_year_dataset])
-
- #def test_ensemble_logic(self):
- #self.datasets = []
- #self.datasets.append(build_ten_cube_dataset(1))
- #self.datasets.append(build_ten_cube_dataset(2))
- #self.three = build_ten_cube_dataset(3)
- #self.datasets.append(self.three)
- #self.datasets.append(build_ten_cube_dataset(4))
- #self.datasets.append(build_ten_cube_dataset(5))
- #self.ensemble = dp.ensemble(self.datasets)
- #self.ensemble_flat = self.ensemble.values.flatten()
- #self.three_flat = self.three.values.flatten()
- #self.assert1DArraysEqual(self.ensemble_flat, self.three_flat)
-
- #def test_ensemble_name(self):
- #self.ensemble_dataset_name = "Dataset Ensemble"
- #self.datasets = []
- #self.datasets.append(build_ten_cube_dataset(1))
- #self.datasets.append(build_ten_cube_dataset(2))
- #self.ensemble = dp.ensemble(self.datasets)
- #self.assertEquals(self.ensemble.name, self.ensemble_dataset_name)
-
-
-#class TestTemporalRebin(unittest.TestCase, CustomAssertions):
-
- #def setUp(self):
- #self.ten_year_monthly_dataset = ten_year_monthly_dataset()
- #self.ten_year_annual_times = np.array([datetime.datetime(year, 1, 1) for year in range(2000, 2010)])
- #self.two_years_daily_dataset = two_year_daily_dataset()
-
- #def test_monthly_to_annual_rebin(self):
- #annual_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=365))
- #self.assert1DArraysEqual(annual_dataset.times, self.ten_year_annual_times)
-
- #def test_monthly_to_full_rebin(self):
- #full_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=3650))
- #full_times = [datetime.datetime(2004, 12, 16)]
- #self.assertEqual(full_dataset.times, full_times)
-
- #def test_daily_to_monthly_rebin(self):
- #"""This test takes a really long time to run. TODO: Figure out where the performance drag is"""
- #monthly_dataset = dp.temporal_rebin(self.two_years_daily_dataset, datetime.timedelta(days=31))
- #bins = list(set([datetime.datetime(time_reading.year, time_reading.month, 1) for time_reading in self.two_years_daily_dataset.times]))
- #bins = np.array(bins)
- #bins.sort()
- #self.assert1DArraysEqual(monthly_dataset.times, bins)
-
- #def test_daily_to_annual_rebin(self):
- #annual_dataset = dp.temporal_rebin(self.two_years_daily_dataset, datetime.timedelta(days=366))
- #bins = list(set([datetime.datetime(time_reading.year, 1, 1) for time_reading in self.two_years_daily_dataset.times]))
- #bins = np.array(bins)
- #bins.sort()
- #self.assert1DArraysEqual(annual_dataset.times, bins)
-
-
- #def test_non_rebin(self):
- #"""This will take a monthly dataset and ask for a monthly rebin of 28 days. The resulting
- #dataset should have the same time values"""
- #monthly_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=28))
- #good_times = self.ten_year_monthly_dataset.times
- #self.assert1DArraysEqual(monthly_dataset.times, good_times)
-
-
-#class TestRcmesSpatialRegrid(unittest.TestCase):
-
- #def test_return_array_shape(self):
- #spatial_values = np.ones([90,180])
- #spatial_values = ma.array(spatial_values)
-
- #lat_range = ma.array(range(-89, 90, 2))
- #lon_range = ma.array(range(-179, 180, 2))
-
- #lons, lats = np.meshgrid(lon_range, lat_range)
- ## Convert these to masked arrays
- #lats = ma.array(lats)
- #lons = ma.array(lons)
-
- #lat2_range = np.array(range(-89, 90, 4))
- #lon2_range = np.array(range(-179, 180, 4))
-
- #lons2, lats2 = np.meshgrid(lon2_range, lat2_range)
- ## Convert to masked arrays
- #lats2 = ma.array(lats2)
- #lons2 = ma.array(lons2)
-
- #regridded_values = dp._rcmes_spatial_regrid(spatial_values, lats, lons, lats2, lons2)
- #self.assertEqual(regridded_values.shape, lats2.shape)
- #self.assertEqual(regridded_values.shape, lons2.shape)
-
-#class TestSpatialRegrid(unittest.TestCase, CustomAssertions):
-
- #def setUp(self):
- #self.input_dataset = ten_year_monthly_dataset()
- #self.new_lats = np.array(range(-89, 90, 4))
- #self.new_lons = np.array(range(-179, 180, 4))
- #self.regridded_dataset = dp.spatial_regrid(self.input_dataset, self.new_lats, self.new_lons)
-
-
- #def test_returned_lats(self):
- #self.assert1DArraysEqual(self.regridded_dataset.lats, self.new_lats)
-
- #def test_returned_lons(self):
- #self.assert1DArraysEqual(self.regridded_dataset.lons, self.new_lons)
-
- #def test_shape_of_values(self):
- #regridded_data_shape = self.regridded_dataset.values.shape
- #expected_data_shape = (len(self.input_dataset.times), len(self.new_lats), len(self.new_lons))
- #self.assertSequenceEqual(regridded_data_shape, expected_data_shape)
+class TestEnsemble(unittest.TestCase, CustomAssertions):
+ def test_unequal_dataset_shapes(self):
+ self.ten_year_dataset = ten_year_monthly_dataset()
+ self.two_year_dataset = two_year_daily_dataset()
+ with self.assertRaises(ValueError):
+ self.ensemble_dataset = dp.ensemble([self.ten_year_dataset, self.two_year_dataset])
+
+ def test_ensemble_logic(self):
+ self.datasets = []
+ self.datasets.append(build_ten_cube_dataset(1))
+ self.datasets.append(build_ten_cube_dataset(2))
+ self.three = build_ten_cube_dataset(3)
+ self.datasets.append(self.three)
+ self.datasets.append(build_ten_cube_dataset(4))
+ self.datasets.append(build_ten_cube_dataset(5))
+ self.ensemble = dp.ensemble(self.datasets)
+ self.ensemble_flat = self.ensemble.values.flatten()
+ self.three_flat = self.three.values.flatten()
+ self.assert1DArraysEqual(self.ensemble_flat, self.three_flat)
+
+ def test_ensemble_name(self):
+ self.ensemble_dataset_name = "Dataset Ensemble"
+ self.datasets = []
+ self.datasets.append(build_ten_cube_dataset(1))
+ self.datasets.append(build_ten_cube_dataset(2))
+ self.ensemble = dp.ensemble(self.datasets)
+ self.assertEquals(self.ensemble.name, self.ensemble_dataset_name)
+
+
+class TestTemporalRebin(unittest.TestCase, CustomAssertions):
+
+ def setUp(self):
+ self.ten_year_monthly_dataset = ten_year_monthly_dataset()
+ self.ten_year_annual_times = np.array([datetime.datetime(year, 1, 1) for year in range(2000, 2010)])
+ self.two_years_daily_dataset = two_year_daily_dataset()
+
+ def test_monthly_to_annual_rebin(self):
+ annual_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=365))
+ self.assert1DArraysEqual(annual_dataset.times, self.ten_year_annual_times)
+
+ def test_monthly_to_full_rebin(self):
+ full_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=3650))
+ full_times = [datetime.datetime(2004, 12, 16)]
+ self.assertEqual(full_dataset.times, full_times)
+
+ def test_daily_to_monthly_rebin(self):
+ """This test takes a really long time to run. TODO: Figure out where the performance drag is"""
+ monthly_dataset = dp.temporal_rebin(self.two_years_daily_dataset, datetime.timedelta(days=31))
+ bins = list(set([datetime.datetime(time_reading.year, time_reading.month, 1) for time_reading in self.two_years_daily_dataset.times]))
+ bins = np.array(bins)
+ bins.sort()
+ self.assert1DArraysEqual(monthly_dataset.times, bins)
+
+ def test_daily_to_annual_rebin(self):
+ annual_dataset = dp.temporal_rebin(self.two_years_daily_dataset, datetime.timedelta(days=366))
+ bins = list(set([datetime.datetime(time_reading.year, 1, 1) for time_reading in self.two_years_daily_dataset.times]))
+ bins = np.array(bins)
+ bins.sort()
+ self.assert1DArraysEqual(annual_dataset.times, bins)
+
+
+ def test_non_rebin(self):
+ """This will take a monthly dataset and ask for a monthly rebin of 28 days. The resulting
+ dataset should have the same time values"""
+ monthly_dataset = dp.temporal_rebin(self.ten_year_monthly_dataset, datetime.timedelta(days=28))
+ good_times = self.ten_year_monthly_dataset.times
+ self.assert1DArraysEqual(monthly_dataset.times, good_times)
+
+
+class TestRcmesSpatialRegrid(unittest.TestCase):
+
+ def test_return_array_shape(self):
+ spatial_values = np.ones([90,180])
+ spatial_values = ma.array(spatial_values)
+
+ lat_range = ma.array(range(-89, 90, 2))
+ lon_range = ma.array(range(-179, 180, 2))
+
+ lons, lats = np.meshgrid(lon_range, lat_range)
+ # Convert these to masked arrays
+ lats = ma.array(lats)
+ lons = ma.array(lons)
+
+ lat2_range = np.array(range(-89, 90, 4))
+ lon2_range = np.array(range(-179, 180, 4))
+
+ lons2, lats2 = np.meshgrid(lon2_range, lat2_range)
+ # Convert to masked arrays
+ lats2 = ma.array(lats2)
+ lons2 = ma.array(lons2)
+
+ regridded_values = dp._rcmes_spatial_regrid(spatial_values, lats, lons, lats2, lons2)
+ self.assertEqual(regridded_values.shape, lats2.shape)
+ self.assertEqual(regridded_values.shape, lons2.shape)
+
+class TestSpatialRegrid(unittest.TestCase, CustomAssertions):
+
+ def setUp(self):
+ self.input_dataset = ten_year_monthly_dataset()
+ self.new_lats = np.array(range(-89, 90, 4))
+ self.new_lons = np.array(range(-179, 180, 4))
+ self.regridded_dataset = dp.spatial_regrid(self.input_dataset, self.new_lats, self.new_lons)
+
+
+ def test_returned_lats(self):
+ self.assert1DArraysEqual(self.regridded_dataset.lats, self.new_lats)
+
+ def test_returned_lons(self):
+ self.assert1DArraysEqual(self.regridded_dataset.lons, self.new_lons)
+
+ def test_shape_of_values(self):
+ regridded_data_shape = self.regridded_dataset.values.shape
+ expected_data_shape = (len(self.input_dataset.times), len(self.new_lats), len(self.new_lons))
+ self.assertSequenceEqual(regridded_data_shape, expected_data_shape)
class TestSubset(unittest.TestCase):
def test_subset(self):
@@ -156,11 +156,10 @@ class TestSubset(unittest.TestCase):
}
subset = dp.subset(subregion, target_dataset)
- print subset.lats
- print subset.lons
- print subset.times
- print subset.values
- self.assertEqual(True, True)
+ self.assertEqual(subset.lats.shape[0], 82)
+ self.assertEqual(subset.lons.shape[0], 162)
+ self.assertEqual(subset.times.shape[0], 37)
+ self.assertEqual(subset.values.shape, (37, 82, 162))
def ten_year_monthly_dataset():
lats = np.array(range(-89, 90, 2))