Changeset 700 in lmdz_wrf for trunk


Ignore:
Timestamp:
Mar 14, 2016, 6:30:50 PM (9 years ago)
Author:
lfita
Message:

Adding '_FillVal' to `field_stats'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r699 r700  
    98529852#        newval = float32(val)
    98539853    elif vtype == type(np.int(1)):
    9854         newval = np.int(val)
     9854        typeinf = np.iinfo(np.int)
     9855        if (abs(np.float64(val)) > typeinf.max):
     9856            newval = abs(np.float64(val))/np.float64(val) * np.int(typeinf.max)
    98559857    elif vtype == type(np.int16(1)):
    9856         newval = np.int16(val)
     9858        typeinf = np.iinfo(np.int16)
     9859        if (abs(np.float64(val)) > typeinf.max):
     9860            newval = abs(np.float64(val))/np.float64(val) * np.int16(typeinf.max)
    98579861    elif vtype == type(np.int32(1)):
    9858         newval = np.int32(val)
     9862        typeinf = np.iinfo(np.int32)
     9863        if (abs(np.float64(val)) > typeinf.max):
     9864            newval = abs(np.float64(val))/np.float64(val) * np.int32(typeinf.max)
    98599865    elif vtype == type(np.int64(1)):
    98609866        newval = np.int64(val)
    98619867    elif vtype == type(np.float(1)):
    98629868        newval = np.float(val)
    9863     elif vtype == type(np.float16(1)):
    9864         newval = np.float16(val)
     9869#    elif vtype == type(np.float16(1)):
     9870#        newval = np.float16(val)
    98659871    elif vtype == type(np.float32(1)):
    98669872        newval = np.float32(val)
     
    1360913615    """ Function to retrieve statistics from a field
    1361013616    field_stats(values, ncfile, varn)
    13611       [values]= kind of statistics
    13612         'full': all statistics given variable
     13617      [values]= [stats],[fillVals]
     13618        [stats]: kind of statistics
     13619          'full': all statistics given variable
     13620        [fillVals]: ':' list of _fillValues ('None' for any)
    1361313621      [ncfile]= name of the netCDF file to use
    1361413622      [varn]= variable name to use ('all' for all variables)
    1361513623    """
    13616 
     13624    import numpy.ma as ma
    1361713625    fname='field_stats'
    1361813626
     
    1362113629        print field_stats.__doc__
    1362213630        quit()
     13631
     13632
     13633    arguments = '[stats],[fillVals]'
     13634    check_arguments(fname,values,arguments,',')
     13635
     13636    stats=values.split(',')[0]
     13637    fillVals=values.split(',')[1]
     13638
     13639    if fillVals == 'None':
     13640        fillV = None
     13641    else:
     13642        if fillVals.find(':') != -1:
     13643            fillV = fillVals.split(':')
     13644            NfillV = len(fillV)
     13645        else:
     13646            fillV = [fillVals]
     13647            NfillV = 1
    1362313648
    1362413649    ncobj = NetCDFFile(ncfile, 'r')
     
    1363913664        objfield = ncobj.variables[vn]
    1364013665        field = objfield[:]
     13666        dtype = objfield.dtype
     13667        print 'Lluis dtype:',dtype,'fillVals:',fillV
     13668        if fillVals is not None:
     13669            for ifV in range(NfillV):
     13670                print 'fV:', fillV[ifV]
     13671                fillval = retype(fillV[ifV], dtype)
     13672                field = ma.masked_equal(field, fillval)
    1364113673
    1364213674        print '   ' + vn + '... .. .'
    13643         if values == 'full':
     13675        if stats == 'full':
    1364413676            minv = np.min(field)
    1364513677            maxv = np.max(field)
Note: See TracChangeset for help on using the changeset viewer.