Changeset 1952 in lmdz_wrf for trunk


Ignore:
Timestamp:
Jul 23, 2018, 2:55:23 PM (6 years ago)
Author:
lfita
Message:

Final version of the script

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/create_OBSnetcdf.py

    r1951 r1952  
    168168    return ncvar
    169169
     170def set_attributek(ncv, attrname, attrval, attrkind):
     171    """ Sets a value of an attribute of a netCDF variable with a kind. Removes previous attribute value if exists
     172    ncvar = object netcdf variable
     173    attrname = name of the attribute
     174    attrvalue = value of the attribute
     175    atrtrkind = kind of attribute: 'S', string ('!' as spaces); 'U', unicode ('!' as spaces); 'I', integer;
     176      'Inp32', numpy integer 32; 'R', ot 'F' real; ' npfloat', np.float; 'D', np.float64
     177    """
     178    fname = 'set_attributek'
     179    validk = {'S': 'string', 'U': 'unicode', 'I': 'integer',                         \
     180      'Inp32': 'integer long (np.int32)', 'F': 'float', 'R': 'float',                \
     181      'npfloat': 'np.float', 'D': 'float long (np.float64)'}
     182
     183    if type(attrkind) == type('s'):
     184        if attrkind == 'S':
     185            attrvalue = str(attrval.replace('!', ' '))
     186        elif attrkind == 'U':
     187            attrvalue = unicode(attrval.replace('!',' '))
     188        elif attrkind == 'I':
     189            attrvalue = np.int(attrval)
     190        elif attrkind == 'R' or attrkind == 'F' :
     191            attrvalue = float(attrval)
     192        elif attrkind == 'npfloat':
     193            attrvalue = np.float(attrval)
     194        elif attrkind == 'D':
     195            attrvalue = np.float64(attrval)
     196        else:
     197            print errormsg
     198            print '  ' + fname + ": '" + attrkind + "' kind of attribute is not ready!"
     199            print '  valid values: _______'
     200            for key in validk.keys():
     201                print '    ', key,':', validk[key]
     202            quit(-1)
     203    else:
     204        if attrkind == type(str('a')):
     205            attrvalue = str(attrval.replace('!', ' '))
     206        elif attrkind == type(unicode('a')):
     207            attrvalue = unicode(attrval.replace('!',' '))
     208        elif attrkind == type(np.int(1)):
     209            attrvalue = np.int(attrval)
     210        elif attrkind == np.dtype('i'):
     211            attrvalue = np.int32(attrval)
     212        elif attrkind == type(float(1.)):
     213            attrvalue = float(attrval)
     214        elif attrkind == type(np.float(1.)):
     215            attrvalue = np.float(attrval)
     216        elif attrkind == np.dtype('float32'):
     217            attrvalue = np.array(attrval, dtype='f')
     218        elif attrkind == type(np.float32(1.)):
     219            attrvalue = np.float32(attrval)
     220        elif attrkind == type(np.float64(1.)):
     221            attrvalue = np.float64(attrval)
     222        elif attrkind == type(np.array([1.,2.])):
     223            attrvalue = attrval
     224        else:
     225            print errormsg
     226            print '  ' + fname + ": '" + attrkind + "' kind of attribute is not ready!"
     227            print '  valid values: _______'
     228            for key in validk.keys():
     229                print '    ', key,':', validk[key]
     230            quit(-1)
     231
     232    attvar = ncv.ncattrs()
     233    if searchInlist(attvar, attrname):
     234        attr = ncv.delncattr(attrname)
     235
     236    if attrname == 'original_subroutines_author':
     237        attrvalue = 'Cindy Bruyere'
     238    attr = ncv.setncattr(attrname, attrvalue)
     239       
     240    return attr
     241
     242
    170243def basicvardef(varobj, vstname, vlname, vunits):
    171244    """ Function to give the basic attributes to a variable
     
    11301203    return
    11311204
     1205def add_global_PyNCplot(ObjFile, pyscript, funcname, version):
     1206    """ Function to add global attributes from 'PyNCplot' to a given netCDF
     1207      ObjFile= netCDF file object to which add the global attributes
     1208      funcname= name of the function from which file comes from
     1209      version= version of the function
     1210    """
     1211    fname = 'add_global_PyNCplot'
     1212
     1213    # Global values
     1214    ObjFile.setncattr('author', 'L. Fita')
     1215    newattr = set_attributek(ObjFile, 'institution', unicode('Centro de ' +          \
     1216     'Investigaciones del Mar y la Atm' + unichr(243) + 'sfera (CIMA)'), 'U')
     1217    newattr = set_attributek(ObjFile, 'institution2', unicode('Instituto Franco-' +  \
     1218      'Argentino sobre Estudios de Clima y sus Impactos (CNRS, UMI-3351-IFAECI'), 'U')
     1219    newattr = set_attributek(ObjFile, 'center', unicode('Consejo Nacional de ' +     \
     1220      'Investigaciones Cient' + unichr(237) + 'ficas y T' + unichr(233) +            \
     1221      'cnicas (CONICET)'), 'U')
     1222    ObjFile.setncattr('university', 'Universidad de Buenos Aires (UBA)')
     1223    ObjFile.setncattr('city', 'Buenos Aires')
     1224    ObjFile.setncattr('country', 'Argentina')
     1225    ObjFile.setncattr('tool', 'PyNCplot')
     1226    ObjFile.setncattr('url', 'http://www.xn--llusfb-5va.cat/python/PyNCplot')
     1227    ObjFile.setncattr('script', pyscript)
     1228    if funcname is not None:
     1229        ObjFile.setncattr('function', funcname)
     1230    ObjFile.setncattr('version', version)
     1231
     1232    ObjFile.sync() 
     1233
     1234    return
     1235
    11321236####### ###### ##### #### ### ## #
    11331237
     
    14141518        set_attribute(objfile, descn, description[descn])
    14151519
    1416 set_attribute(objfile,'author_nc','Lluis Fita')
    1417 set_attribute(objfile,'institution_nc','Centro de Investigaciones del Mar y la ' +   \
    1418   'Atmosfera (CIMA), CONICET-UBA, CNRS UMI-IFAECI, C.A. Buenos Aires')
    1419 set_attribute(objfile,'country_nc','Argentina')
    1420 set_attribute(objfile,'script_nc','create_OBSnetcdf.py')
    1421 set_attribute(objfile,'version_script',version)
    1422 set_attribute(objfile,'information',                                                 \
    1423   'http://www.lluísfb.cat/python/PyNCplot/')
     1520add_global_PyNCplot(objfile, main, 'main', version)
    14241521
    14251522objfile.sync()
Note: See TracChangeset for help on using the changeset viewer.