Code source de pyspc.io.prevision.reader

#!/usr/bin/python3
# -*- coding: utf-8 -*-
########################################################################
#
# This file is part of python module <pyspc>.
# Copyright (C) 2013-2021  R. Marty
#   (renaud.marty@developpement-durable.gouv.fr)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see COPYING.txt).
# If not, see <http://www.gnu.org/licenses/>.
#
########################################################################
"""
Bibliothèque pyspc du projet pyspc - IO - Prevision LCI - read
"""
from pyspc.core.keyseries import str2tuple, tuple2str
from pyspc.core.serie import Serie
from pyspc.core.series import Series
import pyspc.core.exception as _exception

from pyspc.convention.prevision import (
    P14_VARNAMES, P17_VARNAMES, P19_VARNAMES, P19_RATIOS)
from pyspc.data.prevision import Prevision14, Prevision17, Prevision19


[docs] def read_Prevision14(filename, codes=None, valid=False, hydro_version='hydro3', first_dt=None, last_dt=None, warning=True): """ Créer une instance Series à partir d'une base Prévision du SPC LCI, période 2014-2016 Parameters ---------- filename : str Chemin de la base de données codes : list Codes Hydro2/Hydro3 des stations valid : bool Seulement les prévisions validées (True) ou toutes les prévisions produites (False) Défaut: False hydro_version : str Version du référentiel: 'hydro2' ou 'hydro3'. Défaut: 'hydro3' first_dt : datetime Premier instant de prévision last_dt : datetime Dernier instant de prévision warning : bool Affiche les avertissement si True. Défaut: True Returns ------- series : pyspc.core.series.Series Collection des prévisions Examples -------- >>> from datetime import datetime as dt >>> from pyspc.io.prevision import read_Prevision14 >>> filename = os.path.join('data/io/dbase', 'prevision_2014.mdb') >>> first_dt = dt(2013, 5, 3, 12) >>> last_dt = dt(2013, 5, 3, 23) >>> codes = ['K1251810'] Cas des prévisions brutes - hydro2 >>> series = read_Prevision14( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=False, hydro_version='hydro2') >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision14 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 27 * ---------------------------------- * SERIE #1 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2001, None * ---------------------------------- * SERIE #2 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2001, None * ---------------------------------- * SERIE #3 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2001, None * ---------------------------------- * SERIE #4 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2002, None * ---------------------------------- * SERIE #5 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2002, None * ---------------------------------- * SERIE #6 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2002, None * ---------------------------------- * SERIE #7 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2003, None * ---------------------------------- * SERIE #8 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2003, None * ---------------------------------- * SERIE #9 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2003, None * ---------------------------------- * SERIE #10 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2004, None * ---------------------------------- * SERIE #11 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2004, None * ---------------------------------- * SERIE #12 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2004, None * ---------------------------------- * SERIE #13 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2005, None * ---------------------------------- * SERIE #14 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2005, None * ---------------------------------- * SERIE #15 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2005, None * ---------------------------------- * SERIE #16 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2006, None * ---------------------------------- * SERIE #17 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2006, None * ---------------------------------- * SERIE #18 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2006, None * ---------------------------------- * SERIE #19 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2007, None * ---------------------------------- * SERIE #20 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2007, None * ---------------------------------- * SERIE #21 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2007, None * ---------------------------------- * SERIE #22 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2008, None * ---------------------------------- * SERIE #23 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2008, None * ---------------------------------- * SERIE #24 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2008, None * ---------------------------------- * SERIE #25 * - CODE = K1251810 * - VARNAME = PH * - META = 2013-05-03 23:00:00, LCI, 2009, None * ---------------------------------- * SERIE #26 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI, 2009, None * ---------------------------------- * SERIE #27 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI, 2009, None ************************************* Cas des prévisions validées - hydro2 >>> series = read_Prevision14( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=True, hydro_version='hydro2') >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision14 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 2 * ---------------------------------- * SERIE #1 * - CODE = K1251810 * - VARNAME = QH * - META = 2013-05-03 23:00:00, LCI-valid, 2006, None * ---------------------------------- * SERIE #2 * - CODE = K1251810 * - VARNAME = HH * - META = 2013-05-03 23:00:00, LCI-valid, 2006, None ************************************* Cas des prévisions brutes - hydro3 >>> filename = os.path.join('data/io/dbase', 'prevision_2014_hydro3.mdb') >>> first_dt = dt(2016, 5, 31, 12) >>> last_dt = dt(2016, 5, 31, 18) >>> codes = ['K6373020'] >>> series = read_Prevision14( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=False, hydro_version='hydro3') >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision14 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 8 * ---------------------------------- * SERIE #1 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI, 2001, Val * ---------------------------------- * SERIE #2 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI, 2001, Val10 * ---------------------------------- * SERIE #3 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI, 2001, Val50 * ---------------------------------- * SERIE #4 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI, 2001, Val90 * ---------------------------------- * SERIE #5 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI, 2001, Val * ---------------------------------- * SERIE #6 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI, 2001, Val10 * ---------------------------------- * SERIE #7 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI, 2001, Val50 * ---------------------------------- * SERIE #8 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI, 2001, Val90 ************************************* Cas des prévisions validées - hydro3 >>> series = read_Prevision14( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=True, hydro_version='hydro3') >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision14 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 8 * ---------------------------------- * SERIE #1 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI-valid, 2001, Val * ---------------------------------- * SERIE #2 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI-valid, 2001, Val10 * ---------------------------------- * SERIE #3 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI-valid, 2001, Val50 * ---------------------------------- * SERIE #4 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 13:00:00, LCI-valid, 2001, Val90 * ---------------------------------- * SERIE #5 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI-valid, 2001, Val * ---------------------------------- * SERIE #6 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI-valid, 2001, Val10 * ---------------------------------- * SERIE #7 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI-valid, 2001, Val50 * ---------------------------------- * SERIE #8 * - CODE = K6373020 * - VARNAME = QH * - META = 2016-05-31 16:00:00, LCI-valid, 2001, Val90 ************************************* """ # ------------------------------------------------------------------------- # 0- Contrôles # ------------------------------------------------------------------------- _exception.check_str(filename) _exception.check_listlike(codes) _exception.check_bool(valid) _exception.check_str(hydro_version) _exception.check_dt(first_dt) _exception.check_dt(last_dt) _exception.check_bool(warning) # ------------------------------------------------------------------------- # 1- Lecture + Mise en DataFrame # ------------------------------------------------------------------------- reader = Prevision14(filename=filename) df = reader.read_fcst(codes=codes, first_dt=first_dt, last_dt=last_dt, valid=valid, hydro_version=hydro_version, warning=warning) if df is None: return None # ------------------------------------------------------------------------- # 4- Création de la collection de séries # ------------------------------------------------------------------------- series = Series(datatype='fcst', name=set_series_name('Prevision14', valid=valid)) model = 'LCI' if valid: model += '-valid' if isinstance(df, dict): for d in df: for c in df[d].columns: serie = Serie( df[d][c], code=d[0], provider='Prevision14', varname='QH', warning=warning) k = (serie.code, 'QH', (d[1], model, str(d[2]), c)) serie.code = str2tuple(tuple2str(k), forceobs=True)[0] series.add(code=d[0], serie=serie, meta=k[2]) else: for c in df.columns: try: v = P14_VARNAMES[c[3]] except KeyError: continue serie = Serie(df[c], code=c[0], provider='Prevision14', varname=v, warning=warning) k = (serie.code, v, (c[1], model, str(c[2]), None)) serie.code = str2tuple(tuple2str(k), forceobs=True)[0] series.add(code=c[0], serie=serie, meta=k[2]) return series
[docs] def read_Prevision17(filename=None, codes=None, valid=False, released=False, first_dt=None, last_dt=None, warning=True): """ Créer une instance Series à partir d'une base Prévision du SPC LCI, période 2017-2019 Parameters ---------- filename : str Chemin de la base de données codes : list Codes Hydro2/Hydro3 des stations valid : bool Seulement les prévisions validées (True) ou toutes les prévisions produites (False) Défaut: False released : bool Seulement les prévisions validées et diffusées (True) Défaut: False first_dt : datetime Premier instant de prévision last_dt : datetime Dernier instant de prévision warning : bool Affiche les avertissement si True. Défaut: True Returns ------- series : pyspc.core.series.Series Collection des prévisions Examples -------- >>> from datetime import datetime as dt >>> from pyspc.io.prevision import read_Prevision17 >>> filename = os.path.join('data/io/dbase', 'prevision_2017.mdb') >>> first_dt = dt(2016, 11, 21, 12) >>> last_dt = dt(2016, 11, 21, 12) >>> codes = ['K0403010'] Cas des prévisions brutes >>> series = read_Prevision17( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=False, released=False) >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision17 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 64 * ---------------------------------- * SERIE #1 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2001, * ---------------------------------- * SERIE #2 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2001, 10 * ---------------------------------- * SERIE #3 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2001, 50 * ---------------------------------- * SERIE #4 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2001, 90 * ---------------------------------- * SERIE #5 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2001, * ---------------------------------- * SERIE #6 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2001, 10 * ---------------------------------- * SERIE #7 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2001, 50 * ---------------------------------- * SERIE #8 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2001, 90 * ---------------------------------- * SERIE #9 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2002, * ---------------------------------- * SERIE #10 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2002, 10 * ---------------------------------- * ---------------------------------- * ---------------------------------- * SERIE #60 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, LCI, 2009, 90 * ---------------------------------- * SERIE #61 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2009, * ---------------------------------- * SERIE #62 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2009, 10 * ---------------------------------- * SERIE #63 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2009, 50 * ---------------------------------- * SERIE #64 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, LCI, 2009, 90 ************************************* Cas des prévisions validées >>> series = read_Prevision17( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=True, released=False) >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision17 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 8 * ---------------------------------- * SERIE #1 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, * ---------------------------------- * SERIE #2 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 10 * ---------------------------------- * SERIE #3 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 50 * ---------------------------------- * SERIE #4 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 90 * ---------------------------------- * SERIE #5 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, * ---------------------------------- * SERIE #6 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 10 * ---------------------------------- * SERIE #7 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 50 * ---------------------------------- * SERIE #8 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 90 ************************************* Cas des prévisions diffusées >>> series = read_Prevision17( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=True, released=True) >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision17 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 8 * ---------------------------------- * SERIE #1 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, * ---------------------------------- * SERIE #2 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 10 * ---------------------------------- * SERIE #3 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 50 * ---------------------------------- * SERIE #4 * - CODE = K0403010 * - VARNAME = QH * - META = 2016-11-21 12:00:00, pilote, 2003, 90 * ---------------------------------- * SERIE #5 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, * ---------------------------------- * SERIE #6 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 10 * ---------------------------------- * SERIE #7 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 50 * ---------------------------------- * SERIE #8 * - CODE = K0403010 * - VARNAME = HH * - META = 2016-11-21 12:00:00, pilote, 2003, 90 ************************************* """ # ------------------------------------------------------------------------- # 0- Contrôles # ------------------------------------------------------------------------- _exception.check_str(filename) _exception.check_listlike(codes) _exception.check_bool(valid) _exception.check_bool(released) _exception.check_dt(first_dt) _exception.check_dt(last_dt) _exception.check_bool(warning) # ------------------------------------------------------------------------- # 1- Lecture + Mise en DataFrame # ------------------------------------------------------------------------- reader = Prevision17(filename=filename) df = reader.read_fcst(codes=codes, first_dt=first_dt, last_dt=last_dt, valid=valid, released=released, warning=warning) if df is None: return None # ------------------------------------------------------------------------- # 4- Création de la collection de séries # ------------------------------------------------------------------------- series = Series(datatype='fcst', name=set_series_name('Prevision17', valid=valid, released=released)) for c in df.columns: if valid: model = c[3] else: model = 'LCI' try: v = P17_VARNAMES[(len(c[0]), c[-1].endswith('conv'))] except KeyError: continue serie = Serie(df[c], code=c[0], provider='Prevision17', varname=v, warning=warning) k = (serie.code, v, (c[1], model, str(c[2]), c[-1].replace('Val', '').replace('conv', ''))) serie.code = str2tuple(tuple2str(k), forceobs=True)[0] series.add(code=c[0], serie=serie, meta=k[2]) return series
[docs] def read_Prevision19(filename=None, codes=None, valid=False, released=False, first_dt=None, last_dt=None, warning=True): """ Créer une instance Series à partir d'une base Prévision du SPC LCI, période 2017-2019 Parameters ---------- filename : str Chemin de la base de données codes : list Codes Hydro2/Hydro3 des stations valid : bool Seulement les prévisions validées (True) ou toutes les prévisions produites (False) Défaut: False released : bool Seulement les prévisions validées et diffusées (True) Défaut: False first_dt : datetime Premier instant de prévision last_dt : datetime Dernier instant de prévision warning : bool Affiche les avertissement si True. Défaut: True Returns ------- series : pyspc.core.series.Series Collection des prévisions Examples -------- >>> from datetime import datetime as dt >>> from pyspc.io.prevision import read_Prevision19 >>> filename = os.path.join('data/io/dbase', 'PRV_201801.mdb') >>> first_dt = dt(2018, 1, 4) >>> last_dt = dt(2018, 1, 5) >>> codes = ['K1321810'] Cas des prévisions brutes >>> series = read_Prevision17( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=False, released=False) >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision19 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 72 * ---------------------------------- * SERIE #1 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 2007, * ---------------------------------- * SERIE #2 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 2007, 10 * ---------------------------------- * SERIE #3 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 2007, 50 * ---------------------------------- * SERIE #4 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 2007, 90 * ---------------------------------- * SERIE #5 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 2007, * ---------------------------------- * SERIE #6 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 2007, 10 * ---------------------------------- * SERIE #7 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 2007, 50 * ---------------------------------- * SERIE #8 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 2007, 90 * ---------------------------------- * SERIE #9 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 1007, * ---------------------------------- * SERIE #10 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, LCI, 1007, 10 * ---------------------------------- * ---------------------------------- * ---------------------------------- * SERIE #70 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 5100, 10 * ---------------------------------- * SERIE #71 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 5100, 50 * ---------------------------------- * SERIE #72 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, LCI, 5100, 90 ************************************* Cas des prévisions validées >>> series = read_Prevision17( ... filename=filename, codes=codes, first_dt=first_dt, last_dt=last_dt, ... valid=True, released=False) >>> series ************************************* ********** SERIES ******************* ************************************* * NOM DE LA COLLECTION = Prevision19 * TYPE DE COLLECTION = fcst * NOMBRE DE SERIES = 8 * ---------------------------------- * SERIE #1 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, expresso, 5200, * ---------------------------------- * SERIE #2 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, expresso, 5200, 10 * ---------------------------------- * SERIE #3 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, expresso, 5200, 50 * ---------------------------------- * SERIE #4 * - CODE = K1321810 * - VARNAME = QH * - META = 2018-01-04 12:00:00, expresso, 5200, 90 * ---------------------------------- * SERIE #5 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, expresso, 5200, * ---------------------------------- * SERIE #6 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, expresso, 5200, 10 * ---------------------------------- * SERIE #7 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, expresso, 5200, 50 * ---------------------------------- * SERIE #8 * - CODE = K1321810 * - VARNAME = HH * - META = 2018-01-04 12:00:00, expresso, 5200, 90 ************************************* """ # ------------------------------------------------------------------------- # 0- Contrôles # ------------------------------------------------------------------------- _exception.check_str(filename) _exception.check_listlike(codes) _exception.check_bool(valid) _exception.check_bool(released) _exception.check_dt(first_dt) _exception.check_dt(last_dt) _exception.check_bool(warning) # ------------------------------------------------------------------------- # 1- Lecture + Mise en DataFrame # ------------------------------------------------------------------------- reader = Prevision19(filename=filename) dfs = reader.read_fcst(codes=codes, first_dt=first_dt, last_dt=last_dt, valid=valid, released=released, unique=True, warning=warning) if dfs is None: return None # ------------------------------------------------------------------------- # 4- Création de la collection de séries # ------------------------------------------------------------------------- series = Series(datatype='fcst', name=set_series_name('Prevision19', valid=valid, released=released)) for df in dfs.values(): for c in df.columns: if valid: model = c[3] else: model = 'LCI' try: v = P19_VARNAMES[(len(c[0]), c[-1].endswith('onv'))] except KeyError: continue df[c] = df[c] * P19_RATIOS.get((v, reader.subtype), 1) serie = Serie(df[c], code=c[0], provider='Prevision19', varname=v, warning=warning) k = (serie.code, v, (c[1], model, str(c[2]), c[-1].replace('Val', '') .replace('conv', '').replace('Conv', ''))) serie.code = str2tuple(tuple2str(k), forceobs=True)[0] series.add(code=c[0], serie=serie, meta=k[2]) return series
def set_series_name(source, valid=False, released=False): """ Définir le nom de la collection """ if not valid: return source if valid and not released: return source + 'val' return source + 'diff'