예제 #1
0
    def nearestSampleFile(self, inFile, tyme, onlyVars=None):
        """
        Sample some or all variables of inFile. This simply returns the
        values of the gridbox the pixel fall into (nearest neighbor).
        """
        from gfio import GFIOctl

        if self.varTime:
          # tyme is hour mark, and scanTime displaces from this in seconds
          tymes = np.array([tyme+timedelta(seconds=int(s)) for s in self.scanTime])
        else:
          # constant time
          tymes = np.repeat(tyme,self.nobs)

        # Instiate grads and open file
        # ----------------------------
        f = GFIOctl(inFile)
        if self.sample == None:
            self.sample = GCS03Handle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if self.verb:
                print " <> Nearest sampling ", v
            var = f.sample(v,self.lon,self.lat,tymes,
                           algorithm='nearest',Verbose=self.verb)
            if var.ndim == 1:
                self.sample.__dict__[v] = var
            elif var.ndim == 2:
                self.sample.__dict__[v] = var.T   # -> (nobs,nz)
            else:
                raise IndexError, 'variable <%s> has rank = %d' % var.ndim
예제 #2
0
    def linearSampleFile(self, inFile, tyme, onlyVars=None):
        """
        Interpolates some or all variables of inFile.
        """
        from gfio import GFIOctl

        if self.varTime:
          # tyme is hour mark, and scanTime displaces from this in seconds
          tymes = np.array([tyme+timedelta(seconds=int(s)) for s in self.scanTime])
        else:
          # constant time
          tymes = np.repeat(tyme,self.nobs)
             
        # Open file
        # ---------
        f = GFIOctl(inFile)
        if self.sample == None:
            self.sample = GCS03Handle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if self.verb:
                print " <> Linear sampling ", v
            var = f.sample(v,self.lon,self.lat,tymes,Verbose=self.verb)
            if var.ndim == 1:
                self.sample.__dict__[v] = var
            elif var.ndim == 2:
                self.sample.__dict__[v] = var.T   # -> (nobs,nz)
            else:
                raise IndexError, 'variable <%s> has rank = %d' % var.ndim
예제 #3
0
    def linearSampleFile(self, inFile, tyme, onlyVars=None):
        """
        Interpolates some or all variables of inFile.
        """
        from gfio import GFIOctl

        # constant time
        tymes = np.repeat(tyme, self.nobs)

        # Open file
        # ---------
        f = GFIOctl(inFile)
        if self.sample == None:
            self.sample = SEV03Handle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if self.verb:
                print " <> Linear sampling ", v
            var = f.sample(v, self.lon, self.lat, tymes, Verbose=self.verb)
            if var.ndim == 1:
                self.sample.__dict__[v] = var
            elif var.ndim == 2:
                self.sample.__dict__[v] = var.T  # -> (nobs,nz)
            else:
                raise IndexError, 'variable <%s> has rank = %d' % var.ndim
예제 #4
0
 def sampleVar(self, ctlfile, vname, aname=None, I=None, **kwds):
     """
     Interpolates variable *vname* from a gridded GFIO collection to obs location/time.
     On input, *aname* is the attribute name to be defined; if not specified it defaults
     to *vname*.
     """
     from gfio import GFIOctl
     f = GFIOctl(ctlfile)
     if aname == None:
         aname = vname
     if I is None:
         self.__dict__[aname] = f.sample(vname, self.lon, self.lat,
                                         self.time, **kwds)
     else:
         self.__dict__[aname][I] = MISSING * ones(len(self.lon))
         self.__dict__[aname][I] = f.sample(vname, self.lon[I], self.lat[I],
                                            self.time[I], **kwds)
예제 #5
0
    def sampleFile(self, inFile, npzFile=None, onlyVars=None, Verbose=True):
        """
        Interpolates all variables of inFile and optionally
        save them to file *npzFile*. On input, I is an optional filtering
        index.
        """
        from gfio import GFIOctl, GFIOHandle

        # Instiate grads and open file
        # ----------------------------
        f = GFIOctl(inFile)

        # Check if all variables in file are upper case
        # ---------------------------------------------
        lc = False
        for v in f.vname:
            if v != v.upper(): lc = True

        self.sample = GFIOHandle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Flatten coordinates
        # -------------------
        nt, nr = self.lon.shape
        tyme = tile(self.time, (nr, 1)).T
        lons = self.lon.ravel()
        lats = self.lat.ravel()
        tymes = tyme.ravel()

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if Verbose:
                print "<> Sampling ", v
            if not lc:
                v_ = v.upper()
            else:
                v_ = v
            var = f.sample(v_, lons, lats, tymes, Verbose=Verbose)
            if len(var.shape) == 1:
                self.sample.__dict__[v] = var.reshape((nt, nr))
            elif len(var.shape) == 2:
                var = var.T  # shape should be (nobs,nz)
                self.sample.__dict__[v] = var.reshape((nt, nr, -1))
            else:
                raise IndexError, 'variable <%s> has rannk = %d' % len(
                    var.shape)

        if npzFile is not None:
            savez(npzFile, **self.sample.__dict__)
예제 #6
0
    def nearestSampleFile(self, inFile, onlyVars=None):
        """
        Sample some or all variables of inFile. This simply returns the
        values of the gridbox the pixel fall into (nearest neighbor).
        """
        from gfio import GFIOctl

        # Instiate grads and open file
        # ----------------------------
        f = GFIOctl(inFile)
        if self.sample == None:
            self.sample = GOCIHandle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Flatten coordinates
        # -------------------
        nt, nr = self.lon.shape
        #tyme = tile(self.tyme,(nr,1)).T
        lons = self.lon.ravel()
        lats = self.lat.ravel()
        tymes = self.tyme.ravel()
        #tymes[:] = self.gtime # use mean granule time

        tymes[isnan(self.Observation_time_minute.ravel())] = self.gtime

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if self.verb:
                print " <> Nearest sampling ", v
            var = f.sample(v,
                           lons,
                           lats,
                           tymes,
                           algorithm='nearest',
                           Verbose=self.verb)
            self.var = var
            if len(var.shape) == 1:
                self.sample.__dict__[v] = var.reshape((nt, nr))
            elif len(var.shape) == 2:
                var = var.T  # shape should be (nobs,nz)
                self.sample.__dict__[v] = var.reshape((nt, nr, -1))
            else:
                raise IndexError, 'variable <%s> has rannk = %d' % len(
                    var.shape)
예제 #7
0
    def linearSampleFile(self, inFile, onlyVars=None):
        """
        Interpolates some or all variables of inFile.
        """
        from gfio import GFIOctl

        # Open file
        # ---------
        f = GFIOctl(inFile)
        if self.sample == None:
            self.sample = GOCIHandle(inFile)
        if onlyVars is None:
            onlyVars = f.vname

        # Flatten coordinates
        # -------------------
        nt, nr = self.lon.shape
        #tyme = tile(self.tyme,(nr,1)).T
        lons = self.lon.ravel()
        lats = self.lat.ravel()
        tymes = self.tyme.ravel()
        #tymes[:] = self.gtime # use mean granule time

        tymes[isnan(self.Observation_time_minute.ravel())] = self.gtime

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if self.verb:
                print " <> Linear sampling ", v
            var = f.sample(v, lons, lats, tymes, Verbose=self.verb)
            if len(var.shape) == 1:
                self.sample.__dict__[v] = var.reshape((nt, nr))
            elif len(var.shape) == 2:
                var = var.T  # shape should be (nobs,nz)
                self.sample.__dict__[v] = var.reshape((nt, nr, -1))
            else:
                raise IndexError, 'variable <%s> has rannk = %d' % len(
                    var.shape)
예제 #8
0
    def sampleFile(self, inFile, npzFile=None, onlyVars=None, Verbose=True):
        """
        Interpolates all variables of inFile and optionally
        save them to file *npzFile*
        """
        from gfio import GFIOctl, GFIOHandle

        # Instiate grads and open file
        # ----------------------------
        fh = GFIOctl(inFile)
        self.sample = GFIOHandle(inFile)
        if onlyVars is None:
            onlyVars = fh.vname

        nt = self.lon.shape
        nz = self.nz
        tymes = self.tyme
        lons = self.lon
        lats = self.lat

        # Loop over variables on file
        # ---------------------------
        for v in onlyVars:
            if Verbose:
                print "<> Sampling ", v
            var = fh.sample(v,lons,lats,tymes,Verbose=Verbose)
            if len(var.shape) == 1:
                self.sample.__dict__[v] = var
            elif len(var.shape) == 2:
                var = var.T # shape should be (nobs,nz)
                self.sample.__dict__[v] = var
            else:
                raise IndexError, 'variable <%s> has rannk = %d'%len(var.shape)

        if npzFile is not None:
            savez(npzFile,**self.sample.__dict__)            
예제 #9
0
    interpXY = NC4ctl.interpXY_LatLon

if __name__ == "__main__":

    from time import time as now
    from gfio import GFIOctl

    kbeg = 36
    kount = 72 - kbeg + 1

    filename = '/home/adasilva/iesa/MERRAero/inst3d_prog_v.ddf'

    # interp using NC4ctl
    # -------------------
    print "------ NC4ctl ----------"
    f = NC4ctl_(filename)
    lons = linspace(-45.,-30.,100)
    lats = linspace(30.,50.,100)
    dt = f.dt/10
    t0 = datetime(2008,6,29,12)
    times = array([ t0 + i * dt for i in range(100)])
    slp = f.sample('SLP',lons,lats,times,Verbose=True)
    t = f.sample('T',lons,lats,times,kbeg=kbeg,kount=kount,Verbose=True)

    # Redo with GFIOctl for testing
    # -----------------------------
    print "\n------ GFIOctl ----------"
    g = GFIOctl(filename)
    SLP = g.sample('SLP',lons,lats,times,Verbose=True)
    T = g.sample('T',lons,lats,times,Verbose=True,kbeg=kbeg,kount=kount)