climate-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From huiky...@apache.org
Subject [1/2] climate git commit: CLIMATE-736 - Update dataset_processor.write_netcdf_multiple_datasets_with_subregions
Date Sat, 30 Jan 2016 19:56:52 GMT
Repository: climate
Updated Branches:
  refs/heads/master e6fb4aa0b -> 44c189e85


CLIMATE-736 - Update dataset_processor.write_netcdf_multiple_datasets_with_subregions

- With this update, ocw.dataset_processor.write_netcdf_multiple_datasets_with_subregions can
properly handle datasets on curvilinear grids.
This ticket is also a follow up of CLIMATE-732. There were some errors in ocw.dataset_processor.temporal_rebin.


Project: http://git-wip-us.apache.org/repos/asf/climate/repo
Commit: http://git-wip-us.apache.org/repos/asf/climate/commit/a38041e3
Tree: http://git-wip-us.apache.org/repos/asf/climate/tree/a38041e3
Diff: http://git-wip-us.apache.org/repos/asf/climate/diff/a38041e3

Branch: refs/heads/master
Commit: a38041e35fdcb8f1902a467f8fa594d2b7cdd18c
Parents: b30e12b
Author: huikyole <huikyole@argo.jpl.nasa.gov>
Authored: Sat Jan 30 11:54:28 2016 -0800
Committer: huikyole <huikyole@argo.jpl.nasa.gov>
Committed: Sat Jan 30 11:54:28 2016 -0800

----------------------------------------------------------------------
 ocw/dataset_processor.py | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/climate/blob/a38041e3/ocw/dataset_processor.py
----------------------------------------------------------------------
diff --git a/ocw/dataset_processor.py b/ocw/dataset_processor.py
index 40f6cc8..fee61bf 100755
--- a/ocw/dataset_processor.py
+++ b/ocw/dataset_processor.py
@@ -565,8 +565,9 @@ def write_netcdf_multiple_datasets_with_subregions(ref_dataset, ref_name,
     # Set attribute lenghts
     nobs = 1
     nmodel = len(model_dataset_array)
-    lat_len = len(dataset.lats)
-    lon_len = len(dataset.lons)
+    lat_len, lon_len = dataset.values.shape[1:]
+    lat_ndim = dataset.lats.ndim
+    lon_ndim = dataset.lons.ndim
     time_len = len(dataset.times)
 
     if not subregions == None:
@@ -578,9 +579,15 @@ def write_netcdf_multiple_datasets_with_subregions(ref_dataset, ref_name,
     time_dim = out_file.createDimension('time', time_len)
 
     # Create variables and store the values
-    lats = out_file.createVariable('lat', 'f8', ('y'))
+    if lat_ndim ==2:
+        lats = out_file.createVariable('lat', 'f8', ('y','x'))
+    else:
+        lats = out_file.createVariable('lat', 'f8', ('y'))
     lats[:] = dataset.lats
-    lons = out_file.createVariable('lon', 'f8', ('x'))
+    if lon_ndim ==2:
+        lons = out_file.createVariable('lon', 'f8', ('y','x'))
+    else:
+        lons = out_file.createVariable('lon', 'f8', ('x'))
     lons[:] = dataset.lons
     times = out_file.createVariable('time', 'f8', ('time',))
     times.units = "days since %s" % dataset.times[0]
@@ -656,12 +663,12 @@ def temperature_unit_conversion(dataset):
     :returns: The dataset with (potentially) updated units.
     :rtype: :class:`dataset.Dataset`
     '''
-    temperature_variables = ['temp','tas','tasmax','taxmin','T','t']
+    temperature_variables = ['temp','tas','tasmax','taxmin','T','tg']
     variable = dataset.variable.lower()
 
     if any(sub_string in variable for sub_string in temperature_variables):
         dataset_units = dataset.units.lower()
-        if dataset_units == 'c' or dataset_units == 'celcius':
+        if dataset_units == 'c' or dataset_units == 'celsius':
             dataset.values = 273.15 + dataset.values
             dataset.units = 'K'
 
@@ -900,7 +907,7 @@ def _rcmes_calc_average_on_new_time_unit(data, dates, unit):
         new_data = ma.mean(data, axis=0)
         new_date = [dates[size(dates)/2]]
     if unit == 'annual':
-        years = [d.year for d in target_dataset.times]
+        years = [d.year for d in dates]
         years_sorted = np.unique(years)
         new_data = ma.zeros([years_sorted.size, ny, nx])
         it = 0
@@ -911,9 +918,9 @@ def _rcmes_calc_average_on_new_time_unit(data, dates, unit):
             new_date.append(datetime.datetime(year=year, month=7, day=2))
             it = it+1
     if unit == 'monthly':
-        years = [d.year for d in target_dataset.times]
+        years = [d.year for d in dates]
         years_sorted = np.unique(years)
-        months = [d.month for d in target_dataset.times]
+        months = [d.month for d in dates]
         months_sorted = np.unique(months)
         
         new_data = ma.zeros([years_sorted.size*months_sorted.size, ny, nx])
@@ -926,16 +933,16 @@ def _rcmes_calc_average_on_new_time_unit(data, dates, unit):
                 new_date.append(datetime.datetime(year=year, month=month, day=15))
                 it = it+1   
     if unit == 'daily':
-        dates = [d.year*10000.+d.month*100.+d.day for d in target_dataset.times] 
-        dates_sorted = np.unique(dates)
+        days = [d.year*10000.+d.month*100.+d.day for d in dates] 
+        days_sorted = np.unique(days)
 
-        new_data = ma.zeros([dates_sorted.size, ny, nx])
+        new_data = ma.zeros([days_sorted.size, ny, nx])
         it = 0
         new_date = []
-        for date in dates_sorted:
-            index = np.where(dates == date)[0]
+        for day in days_sorted:
+            index = np.where(days = day)[0]
             new_data[it,:] = ma.mean(data[index,:], axis=0)
-            new_date.append(datetime.datetime(year=date/10000, month=(date % 10000)/100,
day=date % 100))
+            new_date.append(datetime.datetime(year=day/10000, month=(day % 10000)/100, day=day
% 100))
             it = it+1
         
     return new_data, np.array(new_date)


Mime
View raw message