Skip to content

Commit

Permalink
Agregar clima para validaciones geográficas
Browse files Browse the repository at this point in the history
  • Loading branch information
julienmalard committed Mar 11, 2020
1 parent 0871496 commit c1dab48
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
12 changes: 10 additions & 2 deletions tinamit/calibs/geog_mod.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ def __init__(símismo, mod):
"""
símismo.mod = mod

def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corresp_vars=None):
def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corresp_vars=None, clima=None):
"""
Efectuar la validación.
Expand Down Expand Up @@ -137,10 +137,18 @@ def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corr
for lg in tqdm(datos.lugares):
prms_lg = paráms[lg] if lg in paráms else {}
datos_lg = vals_datos[vals_datos[_('lugar')] == lg]
if isinstance(clima, dict):
if lg in clima:
clima_lg = clima[lg]
else:
clima_lg = None
else:
clima_lg = clima

if len(datos_lg):
valids[lg] = ValidadorMod(símismo.mod).validar(
t, datos=datos_lg, paráms=prms_lg, funcs=funcs, vars_extern=vars_extern, corresp_vars=corresp_vars
t, datos=datos_lg, paráms=prms_lg, funcs=funcs, vars_extern=vars_extern, corresp_vars=corresp_vars,
clima=clima_lg
)

return valids
4 changes: 2 additions & 2 deletions tinamit/calibs/valid.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __init__(símismo, mod):
"""
símismo.mod = mod

def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corresp_vars=None):
def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corresp_vars=None, clima=None):
"""
Efectua la validación.
Expand Down Expand Up @@ -78,7 +78,7 @@ def validar(símismo, t, datos, paráms=None, funcs=None, vars_extern=None, corr
extern = {vr: vals_extern[_resolver_var(vr, corresp_vars)].dropna() for vr in vars_extern}
extern = {ll: v for ll, v in extern.items() if len(v)}

res = símismo.mod.simular(t=t, extern={**paráms, **extern}, vars_interés=vars_valid)
res = símismo.mod.simular(t=t, extern={**paráms, **extern}, vars_interés=vars_valid, clima=clima)

vals_calib = datos[list({_resolver_var(v, corresp_vars) for v in vars_valid}) + [_('fecha')]]
vals_calib = vals_calib.set_index(_('fecha'))
Expand Down
9 changes: 8 additions & 1 deletion tinamit/envolt/mds/pysd/_envolt.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ def __init__(símismo, archivo, nombre='mds'):
def iniciar_modelo(símismo, corrida):
# Poner los variables y el tiempo a sus valores iniciales
símismo.mod.reload()
símismo.mod.initialize()
símismo.paso_act = 0

símismo.cont_simul = False
Expand Down Expand Up @@ -81,9 +80,17 @@ def _correr_hasta_final(símismo):
v.index = eje_pysd[t.eje().isin(v.index.values)]

símismo._proc_paráms(paráms)
iniciales = {}
niveles = símismo.variables.niveles()
for vr in list(paráms):
for nv in niveles:
if vr in nv.parientes:
iniciales[str(nv)] = paráms[vr][0]
break

res_pysd = símismo.mod.run(
params=paráms,
initial_condition='o',
return_timestamps=eje_pysd
)
return {vr: res_pysd[str(vr)].values for vr in símismo.corrida.resultados.variables()}
Expand Down

0 comments on commit c1dab48

Please sign in to comment.