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: ocw.utils.calc_subregion_area_mean_and_std is added
Date Mon, 03 Aug 2015 03:29:38 GMT
Repository: climate
Updated Branches:
  refs/heads/master 7cfd7e923 -> 496f8bb05


ocw.utils.calc_subregion_area_mean_and_std is added


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

Branch: refs/heads/master
Commit: 77227b174a437a71306b7715aba4f8ec176485ba
Parents: fea37a9
Author: huikyole <huikyole@argo.jpl.nasa.gov>
Authored: Fri Jul 31 16:35:58 2015 -0700
Committer: huikyole <huikyole@argo.jpl.nasa.gov>
Committed: Fri Jul 31 16:35:58 2015 -0700

----------------------------------------------------------------------
 ocw/utils.py | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/climate/blob/77227b17/ocw/utils.py
----------------------------------------------------------------------
diff --git a/ocw/utils.py b/ocw/utils.py
index bb5ed37..d6a5708 100755
--- a/ocw/utils.py
+++ b/ocw/utils.py
@@ -343,3 +343,38 @@ def calc_time_series(dataset):
         t_series.append(dataset.values[t,:,:].mean())
     
     return t_series
+
+def calc_subregion_area_mean_and_std(dataset_array, subregions):
+    ''' Calculate area mean and standard deviation values for a given subregions using datasets
on common grid points
+    :param dataset_array: An array of OCW Dataset Objects
+    :type list:  
+    :param subregions: list of subregions
+    :type subregions: :class:`numpy.ma.array`
+    :returns: area averaged time series for the dataset of shape (ntime, nsubregion)
+    '''
+
+    ndata = len(dataset_array)
+    dataset0 = dataset_array[0]
+    if dataset0.lons.ndim == 1:
+       lons, lats = np.meshgrid(dataset0.lons, dataset0.lats)
+    else:
+       lons = dataset0.lons
+       lats = dataset0.lats
+    subregion_array = np.zeros(lons.shape)
+    mask_array = dataset_array[0].values[0,:].mask
+    # dataset0.values.shsape[0]: length of the time dimension
+    # spatial average
+    t_series =ma.zeros([ndata, dataset0.values.shape[0], len(subregions)])
+    # spatial standard deviation
+    spatial_std =ma.zeros([ndata, dataset0.values.shape[0], len(subregions)])
+
+    for iregion, subregion in enumerate(subregions):
+        lat_min, lat_max, lon_min, lon_max = subregion[1]
+        y_index,x_index = np.where((lats >= lat_min) & (lats <= lat_max) &
(lons >= lon_min) & (lons <= lon_max))
+        subregion_array[y_index,x_index] = iregion+1
+        for idata in np.arange(ndata):
+            t_series[idata, :, iregion] = ma.mean(dataset_array[idata].values[:,y_index,
x_index], axis=1)
+            spatial_std[idata, :, iregion] = ma.std(dataset_array[idata].values[:,y_index,
x_index], axis=1)
+    subregion_array = ma.array(subregion_array, mask=mask_array) 
+    return t_series, spatial_std, subregion_array
+


Mime
View raw message