I wanted to post this example (see below), which was the solution to
Joseph Maina's question as an example. His problem was exacerbated by
the two grids having different domains -- not only in longitude, but
in latitude....one of them had finer resolution near the equator than
in other latitudes.
On Tue, May 11, 2010 at 4:03 AM, Joseph Maina <jmaina@xxxxxxx> wrote:
> Hi List, I intend to compute temperature anomalies of a long time series by
> taking the difference between each time step in a monthly mean time series
> and the temperature anomaly (single grid). The output would be a time series
> of this difference (anomalies), which I would then compute a cumulative sum
> of only the positive anomalies, more like the current inbuilt sum over time
> steps formula but in this case only the positive anomalies would be
> summed..any help would be much appreciated. Thanks
He wanted to get 3 sets of data: a grid of the "tos" values minus the
"mmm" (average) -- the "tos" values were in a time ordered grid, but
the averages were in a single time grid.
Secondly, he wanted to get a set of grids where the anomalies < 0 were
set to zero, and finally, a single grid which summed up the anomalies
> 0 over the time periods.
To accomplish this, I first created a common domain and then computed
the anomalies while resampling into this common domain.
def joseph(mmm, tos):
# first, resample the mmm grid
nd=makeDomain("(Longitude,Latitude)",0,360,361,-90,90,181)
mmr = resample(mmm,nd)
# now resample the tos data and compute the anomalies
anon = tos.clone()
n = len(anon)
for i in xrange(n):
anon[i] = resample(tos[i],nd) - mmr
#return anon
# find where anon < 0, and replace with 0.0
for i in xrange(n):
index = find(anon[i], "<", 0.0)
anon[i] = replace(anon[i], index, 0.0)
#return anon
# create a single-time data and set values = 0
count = replace(anon[0], 0.0)
# now, add "1" for each non-zero entry in anon[i]
for i in xrange(n):
count = count + mask(anon[i],">",0.0)
count = newUnit(count,"counts","count")
return count
--
Tom Whittaker
University of Wisconsin-Madison
Space Science & Engineering Center (SSEC)
Cooperative Institute for Meteorological Satellite Studies (CIMSS)
1225 W. Dayton Street
Madison, WI 53706 USA
ph: +1 608 262 2759