def set_grid_type(var, gtype): """Set an attribute so that var is identified as being on the specified Arakawa grid type. If var is a :mod:`cdms2` variable or grid, it sets the :attr:`_vacumm_arakawa_grid_type` attribute, else it sets the :attr:`arakawa_grid_type` attribute. :Params: - **var**: A :mod:`cdms2` variable or grid, a :class:`~vacumm.data.misc.dataset.Dataset` instance. - **gtype**: None or one of the :attr:`grid_type` letters. """ if gtype is not None: gtype = str(gtype).upper() if cdms2.isVariable(var) or cdms2.isGrid(var): vv = [var] if cdms2.isVariable(var): grid = var.getGrid() if grid is not None: vv.append(grid) for v in vv: _set_clean_atts_(v, _cdms2_atts, gtype) else: _set_clean_atts_(var, _other_atts, gtype) return gtype
def setTargetGrid(self,target,regridTool="esmf",regridMethod="linear"): self.regridTool = regridTool self.regridMethod = regridMethod if target=="2.5x2.5": self.targetGrid = cdms2.createUniformGrid(-88.875,72,2.5,0,144,2.5) self.targetGridName = target elif cdms2.isGrid(target): self.targetGrid = target self.targetGridName = target else: raise RunTimeError,"Unknown grid: %s" % target
def set_target_grid(self, target, regrid_tool='esmf', regrid_method='linear'): self.regrid_tool = regrid_tool self.regrid_method = regrid_method if target == '2.5x2.5': self.target_grid = cdms2.createUniformGrid( -88.875, 72, 2.5, 0, 144, 2.5 ) self.target_grid_name = target elif cdms2.isGrid(target): self.target_grid = target self.target_grid_name = target else: logging.getLogger("pcmdi_metrics").error( 'Unknown grid: %s' % target) raise RuntimeError('Unknown grid: %s' % target)
def setTargetGrid(self, target, regridTool="esmf", regridMethod="linear"): self.regridTool = regridTool self.regridMethod = regridMethod if target == "2.5x2.5": self.targetGrid = cdms2.createUniformGrid( -88.875, 72, 2.5, 0, 144, 2.5) self.targetGridName = target elif cdms2.isGrid(target): self.targetGrid = target self.targetGridName = target else: raise RuntimeError("Unknown grid: %s" % target)
def set_target_grid(self, target, regrid_tool='esmf', regrid_method='linear'): self.regrid_tool = regrid_tool self.regrid_method = regrid_method if target == '2.5x2.5': self.target_grid = cdms2.createUniformGrid(-88.875, 72, 2.5, 0, 144, 2.5) self.target_grid_name = target elif cdms2.isGrid(target): self.target_grid = target self.target_grid_name = target else: logging.getLogger("pcmdi_metrics").error('Unknown grid: %s' % target) raise RuntimeError('Unknown grid: %s' % target)
def change_loc(var, toloc, axes=True, squeeze=True): """Change location specifications of a variable and its axes It affects the id, the standard_name and the long_name when they are defined. :Params: - :Example: >>> change_loc(sst, 'u').id 'sst_u' >>> change_loc(sst, 't', squeeze=True).id 'sst' """ # Squeeze physloc if not isinstance(squeeze, basestring): if squeeze: squeeze = get_physloc(var) else: squeeze = None # Change attributes # - get specs = change_loc_specs( toloc, squeeze=squeeze, id=var.id, standard_name=getattr(var, 'standard_name', None), long_name=getattr(var, 'long_name', None), ) # - set var.id = specs['id'] for att in 'standard_name', 'long_name': if att in specs: setattr(var, att, specs[att]) # - cf name if hasattr(var, '_vacumm_cf_name'): var._vacumm_cf_name = change_loc_single(var._vacumm_cf_name, 'id', toloc, squeeze=squeeze) # Change axes and grid attributes if axes and cdms2.isVariable(var) or cdms2.isGrid(var): # Axes # - usual for meth in 'Longitude', 'Latitude', 'Time', 'Level': if hasattr(var, 'get' + meth): axismet = getattr(var, 'get' + meth) # var.getLongitude if axismet() is not None: change_loc(axismet(), toloc, squeeze=squeeze) # - 2d axes if cdms2.isVariable(var) and isaxis(var) and var.ndim > 2: for i in -1, -2: change_loc(var.getAxis(i), toloc, squeeze=squeeze) # Grid if cdms2.isVariable(var) and var.getGrid() is not None: change_loc(var.getGrid(), toloc, squeeze=squeeze) # Reference attribute set_loc(var, toloc) return var
def change_loc(var, toloc, axes=True, squeeze=True): """Change location specifications of a variable and its axes It affects the id, the standard_name and the long_name when they are defined. :Params: - :Example: >>> change_loc(sst, 'u').id 'sst_u' >>> change_loc(sst, 't', squeeze=True).id 'sst' """ # Squeeze physloc if not isinstance(squeeze, basestring): if squeeze: squeeze = get_physloc(var) else: squeeze = None # Change attributes # - get specs = change_loc_specs(toloc, squeeze=squeeze, names=var.id, standard_names = getattr(var, 'standard_name', None), long_names = getattr(var, 'long_name', None), ) # - set var.id = specs['names'] for att in 'standard_name', 'long_name': if att+'s' in specs: setattr(var, att, specs[att+'s']) # - cf name if hasattr(var, '_vacumm_cf_name'): var._vacumm_cf_name = change_loc_single(var._vacumm_cf_name, 'name', toloc, squeeze=squeeze) # Change axes and grid attributes if axes and cdms2.isVariable(var) or cdms2.isGrid(var): # Axes # - usual for meth in 'Longitude', 'Latitude', 'Time', 'Level': if hasattr(var, 'get'+meth): axismet = getattr(var, 'get'+meth) # var.getLongitude if axismet() is not None: change_loc(axismet(), toloc, squeeze=squeeze) # - 2d axes if cdms2.isVariable(var) and isaxis(var) and var.ndim>2: for i in -1, -2: change_loc(var.getAxis(i), toloc, squeeze=squeeze) # Grid if cdms2.isVariable(var) and var.getGrid() is not None: change_loc(var.getGrid(), toloc, squeeze=squeeze) # Reference attribute set_loc(var, toloc) return var
print cdms2.isVariable(temp1) # - Remark print cdms2.createVariable is MV2.array # -> True (These are the same functions !) # - other methos # . initialization temp2 = MV2.array(N.ones((3,3,3,3))).astype('f') # . attributes temp2.id = 'temp' temp2.long_name = 'Temperature' temp2.units = 'degC' temp2.set_fill_value(1.e20) # <=> temp2.setMissing(1.e20) # . axes temp2.setAxisList([time,depth,lat,lon]) # . or for example for each axis individually temp2.setAxis(1,depth) # Selection as for file print temp2(time=("2006-08-01", "2006-08-03", "co")).shape # The grid itself # - get it grid = temp2.getGrid() # - check axes grid.getLongitude() is temp2.getLongitude() is grid.getAxis(1) is temp2.getAxis(3) # - create it! grid2 = cdms2.createGenericGrid(lat,lon) # - set it temp2.setGrid(grid2) print cdms2.isGrid(grid2)