def guardar(símismo, frmt='json', l_vars=None, arch=None): """ Guarda los resultados en un archivo. Parameters ---------- frmt: str El formato deseado. Puede ser ``json`` o ``csv``. l_vars: La lista de variables de interés. """ if l_vars is None: l_vars = list(símismo) elif isinstance(l_vars, (str, Variable)): l_vars = [l_vars] if frmt[0] != '.': frmt = '.' + frmt arch = arch + frmt if arch else valid_nombre_arch(símismo.nombre + frmt) if frmt == '.json': contenido = símismo.a_dic() guardar_json(jsonificar(contenido), arch=arch) elif frmt == '.csv': with open(arch, 'w', encoding='UTF-8', newline='') as a: escr = csv.writer(a) escr.writerow([_('fecha')] + list(símismo.t.eje())) for var in l_vars: vals = símismo[var].values if len(vals.shape) == 1: escr.writerow([var] + vals.tolist()) else: for í in range(vals.shape[1]): escr.writerow(['{}[{}]'.format(var, í)] + vals[:, í].tolist()) else: raise ValueError( _('Formato de resultados "{}" no reconocido.').format(frmt))
def dibujar_corrida(símismo, resultados, l_vars=None, directorio='./', i_paso=None, colores=None, escala=None): if all(v in resultados for v in l_vars): lugares = None else: lugares = list(resultados) faltan_de_geog = [ lg for lg in lugares if lg not in símismo.cód_a_lugar ] if len(faltan_de_geog): avisar( _('\nLos lugares siguientes no están en la geografía y por tanto no se podrán dibujar:' '\n\t{}').format(', '.join(faltan_de_geog))) if isinstance(l_vars, str): l_vars = [l_vars] for var in l_vars: if lugares is None: res_var = resultados[var] n_obs = res_var.shape[-1] if escala is None: escala = np.min(res_var), np.max(res_var) else: res_var = {lg: resultados[lg][var] for lg in lugares} n_obs = len(list(resultados.values())[0]['n']) + 1 if escala is None: escala = res_var[var].min(), res_var[var].max() if isinstance(i_paso, tuple): i_paso = list(i_paso) if i_paso is None: i_paso = [0, n_obs] if isinstance(i_paso, int): i_paso = [i_paso, i_paso + 1] if i_paso[0] is None: i_paso[0] = 0 if i_paso[1] is None: i_paso[1] = n_obs # Incluir el nombre del variable en el directorio, si no es que ya esté allí. nombre_var = valid_nombre_arch(var) if os.path.split(directorio)[1] != nombre_var: directorio = os.path.join(directorio, nombre_var) # Crear el directorio, si no existe ya. Sino borrarlo. if os.path.exists(directorio): shutil.rmtree(directorio) os.makedirs(directorio) for i in range(*i_paso): if lugares is None: valores = res_var[..., i] else: valores = {lg: res_var[i] for lg in res_var} archivo_í = os.path.join(directorio, '{}, {}'.format(nombre_var, i)) símismo.dibujar(archivo=archivo_í, valores=valores, título=var, colores=colores, escala_num=escala)