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-694 - A new module to rebin a dataset using time index
Date Wed, 14 Oct 2015 19:11:55 GMT
Repository: climate
Updated Branches:
  refs/heads/master 799fde64b -> a38724e89


CLIMATE-694 - A new module to rebin a dataset using time index

- ocw.dataset_processor.temporal_rebin_with_time_index has been added


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

Branch: refs/heads/master
Commit: aa0317f940caec8623df057f02504e36d70b0b52
Parents: 799fde6
Author: huikyole <huikyole@argo.jpl.nasa.gov>
Authored: Wed Oct 14 11:54:37 2015 -0700
Committer: huikyole <huikyole@argo.jpl.nasa.gov>
Committed: Wed Oct 14 11:54:37 2015 -0700

----------------------------------------------------------------------
 ocw/dataset_processor.py | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/climate/blob/aa0317f9/ocw/dataset_processor.py
----------------------------------------------------------------------
diff --git a/ocw/dataset_processor.py b/ocw/dataset_processor.py
index e9e03db..8aebab5 100755
--- a/ocw/dataset_processor.py
+++ b/ocw/dataset_processor.py
@@ -141,6 +141,38 @@ def temporal_rebin(target_dataset, temporal_resolution):
     
     return new_dataset
 
+def temporal_rebin_with_time_index(target_dataset, nt_average):
+    """ Rebin a Dataset to a new temporal resolution
+
+    :param target_dataset: Dataset object that needs temporal rebinned
+    :type target_dataset: :class:`dataset.Dataset`
+
+    :param nt_average: Time resolution for the output datasets. 
+     It is the same as the number of time indicies to be averaged. (length of time dimension
in the rebinned dataset) = (original time dimension length/nt_average)
+    :type temporal_resolution: integer
+
+    :returns: A new temporally rebinned Dataset
+    :rtype: :class:`dataset.Dataset`
+    """
+    nt = target_dataset.times.size
+    if nt % nt_average !=0:
+        print 'Warning: length of time dimension must be a multiple of nt_average'
+    # nt2 is the length of time dimension in the rebinned dataset
+    nt2 = nt/nt_average
+    binned_dates = target_dataset.times[np.arange(nt2)*nt_average]
+    binned_values = np.zeros(np.insert(target_dataset.values.shape[1:],0,nt2))
+    for it in np.arange(nt2):
+        binned_values[it,:] = ma.average(target_dataset.values[nt_average*it:nt_average*it+nt_average,:],
axis=0)
+    new_dataset = ds.Dataset(target_dataset.lats,
+                             target_dataset.lons,
+                             binned_dates,
+                             binned_values,
+                             variable=target_dataset.variable,
+                             units=target_dataset.units,
+                             name=target_dataset.name,
+                             origin=target_dataset.origin)
+    return new_dataset
+
 def spatial_regrid(target_dataset, new_latitudes, new_longitudes):
     """ Regrid a Dataset using the new latitudes and longitudes
 


Mime
View raw message