def variable(table_entry,units,axis_ids,type='f',missing_value=None,tolerance = 1.e-4,positive=None,original_name=None,history=None,comment=None): if not isinstance(table_entry,str): raise Exception, "Error you must pass a string for the variable table_entry" if not isinstance(units,str): raise Exception, "Error you must pass a string for the variable units" if original_name is not None: if not isinstance(original_name,str): raise Exception, "Error you must pass a string for the variable original_name" else: original_name = "" if history is not None: if not isinstance(history,str): raise Exception, "Error you must pass a string for the variable history" else: history = "" if comment is not None: if not isinstance(comment,str): raise Exception, "Error you must pass a string for the variable comment" else: comment = "" if numpy.ma.isMA(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif has_oldma and numpy.oldnumeric.ma.isMA(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif has_cdms2 and cdms2.isVariable(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif isinstance(axis_ids,(list,tuple)): axis_ids = numpy.ascontiguousarray(axis_ids) elif not isinstance(axis_ids, numpy.ndarray): raise Exception, "Error could not convert axis_ids list to a numpy array" if numpy.ndim(axis_ids)>1: raise Exception, "error axis_ids list/array must be 1D" if not isinstance(type,str): raise Exception, "error tpye must a a string" type = type.lower() if type == 's': type ='c' if not type in ["c","d","f","l","i"]: raise Exception, 'error unknown type: "%s", must be one of: "c","d","f","l","i"' ndims = len(axis_ids) if positive is None: positive = "" else: positive = str(positive) if history is None: history = "" else: history = str(history) if comment is None: comment = "" else: comment = str(comment) if not isinstance(tolerance,(float,int,numpy.float,numpy.float32,numpy.int,numpy.int32)): raise Exception, "error tolerance must be a number" tolerance = float(tolerance) if missing_value is not None: if not isinstance(missing_value,(float,int,numpy.float,numpy.float32,numpy.int,numpy.int32)): raise Exception, "error missing_value must be a number, you passed: %s" % repr(missing_value) missing_value = float(missing_value) axis_ids=axis_ids.astype('i') return _cmor.variable(table_entry,units,ndims,axis_ids,type,missing_value,tolerance,positive,original_name,history,comment)
def variable(table_entry, units, axis_ids, type='f', missing_value=None, tolerance=1.e-4, positive=None, original_name=None, history=None, comment=None): if not isinstance(table_entry, str): raise Exception, "Error you must pass a string for the variable table_entry" if not isinstance(units, str): raise Exception, "Error you must pass a string for the variable units" if original_name is not None: if not isinstance(original_name, str): raise Exception, "Error you must pass a string for the variable original_name" else: original_name = "" if history is not None: if not isinstance(history, str): raise Exception, "Error you must pass a string for the variable history" else: history = "" if comment is not None: if not isinstance(comment, str): raise Exception, "Error you must pass a string for the variable comment" else: comment = "" if numpy.ma.isMA(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif has_oldma and numpy.oldnumeric.ma.isMA(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif has_cdms2 and cdms2.isVariable(axis_ids): axis_ids = numpy.ascontiguousarray(axis_ids.filled()) elif isinstance(axis_ids, (list, tuple)): axis_ids = numpy.ascontiguousarray(axis_ids) elif not isinstance(axis_ids, numpy.ndarray): raise Exception, "Error could not convert axis_ids list to a numpy array" if numpy.ndim(axis_ids) > 1: raise Exception, "error axis_ids list/array must be 1D" if not isinstance(type, str): raise Exception, "error tpye must a a string" type = type.lower() if type == 's': type = 'c' if not type in ["c", "d", "f", "l", "i"]: raise Exception, 'error unknown type: "%s", must be one of: "c","d","f","l","i"' ndims = len(axis_ids) if positive is None: positive = "" else: positive = str(positive) if history is None: history = "" else: history = str(history) if comment is None: comment = "" else: comment = str(comment) if not isinstance( tolerance, (float, int, numpy.float, numpy.float32, numpy.int, numpy.int32)): raise Exception, "error tolerance must be a number" tolerance = float(tolerance) if missing_value is not None: if not isinstance( missing_value, (float, int, numpy.float, numpy.float32, numpy.int, numpy.int32)): raise Exception, "error missing_value must be a number, you passed: %s" % repr( missing_value) missing_value = float(missing_value) axis_ids = axis_ids.astype('i') return _cmor.variable(table_entry, units, ndims, axis_ids, type, missing_value, tolerance, positive, original_name, history, comment)