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)
示例#3
0
 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
示例#4
0
    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