Changeset 918 in lmdz_wrf for trunk


Ignore:
Timestamp:
Jun 21, 2016, 9:50:11 AM (8 years ago)
Author:
lfita
Message:

Working version of `file_oper_alongdims' with the statistics variable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r917 r918  
    90359035    newNvar = 0
    90369036    for vn in varns:
    9037         print "'" + vn + "' ... .. ."
     9037        print "    '" + vn + "' ... .. ."
    90389038        if not objnc.variables.has_key(vn):
    90399039            print errormsg
     
    90899089                  tuple(finaldims))
    90909090                newNvar = newNvar + 1
    9091             print fname + ': Lluis; shapes:', newvar.shape,' finalvarvals:', finalvarvals.shape
    90929091            newvar[:] = finalvarvals[:]
    90939092
     
    91419140    print '  ' + fname + ': Opering slice of variable dimension _______'
    91429141    for vn in dimvn:
    9143         print "' " + vn + "' ... .. ."
     9142        print "    '" + vn + "' ... .. ."
    91449143        if not objnc.variables.has_key(vn):
    91459144            print warnmsg
     
    92359234# Statistics of the variable dimension along the dimensions operated in case
    92369235#   dimension after operation disapears
    9237     print '  ' + fname + ': Statisitcs of operated variable dimension _______'
    92389236    for vn in dimvn:
    9239         print "' " + vn + "' ... .. ."
    92409237        if not objnc.variables.has_key(vn):
    92419238            print warnmsg
     
    92439240              '" does not have variable "' + vn + '" skipping it !!'
    92449241            continue
    9245         varslice, varsliceddims = SliceVarDict(ov,dimslice)
    9246         varvals0 = ov[tuple(varslice)]
    9247         varvals = np.squeeze(varvals0)
    9248 
    9249         varname = gen.variables_values(vn)[0]
    9250         if gen.searchInlist(oldvarattr, 'standard_name'):
    9251             stdname = ov.getncattr('standard_name')
    9252         else:
    9253             stdname = gen.variables_values(vn)[1]
    9254        
    9255         if gen.searchInlist(oldvarattr, 'long_name'):
    9256             lname = ov.getncattr('long_name')
    9257         else:
    9258             lname = gen.variables_values(vn)[4].replace('|',' ')
    9259 
    9260         if gen.searchInlist(oldvarattr, 'units'):
    9261             uname = ov.getncattr('units')
    9262         else:
    9263             uname = gen.variables_values(vn)[5]
    9264 
    9265         if len(varvals.shape) == 1:
    9266             # Statistics of the variable dimension along the dimensions operated
    9267             newvar = objnewnc.createVariable(vn+'stats', 'f4' )
    9268             newattr = basicvardef(newvar, stdname + 'statistics', lname +            \
    9269               ' statistics', uname)
    9270 
    9271             newattr = set_attributek(newvar, 'Nvalues', len(varvals), 'I')
    9272             for op in basicoper:
    9273                 finalvarv, finalds = operdim(varvals,varsliceddims,dimsoper,op)
    9274                 newattr = set_attributek(newvar, op, finalvarv, 'R')
    9275             objnewnc.sync()
     9242        # Do we have to compute this variable?
     9243        ov = objnc.variables[vn]
     9244        tocompute = False
     9245        for vd in ov.dimensions:
     9246            if gen.searchInlist(dimsoper, vd): tocompute = True
     9247
     9248        if tocompute:
     9249            varslice, varsliceddims = SliceVarDict(ov,dimslice)
     9250            varvals0 = ov[tuple(varslice)]
     9251            varvals = np.squeeze(varvals0)
     9252
     9253            varname = gen.variables_values(vn)[0]
     9254            if gen.searchInlist(oldvarattr, 'standard_name'):
     9255                stdname = ov.getncattr('standard_name')
     9256            else:
     9257                stdname = gen.variables_values(vn)[1]
     9258           
     9259            if gen.searchInlist(oldvarattr, 'long_name'):
     9260                lname = ov.getncattr('long_name')
     9261            else:
     9262                lname = gen.variables_values(vn)[4].replace('|',' ')
     9263
     9264            if gen.searchInlist(oldvarattr, 'units'):
     9265                uname = ov.getncattr('units')
     9266            else:
     9267                uname = gen.variables_values(vn)[5]
     9268
     9269            if len(varvals.shape) == 1:
     9270                print '  ' + fname + ': Statisitcs of operated variable dimension _______'
     9271                print "    '" + vn + "' ... .. ."
     9272                # Statistics of the variable dimension along the dimensions operated
     9273                newvar = objnewnc.createVariable(vn+'stats', 'f4' )
     9274                newattr = basicvardef(newvar, stdname + 'statistics', lname +            \
     9275                  ' statistics', uname)
     9276
     9277                newattr = set_attributek(newvar, 'Nvalues', len(varvals), 'I')
     9278                for op in basicoper:
     9279                    finalvarv, finalds = operdim(varvals,varsliceddims,dimsoper,op)
     9280                    newattr = set_attributek(newvar, op, finalvarv, 'R')
     9281                objnewnc.sync()
    92769282
    92779283# Including operation dimensions on the new slice for the variables dimension
     
    92879293    print '  ' + fname + ': Adding slice of variable dimension _______'
    92889294    for vn in dimvn:
    9289         print "' " + vn + "' ... .. ."
     9295        print "    '" + vn + "' ... .. ."
    92909296        if not objnc.variables.has_key(vn):
    92919297            print warnmsg
     
    93069312            varvals0 = ov[tuple(varslice)]
    93079313            varvals = np.squeeze(varvals0)
    9308 
    9309             print 'Lluis: variables to add:', varsliceddims
    93109314
    93119315            for idv in range(len(varvals.shape)):
Note: See TracChangeset for help on using the changeset viewer.