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 2014/02/23 05:45:21 UTC

svn commit: r1570972 - in /incubator/climate/trunk/ocw-ui/backend: processing.py tests/test_processing.py

Author: joyce
Date: Sun Feb 23 04:45:21 2014
New Revision: 1570972

URL: http://svn.apache.org/r1570972
Log:
CLIMATE-332 - Add custom naming for RCMED loaded datasets

- When loading a dataset from RCMED, if the user does not pass a name
  for the dataset the backend will attempt to grab the `longname` for
  the selected dataset. If it is unable to find that, it will default to
  'RCMED dataset'.
- Add tests for default naming and custom naming of RCMED datasets.

Modified:
    incubator/climate/trunk/ocw-ui/backend/processing.py
    incubator/climate/trunk/ocw-ui/backend/tests/test_processing.py

Modified: incubator/climate/trunk/ocw-ui/backend/processing.py
URL: http://svn.apache.org/viewvc/incubator/climate/trunk/ocw-ui/backend/processing.py?rev=1570972&r1=1570971&r2=1570972&view=diff
==============================================================================
--- incubator/climate/trunk/ocw-ui/backend/processing.py (original)
+++ incubator/climate/trunk/ocw-ui/backend/processing.py Sun Feb 23 04:45:21 2014
@@ -304,14 +304,30 @@ def _load_rcmed_dataset_object(dataset_i
     :raises KeyError: If the required keys aren't present in the dataset_info or
         eval_bounds objects.
     '''
-    return rcmed.parameter_dataset(dataset_info['dataset_id'],
-								   dataset_info['parameter_id'],
-								   eval_bounds['lat_min'],
-								   eval_bounds['lat_max'],
-								   eval_bounds['lon_min'],
-								   eval_bounds['lon_max'],
-								   eval_bounds['start_time'],
-								   eval_bounds['end_time'])
+    dataset = rcmed.parameter_dataset(dataset_info['dataset_id'],
+								      dataset_info['parameter_id'],
+								      eval_bounds['lat_min'],
+								      eval_bounds['lat_max'],
+								      eval_bounds['lon_min'],
+								      eval_bounds['lon_max'],
+								      eval_bounds['start_time'],
+								      eval_bounds['end_time'])
+
+    # If a name is passed for the dataset, use it. Otherwise, use the file name.
+    if 'name'in dataset_info.keys():
+        name = dataset_info['name']
+    else:
+        for m in rcmed.get_parameters_metadata():
+            if m['parameter_id'] == str(dataset_info['parameter_id']):
+                name = m['longname']
+                break
+        else:
+            # If we can't find a name for the dataset, default to something...
+            name = "RCMED dataset"
+
+    dataset.name = name
+
+    return dataset
 
 def _calculate_new_latlon_bins(eval_bounds, lat_grid_step, lon_grid_step):
     ''' Calculate the new lat/lon ranges for spatial re-binning.

Modified: incubator/climate/trunk/ocw-ui/backend/tests/test_processing.py
URL: http://svn.apache.org/viewvc/incubator/climate/trunk/ocw-ui/backend/tests/test_processing.py?rev=1570972&r1=1570971&r2=1570972&view=diff
==============================================================================
--- incubator/climate/trunk/ocw-ui/backend/tests/test_processing.py (original)
+++ incubator/climate/trunk/ocw-ui/backend/tests/test_processing.py Sun Feb 23 04:45:21 2014
@@ -64,17 +64,17 @@ class TestDatasetProessingHelper(unittes
                 invalid_dataset_object, 'fake parameter')
 
 class TestRCMEDDatasetLoad(unittest.TestCase):
-    def test_valid_load(self):
+    def setUp(self):
         metadata = rcmed.get_parameters_metadata()
         # Load TRMM from RCMED
         dataset_dat = [m for m in metadata if m['parameter_id'] == '36'][0]
 
-        dataset_info = {
+        self.dataset_info = {
             'dataset_id': int(dataset_dat['dataset_id']),
             'parameter_id': int(dataset_dat['parameter_id'])
         }
 
-        eval_bounds = {
+        self.eval_bounds = {
             'start_time': dt.datetime(1998, 02, 01),
             'end_time': dt.datetime(1998, 03, 01),
             'lat_min': -10,
@@ -83,16 +83,27 @@ class TestRCMEDDatasetLoad(unittest.Test
             'lon_max': 15
         }
 
-        dataset = bp._load_rcmed_dataset_object(dataset_info, eval_bounds)
+    def test_valid_load(self):
+        dataset = bp._load_rcmed_dataset_object(self.dataset_info, self.eval_bounds)
         lat_min, lat_max, lon_min, lon_max = dataset.spatial_boundaries()
         start_time, end_time = dataset.time_range()
 
-        self.assertTrue(eval_bounds['lat_min'] <= lat_min)
-        self.assertTrue(eval_bounds['lat_max'] >= lat_max)
-        self.assertTrue(eval_bounds['lon_min'] <= lon_min)
-        self.assertTrue(eval_bounds['lon_max'] >= lon_max)
-        self.assertTrue(eval_bounds['start_time'] <= start_time)
-        self.assertTrue(eval_bounds['end_time'] >= end_time)
+        self.assertTrue(self.eval_bounds['lat_min'] <= lat_min)
+        self.assertTrue(self.eval_bounds['lat_max'] >= lat_max)
+        self.assertTrue(self.eval_bounds['lon_min'] <= lon_min)
+        self.assertTrue(self.eval_bounds['lon_max'] >= lon_max)
+        self.assertTrue(self.eval_bounds['start_time'] <= start_time)
+        self.assertTrue(self.eval_bounds['end_time'] >= end_time)
+
+    def test_default_name_assignment(self):
+        dataset = bp._load_rcmed_dataset_object(self.dataset_info, self.eval_bounds)
+        self.assertEquals(dataset.name, 'TRMM v.7 Monthly Precipitation')
+
+    def test_custom_name_assignment(self):
+        self.dataset_info['name'] = 'CustomName'
+        dataset = bp._load_rcmed_dataset_object(self.dataset_info, self.eval_bounds)
+        self.assertEquals(dataset.name, self.dataset_info['name'])
+
 
 class TestMetricLoad(unittest.TestCase):
     def test_get_valid_metric_options(self):