[3684] | 1 | # -*- coding: iso-8859-1 -*- |
---|
| 2 | # Created : S.Sénési - nov 2015 |
---|
| 3 | |
---|
| 4 | |
---|
| 5 | desc="\nReformatage des donnees SE en fichiers mono-variable ('cmorises')\n"+\ |
---|
| 6 | " Exemples : \n"+\ |
---|
| 7 | " >>> python ./pseudo_cmor.py -v hfls -s NPv3.1ada_1982_1991\n"+\ |
---|
| 8 | " >>> python ./pseudo_cmor.py (! couteux : traite tout !)\n" |
---|
| 9 | |
---|
| 10 | # Avec CliMAF, cette etape est loin d'etre necessaire; on la réalise pour 'exposer' ces fichiers |
---|
| 11 | # dans une arborescence à laquelle sont habitues certains utilisateurs |
---|
| 12 | |
---|
| 13 | |
---|
| 14 | # Gestion des options et arguments d'appel |
---|
| 15 | from optparse import OptionParser |
---|
| 16 | parser = OptionParser(desc) ; parser.set_usage("%%prog [-h]\n%s" % desc) |
---|
| 17 | parser.add_option("-f", "--force", help="force le recalcul de champs existants", action="store_true",default=None) |
---|
| 18 | parser.add_option("-i", "--input", help="repertoire des donnees SE (optionnel)", action="store",default=None) |
---|
| 19 | parser.add_option("-o", "--output", help="repertoire de sortie", action="store",default='./test/') |
---|
| 20 | parser.add_option("-v", "--variables", help="liste des variables (separees par des virgules)(deafut : toutes celles definies dans lmdz_SE)", action="store",default=None) |
---|
| 21 | #simu='NPv3.1ada_1982_1991' ; |
---|
| 22 | parser.add_option("-s", "--simulations", help="simulations a traiter (defaut : toutes)", action="store",default=None) |
---|
| 23 | (options, args) = parser.parse_args() |
---|
| 24 | |
---|
| 25 | #--------------------------------------------------------------------------------- |
---|
| 26 | verbose=True |
---|
| 27 | from climaf.api import * |
---|
| 28 | # La description de l'organisation des données SE et des alias et rescalings |
---|
| 29 | # est partagée dans une micro-librairie : |
---|
| 30 | from lmdz_SE import * # dont : variables_list |
---|
| 31 | #--------------------------------------------------------------------------------- |
---|
| 32 | |
---|
| 33 | if (options.input) : cdef('root',options.input,project='SE') |
---|
| 34 | # |
---|
| 35 | lvars=options.variables |
---|
| 36 | if lvars is not None : lvars=lvars.split(',') |
---|
| 37 | else : lvars=variables_list |
---|
| 38 | |
---|
| 39 | def create_mono_var_files(simu,lvars,rootout,force=None) : |
---|
| 40 | """ Use CliMAF basics to create a mono-variable file in dir rootout/simulation/ |
---|
| 41 | for each var in 'lvars', using SE data for simulation 'simu' |
---|
| 42 | |
---|
| 43 | The file will also be known to CliMAF cache, through a symbolic link |
---|
| 44 | """ |
---|
| 45 | # |
---|
| 46 | # Il faut identifier les annees dans le nom de la simu |
---|
| 47 | yeardeb=simu.split('_')[1] |
---|
| 48 | yearfin=simu.split('_')[2] |
---|
| 49 | years=yeardeb+"_"+yearfin |
---|
| 50 | simu=simu.split('_')[0] |
---|
| 51 | # |
---|
| 52 | dirout=rootout+'/'+simu+'_'+years+'/' |
---|
| 53 | print "vars : ", |
---|
| 54 | for var in lvars : |
---|
| 55 | print " %s, "%(var), |
---|
| 56 | data=ds(project='SE',variable=var,years=years, simulation=simu) |
---|
| 57 | try : |
---|
| 58 | cfile(data,dirout+var+'.nc',ln=True, deep=force) |
---|
| 59 | except : print " Pb ", |
---|
| 60 | |
---|
| 61 | if options.simulations is None : options.simulations=all_SE_simulations() |
---|
| 62 | else : options.simulations=options.simulations.split(",") |
---|
| 63 | |
---|
| 64 | for simulation in options.simulations : |
---|
| 65 | print "simu=%s"%(simulation), |
---|
| 66 | create_mono_var_files(simulation,lvars,rootout=options.output,force=options.force) |
---|
| 67 | |
---|