# -*- coding: iso-8859-1 -*-
# Created : S.Sénési - nov 2015


desc="\nMoyenne par saison et projection des donnees mono-variables issues des donnees SE\n"+\
"    avec ecriture sur fichier \n"+\
"  Exemple : python season.py -s NPv3.1ada_1982_1991 --seasons DJF -g VLR "

Nota=""" Avec CliMAF, cette etape est loin d'etre necessaire; on la realise
 pour 'exposer' ces fichiers dans une arborescence a laquelle sont
 habitues certains utilisateurs On ne se repose pas sur l'existence de
 fichiers dit 'cmorises', : on accède directement aux donnees SE via
 le 'projet' CliMAF adhoc (cf infra) """

dir_default='/data/hourdin/LMDZ6/'

# Répertoire de base pour les entrées et les résultats
seasons_default='JJA,YEAR,DJF'

# Gestion des options et arguments d'appel
from optparse import OptionParser
parser = OptionParser(desc) ; parser.set_usage("%%prog [-h]\n%s" % desc)
parser.add_option("-i", "--input", help="repertoire des donnes SE d'origine (optionnel)", action="store")
parser.add_option("-o", "--output", 
                  help="repertoire de sortie (un sous rep <GRID>/<SEASON>/<SIMU> sera cree)(defaut : %s)"%dir_default, 
                  action="store",default=dir_default)
parser.add_option("-p", "--seasons", help="saisons a traiter, separees par des virgules "
                  "(defaut=%s)"%`seasons_default`, action="store", default=seasons_default)
parser.add_option("-g", "--grid", help="nom de grille", action="store",default='')
parser.add_option("-s", "--simulations", help="simulation+annees a traiter (sim_YYY1_YYY2)"
                  "(separees par des virgules)(defaut : toutes)", action="store",default=None)
parser.add_option("-f", "--force", help="force le recalcul de champs existants", 
                  action="store_true",default=None)
(options, args) = parser.parse_args()

#---------------------------------------------------------------------------------
from climaf.api import *
# La description de l'organisation des données SE, des alias et rescalings 
# et de la gestion des saisons et grilles , est partagée dans une micro-librairie :
from lmdz_SE import * # variables_list, all_SE_simulations, svsg, seasons
#---------------------------------------------------------------------------------
#
if options.simulations is None : options.simulations=all_SE_simulations()
else : options.simulations=options.simulations.split(",")
#
for season in options.seasons.split(",") :
    if season not in seasons : 
        print "La saison %s n'est pas connue"%season
        continue
    for simulation in options.simulations :
        out_dir=options.output+"/"+options.grid+"/"+season+"/"+simulation+"/"
        #
        for var in variables_list :
            result=svsg(simulation,var,season,options.grid)
            try :
                cfile(result,out_dir+var+".nc",deep=options.force,ln=True)
                #cfile(result,out_dir+var+".nc",deep=None,ln=True)
            except :
                print "Pb avec la simulation %s , la saison %s et la variable %s"%(simu,season,var)
            
