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 <[email protected]> Authored: Wed Oct 14 11:54:37 2015 -0700 Committer: huikyole <[email protected]> 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
