Changeset 5891


Ignore:
Timestamp:
27/10/09 14:11:47 (10 years ago)
Author:
pnorton
Message:

Fixed a small problem with the code that masks NAN values.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cows/trunk/cows/service/imps/data_reader_geoplot_backend/data_readers/csml_data_reader.py

    r5885 r5891  
    99from cows.service.imps.csmlbackend.csmlcommon import CSMLConnector 
    1010from cows.service.imps.csmlbackend.wms_csmllayer import CSMLwmsDimension 
    11 from numpy import nan_to_num 
     11import numpy 
    1212import logging 
    1313 
     
    131131                result= feature.subsetToGridSeries(config['tmpdir'],  
    132132                                            ncname=randomname, **convertedDimVals) 
    133                  
     133               
    134134                #for now have to read netcdf back from  
    135135                #disk (limitiation of CSML api) 
    136136                netcdf=cdms.open(result[1]) 
    137                  
     137                                                 
    138138                #and then delete the temporary file 
    139139                os.system('rm %s'%result[1]) 
     
    145145             
    146146            variable =  netcdf(feature.id, squeeze=1) 
     147             
     148            #try to set any NAN variable to masked variables 
     149            try: 
     150                #replace any NaN's with masked values 
     151                are_nan = numpy.isnan(variable) 
     152 
     153                if are_nan.any(): 
     154                    # if the mask is just a single value we need to expand it 
     155                    if variable.mask.shape != variable.shape: 
     156                         
     157                        if variable.mask: 
     158                            variable.mask = numpy.ones(variable.shape) 
     159                        else: 
     160                            variable.mask = numpy.zeros(variable.shape) 
     161                         
     162                    variable[are_nan] = variable.getMissing() 
     163                    variable.mask[are_nan] = True 
     164             
     165            except: 
     166                log.exception("Exception occurred while trying to fix NAN numbers in variable.") 
     167                raise 
     168             
    147169            self.varcache[cacheKey] = variable 
    148170        else: 
    149171            variable = self.varcache[cacheKey] 
    150172 
    151         #replace any NaN's with a number 
    152         a=nan_to_num(variable) 
    153         variable[:]=a 
    154173        return variable 
    155174     
Note: See TracChangeset for help on using the changeset viewer.