Skip to content

Commit

Permalink
Cambiocitos
Browse files Browse the repository at this point in the history
  • Loading branch information
julienmalard committed Sep 16, 2016
1 parent a0a79de commit 6c71a88
Showing 1 changed file with 17 additions and 51 deletions.
68 changes: 17 additions & 51 deletions NuevoCoso.py
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ def validar(símismo, exper, calibs=None, paso=1, n_rep_parám=100, n_rep_estoc=

# Simular los experimentos
dic_argums = símismo._prep_args_simul_exps(exper=exper, n_rep_estoc=n_rep_estoc, n_rep_paráms=n_rep_parám)
símismo._simul_exps(**dic_argums, paso=paso)
símismo._simul_exps(**dic_argums, paso=paso, vectorizar_preds=False)

# Si hay que dibujar, dibujar
if dibujar:
Expand Down Expand Up @@ -815,7 +815,7 @@ def _prep_args_simul_exps(símismo, exper, n_rep_estoc, n_rep_paráms):

raise NotImplementedError

def _simul_exps(símismo, datos_inic, paso, n_pasos, extrn):
def _simul_exps(símismo, datos_inic, paso, n_pasos, extrn, vectorizar_preds=True):
"""
Esta es la función que se calibrará cuando se calibra o valida el modelo. Devuelve las predicciones del modelo
correspondiendo a los valores observados, y eso en el mismo orden.
Expand All @@ -834,6 +834,10 @@ def _simul_exps(símismo, datos_inic, paso, n_pasos, extrn):
:param extrn: Un diccionario de valores externas a pasar a la simulación, si aplica.
:type extrn: dict
:param vectorizar_preds: Si es necesario generar un vector de las predicciones (solamente se genera para
calibraciones, no para validaciones).
:type vectorizar_preds: bool
:return: Matriz unidimensional Numpy de las predicciones del modelo correspondiendo a los valores observados.
:rtype: np.ndarray
Expand All @@ -851,15 +855,19 @@ def _simul_exps(símismo, datos_inic, paso, n_pasos, extrn):
# Simular el modelo
antes = time.time()
símismo._calc_simul(paso=paso, n_pasos=n_pasos[exp], extrn=extrn[exp])
print('Calculado simul %s: ' % exp, time.time()-antes)
print('Simulación (%s) calculada en: ' % exp, time.time()-antes)

if not vectorizar_preds:
return

# Convertir los diccionarios de predicciones en un vector numpy.
antes = time.time()
vector_predics = símismo._procesar_predics_calib()
print('Procesando predics: ', time.time()-antes)
else:
# Convertir los diccionarios de predicciones en un vector numpy.
antes = time.time()
vector_predics = símismo._procesar_predics_calib()
print('Procesando predicciones: ', time.time()-antes)

# Devolver el vector de predicciones.
return vector_predics
# Devolver el vector de predicciones.
return vector_predics

def _procesar_predics_calib(símismo):
"""
Expand Down Expand Up @@ -1113,48 +1121,6 @@ def prep_json(d, d_egr=None):
return d_egr


def valid_vals_inic(d, n=None):
"""
Esta función valida que los datos iniciales de una simulación tengan dimensiones compatibles y que no haya errores.
Es una función recursiva que pasa a través de cada diccionario en d.
:param d: El diccionario de datos iniciales.
:type d: dict
:param n: El número de parcelas. No hay que definirla, por que sirve únicamente por la recursión de la función.
:type n: int
:return: El número de parcelas en los datos iniciales.
:rtype: int
"""

# Para cada elemento en el diccionario...
for ll, v in d.items():

if type(v) is dict:
# Si es otro diccionario, llamar la misma función con este nuevo diccionario.
valid_vals_inic(v, n)

elif type(v) is np.ndarray:
# Si es matriz numpy...

# Sacar el número de parcelas por el tamaño de la dimensión 0 de la matriz.
n_parcelas = v.shape[0]

if n is None:
# Si este es la primera iteración, guardar el número de parcelas en "n".
n = n_parcelas

elif n_parcelas != n:
# Si no es la primera iteración de la función, y el número de parcelas no corresponde con el número
# de parcelas anteriormente, hay un problema con los datos iniciales.
raise ValueError('Error en el formato de los datos iniciales')

# Devolver el número de parcelas en los datos iniciales.
return n


def generar_aprioris(clase):
"""
Esta función generar a prioris para una clase dada de Coso basado en las calibraciones existentes de todas las
Expand Down

0 comments on commit 6c71a88

Please sign in to comment.