def _getMaskedArray(self, var, flagVar=None, flagValues=(0,1), missingValuesToTest=(-9999., -32767.)): """ Returns a masked array that has the values only present where the flag values are acceptable and the data itself is not missing. """ if flagVar: flagFillValue=-1 flagGTValue=max(flagValues) flagMaskWhereUnacceptable=MA.masked_greater(flagVar, flagGTValue).mask() flagMaskWhereMissing=MA.masked_equal(flagVar, flagFillValue).mask() flagMask=flagMaskWhereUnacceptable+flagMaskWhereMissing for fv in missingValuesToTest: if fv in MV.ravel(var): print "Setting missing value for '%s' as: %s" % (var.id, fv) varFillValue=fv else: varFillValue=missingValuesToTest[0] if flagVar: varMask=MA.masked_array(var, mask=MA.equal(var, varFillValue), fill_value=varFillValue).mask() fullmask=MA.bitwise_or(varMask, flagMask) maskedArray=MA.masked_array(var, mask=fullmask, fill_value=varFillValue) else: maskedArray=MA.masked_array(var, mask=MA.equal(var, varFillValue), fill_value=varFillValue) #maskedArray=cdms.createVariable(maskedArray, id=var.id, fill_value=varFillValue) #maskedArray.missing_value=varFillValue return maskedArray
def _getMaskedArray(self, var, flagVar=None, flagValues=(0, 1), missingValuesToTest=(-9999.0, -32767.0)): """ Returns a masked array that has the values only present where the flag values are acceptable and the data itself is not missing. """ if flagVar: flagFillValue = -1 flagGTValue = max(flagValues) flagMaskWhereUnacceptable = MA.masked_greater(flagVar, flagGTValue).mask() flagMaskWhereMissing = MA.masked_equal(flagVar, flagFillValue).mask() flagMask = flagMaskWhereUnacceptable + flagMaskWhereMissing for fv in missingValuesToTest: if fv in MV.ravel(var): print "Setting missing value for '%s' as: %s" % (var.id, fv) varFillValue = fv else: varFillValue = missingValuesToTest[0] if flagVar: varMask = MA.masked_array(var, mask=MA.equal(var, varFillValue), fill_value=varFillValue).mask() fullmask = MA.bitwise_or(varMask, flagMask) maskedArray = MA.masked_array(var, mask=fullmask, fill_value=varFillValue) else: maskedArray = MA.masked_array(var, mask=MA.equal(var, varFillValue), fill_value=varFillValue) # maskedArray=cdms.createVariable(maskedArray, id=var.id, fill_value=varFillValue) # maskedArray.missing_value=varFillValue return maskedArray
def testPickle (self): "Test pickling of MA arrays." import pickle x = MA.arange(10) fpik = open('foo.pik', 'wb') pickle.dump(x, fpik, 0) fpik.close() fpik = open('foo.pik', 'rb') y = pickle.load(open('foo.pik', 'rb')) fpik.close() assert eq(y,[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) assert MA.alltrue(MA.equal(x,y)) assert MA.sometrue(MA.equal(x,3)) assert y.shape == (10,)