Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
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
idvusers
archives: