def getVarAndTimeJG(sims, start, end): latS = 28. latN = 80. # latS = -34. # latN = -34. var = [] time = [] ii = 0 for sim in sims: dataPath = '/glade/scratch/jfyke/%s/run' % (sim) meter = ProgressMeter(total=end[ii] + 1 - start[ii]) for yr in range(start[ii], end[ii] + 1): year = '%04i' % yr Files = sorted( glob.glob('%s/%s.pop.h.%s-??.nc' % (dataPath, sim, year))) dd = dataServer(Files) var.append(dd.extractTimeSeries(latS=latS, latN=latN)) meter.update(1) ii += 1 var = squeeze(ma.array(var).filled().astype("f")) # var = ma.array(var).filled().astype("f") time = arange(len(var)) print var return var, time
def getMonth(self, Year=1958, Month=1, Daily=None, TimeZoneOffset=0): # Return 1 month of data. # Keep iterating over day of month until exception # occurs, marking end of month print 'Getting %s %s %s' % (self.Field, Year, Month) Ndays = self.getNdaysInMonth(Year, Month) meter = ProgressMeter(total=Ndays) f = [] for Day in range(1, Ndays + 1): meter.update(1) x = self.getDay(Year, Month, Day, Daily, TimeZoneOffset) if Daily is None: f.extend(x.tolist()) else: f.append(x) return np.array(f)
def getTimeSlice(self, DateStart = (1958,1,1,0), DateEnd = (1958,12,31,18) ): print ' -- Getting timeslice %s to %s' % (DateStart,DateEnd) h0 = self.getHours(*DateStart) h1 = self.getHours(*DateEnd) N = int((h1-h0)/6+1) f = self.snapshot(*self.getDate(h0)) shape = (N,) + f.shape if hasattr(f,'mask'): f = ma.zeros(shape,dtype=float) else: f = zeros(shape,dtype=float) meter = ProgressMeter(total=N) for l in range(N): meter.update(1) f[l] = self.snapshot(*self.getDate(h0)) h0 += 6 return f
def __call__(self, field, lon, lat): """ input field on regular lat-lon grid output field on regular projection grid """ if len(field.shape) == 2: field, lon = basemap.addcyclic(field, lon) field, lon = basemap.shiftgrid(180, field, lon, start=False) self.field = self.m.transform_scalar(field, lon, lat, self.nx, self.ny) elif len(field.shape) == 3: n = field.shape[0] self.field = np.zeros((n, self.ny, self.nx), dtype='f') for l in range(n): field1, lon1 = basemap.addcyclic(field[l], lon) field1, lon1 = basemap.shiftgrid(180, field1, lon1, start=False) self.field[l] = self.m.transform_scalar( field1, lon1, lat, self.nx, self.ny) elif len(field.shape) == 4: n0 = field.shape[0] n1 = field.shape[1] if hasattr(field, 'mask'): self.field = np.ma.zeros((n0, n1, self.ny, self.nx), dtype=float) else: self.field = np.zeros((n0, n1, self.ny, self.nx), dtype=float) print 'LambertProjector: Projecting 4D field' m = ProgressMeter(total=n0 * n1) for l0 in range(n0): for l1 in range(n1): field1, lon1 = basemap.addcyclic(field[l0, l1], lon) field1, lon1 = basemap.shiftgrid(180, field1, lon1, start=False) self.field[l0, l1] = self.m.transform_scalar( field1, lon1, lat, self.nx, self.ny) m.update(1) return self.field