Changeset 6029


Ignore:
Timestamp:
19/11/09 16:34:37 (10 years ago)
Author:
pnorton
Message:

Modified the geoplot grid builder so that it automatically masks infinite values.

Location:
qesdi/geoplot/trunk/lib/geoplot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • qesdi/geoplot/trunk/lib/geoplot/grid_builder_base.py

    r5890 r6029  
    7676#                "] max =[" + str(xmid.max()) + "]") 
    7777 
     78        varMin, varMax = self._getVarMinAndMax() 
     79 
     80        infValueFound = False 
     81         
     82        if varMax == N.inf: 
     83            infValueFound = True 
     84            varMax =  self._maskInfValsInVar(self.cdmsVar).max() 
     85   
    7886        st = time.time() 
    7987        reducedVar = self._getResizedVar(xLimits, yLimits) 
    8088        log.debug("Reduced variable in %ss" % (time.time() - st,)) 
    81          
     89 
     90 
    8291        st = time.time()     
    8392        (gridBoundsX, gridBoundsY) = self._buildGridBounds(reducedVar) 
     
    92101        log.debug("built values in %ss" % (time.time() - st,)) 
    93102         
     103        if infValueFound: 
     104            gridValues = self._maskInfValsInVar(gridValues) 
    94105                 
     106         
     107         
    95108#        log.debug("After resize:") 
    96109#        log.debug("y midpoints min =[" + str(gridMidpointY.min()) + \ 
     
    109122 
    110123        return Grid(gridBoundsX, gridBoundsY, gridMidpointX, gridMidpointY, gridValues, 
    111                     self.cdmsVar[:].max(), self.cdmsVar[:].min()) 
     124                    varMax, varMin) 
    112125 
    113126    def _getResizedVar(self, xLimits, yLimits): 
     
    343356                 
    344357        return MA.masked_values(data, missing) 
    345          
     358     
     359    def _getVarMinAndMax(self): 
     360        st = time.time() 
     361        varMax = self.cdmsVar.max() 
     362        varMin = self.cdmsVar.min() 
     363                 
     364        log.debug("got min (%s) and max (%s) in %ss" % (varMin, varMax, time.time() - st,)) 
     365        return varMin, varMax         
     366     
     367    def _maskInfValsInVar(self, var): 
     368         
     369        #inds = N.argwhere(var == numpy.inf) 
     370         
     371        return N.ma.masked_equal(var, N.inf) 
     372     
    346373def _logAxis(axis): 
    347374    """ 
  • qesdi/geoplot/trunk/lib/geoplot/grid_builder_lat_lon_subset.py

    r5890 r6029  
    5454        @rtype: geoplot.Grid 
    5555        """ 
    56 #        targetWidth = 12 
    57 #        targetHeight = 7 
     56 
     57        varMin, varMax = self._getVarMinAndMax() 
     58         
     59        infValueFound = False 
     60         
     61        if varMax == N.inf: 
     62            infValueFound = True 
     63            varMax =  self._maskInfValsInVar(self.cdmsVar).max() 
     64 
    5865        reducedVar = self._getResizedVar(xLimits, yLimits) 
    5966         
    60         factor = 3.0 
     67        factor = 1.0 
    6168        targetShape = (targetHeight* factor, targetWidth * factor) 
    6269         
     
    7582        # the bounds + midpoints for the new number of points. 
    7683         
     84         
    7785        if GridBuilderLatLon._areAxisInOrderYX(subsetVar): 
    7886            lonbounds = self._buildReducedBounds(reducedLonMidpoints, subsetVar.shape[1] + 1) 
     
    9098        gridValues = self._buildGridValues(subsetVar) 
    9199         
     100        if infValueFound: 
     101            gridValues = self._maskInfValsInVar(gridValues) 
     102 
    92103#        st = time.time() 
    93104#        uniqueValues = N.unique(self.cdmsVar.getValue()) 
     
    95106         
    96107        return Grid(gridBoundsX, gridBoundsY, gridMidpointX, gridMidpointY, gridValues, 
    97                     self.cdmsVar[:].max(), self.cdmsVar[:].min()) 
     108                    varMax, varMin) 
    98109     
    99110    def _subsetVariable(self, var, targetShape): 
Note: See TracChangeset for help on using the changeset viewer.