From b43af4b366aec006d62b9fa1dcebb6cc7bec6d72 Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:45:00 -0400 Subject: [PATCH 01/13] mark online tests and functions, use strict markers, remove unused imports, better typing in major functions --- pyproject.toml | 2 + src/xhydro/gis.py | 39 +++-- src/xhydro/modelling/_ravenpy_models.py | 16 +-- src/xhydro/modelling/calibration.py | 31 ++-- src/xhydro/modelling/obj_funcs.py | 134 ++++++++---------- .../ECF_climate_correction.py | 17 ++- .../optimal_interpolation_fun.py | 31 ++-- tests/test_calibration.py | 1 + tests/test_cc.py | 3 + tests/test_gis.py | 34 ++++- tests/test_optimal_interpolation.py | 11 ++ tests/test_regional.py | 26 ++-- tests/test_testing_utils.py | 1 + 13 files changed, 195 insertions(+), 151 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c7145947..c72904f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -256,11 +256,13 @@ override_SS05 = [ [tool.pytest.ini_options] addopts = [ "--color=yes", + "--strict-markers", "--verbose" ] filterwarnings = ["ignore::UserWarning"] testpaths = "tests" markers = [ + "online: mark tests that require access to the internet", "requires_docs: mark tests that can only be run with documentation present (deselect with '-m \"not requires_docs\"')" ] diff --git a/src/xhydro/gis.py b/src/xhydro/gis.py index e8b2c857..bb24b33e 100644 --- a/src/xhydro/gis.py +++ b/src/xhydro/gis.py @@ -2,12 +2,10 @@ from __future__ import annotations -import os import tempfile import urllib.request import warnings from pathlib import Path -from typing import Optional import cartopy.crs as ccrs import geopandas as gpd @@ -38,6 +36,7 @@ ] +# FIXME: `map` is a reserved keyword in Python, so it should not be used as a variable name. def watershed_delineation( coordinates: list[tuple] | tuple | None = None, map: leafmap.Map | None = None, @@ -61,6 +60,10 @@ def watershed_delineation( ------- gpd.GeoDataFrame GeoDataFrame containing the watershed boundaries. + + Warnings + -------- + This function relies on an Amazon S3-hosted dataset to delineate watersheds. """ # level 12 HydroBASINS polygons dataset url (North America only at the moment) url = "https://s3.wasabisys.com/hydrometric/shapefiles/polygons.parquet" @@ -183,8 +186,10 @@ def _compute_watershed_boundaries( coordinates: tuple, gdf: gpd.GeoDataFrame, ) -> gpd.GeoDataFrame: - """Algorithm for watershed delineation using HydroBASINS (hybas_na_lev01-12_v1c). The process involves assessing - all upstream sub-basins from a specified pour point and consolidating them into a unified watershed. + """ + Algorithm for watershed delineation using HydroBASINS (hybas_na_lev01-12_v1c). + + The process involves assessing all upstream sub-basins from a specified pour point and consolidating them into a unified watershed. Parameters ---------- @@ -240,7 +245,8 @@ def _recursive_upstream_lookup( direct_upstream_indexes: list, all_upstream_indexes: list | None = None, ): - """Recursive function to iterate over each upstream sub-basin until all sub-basins in a watershed are identified. + """ + Recursive function to iterate over each upstream sub-basin until all sub-basins in a watershed are identified. Parameters ---------- @@ -248,7 +254,7 @@ def _recursive_upstream_lookup( HydroBASINS level 12 dataset in GeodataFrame format stream of the pour point. direct_upstream_indexes : list List of all sub-basins indexes directly upstream. - all_upstream_indexes : list + all_upstream_indexes : list, optional Cumulative upstream indexes from `direct_upstream_indexes` accumulated during each iteration. Returns @@ -287,10 +293,11 @@ def surface_properties( dataset_date: str = "2021-04-22", collection: str = "cop-dem-glo-90", ) -> gpd.GeoDataFrame | xr.Dataset: - """Surface properties for watersheds. + """ + Surface properties for watersheds. - Surface properties are calculated using Copernicus's GLO-90 Digital Elevation Model. By default, the dataset - has a geographic coordinate system (EPSG: 4326) and this function expects a projected crs for more accurate results. + Surface properties are calculated using Copernicus's GLO-90 Digital Elevation Model. + By default, the dataset has a geographic coordinate system (EPSG: 4326) and this function expects a projected crs for more accurate results. The calculated properties are : - elevation (meters) @@ -318,6 +325,10 @@ def surface_properties( ------- gpd.GeoDataFrame or xr.Dataset Output dataset containing the surface properties. + + Warnings + -------- + This function relies on the Microsoft Planetary Computer's STAC Catalog to retrieve the Digital Elevation Model (DEM) data. """ # Geometries are projected to make calculations more accurate projected_gdf = gdf.to_crs(projected_crs) @@ -394,7 +405,7 @@ def _merge_stac_dataset(catalog, bbox_of_interest, year): # our merged dataset. Get the EPSG code of the first item and the nodata value. item = items[0] - # Create a single DataArray from out multiple resutls with the corresponding + # Create a single DataArray from out multiple results with the corresponding # rasters projected to a single CRS. Note that we set the dtype to ubyte, which # matches our data, since stackstac will use float64 by default. stack = ( @@ -486,6 +497,10 @@ def land_use_classification( ------- gpd.GeoDataFrame or xr.Dataset Output dataset containing the watershed properties. + + Warnings + -------- + This function relies on the Microsoft Planetary Computer's STAC Catalog to retrieve the Digital Elevation Model (DEM) data. """ catalog = pystac_client.Client.open( "https://planetarycomputer.microsoft.com/api/stac/v1", @@ -549,6 +564,10 @@ def land_use_plot( ------- None Nothing to return. + + Warnings + -------- + This function relies on the Microsoft Planetary Computer's STAC Catalog to retrieve the Digital Elevation Model (DEM) data. """ catalog = pystac_client.Client.open( "https://planetarycomputer.microsoft.com/api/stac/v1", diff --git a/src/xhydro/modelling/_ravenpy_models.py b/src/xhydro/modelling/_ravenpy_models.py index 5b6b6c68..3d1959cc 100644 --- a/src/xhydro/modelling/_ravenpy_models.py +++ b/src/xhydro/modelling/_ravenpy_models.py @@ -2,7 +2,6 @@ import os import tempfile -from typing import Optional, Union import numpy as np import ravenpy.config.emulators @@ -37,21 +36,20 @@ class RavenpyModel(HydrologicalModel): The first date of the simulation. end_date : dt.datetime The last date of the simulation. - qobs_path : Union[str, os.PathLike] + qobs_path : str or os.PathLike The path to the dataset containing the observed streamflow. alt_names_flow : dict A dictionary that allows users to change the names of flow variables of their dataset to cf-compliant names. - meteo_file : Union[str, os.PathLike] + meteo_file : str or os.PathLike The path to the file containing the observed meteorological data. data_type : dict - The dictionary necessary to tell raven which variables are being fed such that it can adjust it's processes - internally. + The dictionary necessary to tell raven which variables are being fed such that it can adjust its processes internally. alt_names_meteo : dict A dictionary that allows users to change the names of meteo variables of their dataset to cf-compliant names. meteo_station_properties : dict The properties of the weather stations providing the meteorological data. Used to adjust weather according to differences between station and catchment elevations (adiabatic gradients, etc.). - workdir : Union[str, os.PathLike] + workdir : str or os.PathLike Path to save the .rv files and model outputs. rain_snow_fraction : str The method used by raven to split total precipitation into rain and snow. @@ -130,7 +128,7 @@ def run(self) -> str | xr.Dataset: Returns ------- - xr.dataset + xr.Dataset The simulated streamflow from the selected ravenpy model. """ default_emulator_config = self.default_emulator_config @@ -182,7 +180,7 @@ def get_streamflow(self): Returns ------- - xr.dataset + xr.Dataset The simulated streamflow from the selected ravenpy model. """ return self.qsim @@ -192,7 +190,7 @@ def get_inputs(self) -> xr.Dataset: Returns ------- - xr.dataset + xr.Dataset The observed meteorological data used to run the ravenpy model simulation. """ ds = xr.open_dataset(self.meteo_file) diff --git a/src/xhydro/modelling/calibration.py b/src/xhydro/modelling/calibration.py index c2cc299a..f8ebeee9 100644 --- a/src/xhydro/modelling/calibration.py +++ b/src/xhydro/modelling/calibration.py @@ -60,8 +60,6 @@ from copy import deepcopy # Import packages -from typing import Optional - import numpy as np import spotpy import xarray as xr @@ -87,10 +85,10 @@ class SpotSetup: The model configuration object that contains all info to run the model. The model function called to run this model should always use this object and read-in data it requires. It will be up to the user to provide the data that the model requires. - bounds_high : np.array + bounds_high : np.ndarray High bounds for the model parameters to be calibrated. Spotpy will sample parameter sets from within these bounds. The size must be equal to the number of parameters to calibrate. - bounds_low : np.array + bounds_low : np.ndarray Low bounds for the model parameters to be calibrated. Spotpy will sample parameter sets from within these bounds. The size must be equal to the number of parameters to calibrate. obj_func : str @@ -115,7 +113,7 @@ class SpotSetup: take_negative : bool Inidactor to take the negative of the objective function value in optimization to ensure convergence in the right direction. - mask : np.array + mask : np.ndarray A vector indicating which values to preserve/remove from the objective function computation. 0=remove, 1=preserve. transform : str The method to transform streamflow prior to computing the objective function. Can be one of: @@ -133,11 +131,11 @@ class SpotSetup: def __init__( self, model_config: dict, - bounds_high: np.ndarray, - bounds_low: np.ndarray, + bounds_high: np.ndarray | list[float | int], + bounds_low: np.ndarray | list[float | int], obj_func: str | None = None, take_negative: bool = False, - mask: np.ndarray | None = None, + mask: np.ndarray | list[float | int] | None = None, transform: str | None = None, epsilon: float = 0.01, ): @@ -175,10 +173,10 @@ def __init__( - "rmse" : Root Mean Square Error - "rrmse" : Relative Root Mean Square Error (RMSE-to-mean ratio) - "rsr" : Ratio of RMSE to standard deviation. - bounds_high : np.array + bounds_high : np.ndarray High bounds for the model parameters to be calibrated. Spotpy will sample parameter sets from within these bounds. The size must be equal to the number of parameters to calibrate. - bounds_low : np.array + bounds_low : np.ndarray Low bounds for the model parameters to be calibrated. Spotpy will sample parameter sets from within these bounds. The size must be equal to the number of parameters to calibrate. evaluations : int @@ -188,7 +186,7 @@ def __init__( take_negative : bool Wether to take the negative of the objective function value in optimization to ensure convergence in the right direction. - mask : np.array, optional + mask : np.ndarray, optional A vector indicating which values to preserve/remove from the objective function computation. 0=remove, 1=preserve. transform : str, optional The method to transform streamflow prior to computing the objective function. Can be one of: @@ -306,11 +304,11 @@ def objectivefunction( def perform_calibration( model_config: dict, obj_func: str, - bounds_high: np.ndarray, - bounds_low: np.ndarray, + bounds_high: np.ndarray | list[float | int], + bounds_low: np.ndarray | list[float | int], evaluations: int, algorithm: str = "DDS", - mask: np.ndarray | None = None, + mask: np.ndarray | list[float | int] | None = None, transform: str | None = None, epsilon: float = 0.01, sampler_kwargs: dict | None = None, @@ -446,6 +444,8 @@ def perform_calibration( raise ValueError( "sampler_kwargs should only contain the keywords [ngs, kstop, peps, pcento] when using SCEUA." ) + else: + raise ValueError(f"Algorithm {algorithm} is not supported.") # Gather optimization results results = sampler.getdata() @@ -456,8 +456,7 @@ def perform_calibration( ) best_parameters = [best_parameters[0][i] for i in range(0, len(best_parameters[0]))] - # Get the best objective function as well depending if maximized or - # minimized + # Get the best objective function as well, dependent on if maximized or minimized if of_maximize: _, bestobjf = analyser.get_maxlikeindex(results) else: diff --git a/src/xhydro/modelling/obj_funcs.py b/src/xhydro/modelling/obj_funcs.py index 14685e12..565ffa02 100644 --- a/src/xhydro/modelling/obj_funcs.py +++ b/src/xhydro/modelling/obj_funcs.py @@ -20,8 +20,6 @@ maximize instead of minimize a metric according to the needs of the optimizing algorithm. """ -from typing import Optional - # Import packages import numpy as np import xarray as xr @@ -30,11 +28,11 @@ def get_objective_function( - qobs: np.ndarray, - qsim: np.ndarray, + qobs: np.ndarray | xr.Dataset, + qsim: np.ndarray | xr.Dataset, obj_func: str = "rmse", take_negative: bool = False, - mask: np.ndarray | None = None, + mask: np.ndarray | xr.Dataset | None = None, transform: str | None = None, epsilon: float | None = None, ): @@ -55,43 +53,37 @@ def get_objective_function( qobs : array_like Vector containing the Observed streamflow to be used in the objective function calculation. It is the target to attain. - qsim : array_like Vector containing the Simulated streamflow as generated by the hydrological model. It is modified by changing parameters and resumulating the hydrological model. - obj_func : str String representing the objective function to use in the calibration. Options must be one of the accepted objective functions: - - - "abs_bias" : Absolute value of the "bias" metric - - "abs_pbias": Absolute value of the "pbias" metric - - "abs_volume_error" : Absolute value of the volume_error metric - - "agreement_index": Index of agreement - - "bias" : Bias metric - - "correlation_coeff": Correlation coefficient - - "kge" : Kling Gupta Efficiency metric (2009 version) - - "kge_mod" : Kling Gupta Efficiency metric (2012 version) - - "mae": Mean Absolute Error metric - - "mare": Mean Absolute Relative Error metric - - "mse" : Mean Square Error metric - - "nse": Nash-Sutcliffe Efficiency metric - - "pbias" : Percent bias (relative bias) - - "r2" : r-squared, i.e. square of correlation_coeff. - - "rmse" : Root Mean Square Error - - "rrmse" : Relative Root Mean Square Error (RMSE-to-mean ratio) - - "rsr" : Ratio of RMSE to standard deviation. - - "volume_error": Total volume error over the period. - + - "abs_bias" : Absolute value of the "bias" metric + - "abs_pbias": Absolute value of the "pbias" metric + - "abs_volume_error" : Absolute value of the volume_error metric + - "agreement_index": Index of agreement + - "bias" : Bias metric + - "correlation_coeff": Correlation coefficient + - "kge" : Kling Gupta Efficiency metric (2009 version) + - "kge_mod" : Kling Gupta Efficiency metric (2012 version) + - "mae": Mean Absolute Error metric + - "mare": Mean Absolute Relative Error metric + - "mse" : Mean Square Error metric + - "nse": Nash-Sutcliffe Efficiency metric + - "pbias" : Percent bias (relative bias) + - "r2" : r-squared, i.e. square of correlation_coeff. + - "rmse" : Root Mean Square Error + - "rrmse" : Relative Root Mean Square Error (RMSE-to-mean ratio) + - "rsr" : Ratio of RMSE to standard deviation. + - "volume_error": Total volume error over the period. The default is 'rmse'. - take_negative : bool Used to force the objective function to be multiplied by minus one (-1) such that it is possible to maximize it if the optimizer is a minimizer - and vice-versa. Should always be set to False unless required by an + and vice versa. Should always be set to False unless required by an optimization setup, which is handled internally and transparently to the user. The default is False. - mask : array_like Array of 0 or 1 on which the objective function should be applied. Values of 1 indicate that the value is included in the calculation, and @@ -100,24 +92,17 @@ def get_objective_function( optimization strategies such as odd/even year calibration, seasonal calibration or calibration based on high/low flows. The default is None and all data are preserved. - transform : str Indicates the type of transformation required. Can be one of the following values: - - - "sqrt" : Square root transformation of the flows [sqrt(Q)] - - "log" : Logarithmic transformation of the flows [log(Q)] - - "inv" : Inverse transformation of the flows [1/Q] - + - "sqrt" : Square root transformation of the flows [sqrt(Q)] + - "log" : Logarithmic transformation of the flows [log(Q)] + - "inv" : Inverse transformation of the flows [1/Q] The default value is "None", by which no transformation is performed. - epsilon : float Indicates the perturbation to add to the flow time series during a transformation to avoid division by zero and logarithmic transformation. - The perturbation is equal to: - - perturbation = epsilon * mean(qobs) - + The perturbation is equal to: `perturbation = epsilon * mean(qobs)`. The default value is 0.01. Returns @@ -206,12 +191,12 @@ def get_objective_function( return obj_fun_val -def _get_objfun_minimize_or_maximize(obj_func: str): - """Check whether the objective function needs to be maximized or minimized. +def _get_objfun_minimize_or_maximize(obj_func: str) -> bool: + """ + Check whether the objective function needs to be maximized or minimized. - Returns a boolean value, where True means it should be maximized, and False - means that it should be minimized. Objective functions other than those - programmed here will raise an error. + Returns a boolean value, where True means it should be maximized, and False means that it should be minimized. + Objective functions other than those programmed here will raise an error. Parameters ---------- @@ -260,7 +245,7 @@ def _get_objfun_minimize_or_maximize(obj_func: str): return maximize -def _get_optimizer_minimize_or_maximize(algorithm: str): +def _get_optimizer_minimize_or_maximize(algorithm: str) -> bool: """Find the direction in which the optimizer searches. Some optimizers try to maximize the objective function value, and others @@ -302,7 +287,7 @@ def transform_flows( qobs: np.ndarray, transform: str | None = None, epsilon: float = 0.01, -): +) -> tuple[np.ndarray, np.ndarray]: """Transform flows before computing the objective function. It is used to transform flows such that the objective function is computed @@ -315,24 +300,17 @@ def transform_flows( Simulated streamflow vector. qobs : array_like Observed streamflow vector. - transform : str, optional Indicates the type of transformation required. Can be one of the following values: - - - "sqrt" : Square root transformation of the flows [sqrt(Q)] - - "log" : Logarithmic transformation of the flows [log(Q)] - - "inv" : Inverse transformation of the flows [1/Q] - + - "sqrt" : Square root transformation of the flows [sqrt(Q)] + - "log" : Logarithmic transformation of the flows [log(Q)] + - "inv" : Inverse transformation of the flows [1/Q] The default value is "None", by which no transformation is performed. - epsilon : float Indicates the perturbation to add to the flow time series during a transformation to avoid division by zero and logarithmic transformation. - The perturbation is equal to: - - perturbation = epsilon * mean(qobs) - + The perturbation is equal to: `perturbation = epsilon * mean(qobs)`. The default value is 0.01. Returns @@ -368,7 +346,7 @@ def transform_flows( """ -def _abs_bias(qsim: np.ndarray, qobs: np.ndarray): +def _abs_bias(qsim: np.ndarray, qobs: np.ndarray) -> float: """Absolute bias metric. Parameters @@ -393,7 +371,7 @@ def _abs_bias(qsim: np.ndarray, qobs: np.ndarray): return np.abs(_bias(qsim, qobs)) -def _abs_pbias(qsim: np.ndarray, qobs: np.ndarray): +def _abs_pbias(qsim: np.ndarray, qobs: np.ndarray) -> float: """Absolute pbias metric. Parameters @@ -418,7 +396,7 @@ def _abs_pbias(qsim: np.ndarray, qobs: np.ndarray): return np.abs(_pbias(qsim, qobs)) -def _abs_volume_error(qsim: np.ndarray, qobs: np.ndarray): +def _abs_volume_error(qsim: np.ndarray, qobs: np.ndarray) -> float: """Absolute value of the volume error metric. Parameters @@ -444,7 +422,7 @@ def _abs_volume_error(qsim: np.ndarray, qobs: np.ndarray): return np.abs(_volume_error(qsim, qobs)) -def _agreement_index(qsim: np.ndarray, qobs: np.ndarray): +def _agreement_index(qsim: np.ndarray, qobs: np.ndarray) -> float: """Index of agreement metric. Parameters @@ -471,7 +449,7 @@ def _agreement_index(qsim: np.ndarray, qobs: np.ndarray): return 1 - (a / c) -def _bias(qsim: np.ndarray, qobs: np.ndarray): +def _bias(qsim: np.ndarray, qobs: np.ndarray) -> float: """The bias metric. Parameters @@ -498,7 +476,7 @@ def _bias(qsim: np.ndarray, qobs: np.ndarray): return np.mean(qsim - qobs) -def _correlation_coeff(qsim: np.ndarray, qobs: np.ndarray): +def _correlation_coeff(qsim: np.ndarray, qobs: np.ndarray) -> np.ndarray: """Correlation coefficient metric. Parameters @@ -510,7 +488,7 @@ def _correlation_coeff(qsim: np.ndarray, qobs: np.ndarray): Returns ------- - float + array-like The correlation coefficient. Notes @@ -520,7 +498,7 @@ def _correlation_coeff(qsim: np.ndarray, qobs: np.ndarray): return np.corrcoef(qobs, qsim)[0, 1] -def _kge(qsim: np.ndarray, qobs: np.ndarray): +def _kge(qsim: np.ndarray, qobs: np.ndarray) -> float: """Kling-Gupta efficiency metric (2009 version). Parameters @@ -557,7 +535,7 @@ def _kge(qsim: np.ndarray, qobs: np.ndarray): return kge -def _kge_mod(qsim: np.ndarray, qobs: np.ndarray): +def _kge_mod(qsim: np.ndarray, qobs: np.ndarray) -> float: """Kling-Gupta efficiency metric (2012 version). Parameters @@ -617,7 +595,7 @@ def _mae(qsim: np.ndarray, qobs: np.ndarray): return np.mean(np.abs(qsim - qobs)) -def _mare(qsim: np.ndarray, qobs: np.ndarray): +def _mare(qsim: np.ndarray, qobs: np.ndarray) -> float: """Mean absolute relative error metric. Parameters @@ -640,7 +618,7 @@ def _mare(qsim: np.ndarray, qobs: np.ndarray): return np.sum(np.abs(qobs - qsim)) / np.sum(qobs) -def _mse(qsim: np.ndarray, qobs: np.ndarray): +def _mse(qsim: np.ndarray, qobs: np.ndarray) -> float: """Mean square error metric. Parameters @@ -664,7 +642,7 @@ def _mse(qsim: np.ndarray, qobs: np.ndarray): return np.mean((qobs - qsim) ** 2) -def _nse(qsim: np.ndarray, qobs: np.ndarray): +def _nse(qsim: np.ndarray, qobs: np.ndarray) -> float: """Nash-Sutcliffe efficiency metric. Parameters @@ -690,7 +668,7 @@ def _nse(qsim: np.ndarray, qobs: np.ndarray): return 1 - (num / den) -def _pbias(qsim: np.ndarray, qobs: np.ndarray): +def _pbias(qsim: np.ndarray, qobs: np.ndarray) -> float: """Percent bias metric. Parameters @@ -717,7 +695,7 @@ def _pbias(qsim: np.ndarray, qobs: np.ndarray): return (np.sum(qsim - qobs) / np.sum(qobs)) * 100 -def _r2(qsim: np.ndarray, qobs: np.ndarray): +def _r2(qsim: np.ndarray, qobs: np.ndarray) -> float: """The r-squred metric. Parameters @@ -740,8 +718,8 @@ def _r2(qsim: np.ndarray, qobs: np.ndarray): return _correlation_coeff(qsim, qobs) ** 2 -def _rmse(qsim: np.ndarray, qobs: np.ndarray): - """Root mean square error metric. +def _rmse(qsim: np.ndarray, qobs: np.ndarray) -> float: + """Root-mean-square error metric. Parameters ---------- @@ -763,8 +741,8 @@ def _rmse(qsim: np.ndarray, qobs: np.ndarray): return np.sqrt(np.mean((qobs - qsim) ** 2)) -def _rrmse(qsim: np.ndarray, qobs: np.ndarray): - """Relative root mean square error (ratio of rmse to mean) metric. +def _rrmse(qsim: np.ndarray, qobs: np.ndarray) -> float: + """Relative root-mean-square error (ratio of rmse to mean) metric. Parameters ---------- @@ -812,7 +790,7 @@ def _rsr(qsim: np.ndarray, qobs: np.ndarray): return _rmse(qobs, qsim) / np.std(qobs) -def _volume_error(qsim: np.ndarray, qobs: np.ndarray): +def _volume_error(qsim: np.ndarray, qobs: np.ndarray) -> float: """Volume error metric. Parameters diff --git a/src/xhydro/optimal_interpolation/ECF_climate_correction.py b/src/xhydro/optimal_interpolation/ECF_climate_correction.py index ab6cdfb0..45300a8e 100644 --- a/src/xhydro/optimal_interpolation/ECF_climate_correction.py +++ b/src/xhydro/optimal_interpolation/ECF_climate_correction.py @@ -2,12 +2,11 @@ """Empirical Covariance Function variogram calibration package.""" from functools import partial -from typing import Optional import haversine import numpy as np -import scipy.optimize import xarray as xr +from scipy.optimize import minimize def correction( @@ -172,7 +171,7 @@ def _rmse_func(par): return np.sqrt(np.mean(weights * np.power(ecf_fun(h=h_b, par=par) - cov_b, 2))) # Perform the training using the bounds for the parameters as passed by the users before. - par_opt = scipy.optimize.minimize( + par_opt = minimize( _rmse_func, [ np.mean(cov_b), @@ -193,7 +192,7 @@ def calculate_ECF_stats( # noqa: N802 covariance: np.ndarray, covariance_weights: np.ndarray, valid_heights: np.ndarray, -) -> tuple: +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: """Calculate statistics for Empirical Covariance Function (ECF), climatological version. Uses the histogram data from all previous days and reapplies the same steps, but inputs are of size (timesteps x @@ -213,7 +212,7 @@ def calculate_ECF_stats( # noqa: N802 Returns ------- - tuple + tuple[np.ndarray, np.ndarray, np.ndarray] A tuple containing the following: - h_b: Array of mean distances for each height bin. - cov_b: Array of weighted average covariances for each height bin. @@ -259,7 +258,7 @@ def eval_covariance_bin( values: np.ndarray, hmax_divider: float = 2.0, variogram_bins: int = 10, -): +) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """Evaluate the covariance of a binomial distribution. Parameters @@ -275,7 +274,7 @@ def eval_covariance_bin( Returns ------- - tuple + tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray] Arrays for heights, covariance, standard deviation, row length. """ # Step 1: Calculate weights based on errors @@ -392,14 +391,14 @@ def initialize_stats_variables( return distance, covariance, covariance_weights, valid_heights -def general_ecf(h: np.ndarray, par: list, form: int): +def general_ecf(h: np.ndarray, par: list | np.ndarray, form: int): """Define the form of the Error Covariance Function (ECF) equations. Parameters ---------- h : float or array The distance or distances at which to evaluate the ECF. - par : list + par : list or array-like Parameters for the ECF equation. form : int The form of the ECF equation to use (1, 2, 3 or 4). See :py:func:`correction` for details. diff --git a/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py b/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py index 5c3383ab..8d5dc325 100644 --- a/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py +++ b/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py @@ -3,7 +3,7 @@ import os from functools import partial from multiprocessing import Pool -from typing import Any, Optional +from typing import Any import haversine import numpy as np @@ -32,7 +32,7 @@ def optimal_interpolation( bg_departures: np.ndarray, bg_est: np.ndarray, precalcs: dict, -): +) -> tuple[np.ndarray, np.ndarray, dict]: """Perform optimal interpolation to estimate values at specified locations. Parameters @@ -46,8 +46,8 @@ def optimal_interpolation( lon_est : np.ndarray Vector of longitudes of the estimation/simulation stations catchment centroids. ecf : partial - The function to use for the empirical distribution correction. It is a partial function from functools. The - error covariance is a function of distance h, and this partial function represents this relationship. + The function to use for the empirical distribution correction. It is a partial function from functools. + The error covariance is a function of distance h, and this partial function represents this relationship. bg_var_obs : np.ndarray Background field variance at the observation stations (vector of size "observation stations"). bg_var_est : np.ndarray @@ -55,23 +55,21 @@ def optimal_interpolation( var_obs : np.ndarray Observation variance at observation sites (vector of size "observation stations"). bg_departures : np.ndarray - Difference between observation and background field at observation sites (vector of size "observation - stations"). + Difference between observation and background field at observation sites (vector of size "observation stations"). bg_est : np.ndarray Background field values at estimation sites (vector of size "estimation stations"). precalcs : dict - Additional arguments and state information for the interpolation process, to accelerate calculations between - timesteps. + Additional arguments and state information for the interpolation process, to accelerate calculations between timesteps. Returns ------- - v_est : float + v_est : np.ndarray Estimated values at the estimation sites (vector of size "estimation stations"). - var_est : float + var_est : np.ndarray Estimated variance at the estimation sites (vector of size "estimation stations"). precalcs : dict - Additional arguments and state information for the interpolation process, to accelerate calculations between - timesteps. This variable returns the pre-calcualted distance matrices. + Additional arguments and state information for the interpolation process, to accelerate calculations between timesteps. + This variable returns the pre-calculated distance matrices. """ # Number of simulation stations estimated_count = len(bg_est) @@ -401,8 +399,9 @@ def execute_interpolation( hmax_divider: float = 2.0, p1_bnds: list | None = None, hmax_mult_range_bnds: list | None = None, -): - """Run the interpolation algorithm for leave-one-out cross-validation or operational use. +) -> xr.Dataset: + """ + Run the interpolation algorithm for leave-one-out cross-validation or operational use. Parameters ---------- @@ -442,9 +441,7 @@ def execute_interpolation( Returns ------- - flow_quantiles : list - A list containing the flow quantiles for each desired percentile. - ds : xr.Dataset + xr.Dataset An xarray dataset containing the flow quantiles and all the associated metadata. """ # Set default flow percentiles to evaluate if none are provided. diff --git a/tests/test_calibration.py b/tests/test_calibration.py index b0fc6a95..0db321b2 100644 --- a/tests/test_calibration.py +++ b/tests/test_calibration.py @@ -146,6 +146,7 @@ def test_transform(): class TestRavenpyModelCalibration: """Test calibration of RavenPy models.""" + # FIXME: This needs to be turned into a pytest fixture in the future. # Set Github URL for getting files for tests GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" BRANCH_OR_COMMIT_HASH = "main" diff --git a/tests/test_cc.py b/tests/test_cc.py index 84510193..ad734c58 100644 --- a/tests/test_cc.py +++ b/tests/test_cc.py @@ -19,6 +19,7 @@ def test_xscen_imported(): class TestSampledIndicators: + @pytest.mark.parametrize("delta_type", ["absolute", "percentage", "foo"]) def test_sampled_indicators_type(self, delta_type): ds = xr.DataArray( @@ -204,6 +205,8 @@ def test_sampled_indicators_weights(self, weights): np.testing.assert_array_almost_equal( out[0].QMOYAN.isel(station=0).values, [6.3, 12.0, 13.5, 13.5, 14.865] ) + else: + raise ValueError(f"Unknown value for 'weights': {weights}") assert all( chosen in expected_out1 diff --git a/tests/test_gis.py b/tests/test_gis.py index bbe76061..ad32f960 100644 --- a/tests/test_gis.py +++ b/tests/test_gis.py @@ -28,7 +28,7 @@ def test_watershed_delineation_from_coords(self, lng_lat, area): [gdf.to_crs(32198).area.values[0]], [area], decimal=3 ) - @pytest.mark.parametrize("area", [(18891676494.940426)]) + @pytest.mark.parametrize("area", [18891676494.940426]) def test_watershed_delineation_from_map(self, area): # Richelieu watershed self.m.draw_features = [ @@ -123,6 +123,20 @@ def test_watershed_properties_xarray(self, watershed_properties_data): xr.testing.assert_allclose(ds_properties, output_dataset) + +class TestSurfaceProperties: + + gdf = xd.Query( + **{ + "datasets": { + "deh_polygons": { + "id": ["031501", "042103"], + "regulated": ["Natural"], + } + } + } + ).data.reset_index() + @pytest.fixture def surface_properties_data(self): data = { @@ -135,6 +149,7 @@ def surface_properties_data(self): df.index.names = ["Station"] return df + @pytest.mark.online def test_surface_properties(self, surface_properties_data): _properties_name = ["elevation", "slope", "aspect"] @@ -146,6 +161,7 @@ def test_surface_properties(self, surface_properties_data): surface_properties_data.reset_index(drop=True)[_properties_name], ) + @pytest.mark.online def test_surface_properties_unique_id(self, surface_properties_data): _properties_name = ["elevation", "slope", "aspect"] unique_id = "Station" @@ -157,6 +173,7 @@ def test_surface_properties_unique_id(self, surface_properties_data): surface_properties_data[_properties_name], ) + @pytest.mark.online def test_surface_properties_xarray(self, surface_properties_data): unique_id = "Station" @@ -178,6 +195,21 @@ def test_surface_properties_xarray(self, surface_properties_data): xr.testing.assert_allclose(ds_properties, output_dataset) + +@pytest.mark.online +class TestLandClassification: + + gdf = xd.Query( + **{ + "datasets": { + "deh_polygons": { + "id": ["031501", "042103"], + "regulated": ["Natural"], + } + } + } + ).data.reset_index() + @pytest.fixture def land_classification_data_latest(self): data = { diff --git a/tests/test_optimal_interpolation.py b/tests/test_optimal_interpolation.py index e27eac96..3de4bec3 100644 --- a/tests/test_optimal_interpolation.py +++ b/tests/test_optimal_interpolation.py @@ -6,6 +6,7 @@ import numpy as np import pandas as pd import pooch +import pytest import xarray as xr import xhydro.optimal_interpolation.compare_result as cr @@ -15,6 +16,7 @@ class TestOptimalInterpolationIntegrationCorrectedFiles: + # FIXME: This needs to be turned into a pytest fixture in the future. # Set Github URL for getting files for tests GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" BRANCH_OR_COMMIT_HASH = "main" @@ -142,6 +144,10 @@ def test_cross_validation_execute(self): ) assert len(ds["time"].data) == (end_date - start_date).days + 1 + # FIXME: Not sure what's going on here. This test is failing on conda-forge. + @pytest.mark.xfail( + reason="test reports that num processes is not more than one on conda-forge." + ) def test_cross_validation_execute_parallel(self): """Test the parallel version of the optimal interpolation cross validation.""" # Run the interpolation and obtain the resulting flows. @@ -284,6 +290,7 @@ def test_optimal_interpolation_no_time_dim(self): class TestOptimalInterpolationIntegrationOriginalDEHFiles: + # FIXME: This needs to be turned into a pytest fixture in the future. # Set Github URL for getting files for tests GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" BRANCH_OR_COMMIT_HASH = "main" @@ -456,6 +463,10 @@ def test_cross_validation_execute(self): ) assert len(ds["time"].data) == (end_date - start_date).days + 1 + # FIXME: Not sure what's going on here. This test is failing on conda-forge. + @pytest.mark.xfail( + reason="test reports that num processes is not more than one on conda-forge." + ) def test_cross_validation_execute_parallel(self): """Test the parallel version of the optimal interpolation cross validation.""" # Run the interpolation and get flows diff --git a/tests/test_regional.py b/tests/test_regional.py index 73f3cac0..ab86dd94 100644 --- a/tests/test_regional.py +++ b/tests/test_regional.py @@ -3,7 +3,6 @@ import numpy as np import pandas as pd import pytest -import scipy import xarray as xr from sklearn.cluster import AgglomerativeClustering from sklearn.decomposition import PCA @@ -12,7 +11,7 @@ from lmoments3.distr import KappaGen except ImportError: warnings.warn("lmoments3 is not installed. Please install it") - lmoments3 = None + KappaGen = None from xhydro.frequency_analysis.regional import ( _moment_l_vector, @@ -21,20 +20,21 @@ cluster_indices, fit_pca, get_group_from_fit, - get_groups_indices, ) -class TestRegionalFrequencyAnalysis: +@pytest.fixture +def sample_data(): + return np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) - @pytest.fixture - def sample_data(self): - return np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) - @pytest.fixture - def sample_dataset(self): - data = np.random.rand(100, 5) - return xr.Dataset({"data": (("time", "Station"), data)}) +@pytest.fixture +def sample_dataset(): + data = np.random.rand(100, 5) + return xr.Dataset({"data": (("time", "Station"), data)}) + + +class TestRegionalFrequencyAnalysis: def test_cluster_indices(self): clusters = np.array([0, 1, 0, 2, 1]) @@ -334,6 +334,10 @@ def sample_ds_moments_groups(self): ds["id"].attrs["cf_role"] = "timeseries_id" return ds + +@pytest.mark.skipif(KappaGen is None, reason="lmoments3 is not installed") +class TestRegionalFrequencyAnalysisKappa: + @pytest.fixture def sample_kappa3(self): return KappaGen() diff --git a/tests/test_testing_utils.py b/tests/test_testing_utils.py index 8c10d400..7b8393b2 100644 --- a/tests/test_testing_utils.py +++ b/tests/test_testing_utils.py @@ -9,6 +9,7 @@ class TestFakeHydrotelProject: + def test_defaults(self, tmp_path): xhu.fake_hydrotel_project(tmp_path / "fake") assert (tmp_path / "fake").exists() From 66f84943ae429576f29125c2cea4ab6612c76cde Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:24:44 -0400 Subject: [PATCH 02/13] more accurate typing --- src/xhydro/frequency_analysis/regional.py | 94 ++++++++++--------- .../optimal_interpolation_fun.py | 22 ++--- src/xhydro/utils.py | 2 +- 3 files changed, 63 insertions(+), 55 deletions(-) diff --git a/src/xhydro/frequency_analysis/regional.py b/src/xhydro/frequency_analysis/regional.py index b2df15c7..479d254c 100644 --- a/src/xhydro/frequency_analysis/regional.py +++ b/src/xhydro/frequency_analysis/regional.py @@ -27,10 +27,9 @@ This module is designed for hydrologists and data scientists working with regional frequency analysis in water resources. """ -import datetime import math import warnings -from typing import Optional +from collections.abc import Callable import numpy as np import pandas as pd @@ -42,15 +41,17 @@ from xhydro.utils import update_history -def cluster_indices(clust_num: int, labels_array: np.ndarray) -> np.ndarray: +def cluster_indices( + clust_num: int | np.ndarray, labels_array: int | np.ndarray +) -> np.ndarray: """ Get the indices of elements with a specific cluster number using NumPy. Parameters ---------- - clust_num : int + clust_num : numpy.ndarray or int Cluster number to find indices for. - labels_array : numpy.ndarray + labels_array : numpy.ndarray or int Array containing cluster labels. Returns @@ -75,25 +76,28 @@ def get_groups_indices(cluster: list, sample: xr.Dataset) -> list: Returns ------- list - List of indices for each non-excluded group. + Indices for each non-excluded group. """ - return [ + grouped: list = [ sample.index.to_numpy()[cluster_indices(i, cluster.labels_)] for i in range(np.max(cluster.labels_) + 1) ] + return grouped -def get_group_from_fit(model: object, param: dict, sample: xr.Dataset) -> list: +def get_group_from_fit( + model: Callable, param: dict, sample: xr.Dataset | xr.DataArray +) -> list: """ Get indices of groups from a fit using the specified model and parameters. Parameters ---------- - model : obj + model : callable Model class or instance with a fit method. param : dict Parameters for the model. - sample : xr.Dataset + sample : xr.Dataset or xr.DataArray Data sample to fit the model. Returns @@ -109,7 +113,7 @@ def get_group_from_fit(model: object, param: dict, sample: xr.Dataset) -> list: return get_groups_indices(model(**param).fit(sample), sample) -def fit_pca(ds: xr.Dataset, **kwargs: dict) -> tuple: +def fit_pca(ds: xr.Dataset, **kwargs) -> tuple: r""" Perform Principal Component Analysis (PCA) on the input dataset. @@ -126,7 +130,7 @@ def fit_pca(ds: xr.Dataset, **kwargs: dict) -> tuple: Returns ------- tuple: A tuple containing: - - data_pca (xarray.DataArray): PCA-transformed data with 'Station' and 'components' as coordinates. + - data_pca (xr.DataArray): PCA-transformed data with 'Station' and 'components' as coordinates. - obj_pca (sklearn.decomposition.PCA): Fitted PCA object. Notes @@ -243,9 +247,9 @@ def calc_h_z( Parameters ---------- - ds_groups : xarray.Dataset + ds_groups : xr.Dataset Dataset containing grouped data. - ds_moments_groups : xarray.Dataset + ds_moments_groups : xr.Dataset Dataset containing L-moments for grouped data. kap : scipy.stats.kappa3 Kappa3 distribution object. @@ -254,7 +258,7 @@ def calc_h_z( Returns ------- - xarray.Dataset + xr.Dataset Dataset containing calculated H values and Z-scores for each group. Notes @@ -326,11 +330,11 @@ def _calculate_gev_tau4( def _heterogeneite_et_score_z( - kap: object, n: np.array, t: np.array, t3: np.array, t4: np.array, seed=None + kap: Callable, n: np.array, t: np.array, t3: np.array, t4: np.array, seed=None ) -> tuple: # We remove nan or 0 length - # If not enough values to calulculate some moments, other moments are removed as well + # If not enough values to calculate some moments, other moments are removed as well bool_maks = (n != 0) & (~np.isnan(t)) & (~np.isnan(t3)) & (~np.isnan(t4)) n = n[bool_maks] t = t[bool_maks] @@ -350,6 +354,7 @@ def _heterogeneite_et_score_z( try: kappa_param = kap.lmom_fit(lmom_ratios=[1, tau_r, tau3_r, tau4_r]) except ValueError as error: + # FIXME: Cette message could be plus informative. warnings.warn( f"Kappa distribution fit blablabla (quelle serait la cause d'un ValueError?), returning all NaNs. Error: {error}." ) @@ -374,16 +379,18 @@ def _heterogeneite_et_score_z( raise error n_sim = 500 # Number of "virtual regions" simulated - def _calc_tsim(kappa_param: dict, length: float, n_sim: int) -> np.array: + def _calc_tsim( + _kappa_param: dict, _length: float, _n_sim: int, _seed=seed + ) -> np.array: - # For each station, we get n_sim vectors de same lenght than the observations + # For each station, we get n_sim vectors de same length than the observations rvs = kap.rvs( - kappa_param["k"], - kappa_param["h"], - kappa_param["loc"], - kappa_param["scale"], - size=(n_sim, int(length)), - random_state=seed, + _kappa_param["k"], + _kappa_param["h"], + _kappa_param["loc"], + _kappa_param["scale"], + size=(_n_sim, int(_length)), + random_state=_seed, ) return _momentl_optim(rvs) @@ -475,7 +482,7 @@ def mask_h_z( Parameters ---------- - ds : xarray.Dataset + ds : xr.Dataset Dataset containing H and Z values for each group. thresh_h : float, optional Threshold for the heterogeneity measure H. Default is 1. @@ -484,7 +491,7 @@ def mask_h_z( Returns ------- - xarray.DataArray + xr.DataArray Boolean mask where True indicates groups that meet both threshold criteria. """ ds_out = (ds.sel(crit="H") < thresh_h) & (abs(ds.sel(crit="Z")) < thresh_z) @@ -521,19 +528,19 @@ def calculate_rp_from_afr( Parameters ---------- - ds_groups : xarray.Dataset + ds_groups : xr.Dataset Dataset containing grouped flow data. - ds_moments_groups : xarray.Dataset + ds_moments_groups : xr.Dataset Dataset containing L-moments for grouped data. rp : array-like Return periods to calculate. - l1 : xarray.DataArray, optional + l1 : xr.DataArray, optional First L-moment (location) values. L-moment can be specified for ungauged catchments. If None, values are taken from ds_moments_groups. Returns ------- - xarray.DataArray + xr.DataArray Calculated return periods for each group and specified return period. Notes @@ -594,14 +601,14 @@ def remove_small_regions(ds: xr.Dataset, thresh: int = 5) -> xr.Dataset: Parameters ---------- - ds : xarray.Dataset + ds : xr.Dataset The input dataset containing regions and stations. thresh : int, optional The minimum number of stations required for a region to be kept. Default is 5. Returns ------- - xarray.Dataset + xr.Dataset The dataset with small regions removed. """ station_dim = ds.cf.cf_roles["timeseries_id"][0] @@ -624,7 +631,9 @@ def _calc_kappa(lambda_r_2, lambda_r_3): return kappa -def _calc_lambda_r(ds_groups: xr.Dataset, ds_moments_groups: xr.Dataset) -> xr.Dataset: +def _calc_lambda_r( + ds_groups: xr.Dataset, ds_moments_groups: xr.Dataset +) -> tuple[int, xr.Dataset, xr.Dataset]: station_dim = ds_groups.cf.cf_roles["timeseries_id"][0] nr = ds_moments_groups.count(dim=station_dim).isel(lmom=0) @@ -650,20 +659,19 @@ def calc_moments(ds: xr.Dataset) -> xr.Dataset: Parameters ---------- - ds : xarray.Dataset - A vector of stations, where each element is an array-like object - containing the data for which to calculate L-moments. + ds : xr.Dataset + A vector of stations, where each element is an array-like object containing the data for which to calculate L-moments. Returns ------- - xarray.Dataset + xr.Dataset L-moment dataset with a new lmom dimension. Notes ----- - NaN values in each stations are removed before calculating L-moments. - The function uses the `moment_l` function to calculate L-moments for each individual stations. - Equations are based on Hosking, J. R. M., & Wallis, J. R. (1997). Regional frequency analysis (p. 240). + NaN values in each station are removed before calculating L-moments. + The function uses the `moment_l` function to calculate L-moments for each individual stations. + Equations are based on Hosking, J. R. M., & Wallis, J. R. (1997). Regional frequency analysis (p. 240). """ ds = xr.apply_ufunc( _moment_l_vector, @@ -690,14 +698,14 @@ def group_ds(ds: xr.Dataset, groups: list) -> xr.Dataset: Parameters ---------- - ds : xarray.Dataset + ds : xr.Dataset The input dataset to be grouped. groups : list A list of groups to be used for grouping the dataset. Returns ------- - xarray.Dataset + xr.Dataset A new dataset with the grouped data. """ ds_groups = xr.concat( diff --git a/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py b/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py index 8d5dc325..41ddf86e 100644 --- a/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py +++ b/src/xhydro/optimal_interpolation/optimal_interpolation_fun.py @@ -81,7 +81,7 @@ def optimal_interpolation( # simulation points are the same as the previous time step (same NaN positions, so same stations contributing), then # simply load the distance matrix that was computed at the previous timestep. If it did change, we need to # recompute, and save it for the next iteration. - # TODO: Check to see if xESMG reuse_weights could be useful here. + # TODO: Check to see if xESMF reuse_weights could be useful here. cond = False if isinstance(precalcs, dict): if "lat_obs" in precalcs: @@ -189,7 +189,7 @@ def loop_optimal_interpolation_stations_cross_validation( A list containing the quantiles of the flow values for each percentile over the specified time range. """ # TODO: Change variables that are input here, instead of dict pass more explicit. Need to find a way around the - # parallel comuputation + # parallel computation (station_index, args) = args # Process data from the observations/simulations corresponding dataset @@ -530,8 +530,9 @@ def retrieve_data( qsim: xr.Dataset, station_correspondence: xr.Dataset, observation_stations: list, -) -> xr.Dataset: - """Retrieve data from files to populate the Optimal Interpolation (OI) algorithm. +) -> tuple[xr.Dataset, xr.Dataset]: + """ + Retrieve data from files to populate the Optimal Interpolation (OI) algorithm. Parameters ---------- @@ -542,18 +543,17 @@ def retrieve_data( station_correspondence : xr.Dataset Matching between the tag in the HYDROTEL simulated files and the observed station number for the obs dataset. observation_stations : list - Observed hydrometric dataset stations to be used in the optimal interpolation step, for contributing to the - generation of the error field. + Observed hydrometric dataset stations to be used in the optimal interpolation step, + for contributing to the generation of the error field. Returns ------- filtered_dataset : xr.Dataset - An xr.Dataset containing the retrieved and preprocessed data for the OI algorithm. Includes the corresponding - datasets between the observation stations and the corresponding simulation stations, so includes only a - reordered subset of the "full_background_dataset" simulation stations. + An xr.Dataset containing the retrieved and preprocessed data for the OI algorithm. + Includes the corresponding datasets between the observation stations and the corresponding simulation stations, + so includes only a reordered subset of the "full_background_dataset" simulation stations. full_background_dataset : xr.Dataset - The dataset containing all the data (including positions and drainage areas of subcatchments) of the background - field. + The dataset containing all the data (including positions and drainage areas of subcatchments) of the background field. """ # Get some information from the input files if "time" in qobs.dims: diff --git a/src/xhydro/utils.py b/src/xhydro/utils.py index 6db77770..370315cc 100644 --- a/src/xhydro/utils.py +++ b/src/xhydro/utils.py @@ -5,7 +5,7 @@ import xarray as xr from xscen.diagnostics import health_checks -__all__ = ["health_checks"] +__all__ = ["health_checks", "merge_attributes", "update_history"] def update_history( From 9680f612ceea316a7575c0558133660f5a235b2a Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:33:44 -0400 Subject: [PATCH 03/13] reformatting --- tests/test_regional.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/test_regional.py b/tests/test_regional.py index ab86dd94..7a9e2294 100644 --- a/tests/test_regional.py +++ b/tests/test_regional.py @@ -62,7 +62,7 @@ def test_get_group_from_fit(self): # return result assert len(result) == len(expected) for i, list_st in enumerate(result): - assert (list_st == expected[i]).all() + assert np.all(list_st == expected[i]) def test_fit_pca(self, sample_dataset): data_pca, pca_obj = fit_pca(sample_dataset, n_components=3) @@ -97,6 +97,14 @@ def test_cluster_indices_no_matches(self): result = cluster_indices(clusters, 0) assert len(result) == 0 + +@pytest.mark.skipif(KappaGen is None, reason="lmoments3 is not installed") +class TestRegionalFrequencyAnalysisKappa: + + @pytest.fixture + def sample_kappa3(self): + return KappaGen() + @pytest.fixture def sample_ds_groups(self): time = pd.date_range("2020-01-01", periods=54) @@ -291,7 +299,7 @@ def sample_ds_groups(self): @pytest.fixture def sample_ds_moments_groups(self): lmom = ["l1", "l2", "l3", "tau", "tau3", "tau4"] - data = data = np.array( + data = np.array( [ [ np.array( @@ -334,14 +342,6 @@ def sample_ds_moments_groups(self): ds["id"].attrs["cf_role"] = "timeseries_id" return ds - -@pytest.mark.skipif(KappaGen is None, reason="lmoments3 is not installed") -class TestRegionalFrequencyAnalysisKappa: - - @pytest.fixture - def sample_kappa3(self): - return KappaGen() - def test_calc_h_z_output_structure( self, sample_ds_groups, sample_ds_moments_groups, sample_kappa3 ): From b8bbf8b8fcfed73a30d6e7b6780ce3b7d7f27558 Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:49:59 -0400 Subject: [PATCH 04/13] add distributed testing, use a pooch registry, use worker-session scoped pytest fixtures --- environment-dev.yml | 3 +- pyproject.toml | 5 + src/xhydro/testing/helpers.py | 312 +++++++++++++++++----------- src/xhydro/testing/registry.txt | 16 ++ tests/conftest.py | 136 ++++++++++++ tests/test_optimal_interpolation.py | 240 +++++---------------- tests/test_ravenpy_models.py | 65 +++--- 7 files changed, 434 insertions(+), 343 deletions(-) diff --git a/environment-dev.yml b/environment-dev.yml index 294d5e1b..aac4203c 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -53,7 +53,8 @@ dependencies: - pre-commit >=3.5.0 - pytest >=8.3.2 - pytest-cov >=5.0.0 - - black # ==24.8.0 # Waiting on https://github.com/conda-forge/black-feedstock/pull/89 + - pytest-xdist >=3.2 + - black ==24.8.0 - ruff >=0.5.7 - watchdog >=4.0.0 - sphinx >=7.0.0 diff --git a/pyproject.toml b/pyproject.toml index c72904f3..5238aefe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,6 +81,7 @@ dev = [ "numpydoc >=1.8.0", "pytest >=8.3.2", "pytest-cov >=5.0.0", + "pytest-xdist[psutil] >=3.2", "black ==24.8.0", "blackdoc ==0.3.9", "isort ==5.13.2", @@ -256,6 +257,10 @@ override_SS05 = [ [tool.pytest.ini_options] addopts = [ "--color=yes", + "--numprocesses=0", + "--maxprocesses=8", + "--dist=worksteal", + "--strict-config", "--strict-markers", "--verbose" ] diff --git a/src/xhydro/testing/helpers.py b/src/xhydro/testing/helpers.py index 19ba19a2..13e0a871 100644 --- a/src/xhydro/testing/helpers.py +++ b/src/xhydro/testing/helpers.py @@ -4,28 +4,42 @@ import logging import os from pathlib import Path -from typing import Optional, Union -from urllib.parse import urljoin +from urllib.error import HTTPError, URLError +from urllib.parse import urlparse +from urllib.request import urlretrieve import pooch -from xhydro import __version__ as __xhydro_version__ - __all__ = [ - "DATA_DIR", - "DATA_URL", - "DEVEREAUX", - "generate_registry", + "TESTDATA_BRANCH", + "TESTDATA_CACHE_DIR", + "TESTDATA_REPO_URL", + "audit_url", + "default_testdata_cache", + "default_testdata_repo_url", + "default_testdata_version", + "deveraux", "load_registry", "populate_testing_data", ] -_default_cache_dir = pooch.os_cache("xhydro-testdata") +default_testdata_version = "v1" +"""Default version of the testing data to use when fetching datasets.""" -DATA_DIR = os.getenv("XHYDRO_DATA_DIR", _default_cache_dir) -"""Sets the directory to store the testing datasets. +default_testdata_repo_url = ( + "https://raw.githubusercontent.com/hydrologie/xhydro-testdata" +) +"""Default URL of the testing data repository to use when fetching datasets.""" -If not set, the default location will be used (based on ``platformdirs``, see :func:`pooch.os_cache`). +try: + default_testdata_cache = Path(pooch.os_cache("xhydro-testdata")) + """Default location for the testing data cache.""" +except AttributeError: + default_testdata_cache = None + + +TESTDATA_REPO_URL = str(os.getenv("XCLIM_TESTDATA_REPO_URL", default_testdata_repo_url)) +"""Sets the URL of the testing data repository to use when fetching datasets. Notes ----- @@ -33,16 +47,16 @@ .. code-block:: console - $ export XHYDRO_DATA_DIR="/path/to/my/data" + $ export XHYDRO_TESTDATA_REPO_URL="https://github.com/my_username/xhydro-testdata" or setting the variable at runtime: .. code-block:: console - $ env XHYDRO_DATA_DIR="/path/to/my/data" pytest + $ env XHYDRO_TESTDATA_REPO_URL="https://github.com/my_username/xhydro-testdata" pytest """ -TESTDATA_BRANCH = os.getenv("XHYDRO_TESTDATA_BRANCH", "main") +TESTDATA_BRANCH = os.getenv("XHYDRO_TESTDATA_BRANCH", default_testdata_version) """Sets the branch of hydrologie/xhydro-testdata to use when fetching testing datasets. Notes @@ -60,146 +74,204 @@ $ env XHYDRO_TESTDATA_BRANCH="my_testing_branch" pytest """ -DATA_URL = f"https://github.com/hydrologie/xhydro-testdata/raw/{TESTDATA_BRANCH}" +TESTDATA_CACHE_DIR = os.getenv("XHYDRO_TESTDATA_CACHE_DIR", default_testdata_cache) +"""Sets the directory to store the testing datasets. +If not set, the default location will be used (based on ``platformdirs``, see :func:`pooch.os_cache`). -def generate_registry( - filenames: list[str] | None = None, base_url: str = DATA_URL -) -> None: - """Generate a registry file for the test data. +Notes +----- +When running tests locally, this can be set for both `pytest` and `tox` by exporting the variable: - Parameters - ---------- - filenames : list of str, optional - List of filenames to generate the registry file for. - If not provided, all files under xhydro/testing/data will be used. - base_url : str, optional - Base URL to the test data repository. +.. code-block:: console + + $ export XHYDRO_TESTDATA_CACHE_DIR="/path/to/my/data" + +or setting the variable at runtime: + +.. code-block:: console + + $ env XHYDRO_TESTDATA_CACHE_DIR="/path/to/my/data" pytest +""" + + +def load_registry( + branch: str = TESTDATA_BRANCH, repo: str = TESTDATA_REPO_URL +) -> dict[str, str]: """ - # Gather the data folder and registry file locations from installed package_data - data_folder = ilr.files("xhydro").joinpath("testing/data") - registry_file = ilr.files("xhydro").joinpath("testing/registry.txt") - - # Download the files to the installed xhydro/testing/data folder - if filenames is None: - with ilr.as_file(data_folder) as data: - for file in data.rglob("*"): - filename = file.relative_to(data).as_posix() - pooch.retrieve( - url=urljoin(base_url, filename), - known_hash=None, - fname=filename, - path=data_folder, - ) - - # Generate the registry file - with ilr.as_file(data_folder) as data, ilr.as_file(registry_file) as registry: - pooch.make_registry(data.as_posix(), registry.as_posix()) - - -def load_registry(file: str | Path | None = None) -> dict[str, str]: - """Load the registry file for the test data. + Load the registry file for the test data. Parameters ---------- - file : str or Path, optional - Path to the registry file. If not provided, the registry file found within the package data will be used. + branch : str + Branch of the repository to use when fetching testing datasets. + repo : str + URL of the repository to use when fetching testing datasets. Returns ------- dict Dictionary of filenames and hashes. """ - # Get registry file from package_data - if file is None: - registry_file = ilr.files("xhydro").joinpath("testing/registry.txt") - if registry_file.is_file(): - logging.info("Registry file found in package_data: %s", registry_file) - else: - registry_file = Path(file) - if not registry_file.is_file(): - raise FileNotFoundError(f"Registry file not found: {registry_file}") + remote_registry = audit_url(f"{repo}/{branch}/data/registry.txt") - # Load the registry file - registry = dict() - with registry_file.open() as buffer: - for entry in buffer.readlines(): - registry[entry.split()[0]] = entry.split()[1] + if branch != default_testdata_version: + custom_registry_folder = Path( + str(ilr.files("xhydro").joinpath(f"testing/{branch}")) + ) + custom_registry_folder.mkdir(parents=True, exist_ok=True) + registry_file = custom_registry_folder.joinpath("registry.txt") + urlretrieve(remote_registry, registry_file) # noqa: S310 - return registry + elif repo != default_testdata_repo_url: + registry_file = Path(str(ilr.files("xhydro").joinpath("testing/registry.txt"))) + urlretrieve(remote_registry, registry_file) # noqa: S310 + registry_file = Path(str(ilr.files("xhydro").joinpath("testing/registry.txt"))) + if not registry_file.exists(): + raise FileNotFoundError(f"Registry file not found: {registry_file}") -DEVEREAUX = pooch.create( - path=pooch.os_cache("xhydro-testdata"), - base_url=DATA_URL, - version=__xhydro_version__, - version_dev="main", - env="XHYDRO_DATA_DIR", - allow_updates="XHYDRO_DATA_UPDATES", - registry=load_registry(), -) -"""Pooch registry instance for xhydro test data. - -Notes ------ -There are two environment variables that can be used to control the behaviour of this registry: - - - ``XHYDRO_DATA_DIR``: If this environment variable is set, it will be used as the base directory to store the data - files. The directory should be an absolute path (i.e., it should start with ``/``). Otherwise, - the default location will be used (based on ``platformdirs``, see :func:`pooch.os_cache`). - - - ``XHYDRO_DATA_UPDATES``: If this environment variable is set, then the data files will be downloaded even if the - upstream hashes do not match. This is useful if you want to always use the latest version of the data files. + # Load the registry file + with registry_file.open(encoding="utf-8") as f: + registry = {line.split()[0]: line.split()[1] for line in f} + return registry -Examples --------- -Using the registry to download a file: -.. code-block:: python +def deveraux( # noqa: PR01 + repo: str = TESTDATA_REPO_URL, + branch: str = TESTDATA_BRANCH, + cache_dir: str | Path = TESTDATA_CACHE_DIR, + data_updates: bool = True, +): + """Pooch registry instance for xhydro test data. - from xhydro.testing.utils import DEVEREAUX - import xarray as xr + Parameters + ---------- + repo : str + URL of the repository to use when fetching testing datasets. + branch : str + Branch of repository to use when fetching testing datasets. + cache_dir : str or Path + The path to the directory where the data files are stored. + data_updates : bool + If True, allow updates to the data files. Default is True. - example_file = DEVEREAUX.fetch("example.nc") - data = xr.open_dataset(example_file) -""" + Returns + ------- + pooch.Pooch + The Pooch instance for accessing the xhydro testing data. + + Notes + ----- + There are three environment variables that can be used to control the behaviour of this registry: + - ``XHYDRO_TESTDATA_CACHE_DIR``: If this environment variable is set, it will be used as the base directory to + store the data files. The directory should be an absolute path (i.e., it should start with ``/``). + Otherwise,the default location will be used (based on ``platformdirs``, see :py:func:`pooch.os_cache`). + - ``XHYDRO_TESTDATA_REPO_URL``: If this environment variable is set, it will be used as the URL of the repository + to use when fetching datasets. Otherwise, the default repository will be used. + - ``XHYDRO_TESTDATA_BRANCH``: If this environment variable is set, it will be used as the branch of the repository + to use when fetching datasets. Otherwise, the default branch will be used. + + Examples + -------- + Using the registry to download a file: + + .. code-block:: python + + import xarray as xr + from xhydro.testing.helpers import devereaux + + example_file = deveraux().fetch("example.nc") + data = xr.open_dataset(example_file) + """ + if pooch is None: + raise ImportError( + "The `pooch` package is required to fetch the xhydro testing data. " + "You can install it with `pip install pooch` or `pip install xhydro[dev]`." + ) + + remote = audit_url(f"{repo}/{branch}/data") + return pooch.create( + path=cache_dir, + base_url=remote, + version=default_testdata_version, + version_dev=branch, + allow_updates=data_updates, + registry=load_registry(branch=branch, repo=repo), + ) def populate_testing_data( - registry: str | Path | None = None, temp_folder: Path | None = None, + repo: str = TESTDATA_REPO_URL, branch: str = TESTDATA_BRANCH, - _local_cache: Path = _default_cache_dir, + local_cache: Path = TESTDATA_CACHE_DIR, ) -> None: """Populate the local cache with the testing data. Parameters ---------- - registry : str or Path, optional - Path to the registry file. If not provided, the registry file from package_data will be used. temp_folder : Path, optional Path to a temporary folder to use as the local cache. If not provided, the default location will be used. + repo : str, optional + URL of the repository to use when fetching testing datasets. branch : str, optional - Branch of hydrologie/xhydro-testdata to use when fetching testing datasets. - _local_cache : Path, optional - Path to the local cache. Defaults to the default location. + Branch of xhydro-testdata to use when fetching testing datasets. + local_cache : Path + The path to the local cache. Defaults to the location set by the platformdirs library. + The testing data will be downloaded to this local cache. + """ + # Create the Pooch instance + n = deveraux(repo=repo, branch=branch, cache_dir=temp_folder or local_cache) + + # Download the files + errored_files = [] + for file in load_registry(): + try: + n.fetch(file, processor=pooch.Unzip()) + except HTTPError: # noqa: PERF203 + msg = f"File `{file}` not accessible in remote repository." + logging.error(msg) + errored_files.append(file) + else: + logging.info("Files were downloaded successfully.") + + if errored_files: + logging.error( + "The following files were unable to be downloaded: %s", + errored_files, + ) + + +# Testing Utilities +def audit_url(url: str, context: str | None = None) -> str: + """Check if the URL is well-formed. + + Parameters + ---------- + url : str + The URL to check. + context : str, optional + Additional context to include in the error message. Returns ------- - None - The testing data will be downloaded to the local cache. - """ - # Get registry file from package_data or provided path - registry = load_registry(registry) + str + The URL if it is well-formed. - # Set the local cache to the temp folder - if temp_folder is not None: - _local_cache = temp_folder - # Set the branch - DEVEREAUX.version_dev = branch - # Set the local cache - DEVEREAUX.path = _local_cache - - # Download the files - for filename in registry.keys(): - DEVEREAUX.fetch(filename) + Raises + ------ + URLError + If the URL is not well-formed. + """ + msg = "" + result = urlparse(url) + if result.scheme == "http": + msg = f"{context if context else ''} URL is not using secure HTTP: '{url}'".strip() + if not all([result.scheme, result.netloc]): + msg = f"{context if context else ''} URL is not well-formed: '{url}'".strip() + + if msg: + logging.error(msg) + raise URLError(msg) + return url diff --git a/src/xhydro/testing/registry.txt b/src/xhydro/testing/registry.txt index e69de29b..fa704e9d 100644 --- a/src/xhydro/testing/registry.txt +++ b/src/xhydro/testing/registry.txt @@ -0,0 +1,16 @@ +LSTM_data/LSTM_test_data.nc md5:e7f1ddba0cf3dc3c5c6aa28a0c504fa2 +LSTM_data/LSTM_test_data_local.nc md5:2abfe4dd0287a43c1ab40372f4fc4de8 +LSTM_data/multiple_watersheds.nc md5:31e1ae3ffcfd14d6a92faefd3d8bd57a +LSTM_data/single_watershed.nc md5:b1dfe4641321f63fb9198e9538fd679b +cc_indicators/deltas.zip md5:ce6371e073e5324f9ade385c1c03e7eb +cc_indicators/reference.zip md5:192544f3a081375a81d423e08038d32a +cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc md5:0ac83a4ee9dceecda68ac1ee542f50de +extreme_value_analysis/NOAA_GFDL_ESM4.zip md5:6c0f51c59add2f37b0e4af169b7eb7f6 +extreme_value_analysis/genextreme.zip md5:cc2ff7c93949673a6acf00c7c2fac20b +extreme_value_analysis/genpareto.zip md5:ecb74164db4bbfeabfc5e340b11e7ae8 +optimal_interpolation/OI_data.zip md5:1ab72270023366d0410eb6972d1e2656 +optimal_interpolation/OI_data_corrected.zip md5:acdf90b78b53595eb97ff0e84fc07aa8 +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.fx.gn.zarr.zip md5:1257973a6f6047e6998c3430e3342534 +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.day.gn.zarr.zip md5:191cffe11cacc303db697aa91d9be7ab +ravenpy/Debit_Riviere_Rouge.nc md5:5b0feedc34333244b1d9e9c251323478 +ravenpy/ERA5_Riviere_Rouge_global.nc md5:de985fa27ddceac690aeb34182a93f11 diff --git a/tests/conftest.py b/tests/conftest.py index 94451556..8843a0b3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1 +1,137 @@ # noqa: D100 +from os.path import commonpath +from pathlib import Path + +import numpy as np +import pandas as pd +import pooch +import pytest +import xarray as xr + +from xhydro.testing.helpers import ( + TESTDATA_BRANCH, + TESTDATA_CACHE_DIR, + TESTDATA_REPO_URL, +) +from xhydro.testing.helpers import deveraux as _deveraux + + +@pytest.fixture(autouse=True, scope="session") +def threadsafe_data_dir(tmp_path_factory) -> Path: + data_dir = Path(tmp_path_factory.getbasetemp().joinpath("data")) + data_dir.mkdir(exist_ok=True) + return data_dir + + +@pytest.fixture(autouse=True, scope="session") +def deveraux(threadsafe_data_dir, worker_id) -> pooch.Pooch: + return _deveraux( + repo=TESTDATA_REPO_URL, + branch=TESTDATA_BRANCH, + cache_dir=( + TESTDATA_CACHE_DIR if worker_id == "master" else threadsafe_data_dir + ), + ) + + +@pytest.fixture(scope="session") +def oi_data(deveraux): + + # Get data with pooch + oi_data = "optimal_interpolation/OI_data.zip" + test_data_path = deveraux.fetch(oi_data, pooch.Unzip()) + common = Path(commonpath(test_data_path)) + + # Correct files to get them into the correct shape. + df = pd.read_csv(common / "Info_Station.csv", sep=None, dtype=str, engine="python") + qobs = xr.open_dataset(common / "A20_HYDOBS_TEST.nc") + qobs = qobs.assign( + {"centroid_lat": ("station", df["Latitude Centroide BV"].astype(np.float32))} + ) + qobs = qobs.assign( + {"centroid_lon": ("station", df["Longitude Centroide BV"].astype(np.float32))} + ) + qobs = qobs.assign({"classement": ("station", df["Classement"].astype(np.float32))}) + qobs = qobs.assign( + {"station_id": ("station", qobs["station_id"].values.astype(str))} + ) + qobs = qobs.assign({"streamflow": (("station", "time"), qobs["Dis"].values)}) + + df = pd.read_csv( + common / "Correspondance_Station.csv", sep=None, dtype=str, engine="python" + ) + station_correspondence = xr.Dataset( + { + "reach_id": ("station", df["troncon_id"]), + "station_id": ("station", df["No.Station"]), + } + ) + + qsim = xr.open_dataset(common / "A20_HYDREP_TEST.nc") + qsim = qsim.assign( + {"station_id": ("station", qsim["station_id"].values.astype(str))} + ) + qsim = qsim.assign({"streamflow": (("station", "time"), qsim["Dis"].values)}) + qsim["station_id"].values[ + 143 + ] = "SAGU99999" # Forcing to change due to double value wtf. + qsim["station_id"].values[ + 7 + ] = "BRKN99999" # Forcing to change due to double value wtf. + + flow_l1o = xr.open_dataset( + common / "A20_ANALYS_FLOWJ_RESULTS_CROSS_VALIDATION_L1O_TEST.nc" + ) + flow_l1o = flow_l1o.assign( + {"station_id": ("station", flow_l1o["station_id"].values.astype(str))} + ) + flow_l1o = flow_l1o.assign( + {"streamflow": (("percentile", "station", "time"), flow_l1o["Dis"].values)} + ) + tt = flow_l1o["time"].dt.round(freq="D") + flow_l1o = flow_l1o.assign_coords(time=tt.values) + + # Load data + df_validation = pd.read_csv( + common / "stations_retenues_validation_croisee.csv", + sep=None, + dtype=str, + engine="python", + ) + data = { + "flow_l1o": flow_l1o, + "observation_stations": list(df_validation["No_station"]), + "qobs": qobs, + "qsim": qsim, + "station_correspondence": station_correspondence, + } + + return data + + +@pytest.fixture(scope="session") +def corrected_oi_data(deveraux): + + # Get data with pooch + oi_data = "optimal_interpolation/OI_data_corrected.zip" + test_data_path = deveraux.fetch(oi_data, pooch.Unzip()) + common = Path(commonpath(test_data_path)) + + # Load data + df_validation = pd.read_csv( + common / "stations_retenues_validation_croisee.csv", + sep=None, + dtype=str, + engine="python", + ) + data = { + "flow_l1o": xr.open_dataset( + common / "A20_ANALYS_FLOWJ_RESULTS_CROSS_VALIDATION_L1O_TEST_corrected.nc" + ), + "observation_stations": list(df_validation["No_station"]), + "qobs": xr.open_dataset(common / "A20_HYDOBS_TEST_corrected.nc"), + "qsim": xr.open_dataset(common / "A20_HYDREP_TEST_corrected.nc"), + "station_correspondence": xr.open_dataset(common / "station_correspondence.nc"), + } + + return data diff --git a/tests/test_optimal_interpolation.py b/tests/test_optimal_interpolation.py index 3de4bec3..0421599a 100644 --- a/tests/test_optimal_interpolation.py +++ b/tests/test_optimal_interpolation.py @@ -1,13 +1,8 @@ import datetime as dt from functools import partial -from pathlib import Path -from zipfile import ZipFile import numpy as np -import pandas as pd -import pooch import pytest -import xarray as xr import xhydro.optimal_interpolation.compare_result as cr import xhydro.optimal_interpolation.optimal_interpolation_fun as opt @@ -16,45 +11,6 @@ class TestOptimalInterpolationIntegrationCorrectedFiles: - # FIXME: This needs to be turned into a pytest fixture in the future. - # Set Github URL for getting files for tests - GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" - BRANCH_OR_COMMIT_HASH = "main" - - # Get data with pooch - test_data_path = pooch.retrieve( - url=f"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/optimal_interpolation/OI_data_corrected.zip", - known_hash="md5:acdf90b78b53595eb97ff0e84fc07aa8", - ) - - # Extract to a cache path. Easier this way than with the pooch Unzip method, as that one forces the outputs to be - # a list of files including full path, which makes it harder to attribute the paths to each variable we need below. - directory_to_extract_to = Path( - test_data_path - ).parent # Extract to the same directory as the zip file - with ZipFile(test_data_path, "r") as zip_ref: - zip_ref.extractall(directory_to_extract_to) - - # Read-in all the files and set to paths that we can access later. - corresponding_station_file = directory_to_extract_to / "station_correspondence.nc" - selected_station_file = ( - directory_to_extract_to / "stations_retenues_validation_croisee.csv" - ) - flow_obs_info_file = directory_to_extract_to / "A20_HYDOBS_TEST_corrected.nc" - flow_sim_info_file = directory_to_extract_to / "A20_HYDREP_TEST_corrected.nc" - flow_l1o_info_file = ( - directory_to_extract_to - / "A20_ANALYS_FLOWJ_RESULTS_CROSS_VALIDATION_L1O_TEST_corrected.nc" - ) - - qobs = xr.open_dataset(flow_obs_info_file) - qsim = xr.open_dataset(flow_sim_info_file) - flow_l1o = xr.open_dataset(flow_l1o_info_file) - - station_correspondence = xr.open_dataset(corresponding_station_file) - df_validation = pd.read_csv(selected_station_file, sep=None, dtype=str) - observation_stations = list(df_validation["No_station"]) - # Start and end dates for the simulation. Short period for the test. start_date = dt.datetime(2018, 11, 1) end_date = dt.datetime(2019, 1, 1) @@ -69,18 +25,18 @@ class TestOptimalInterpolationIntegrationCorrectedFiles: p1_bnds = [0.95, 1] hmax_mult_range_bnds = [0.05, 3] - def test_cross_validation_execute(self): + def test_cross_validation_execute(self, corrected_oi_data): """Test the cross validation of optimal interpolation.""" # Get the required times only - qobs = self.qobs.sel(time=slice(self.start_date, self.end_date)) - qsim = self.qsim.sel(time=slice(self.start_date, self.end_date)) + qobs = corrected_oi_data["qobs"].sel(time=slice(self.start_date, self.end_date)) + qsim = corrected_oi_data["qsim"].sel(time=slice(self.start_date, self.end_date)) # Run the code and obtain the resulting flows. ds = opt.execute_interpolation( qobs, qsim, - self.station_correspondence, - self.observation_stations, + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -113,10 +69,10 @@ def test_cross_validation_execute(self): end_date = dt.datetime(2018, 12, 31) ds = opt.execute_interpolation( - self.qobs.sel(time=slice(start_date, end_date)), - self.qsim.sel(time=slice(start_date, end_date)), - self.station_correspondence, - self.observation_stations, + corrected_oi_data["qobs"].sel(time=slice(start_date, end_date)), + corrected_oi_data["qsim"].sel(time=slice(start_date, end_date)), + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -148,14 +104,14 @@ def test_cross_validation_execute(self): @pytest.mark.xfail( reason="test reports that num processes is not more than one on conda-forge." ) - def test_cross_validation_execute_parallel(self): + def test_cross_validation_execute_parallel(self, corrected_oi_data): """Test the parallel version of the optimal interpolation cross validation.""" # Run the interpolation and obtain the resulting flows. ds = opt.execute_interpolation( - self.qobs.sel(time=slice(self.start_date, self.end_date)), - self.qsim.sel(time=slice(self.start_date, self.end_date)), - self.station_correspondence, - self.observation_stations, + corrected_oi_data["qobs"].sel(time=slice(self.start_date, self.end_date)), + corrected_oi_data["qsim"].sel(time=slice(self.start_date, self.end_date)), + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -183,14 +139,14 @@ def test_cross_validation_execute_parallel(self): ) assert len(ds["time"].data) == (self.end_date - self.start_date).days + 1 - def test_operational_optimal_interpolation_run(self): + def test_operational_optimal_interpolation_run(self, corrected_oi_data): """Test the operational version of the optimal interpolation code.""" # Run the interpolation and get flows ds = opt.execute_interpolation( - self.qobs.sel(time=slice(self.start_date, self.end_date)), - self.qsim.sel(time=slice(self.start_date, self.end_date)), - self.station_correspondence, - self.observation_stations, + corrected_oi_data["qobs"].sel(time=slice(self.start_date, self.end_date)), + corrected_oi_data["qsim"].sel(time=slice(self.start_date, self.end_date)), + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -218,32 +174,34 @@ def test_operational_optimal_interpolation_run(self): ) assert len(ds["time"].data) == (self.end_date - self.start_date).days + 1 - def test_compare_result_compare(self): + def test_compare_result_compare(self, corrected_oi_data): start_date = dt.datetime(2018, 11, 1) end_date = dt.datetime(2018, 12, 30) cr.compare( - qobs=self.qobs.sel(time=slice(start_date, end_date)), - qsim=self.qsim.sel(time=slice(start_date, end_date)), - flow_l1o=self.flow_l1o.sel(time=slice(start_date, end_date)), - station_correspondence=self.station_correspondence, - observation_stations=self.observation_stations, + qobs=corrected_oi_data["qobs"].sel(time=slice(start_date, end_date)), + qsim=corrected_oi_data["qsim"].sel(time=slice(start_date, end_date)), + flow_l1o=corrected_oi_data["flow_l1o"].sel( + time=slice(start_date, end_date) + ), + station_correspondence=corrected_oi_data["station_correspondence"], + observation_stations=corrected_oi_data["observation_stations"], show_comparison=False, ) - def test_optimal_interpolation_single_time_dim(self): + def test_optimal_interpolation_single_time_dim(self, corrected_oi_data): """Test the OI for data with no time dimension such as indicators.""" # Get the required times only - qobs = self.qobs.sel(time=dt.datetime(2018, 12, 20)) - qsim = self.qsim.sel(time=dt.datetime(2018, 12, 20)) + qobs = corrected_oi_data["qobs"].sel(time=dt.datetime(2018, 12, 20)) + qsim = corrected_oi_data["qsim"].sel(time=dt.datetime(2018, 12, 20)) # TODO: Generate better data to make sure results compute accurately # Run the code and ensure dataset is of correct size and code does not crash. ds = opt.execute_interpolation( qobs, qsim, - self.station_correspondence, - self.observation_stations, + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -259,19 +217,19 @@ def test_optimal_interpolation_single_time_dim(self): assert "time" not in ds assert len(ds.percentile) == 3 - def test_optimal_interpolation_no_time_dim(self): + def test_optimal_interpolation_no_time_dim(self, corrected_oi_data): """Test the OI for data with no time dimension such as indicators.""" # Get the required times only - qobs = self.qobs.isel(time=10).drop("time") - qsim = self.qsim.isel(time=10).drop("time") + qobs = corrected_oi_data["qobs"].isel(time=10).drop_vars("time") + qsim = corrected_oi_data["qsim"].isel(time=10).drop_vars("time") # TODO: Generate better data to make sure results compute accurately # Run the code and ensure dataset is of correct size and code does not crash. ds = opt.execute_interpolation( qobs, qsim, - self.station_correspondence, - self.observation_stations, + corrected_oi_data["station_correspondence"], + corrected_oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -290,90 +248,6 @@ def test_optimal_interpolation_no_time_dim(self): class TestOptimalInterpolationIntegrationOriginalDEHFiles: - # FIXME: This needs to be turned into a pytest fixture in the future. - # Set Github URL for getting files for tests - GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" - BRANCH_OR_COMMIT_HASH = "main" - - # Get data with pooch - test_data_path = pooch.retrieve( - url=f"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/optimal_interpolation/OI_data.zip", - known_hash="md5:1ab72270023366d0410eb6972d1e2656", - ) - - # Extract to a cache path. Easier this way than with the pooch Unzip method, as that one forces the outputs to be - # a list of files including full path, which makes it harder to attribute the paths to each variable we need below. - directory_to_extract_to = Path( - test_data_path - ).parent # Extract to the same directory as the zip file - with ZipFile(test_data_path, "r") as zip_ref: - zip_ref.extractall(directory_to_extract_to) - - # Read-in all the files and set to paths that we can access later. - station_info_file = directory_to_extract_to / "OI_data/Info_Station.csv" - corresponding_station_file = ( - directory_to_extract_to / "OI_data/Correspondance_Station.csv" - ) - selected_station_file = ( - directory_to_extract_to / "OI_data/stations_retenues_validation_croisee.csv" - ) - flow_obs_info_file = directory_to_extract_to / "OI_data/A20_HYDOBS_TEST.nc" - flow_sim_info_file = directory_to_extract_to / "OI_data/A20_HYDREP_TEST.nc" - flow_l1o_info_file = ( - directory_to_extract_to - / "OI_data/A20_ANALYS_FLOWJ_RESULTS_CROSS_VALIDATION_L1O_TEST.nc" - ) - - # Correct files to get them into the correct shape. - df = pd.read_csv(station_info_file, sep=None, dtype=str) - qobs = xr.open_dataset(flow_obs_info_file) - qobs = qobs.assign( - {"centroid_lat": ("station", df["Latitude Centroide BV"].astype(np.float32))} - ) - qobs = qobs.assign( - {"centroid_lon": ("station", df["Longitude Centroide BV"].astype(np.float32))} - ) - qobs = qobs.assign({"classement": ("station", df["Classement"].astype(np.float32))}) - qobs = qobs.assign( - {"station_id": ("station", qobs["station_id"].values.astype(str))} - ) - qobs = qobs.assign({"streamflow": (("station", "time"), qobs["Dis"].values)}) - - df = pd.read_csv(corresponding_station_file, sep=None, dtype=str) - station_correspondence = xr.Dataset( - { - "reach_id": ("station", df["troncon_id"]), - "station_id": ("station", df["No.Station"]), - } - ) - - qsim = xr.open_dataset(flow_sim_info_file) - qsim = qsim.assign( - {"station_id": ("station", qsim["station_id"].values.astype(str))} - ) - qsim = qsim.assign({"streamflow": (("station", "time"), qsim["Dis"].values)}) - qsim["station_id"].values[ - 143 - ] = "SAGU99999" # Forcing to change due to double value wtf. - qsim["station_id"].values[ - 7 - ] = "BRKN99999" # Forcing to change due to double value wtf. - - df_validation = pd.read_csv(selected_station_file, sep=None, dtype=str) - observation_stations = list(df_validation["No_station"]) - - flow_l1o = xr.open_dataset(flow_l1o_info_file) - flow_l1o = flow_l1o.assign( - {"station_id": ("station", flow_l1o["station_id"].values.astype(str))} - ) - flow_l1o = flow_l1o.assign( - {"streamflow": (("percentile", "station", "time"), flow_l1o["Dis"].values)} - ) - tt = flow_l1o["time"].dt.round(freq="D") - flow_l1o = flow_l1o.assign_coords(time=tt.values) - - # Now we are all in dataset format! - # Start and end dates for the simulation. Short period for the test. start_date = dt.datetime(2018, 11, 1) end_date = dt.datetime(2019, 1, 1) @@ -388,18 +262,18 @@ class TestOptimalInterpolationIntegrationOriginalDEHFiles: p1_bnds = [0.95, 1] hmax_mult_range_bnds = [0.05, 3] - def test_cross_validation_execute(self): + def test_cross_validation_execute(self, oi_data): """Test the cross validation of optimal interpolation.""" # Get the required times only - qobs = self.qobs.sel(time=slice(self.start_date, self.end_date)) - qsim = self.qsim.sel(time=slice(self.start_date, self.end_date)) + qobs = oi_data["qobs"].sel(time=slice(self.start_date, self.end_date)) + qsim = oi_data["qsim"].sel(time=slice(self.start_date, self.end_date)) # Run the code and obtain the resulting flows. ds = opt.execute_interpolation( qobs, qsim, - self.station_correspondence, - self.observation_stations, + oi_data["station_correspondence"], + oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -432,10 +306,10 @@ def test_cross_validation_execute(self): end_date = dt.datetime(2018, 12, 31) ds = opt.execute_interpolation( - self.qobs.sel(time=slice(start_date, end_date)), - self.qsim.sel(time=slice(start_date, end_date)), - self.station_correspondence, - self.observation_stations, + oi_data["qobs"].sel(time=slice(start_date, end_date)), + oi_data["qsim"].sel(time=slice(start_date, end_date)), + oi_data["station_correspondence"], + oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -467,14 +341,14 @@ def test_cross_validation_execute(self): @pytest.mark.xfail( reason="test reports that num processes is not more than one on conda-forge." ) - def test_cross_validation_execute_parallel(self): + def test_cross_validation_execute_parallel(self, oi_data): """Test the parallel version of the optimal interpolation cross validation.""" # Run the interpolation and get flows ds = opt.execute_interpolation( - self.qobs.sel(time=slice(self.start_date, self.end_date)), - self.qsim.sel(time=slice(self.start_date, self.end_date)), - self.station_correspondence, - self.observation_stations, + oi_data["qobs"].sel(time=slice(self.start_date, self.end_date)), + oi_data["qsim"].sel(time=slice(self.start_date, self.end_date)), + oi_data["station_correspondence"], + oi_data["observation_stations"], ratio_var_bg=self.ratio_var_bg, percentiles=self.percentiles, variogram_bins=self.variogram_bins, @@ -502,16 +376,16 @@ def test_cross_validation_execute_parallel(self): ) assert len(ds["time"].data) == (self.end_date - self.start_date).days + 1 - def test_compare_result_compare(self): + def test_compare_result_compare(self, oi_data): start_date = dt.datetime(2018, 11, 1) end_date = dt.datetime(2018, 12, 30) cr.compare( - qobs=self.qobs.sel(time=slice(start_date, end_date)), - qsim=self.qsim.sel(time=slice(start_date, end_date)), - flow_l1o=self.flow_l1o.sel(time=slice(start_date, end_date)), - station_correspondence=self.station_correspondence, - observation_stations=self.observation_stations, + qobs=oi_data["qobs"].sel(time=slice(start_date, end_date)), + qsim=oi_data["qsim"].sel(time=slice(start_date, end_date)), + flow_l1o=oi_data["flow_l1o"].sel(time=slice(start_date, end_date)), + station_correspondence=oi_data["station_correspondence"], + observation_stations=oi_data["observation_stations"], show_comparison=False, ) diff --git a/tests/test_ravenpy_models.py b/tests/test_ravenpy_models.py index a89ec4f1..aa2fd31f 100644 --- a/tests/test_ravenpy_models.py +++ b/tests/test_ravenpy_models.py @@ -2,9 +2,7 @@ import warnings import numpy as np -import pooch import pytest -import xarray as xr from raven_hydro import __raven_version__ from xhydro.modelling import RavenpyModel @@ -13,19 +11,9 @@ class TestRavenpyModels: """Test configurations of RavenPy models.""" - # Set Github URL for getting files for tests - GITHUB_URL = "https://github.com/hydrologie/xhydro-testdata" - BRANCH_OR_COMMIT_HASH = "main" - # Get data from xhydro-testdata repo - meteo_file = pooch.retrieve( - url=f"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/ravenpy/ERA5_Riviere_Rouge_global.nc", - known_hash="md5:de985fa27ddceac690aeb34182a93f11", - ) - qobs_path = pooch.retrieve( - url=f"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/ravenpy/Debit_Riviere_Rouge.nc", - known_hash="md5:5b0feedc34333244b1d9e9c251323478", - ) + riviere_rouge_meteo = "ravenpy/ERA5_Riviere_Rouge_global.nc" + riviere_rouge_qobs = "ravenpy/Debit_Riviere_Rouge.nc" # List of types of data provided to Raven in the meteo file data_type = ["TEMP_MAX", "TEMP_MIN", "PRECIP"] @@ -34,7 +22,6 @@ class TestRavenpyModels: alt_names_flow = "qobs" start_date = dt.datetime(1985, 1, 1) end_date = dt.datetime(1990, 1, 1) - qobs = xr.open_dataset(qobs_path).qobs.sel(time=slice(start_date, end_date)).values drainage_area = np.array([100.0]) elevation = np.array([250.5]) latitude = np.array([46.0]) @@ -47,7 +34,7 @@ class TestRavenpyModels: rain_snow_fraction = "RAINSNOW_DINGMAN" evaporation = "PET_PRIESTLEY_TAYLOR" - def test_ravenpy_gr4jcn(self): + def test_ravenpy_gr4jcn(self, deveraux): """Test for GR4JCN ravenpy model""" model_name = "GR4JCN" parameters = [0.529, -3.396, 407.29, 1.072, 16.9, 0.947] @@ -62,9 +49,9 @@ def test_ravenpy_gr4jcn(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -80,7 +67,7 @@ def test_ravenpy_gr4jcn(self): met = rpm.get_inputs() assert len(met.time) == len(qsim.time) - def test_ravenpy_hmets(self): + def test_ravenpy_hmets(self, deveraux): model_name = "HMETS" parameters = [ 9.5019, @@ -115,9 +102,9 @@ def test_ravenpy_hmets(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -128,7 +115,7 @@ def test_ravenpy_hmets(self): qsim = rpm.run() assert qsim["streamflow"].shape == (1827,) - def test_ravenpy_mohyse(self): + def test_ravenpy_mohyse(self, deveraux): """Test for Mohyse ravenpy model""" model_name = "Mohyse" parameters = [ @@ -153,9 +140,9 @@ def test_ravenpy_mohyse(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -170,7 +157,7 @@ def test_ravenpy_mohyse(self): @pytest.mark.skip( reason="Weird error with negative simulated PET in ravenpy for HBVEC." ) - def test_ravenpy_hbvec(self): + def test_ravenpy_hbvec(self, deveraux): """Test for HBVEC ravenpy model""" model_name = "HBVEC" parameters = [ @@ -206,9 +193,9 @@ def test_ravenpy_hbvec(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -223,7 +210,7 @@ def test_ravenpy_hbvec(self): @pytest.mark.skip( reason="Weird error with negative simulated PET in ravenpy for HYPR." ) - def test_ravenpy_hypr(self): + def test_ravenpy_hypr(self, deveraux): """Test for HYPR ravenpy model""" model_name = "HYPR" parameters = [ @@ -259,9 +246,9 @@ def test_ravenpy_hypr(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -273,7 +260,7 @@ def test_ravenpy_hypr(self): assert qsim["streamflow"].shape == (1827,) - def test_ravenpy_sacsma(self): + def test_ravenpy_sacsma(self, deveraux): """Test for SAC-SMA ravenpy model""" model_name = "SACSMA" parameters = [ @@ -309,9 +296,9 @@ def test_ravenpy_sacsma(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -323,7 +310,7 @@ def test_ravenpy_sacsma(self): assert qsim["streamflow"].shape == (1827,) - def test_ravenpy_blended(self): + def test_ravenpy_blended(self, deveraux): """Test for Blended ravenpy model""" model_name = "Blended" parameters = [ @@ -381,9 +368,9 @@ def test_ravenpy_blended(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, @@ -399,7 +386,7 @@ def test_ravenpy_blended(self): qsim = rpm.run() assert qsim["streamflow"].shape == (1827,) - def test_fake_ravenpy(self): + def test_fake_ravenpy(self, deveraux): """Test for GR4JCN ravenpy model""" model_name = "fake_test" parameters = [0.529, -3.396, 407.29, 1.072, 16.9, 0.947] @@ -414,9 +401,9 @@ def test_fake_ravenpy(self): longitude=self.longitude, start_date=self.start_date, end_date=self.end_date, - qobs_path=self.qobs_path, + qobs_path=deveraux.fetch(self.riviere_rouge_qobs), alt_names_flow=self.alt_names_flow, - meteo_file=self.meteo_file, + meteo_file=deveraux.fetch(self.riviere_rouge_meteo), data_type=self.data_type, alt_names_meteo=self.alt_names_meteo, meteo_station_properties=self.meteo_station_properties, From 4ef54ce645d2bb20a7bf019e1251e0d53a127dd1 Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:50:10 -0400 Subject: [PATCH 05/13] better typing --- src/xhydro/modelling/_ravenpy_models.py | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/xhydro/modelling/_ravenpy_models.py b/src/xhydro/modelling/_ravenpy_models.py index 3d1959cc..a22c4bf1 100644 --- a/src/xhydro/modelling/_ravenpy_models.py +++ b/src/xhydro/modelling/_ravenpy_models.py @@ -22,15 +22,15 @@ class RavenpyModel(HydrologicalModel): ---------- model_name : {"Blended", "GR4JCN", "HBVEC", "HMETS", "HYPR", "Mohyse", "SACSMA"} The name of the ravenpy model to run. - parameters : np.ndarray + parameters : np.ndarray or list of float The model parameters for simulation or calibration. - drainage_area : float + drainage_area : np.ndarray or float The watershed drainage area, in km². - elevation : float + elevation : np.ndarray or float The elevation of the watershed, in meters. - latitude : float + latitude : np.ndarray or float The latitude of the watershed centroid. - longitude : float + longitude : np.ndarray or float The longitude of the watershed centroid. start_date : dt.datetime The first date of the simulation. @@ -38,11 +38,13 @@ class RavenpyModel(HydrologicalModel): The last date of the simulation. qobs_path : str or os.PathLike The path to the dataset containing the observed streamflow. - alt_names_flow : dict + alt_names_flow : sequence of str + # FIXME: This does not acceppt a dict, but a sequence of str. Please update the docstring. A dictionary that allows users to change the names of flow variables of their dataset to cf-compliant names. meteo_file : str or os.PathLike The path to the file containing the observed meteorological data. - data_type : dict + data_type : sequence of str + # FIXME: This does not acceppt a dict, but a sequence of str. Please update the docstring. The dictionary necessary to tell raven which variables are being fed such that it can adjust its processes internally. alt_names_meteo : dict A dictionary that allows users to change the names of meteo variables of their dataset to cf-compliant names. @@ -63,11 +65,11 @@ class RavenpyModel(HydrologicalModel): def __init__( self, model_name: str, - parameters: np.ndarray, - drainage_area: str | os.PathLike, - elevation: str, - latitude, - longitude, + parameters: np.ndarray | list[float], + drainage_area: np.ndarray | float, + elevation: np.ndarray | float, + latitude: np.ndarray | float, + longitude: np.ndarray | float, start_date, end_date, qobs_path, From 0bd26cc9691ea5dc68e26b3a85a3152829c7799e Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:55:51 -0400 Subject: [PATCH 06/13] add registry --- src/xhydro/testing/use_registry/registry.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/xhydro/testing/use_registry/registry.txt diff --git a/src/xhydro/testing/use_registry/registry.txt b/src/xhydro/testing/use_registry/registry.txt new file mode 100644 index 00000000..79b845ea --- /dev/null +++ b/src/xhydro/testing/use_registry/registry.txt @@ -0,0 +1,16 @@ +LSTM_data/LSTM_test_data.nc sha256:fcac6067708cbdc7e4df6d05471e89ce562bfe8720f0324f113d17fa9d1fe87b +LSTM_data/LSTM_test_data_local.nc sha256:4e4a70efd9405b481556c73f700dd87d0bf2169366a89b14cd8d8f771f093da8 +LSTM_data/multiple_watersheds.nc sha256:acc5a9821fefbd85cda5283cdfdc00c9290662b5ff6f83ac5637ae84f730c427 +LSTM_data/single_watershed.nc sha256:bea90106d540a7b8b6aca4013ae6c2a9f202a37620f9f265fe3d7c70bf9ff7c8 +cc_indicators/deltas.zip sha256:d6bff404c7e1514d819db9e46c69a3756a0a5f847586fc2fa4e573de3ee1d355 +cc_indicators/reference.zip sha256:80e21de39a78da49f809ddf35bd2d21271828450ea2da71eac08aab13c7b846e +cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc sha256:8699f40153abdea098d580f73b1f8ad64875823f0d8479fdc4f8a40b4adcaf5e +extreme_value_analysis/NOAA_GFDL_ESM4.zip sha256:483a5ffd398aa60db2d2c6d41857cd02c201a7f9efcacef2610a2521f72a22b6 +extreme_value_analysis/genextreme.zip sha256:8d036acca8b9a4608930c97d6cebfbf24205a20c7e43c47dcbdc14221a643b0c +extreme_value_analysis/genpareto.zip sha256:f6b67160dd1373ad6a9ce511788184a0bbed23e0c297315d1686ecbb88e16e0a +optimal_interpolation/OI_data.zip sha256:9cd881a19fc82bda560e636d3f6a2c40718b82f5bce1e31aedce6d1b2e41d7d8 +optimal_interpolation/OI_data_corrected.zip sha256:48ee08325bd35c6bce5c0e52e3ee25df27c830720929060f607fb0417c476941 +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.day.gn.zarr.zip sha256:ca4d4f18385c55b4191c445d8bae1c105c3112cd6eeb59f9f3214a83eb19b14d +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.fx.gn.zarr.zip sha256:14d5b71b4b61eaa8bf0ff7cbfff5fd8a33e3efc2e6a239ecbe91bf253ed56c9b +ravenpy/Debit_Riviere_Rouge.nc sha256:d0a27de5eb3cb466e60669d894296bcbc4e9f590edc1ae2490685babd10b2d22 +ravenpy/ERA5_Riviere_Rouge_global.nc sha256:341ac746130a0d3e3189d3a41dc8528d6bd22869a519b68e134959407ad200a3 From d1e5448c4599f0e74c34d02a97b650dd299e0458 Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:03:41 -0400 Subject: [PATCH 07/13] fix regression --- src/xhydro/modelling/_ravenpy_models.py | 4 ++-- tests/test_hydrological_modelling.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/xhydro/modelling/_ravenpy_models.py b/src/xhydro/modelling/_ravenpy_models.py index a22c4bf1..fd6e4ac0 100644 --- a/src/xhydro/modelling/_ravenpy_models.py +++ b/src/xhydro/modelling/_ravenpy_models.py @@ -68,8 +68,8 @@ def __init__( parameters: np.ndarray | list[float], drainage_area: np.ndarray | float, elevation: np.ndarray | float, - latitude: np.ndarray | float, - longitude: np.ndarray | float, + latitude, + longitude, start_date, end_date, qobs_path, diff --git a/tests/test_hydrological_modelling.py b/tests/test_hydrological_modelling.py index d75bc201..88c385c5 100644 --- a/tests/test_hydrological_modelling.py +++ b/tests/test_hydrological_modelling.py @@ -1,6 +1,5 @@ """Test suite for hydrological modelling in hydrological_modelling.py""" -import os.path from pathlib import Path import numpy as np From 54d64d39afb58992dc3fcb45b63aa25c5ce026eb Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:19:22 -0400 Subject: [PATCH 08/13] fix deprecation --- src/xhydro/frequency_analysis/uncertainities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xhydro/frequency_analysis/uncertainities.py b/src/xhydro/frequency_analysis/uncertainities.py index 2eafeb35..5e3a7966 100644 --- a/src/xhydro/frequency_analysis/uncertainities.py +++ b/src/xhydro/frequency_analysis/uncertainities.py @@ -199,7 +199,7 @@ def calc_q_iter( Quantiles for each bootstrap sample and group. """ # We select groups for only one id - ds_temp = ds_groups[[var]].sel(id=bv).dropna("group_id", "all") + ds_temp = ds_groups[[var]].sel(id=bv).dropna("group_id", how="all") ds_mom = [] # For each group, we find which id are in it From 10ddcba2f8d8628f88d7aa3ecd0475f31635345b Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Fri, 11 Oct 2024 16:21:50 -0400 Subject: [PATCH 09/13] update CHANGELOG.rst --- CHANGELOG.rst | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 667be0a0..e95d4945 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,8 +2,23 @@ Changelog ========= -v.4.0 (2024-10-04) ------------------- +v0.5.0 (unreleased) +------------------- +Contributors to this version: Trevor James Smith (:user:`Zeitsperre`). + +Breaking changes +^^^^^^^^^^^^^^^^ +* The `xhydro` testing utilities have been rewritten to use `pooch` for downloading and caching testing datasets from `hydrologie/xhydro-testdata`. (:pull:`212`). +* The `xhydro` testing utilities now require `pytest-xdist` as a development dependency. (:pull:`212`). + +Internal changes +^^^^^^^^^^^^^^^^ +* Tests can now be run using the `pytest-xdist` plugin for distributed testing. See the `pytest-xdist documentation `_ for more information. (:pull:`212`). +* Several tests reliant on online servers and services have been marked as `online` to prevent them from running in contexts where internet access is limited. (:pull:`212`). +* Many function docstrings and type hints have been updated for accuracy and precision. (:pull:`212`). + +v0.4.0 (2024-10-04) +------------------- Contributors to this version: Trevor James Smith (:user:`Zeitsperre`), Gabriel Rondeau-Genesse (:user:`RondeauG`), Thomas-Charles Fortier Filion (:user:`TC-FF`). New features and enhancements From c5f61b4248691382bcf10c3772496aba79b5ed5b Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:57:00 -0400 Subject: [PATCH 10/13] finalize registry and use latest stable tag --- src/xhydro/testing/helpers.py | 2 +- src/xhydro/testing/registry.txt | 33 ++++++++++---------- src/xhydro/testing/use_registry/registry.txt | 16 ---------- 3 files changed, 18 insertions(+), 33 deletions(-) delete mode 100644 src/xhydro/testing/use_registry/registry.txt diff --git a/src/xhydro/testing/helpers.py b/src/xhydro/testing/helpers.py index 13e0a871..e4bd5428 100644 --- a/src/xhydro/testing/helpers.py +++ b/src/xhydro/testing/helpers.py @@ -23,7 +23,7 @@ "populate_testing_data", ] -default_testdata_version = "v1" +default_testdata_version = "v2024.10.15" """Default version of the testing data to use when fetching datasets.""" default_testdata_repo_url = ( diff --git a/src/xhydro/testing/registry.txt b/src/xhydro/testing/registry.txt index fa704e9d..30079b89 100644 --- a/src/xhydro/testing/registry.txt +++ b/src/xhydro/testing/registry.txt @@ -1,16 +1,17 @@ -LSTM_data/LSTM_test_data.nc md5:e7f1ddba0cf3dc3c5c6aa28a0c504fa2 -LSTM_data/LSTM_test_data_local.nc md5:2abfe4dd0287a43c1ab40372f4fc4de8 -LSTM_data/multiple_watersheds.nc md5:31e1ae3ffcfd14d6a92faefd3d8bd57a -LSTM_data/single_watershed.nc md5:b1dfe4641321f63fb9198e9538fd679b -cc_indicators/deltas.zip md5:ce6371e073e5324f9ade385c1c03e7eb -cc_indicators/reference.zip md5:192544f3a081375a81d423e08038d32a -cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc md5:0ac83a4ee9dceecda68ac1ee542f50de -extreme_value_analysis/NOAA_GFDL_ESM4.zip md5:6c0f51c59add2f37b0e4af169b7eb7f6 -extreme_value_analysis/genextreme.zip md5:cc2ff7c93949673a6acf00c7c2fac20b -extreme_value_analysis/genpareto.zip md5:ecb74164db4bbfeabfc5e340b11e7ae8 -optimal_interpolation/OI_data.zip md5:1ab72270023366d0410eb6972d1e2656 -optimal_interpolation/OI_data_corrected.zip md5:acdf90b78b53595eb97ff0e84fc07aa8 -pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.fx.gn.zarr.zip md5:1257973a6f6047e6998c3430e3342534 -pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.day.gn.zarr.zip md5:191cffe11cacc303db697aa91d9be7ab -ravenpy/Debit_Riviere_Rouge.nc md5:5b0feedc34333244b1d9e9c251323478 -ravenpy/ERA5_Riviere_Rouge_global.nc md5:de985fa27ddceac690aeb34182a93f11 +LSTM_data/LSTM_test_data.nc sha256:fcac6067708cbdc7e4df6d05471e89ce562bfe8720f0324f113d17fa9d1fe87b +LSTM_data/LSTM_test_data_local.nc sha256:4e4a70efd9405b481556c73f700dd87d0bf2169366a89b14cd8d8f771f093da8 +LSTM_data/multiple_watersheds.nc sha256:acc5a9821fefbd85cda5283cdfdc00c9290662b5ff6f83ac5637ae84f730c427 +LSTM_data/single_watershed.nc sha256:bea90106d540a7b8b6aca4013ae6c2a9f202a37620f9f265fe3d7c70bf9ff7c8 +cc_indicators/deltas.zip sha256:d6bff404c7e1514d819db9e46c69a3756a0a5f847586fc2fa4e573de3ee1d355 +cc_indicators/reference.zip sha256:80e21de39a78da49f809ddf35bd2d21271828450ea2da71eac08aab13c7b846e +cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc sha256:8699f40153abdea098d580f73b1f8ad64875823f0d8479fdc4f8a40b4adcaf5e +extreme_value_analysis/NOAA_GFDL_ESM4.zip sha256:483a5ffd398aa60db2d2c6d41857cd02c201a7f9efcacef2610a2521f72a22b6 +extreme_value_analysis/genextreme.zip sha256:8d036acca8b9a4608930c97d6cebfbf24205a20c7e43c47dcbdc14221a643b0c +extreme_value_analysis/genpareto.zip sha256:f6b67160dd1373ad6a9ce511788184a0bbed23e0c297315d1686ecbb88e16e0a +hydro_modelling/ERA5_testdata.nc sha256:7051f696f30d9772511cfbae81a0be0bd2898f25d123227f5f5fa4869138fa4e +optimal_interpolation/OI_data.zip sha256:9cd881a19fc82bda560e636d3f6a2c40718b82f5bce1e31aedce6d1b2e41d7d8 +optimal_interpolation/OI_data_corrected.zip sha256:48ee08325bd35c6bce5c0e52e3ee25df27c830720929060f607fb0417c476941 +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.day.gn.zarr.zip sha256:ca4d4f18385c55b4191c445d8bae1c105c3112cd6eeb59f9f3214a83eb19b14d +pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.fx.gn.zarr.zip sha256:14d5b71b4b61eaa8bf0ff7cbfff5fd8a33e3efc2e6a239ecbe91bf253ed56c9b +ravenpy/Debit_Riviere_Rouge.nc sha256:d0a27de5eb3cb466e60669d894296bcbc4e9f590edc1ae2490685babd10b2d22 +ravenpy/ERA5_Riviere_Rouge_global.nc sha256:341ac746130a0d3e3189d3a41dc8528d6bd22869a519b68e134959407ad200a3 diff --git a/src/xhydro/testing/use_registry/registry.txt b/src/xhydro/testing/use_registry/registry.txt deleted file mode 100644 index 79b845ea..00000000 --- a/src/xhydro/testing/use_registry/registry.txt +++ /dev/null @@ -1,16 +0,0 @@ -LSTM_data/LSTM_test_data.nc sha256:fcac6067708cbdc7e4df6d05471e89ce562bfe8720f0324f113d17fa9d1fe87b -LSTM_data/LSTM_test_data_local.nc sha256:4e4a70efd9405b481556c73f700dd87d0bf2169366a89b14cd8d8f771f093da8 -LSTM_data/multiple_watersheds.nc sha256:acc5a9821fefbd85cda5283cdfdc00c9290662b5ff6f83ac5637ae84f730c427 -LSTM_data/single_watershed.nc sha256:bea90106d540a7b8b6aca4013ae6c2a9f202a37620f9f265fe3d7c70bf9ff7c8 -cc_indicators/deltas.zip sha256:d6bff404c7e1514d819db9e46c69a3756a0a5f847586fc2fa4e573de3ee1d355 -cc_indicators/reference.zip sha256:80e21de39a78da49f809ddf35bd2d21271828450ea2da71eac08aab13c7b846e -cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc sha256:8699f40153abdea098d580f73b1f8ad64875823f0d8479fdc4f8a40b4adcaf5e -extreme_value_analysis/NOAA_GFDL_ESM4.zip sha256:483a5ffd398aa60db2d2c6d41857cd02c201a7f9efcacef2610a2521f72a22b6 -extreme_value_analysis/genextreme.zip sha256:8d036acca8b9a4608930c97d6cebfbf24205a20c7e43c47dcbdc14221a643b0c -extreme_value_analysis/genpareto.zip sha256:f6b67160dd1373ad6a9ce511788184a0bbed23e0c297315d1686ecbb88e16e0a -optimal_interpolation/OI_data.zip sha256:9cd881a19fc82bda560e636d3f6a2c40718b82f5bce1e31aedce6d1b2e41d7d8 -optimal_interpolation/OI_data_corrected.zip sha256:48ee08325bd35c6bce5c0e52e3ee25df27c830720929060f607fb0417c476941 -pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.day.gn.zarr.zip sha256:ca4d4f18385c55b4191c445d8bae1c105c3112cd6eeb59f9f3214a83eb19b14d -pmp/CMIP.CCCma.CanESM5.historical.r1i1p1f1.fx.gn.zarr.zip sha256:14d5b71b4b61eaa8bf0ff7cbfff5fd8a33e3efc2e6a239ecbe91bf253ed56c9b -ravenpy/Debit_Riviere_Rouge.nc sha256:d0a27de5eb3cb466e60669d894296bcbc4e9f590edc1ae2490685babd10b2d22 -ravenpy/ERA5_Riviere_Rouge_global.nc sha256:341ac746130a0d3e3189d3a41dc8528d6bd22869a519b68e134959407ad200a3 From 41a216561cc8a35956d14cfd427bf2a210756a4d Mon Sep 17 00:00:00 2001 From: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com> Date: Tue, 15 Oct 2024 16:07:33 -0400 Subject: [PATCH 11/13] update workbooks to use devereaux --- docs/notebooks/climate_change.ipynb | 48 +- docs/notebooks/hydrological_modelling.ipynb | 462 +++++++++++++++++++- 2 files changed, 469 insertions(+), 41 deletions(-) diff --git a/docs/notebooks/climate_change.ipynb b/docs/notebooks/climate_change.ipynb index 51884f3c..358856ce 100644 --- a/docs/notebooks/climate_change.ipynb +++ b/docs/notebooks/climate_change.ipynb @@ -10,60 +10,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc']\n" + ] + } + ], "source": [ "# Imports\n", "# Hide INFO-level logs\n", "import logging\n", "from pathlib import Path\n", - "from zipfile import ZipFile\n", "\n", - "import hvplot.xarray\n", + "import hvplot.xarray # noqa\n", "import numpy as np\n", "import pooch\n", "import xarray as xr\n", "import xclim\n", "\n", "import xhydro as xh\n", + "from xhydro.testing.helpers import deveraux\n", "\n", "logger = logging.getLogger()\n", "logger.setLevel(logging.CRITICAL)\n", "\n", - "# This notebook will use data from the 2022 edition of the Hydrological Atlas of Southern Quebec, which can be accessed from the xhydro-testdata repository.\n", - "# They cover 2 stations: ABIT00057 and ABIT00058\n", - "GITHUB_URL = \"https://github.com/hydrologie/xhydro-testdata\"\n", - "BRANCH_OR_COMMIT_HASH = \"main\"\n", + "D = deveraux()\n", "\n", "# Streamflow file (1 file - Hydrotel driven by BCC-CSM-1.1(m))\n", - "streamflow_file = pooch.retrieve(\n", - " url=f\"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc\",\n", - " known_hash=\"md5:0ac83a4ee9dceecda68ac1ee542f50de\",\n", + "streamflow_file = D.fetch(\n", + " \"cc_indicators/streamflow_BCC-CSM1.1-m_rcp45.nc\",\n", ")\n", "\n", "# Reference QMOYAN (6 platforms)\n", - "ref_zip = pooch.retrieve(\n", - " url=f\"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/cc_indicators/reference.zip\",\n", - " known_hash=\"md5:192544f3a081375a81d423e08038d32a\",\n", - ")\n", - "directory_to_extract_to = Path(ref_zip).parent\n", - "with ZipFile(ref_zip, \"r\") as ziploc:\n", - " ziploc.extractall(directory_to_extract_to)\n", - " files = ziploc.namelist()\n", - "reference_files = [directory_to_extract_to / f for f in files]\n", + "reference_files = D.fetch(\"cc_indicators/reference.zip\", pooch.Unzip())\n", "\n", "# QMOYAN deltas (63 simulations x 6 platforms)\n", - "deltas_zip = pooch.retrieve(\n", - " url=f\"{GITHUB_URL}/raw/{BRANCH_OR_COMMIT_HASH}/data/cc_indicators/deltas.zip\",\n", - " known_hash=\"md5:ce6371e073e5324f9ade385c1c03e7eb\",\n", - ")\n", - "directory_to_extract_to = Path(deltas_zip).parent\n", - "with ZipFile(deltas_zip, \"r\") as ziploc:\n", - " ziploc.extractall(directory_to_extract_to)\n", - " files = ziploc.namelist()\n", - "deltas_files = [directory_to_extract_to / f for f in files]" + "deltas_files = D.fetch(\"cc_indicators/deltas.zip\", pooch.Unzip())" ] }, { @@ -647,7 +635,7 @@ "delta_dist = delta_dist.rename({\"sample\": \"realization\"}) # xclim compatibility\n", "ens_stats_2 = xh.cc.ensemble_stats(delta_dist, statistics)\n", "\n", - "# Interquartile range\n", + "# Inter-quartile range\n", "ens_stats_2[\"QMOYAN_iqr\"] = ens_stats_2[\"QMOYAN\"].sel(percentiles=75) - ens_stats_2[\n", " \"QMOYAN\"\n", "].sel(percentiles=25)\n", diff --git a/docs/notebooks/hydrological_modelling.ipynb b/docs/notebooks/hydrological_modelling.ipynb index bad4cbd7..d83dc7af 100644 --- a/docs/notebooks/hydrological_modelling.ipynb +++ b/docs/notebooks/hydrological_modelling.ipynb @@ -36,7 +36,6 @@ "\n", "# This function can be called to get a list of the keys for a given model, as well as its documentation.\n", "inputs, docs = xhm.get_hydrological_model_inputs(\"Hydrotel\", required_only=False)\n", - "\n", "inputs" ] }, @@ -102,23 +101,464 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "5", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 69kB\n",
+       "Dimensions:      (lat: 3, lon: 5, time: 366)\n",
+       "Coordinates:\n",
+       "    spatial_agg  <U7 28B ...\n",
+       "    timestep     <U1 4B ...\n",
+       "  * lat          (lat) float64 24B 48.5 48.75 49.0\n",
+       "  * lon          (lon) float64 40B -65.5 -65.25 -65.0 -64.75 -64.5\n",
+       "    HYBAS_ID     int64 8B ...\n",
+       "  * time         (time) datetime64[ns] 3kB 1981-01-01 1981-01-02 ... 1982-01-01\n",
+       "    source       <U29 116B ...\n",
+       "    z            (lat, lon) float32 60B ...\n",
+       "Data variables:\n",
+       "    tasmax       (time, lat, lon) float32 22kB ...\n",
+       "    tasmin       (time, lat, lon) float32 22kB ...\n",
+       "    pr           (time, lat, lon) float32 22kB ...\n",
+       "Attributes: (12/30)\n",
+       "    GRIB_NV:                                  0\n",
+       "    GRIB_Nx:                                  1440\n",
+       "    GRIB_Ny:                                  721\n",
+       "    GRIB_cfName:                              unknown\n",
+       "    GRIB_cfVarName:                           t2m\n",
+       "    GRIB_dataType:                            an\n",
+       "    ...                                       ...\n",
+       "    GRIB_totalNumber:                         0\n",
+       "    GRIB_typeOfLevel:                         surface\n",
+       "    GRIB_units:                               K\n",
+       "    long_name:                                2 metre temperature\n",
+       "    standard_name:                            unknown\n",
+       "    units:                                    K
" + ], + "text/plain": [ + " Size: 69kB\n", + "Dimensions: (lat: 3, lon: 5, time: 366)\n", + "Coordinates:\n", + " spatial_agg Date: Tue, 15 Oct 2024 16:17:05 -0400 Subject: [PATCH 12/13] strip outputs --- docs/notebooks/climate_change.ipynb | 12 +- docs/notebooks/gis.ipynb | 4428 +------------------ docs/notebooks/hydrological_modelling.ipynb | 447 +- 3 files changed, 35 insertions(+), 4852 deletions(-) diff --git a/docs/notebooks/climate_change.ipynb b/docs/notebooks/climate_change.ipynb index 358856ce..4a6d532d 100644 --- a/docs/notebooks/climate_change.ipynb +++ b/docs/notebooks/climate_change.ipynb @@ -10,18 +10,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "1", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_LN24HA_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HA_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HI_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HK_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HQ_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1-m_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BCC_BCC-CSM1.1_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_BNU_BNU-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CCCma_CanESM2_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CMCC_CMCC-CMS_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CNRM-CERFACS_CNRM-CM5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-BOM_ACCESS1.3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r10i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r7i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r8i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_CSIRO-QCCCE_CSIRO-Mk3.6.0_rcp45_r9i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_INM_INM-CM4_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-LR_rcp45_r4i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5A-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_IPSL_IPSL-CM5B-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_LASG-CESS_FGOALS-g2_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC5_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM-CHEM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MIROC_MIROC-ESM_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-LR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r2i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MPI-M_MPI-ESM-MR_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_MRI_MRI-CGCM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-H_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NASA-GISS_GISS-E2-R_rcp45_r6i1p3_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NCC_NorESM1-M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r3i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-CM3_rcp45_r5i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2G_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CMIP5_NOAA-GFDL_GFDL-ESM2M_rcp45_r1i1p1_QC.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_CCCma_CanRCM4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_SMHI_RCA4_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CCCma-CanESM2_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_CNRM-CERFACS-CNRM-CM5_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_DMI_HIRHAM5_rcp45_r3i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_ICHEC-EC-EARTH_SMHI_RCA4_rcp45_r12i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-LR_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_MPI-M-MPI-ESM-MR_UQAM_CRCM5_rcp45_r1i1p1_QC-44.nc', '/home/tjs/.cache/xhydro-testdata/v2024.10.15/cc_indicators/deltas.zip.unzip/deltas/AtlasHydro2022_HYDROTEL_MG24HS_INFO-Crue-CM5_CMIP5_CORDEX_NOAA-GFDL-GFDL-ESM2M_OURANOS_CRCM5_rcp45_r1i1p1_QC-22.nc']\n" - ] - } - ], + "outputs": [], "source": [ "# Imports\n", "# Hide INFO-level logs\n", diff --git a/docs/notebooks/gis.ipynb b/docs/notebooks/gis.ipynb index 86b0bf5e..10c1420d 100644 --- a/docs/notebooks/gis.ipynb +++ b/docs/notebooks/gis.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -47,25 +47,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f61cf6c8bb764084a4b509700285e9f9", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Map(center=[48.63, -74.71], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_…" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "m = leafmap.Map(center=(48.63, -74.71), zoom=5, basemap=\"USGS Hydrography\")\n", "m" @@ -81,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -111,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -133,83 +117,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
HYBAS_IDUpstream Area (sq. km).geometrycategorycolor
0712003433087595.8POLYGON ((-74.37864 48.88141, -74.37452 48.886...3#41b6c4
17120398781144026.8POLYGON ((-80.07991 46.77860, -80.08529 46.782...5#081d58
2712038286023717.7POLYGON ((-73.77437 43.36757, -73.77557 43.388...1#ffffd9
\n", - "
" - ], - "text/plain": [ - " HYBAS_ID Upstream Area (sq. km). \\\n", - "0 7120034330 87595.8 \n", - "1 7120398781 144026.8 \n", - "2 7120382860 23717.7 \n", - "\n", - " geometry category color \n", - "0 POLYGON ((-74.37864 48.88141, -74.37452 48.886... 3 #41b6c4 \n", - "1 POLYGON ((-80.07991 46.77860, -80.08529 46.782... 5 #081d58 \n", - "2 POLYGON ((-73.77437 43.36757, -73.77557 43.388... 1 #ffffd9 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "gdf = xhgis.watershed_delineation(coordinates=lng_lat, map=m)\n", "gdf" @@ -224,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -248,70 +158,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StationSuperficiegeometry
003150121.868620POLYGON ((-72.47379 46.23340, -72.46888 46.228...
103150215.708960POLYGON ((-72.50127 46.21216, -72.50086 46.213...
2042103579.479614POLYGON ((-78.49014 46.64514, -78.49010 46.645...
\n", - "
" - ], - "text/plain": [ - " Station Superficie geometry\n", - "0 031501 21.868620 POLYGON ((-72.47379 46.23340, -72.46888 46.228...\n", - "1 031502 15.708960 POLYGON ((-72.50127 46.21216, -72.50086 46.213...\n", - "2 042103 579.479614 POLYGON ((-78.49014 46.64514, -78.49010 46.645..." - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "gdf = xd.Query(\n", " **{\n", @@ -351,87 +200,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
StationSuperficieareaperimetergraveliuscentroid
003150121.8686202.186862e+0727186.9968451.640007(-72.48631199105834, 46.22277542928622)
103150215.7089601.570896e+0720263.2930211.442220(-72.47966677792694, 46.21359517038631)
2042103579.4796145.794796e+08283765.0583903.325331(-78.37036445281987, 46.48287117609677)
\n", - "
" - ], - "text/plain": [ - " Station Superficie area perimeter gravelius \\\n", - "0 031501 21.868620 2.186862e+07 27186.996845 1.640007 \n", - "1 031502 15.708960 1.570896e+07 20263.293021 1.442220 \n", - "2 042103 579.479614 5.794796e+08 283765.058390 3.325331 \n", - "\n", - " centroid \n", - "0 (-72.48631199105834, 46.22277542928622) \n", - "1 (-72.47966677792694, 46.21359517038631) \n", - "2 (-78.37036445281987, 46.48287117609677) " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "xhgis.watershed_properties(gdf)" ] @@ -445,404 +216,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 120B\n",
-       "Dimensions:    (Station: 3)\n",
-       "Coordinates:\n",
-       "  * Station    (Station) object 24B '031501' '031502' '042103'\n",
-       "Data variables:\n",
-       "    area       (Station) float64 24B 2.187e+07 1.571e+07 5.795e+08\n",
-       "    perimeter  (Station) float64 24B 2.719e+04 2.026e+04 2.838e+05\n",
-       "    gravelius  (Station) float64 24B 1.64 1.442 3.325\n",
-       "    centroid   (Station) object 24B (-72.48631199105834, 46.22277542928622) ....
" - ], - "text/plain": [ - " Size: 120B\n", - "Dimensions: (Station: 3)\n", - "Coordinates:\n", - " * Station (Station) object 24B '031501' '031502' '042103'\n", - "Data variables:\n", - " area (Station) float64 24B 2.187e+07 1.571e+07 5.795e+08\n", - " perimeter (Station) float64 24B 2.719e+04 2.026e+04 2.838e+05\n", - " gravelius (Station) float64 24B 1.64 1.442 3.325\n", - " centroid (Station) object 24B (-72.48631199105834, 46.22277542928622) ...." - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "xhgis.watershed_properties(\n", " gdf[[\"Station\", \"geometry\"]], unique_id=\"Station\", output_format=\"xarray\"\n", @@ -858,123 +234,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
elevationslopeaspectplatformbandproj:shapegsdtimeepsgproj:epsgspatial_ref
geometry
033.5730090.324613239.025970TanDEM-Xdata{1200}902021-04-22432643260
151.3932950.518484242.431335TanDEM-Xdata{1200}902021-04-22432643260
2358.5498662.500644178.557648TanDEM-Xdata{1200}902021-04-22432643260
\n", - "
" - ], - "text/plain": [ - " elevation slope aspect platform band proj:shape gsd \\\n", - "geometry \n", - "0 33.573009 0.324613 239.025970 TanDEM-X data {1200} 90 \n", - "1 51.393295 0.518484 242.431335 TanDEM-X data {1200} 90 \n", - "2 358.549866 2.500644 178.557648 TanDEM-X data {1200} 90 \n", - "\n", - " time epsg proj:epsg spatial_ref \n", - "geometry \n", - "0 2021-04-22 4326 4326 0 \n", - "1 2021-04-22 4326 4326 0 \n", - "2 2021-04-22 4326 4326 0 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "xhgis.surface_properties(gdf)" ] @@ -988,429 +250,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 180B\n",
-       "Dimensions:      (Station: 3)\n",
-       "Coordinates:\n",
-       "    platform     <U8 32B 'TanDEM-X'\n",
-       "    band         <U4 16B 'data'\n",
-       "    proj:shape   object 8B {1200}\n",
-       "    gsd          int64 8B 90\n",
-       "    time         datetime64[ns] 8B 2021-04-22\n",
-       "    epsg         int64 8B 4326\n",
-       "    proj:epsg    int64 8B 4326\n",
-       "    spatial_ref  int64 8B 0\n",
-       "    geometry     (Station) object 24B POLYGON ((-306224.9316606918 257197.438...\n",
-       "  * Station      (Station) object 24B '031501' '031502' '042103'\n",
-       "Data variables:\n",
-       "    elevation    (Station) float32 12B 33.57 51.39 358.5\n",
-       "    slope        (Station) float32 12B 0.3246 0.5185 2.501\n",
-       "    aspect       (Station) float32 12B 239.0 242.4 178.6\n",
-       "Attributes:\n",
-       "    spec:        RasterSpec(epsg=4326, bounds=(-79.00083333333333, 46.0, -72....\n",
-       "    resolution:  0.0008333333333333334\n",
-       "    _FillValue:  1.7976931348623157e+308
" - ], - "text/plain": [ - " Size: 180B\n", - "Dimensions: (Station: 3)\n", - "Coordinates:\n", - " platform \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
pct_built_areapct_cropspct_treespct_rangelandpct_waterpct_snow/icepct_bare_groundpct_flooded_vegetation
Station
0315010.0153210.7241020.2555480.0050290.000000.000000e+000.0000000.000000
0315020.0095260.6707920.3126800.0070020.000000.000000e+000.0000000.000000
0421030.0000130.0000000.8904410.0240520.085373.444143e-070.0000110.000113
\n", - "" - ], - "text/plain": [ - " pct_built_area pct_crops pct_trees pct_rangeland pct_water \\\n", - "Station \n", - "031501 0.015321 0.724102 0.255548 0.005029 0.00000 \n", - "031502 0.009526 0.670792 0.312680 0.007002 0.00000 \n", - "042103 0.000013 0.000000 0.890441 0.024052 0.08537 \n", - "\n", - " pct_snow/ice pct_bare_ground pct_flooded_vegetation \n", - "Station \n", - "031501 0.000000e+00 0.000000 0.000000 \n", - "031502 0.000000e+00 0.000000 0.000000 \n", - "042103 3.444143e-07 0.000011 0.000113 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "df = xhgis.land_use_classification(gdf, unique_id=\"Station\")\n", "df" @@ -1550,20 +279,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "ax = xhgis.land_use_plot(gdf, unique_id=\"Station\", idx=2)" ] @@ -1580,24 +298,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "3806166867be457598aa4fdd81c2b6aa", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "datasets = {\n", " \"era5_land_reanalysis\": {\"variables\": [\"t2m\", \"tp\", \"sd\"]},\n", @@ -1633,433 +336,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 21MB\n",
-       "Dimensions:  (Station: 3, time: 262968)\n",
-       "Coordinates:\n",
-       "  * time     (time) datetime64[ns] 2MB 1981-01-01 ... 2010-12-31T23:00:00\n",
-       "  * Station  (Station) object 24B '031501' '031502' '042103'\n",
-       "    source   <U20 80B 'era5_land_reanalysis'\n",
-       "Data variables:\n",
-       "    tas      (Station, time) float64 6MB -23.29 -23.28 -23.49 ... 2.389 2.339\n",
-       "    pr       (Station, time) float64 6MB 0.0 0.0 0.0 ... 0.003698 0.0006662\n",
-       "    snd      (Station, time) float64 6MB 55.07 55.07 55.07 ... 64.58 64.21 63.84
" - ], - "text/plain": [ - " Size: 21MB\n", - "Dimensions: (Station: 3, time: 262968)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 2MB 1981-01-01 ... 2010-12-31T23:00:00\n", - " * Station (Station) object 24B '031501' '031502' '042103'\n", - " source \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 54kB\n",
-       "Dimensions:               (Station: 3, time: 30)\n",
-       "Coordinates:\n",
-       "  * Station               (Station) object 24B '031501' '031502' '042103'\n",
-       "    source                <U20 80B 'era5_land_reanalysis'\n",
-       "  * time                  (time) datetime64[ns] 240B 1981-01-01 ... 2010-01-01\n",
-       "Data variables: (12/75)\n",
-       "    tas_max_01            (Station, time) float64 720B 5.1 3.616 ... 3.161\n",
-       "    tas_max_02            (Station, time) float64 720B 13.23 1.781 ... 3.544\n",
-       "    tas_max_03            (Station, time) float64 720B 11.61 10.72 ... 12.78\n",
-       "    tas_max_04            (Station, time) float64 720B 19.4 20.66 ... 25.98\n",
-       "    tas_max_05            (Station, time) float64 720B 24.39 28.17 ... 32.24\n",
-       "    tas_max_06            (Station, time) float64 720B 29.32 28.33 ... 25.42\n",
-       "    ...                    ...\n",
-       "    snd_mean_10           (Station, time) float64 720B 0.3611 ... 0.4031\n",
-       "    snd_mean_11           (Station, time) float64 720B 4.29 2.369 ... 7.307\n",
-       "    snd_mean_12           (Station, time) float64 720B 44.07 5.757 ... 52.67\n",
-       "    snd_mean_spring       (Station, time) float64 720B 6.949 92.08 ... 33.31\n",
-       "    snd_mean_summer_fall  (Station, time) float64 720B 0.1345 0.1227 ... 0.7276\n",
-       "    snd_mean_year         (Station, time) float64 720B 14.36 47.45 ... 25.75\n",
-       "Attributes:\n",
-       "    cat:variable:          ('tas_max_01',)\n",
-       "    cat:xrfreq:            YS-JAN\n",
-       "    cat:frequency:         yr\n",
-       "    cat:processing_level:  indicators\n",
-       "    cat:id:                
" - ], - "text/plain": [ - " Size: 54kB\n", - "Dimensions: (Station: 3, time: 30)\n", - "Coordinates:\n", - " * Station (Station) object 24B '031501' '031502' '042103'\n", - " source \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Station031501031502042103
sourceera5_land_reanalysisera5_land_reanalysisera5_land_reanalysis
tas_max_015.793285.839793.640586
tas_max_025.7095445.749494.044133
tas_max_0312.45172612.53172810.525447
tas_max_0421.22463421.25469319.973493
tas_max_0526.61874326.6226225.819365
tas_max_0629.91525429.91423428.824476
tas_max_0730.53817730.54167429.448428
tas_max_0829.40167629.39660728.537646
tas_max_0926.40974326.42007425.724547
tas_max_1020.43363520.45785919.723571
tas_max_1114.84029914.88475611.896061
tas_max_127.1100357.1552065.333868
tas_max_spring29.2728429.2705428.397473
tas_max_summer_fall31.17183731.17298230.377644
tas_max_year31.37376131.37296630.683164
tas_mean_01-11.098958-11.070966-12.603846
tas_mean_02-8.575376-8.555364-10.618004
tas_mean_03-3.011887-2.994205-5.155519
tas_mean_045.1687795.1935152.977892
tas_mean_0512.84946412.85689510.543722
tas_mean_0618.24693418.25092715.93364
tas_mean_0720.6019520.60527318.610954
tas_mean_0819.55662219.56029217.645789
tas_mean_0915.10044615.10998613.367451
tas_mean_108.0605418.0740526.448969
tas_mean_111.3300691.348995-0.077759
tas_mean_12-6.698234-6.672344-7.776868
tas_mean_spring5.0319985.0471032.825004
tas_mean_summer_fall14.46616514.47451612.628117
tas_mean_year6.0281066.0427944.177412
tas_min_01-28.778872-28.809396-30.041543
tas_min_02-25.183904-25.231202-26.180241
tas_min_03-20.468419-20.494124-22.264767
tas_min_04-7.592577-7.580951-10.628039
tas_min_051.6425971.65338-1.659695
tas_min_068.1138888.1269524.091024
tas_min_0712.1205912.1141259.005369
tas_min_0810.29727210.300838.655322
tas_min_094.899944.9000053.395228
tas_min_10-1.616498-1.610984-2.296447
tas_min_11-11.544179-11.551885-9.818372
tas_min_12-24.749929-24.769652-25.083827
tas_min_spring-24.09364-24.113668-25.060736
tas_min_summer_fall-6.582494-6.571843-7.22109
tas_min_year-30.032823-30.080185-31.024786
pr_sum_0179.06173279.09060263.558415
pr_sum_0266.88893166.91705851.602254
pr_sum_0376.44473376.47845264.438532
pr_sum_0493.79018393.89075771.526317
pr_sum_0599.6473999.72762186.51231
pr_sum_06110.389847110.46751489.062977
pr_sum_07118.354004118.34331796.532123
pr_sum_08108.421897108.59788696.009423
pr_sum_09105.164435105.113248100.346083
pr_sum_10104.317676104.31894296.030414
pr_sum_11105.9594105.99777794.391328
pr_sum_1292.27641992.31166272.925842
pr_sum_spring376.994477377.308115310.340259
pr_sum_summer_fall552.196939552.293122488.178244
pr_sum_year1160.7166461161.254838982.936018
snd_mean_0167.387166.59295979.101277
snd_mean_0295.08466193.688919113.425968
snd_mean_0395.80424193.601279130.332078
snd_mean_0420.81310619.62034259.455446
snd_mean_050.025170.0219460.88963
snd_mean_06-0.0-0.00.003253
snd_mean_07-0.0-0.0-0.0
snd_mean_08-0.0-0.0-0.0
snd_mean_090.0000010.0000010.001507
snd_mean_100.2183640.2134990.825938
snd_mean_114.6551224.6104968.643051
snd_mean_1230.77039930.49598939.301119
snd_mean_spring41.78858440.76941261.98516
snd_mean_summer_fall0.3198960.3153620.928477
snd_mean_year25.92351225.43569935.612642
\n", - "" - ], - "text/plain": [ - "Station 031501 031502 \\\n", - "source era5_land_reanalysis era5_land_reanalysis \n", - "tas_max_01 5.79328 5.83979 \n", - "tas_max_02 5.709544 5.74949 \n", - "tas_max_03 12.451726 12.531728 \n", - "tas_max_04 21.224634 21.254693 \n", - "tas_max_05 26.618743 26.62262 \n", - "tas_max_06 29.915254 29.914234 \n", - "tas_max_07 30.538177 30.541674 \n", - "tas_max_08 29.401676 29.396607 \n", - "tas_max_09 26.409743 26.420074 \n", - "tas_max_10 20.433635 20.457859 \n", - "tas_max_11 14.840299 14.884756 \n", - "tas_max_12 7.110035 7.155206 \n", - "tas_max_spring 29.27284 29.27054 \n", - "tas_max_summer_fall 31.171837 31.172982 \n", - "tas_max_year 31.373761 31.372966 \n", - "tas_mean_01 -11.098958 -11.070966 \n", - "tas_mean_02 -8.575376 -8.555364 \n", - "tas_mean_03 -3.011887 -2.994205 \n", - "tas_mean_04 5.168779 5.193515 \n", - "tas_mean_05 12.849464 12.856895 \n", - "tas_mean_06 18.246934 18.250927 \n", - "tas_mean_07 20.60195 20.605273 \n", - "tas_mean_08 19.556622 19.560292 \n", - "tas_mean_09 15.100446 15.109986 \n", - "tas_mean_10 8.060541 8.074052 \n", - "tas_mean_11 1.330069 1.348995 \n", - "tas_mean_12 -6.698234 -6.672344 \n", - "tas_mean_spring 5.031998 5.047103 \n", - "tas_mean_summer_fall 14.466165 14.474516 \n", - "tas_mean_year 6.028106 6.042794 \n", - "tas_min_01 -28.778872 -28.809396 \n", - "tas_min_02 -25.183904 -25.231202 \n", - "tas_min_03 -20.468419 -20.494124 \n", - "tas_min_04 -7.592577 -7.580951 \n", - "tas_min_05 1.642597 1.65338 \n", - "tas_min_06 8.113888 8.126952 \n", - "tas_min_07 12.12059 12.114125 \n", - "tas_min_08 10.297272 10.30083 \n", - "tas_min_09 4.89994 4.900005 \n", - "tas_min_10 -1.616498 -1.610984 \n", - "tas_min_11 -11.544179 -11.551885 \n", - "tas_min_12 -24.749929 -24.769652 \n", - "tas_min_spring -24.09364 -24.113668 \n", - "tas_min_summer_fall -6.582494 -6.571843 \n", - "tas_min_year -30.032823 -30.080185 \n", - "pr_sum_01 79.061732 79.090602 \n", - "pr_sum_02 66.888931 66.917058 \n", - "pr_sum_03 76.444733 76.478452 \n", - "pr_sum_04 93.790183 93.890757 \n", - "pr_sum_05 99.64739 99.727621 \n", - "pr_sum_06 110.389847 110.467514 \n", - "pr_sum_07 118.354004 118.343317 \n", - "pr_sum_08 108.421897 108.597886 \n", - "pr_sum_09 105.164435 105.113248 \n", - "pr_sum_10 104.317676 104.318942 \n", - "pr_sum_11 105.9594 105.997777 \n", - "pr_sum_12 92.276419 92.311662 \n", - "pr_sum_spring 376.994477 377.308115 \n", - "pr_sum_summer_fall 552.196939 552.293122 \n", - "pr_sum_year 1160.716646 1161.254838 \n", - "snd_mean_01 67.3871 66.592959 \n", - "snd_mean_02 95.084661 93.688919 \n", - "snd_mean_03 95.804241 93.601279 \n", - "snd_mean_04 20.813106 19.620342 \n", - "snd_mean_05 0.02517 0.021946 \n", - "snd_mean_06 -0.0 -0.0 \n", - "snd_mean_07 -0.0 -0.0 \n", - "snd_mean_08 -0.0 -0.0 \n", - "snd_mean_09 0.000001 0.000001 \n", - "snd_mean_10 0.218364 0.213499 \n", - "snd_mean_11 4.655122 4.610496 \n", - "snd_mean_12 30.770399 30.495989 \n", - "snd_mean_spring 41.788584 40.769412 \n", - "snd_mean_summer_fall 0.319896 0.315362 \n", - "snd_mean_year 25.923512 25.435699 \n", - "\n", - "Station 042103 \n", - "source era5_land_reanalysis \n", - "tas_max_01 3.640586 \n", - "tas_max_02 4.044133 \n", - "tas_max_03 10.525447 \n", - "tas_max_04 19.973493 \n", - "tas_max_05 25.819365 \n", - "tas_max_06 28.824476 \n", - "tas_max_07 29.448428 \n", - "tas_max_08 28.537646 \n", - "tas_max_09 25.724547 \n", - "tas_max_10 19.723571 \n", - "tas_max_11 11.896061 \n", - "tas_max_12 5.333868 \n", - "tas_max_spring 28.397473 \n", - "tas_max_summer_fall 30.377644 \n", - "tas_max_year 30.683164 \n", - "tas_mean_01 -12.603846 \n", - "tas_mean_02 -10.618004 \n", - "tas_mean_03 -5.155519 \n", - "tas_mean_04 2.977892 \n", - "tas_mean_05 10.543722 \n", - "tas_mean_06 15.93364 \n", - "tas_mean_07 18.610954 \n", - "tas_mean_08 17.645789 \n", - "tas_mean_09 13.367451 \n", - "tas_mean_10 6.448969 \n", - "tas_mean_11 -0.077759 \n", - "tas_mean_12 -7.776868 \n", - "tas_mean_spring 2.825004 \n", - "tas_mean_summer_fall 12.628117 \n", - "tas_mean_year 4.177412 \n", - "tas_min_01 -30.041543 \n", - "tas_min_02 -26.180241 \n", - "tas_min_03 -22.264767 \n", - "tas_min_04 -10.628039 \n", - "tas_min_05 -1.659695 \n", - "tas_min_06 4.091024 \n", - "tas_min_07 9.005369 \n", - "tas_min_08 8.655322 \n", - "tas_min_09 3.395228 \n", - "tas_min_10 -2.296447 \n", - "tas_min_11 -9.818372 \n", - "tas_min_12 -25.083827 \n", - "tas_min_spring -25.060736 \n", - "tas_min_summer_fall -7.22109 \n", - "tas_min_year -31.024786 \n", - "pr_sum_01 63.558415 \n", - "pr_sum_02 51.602254 \n", - "pr_sum_03 64.438532 \n", - "pr_sum_04 71.526317 \n", - "pr_sum_05 86.51231 \n", - "pr_sum_06 89.062977 \n", - "pr_sum_07 96.532123 \n", - "pr_sum_08 96.009423 \n", - "pr_sum_09 100.346083 \n", - "pr_sum_10 96.030414 \n", - "pr_sum_11 94.391328 \n", - "pr_sum_12 72.925842 \n", - "pr_sum_spring 310.340259 \n", - "pr_sum_summer_fall 488.178244 \n", - "pr_sum_year 982.936018 \n", - "snd_mean_01 79.101277 \n", - "snd_mean_02 113.425968 \n", - "snd_mean_03 130.332078 \n", - "snd_mean_04 59.455446 \n", - "snd_mean_05 0.88963 \n", - "snd_mean_06 0.003253 \n", - "snd_mean_07 -0.0 \n", - "snd_mean_08 -0.0 \n", - "snd_mean_09 0.001507 \n", - "snd_mean_10 0.825938 \n", - "snd_mean_11 8.643051 \n", - "snd_mean_12 39.301119 \n", - "snd_mean_spring 61.98516 \n", - "snd_mean_summer_fall 0.928477 \n", - "snd_mean_year 35.612642 " - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "pd.set_option(\"display.max_rows\", 100)\n", "ds_climatology.mean(\"time\").to_dataframe().T" diff --git a/docs/notebooks/hydrological_modelling.ipynb b/docs/notebooks/hydrological_modelling.ipynb index d83dc7af..752796fc 100644 --- a/docs/notebooks/hydrological_modelling.ipynb +++ b/docs/notebooks/hydrological_modelling.ipynb @@ -101,453 +101,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "5", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 69kB\n",
-       "Dimensions:      (lat: 3, lon: 5, time: 366)\n",
-       "Coordinates:\n",
-       "    spatial_agg  <U7 28B ...\n",
-       "    timestep     <U1 4B ...\n",
-       "  * lat          (lat) float64 24B 48.5 48.75 49.0\n",
-       "  * lon          (lon) float64 40B -65.5 -65.25 -65.0 -64.75 -64.5\n",
-       "    HYBAS_ID     int64 8B ...\n",
-       "  * time         (time) datetime64[ns] 3kB 1981-01-01 1981-01-02 ... 1982-01-01\n",
-       "    source       <U29 116B ...\n",
-       "    z            (lat, lon) float32 60B ...\n",
-       "Data variables:\n",
-       "    tasmax       (time, lat, lon) float32 22kB ...\n",
-       "    tasmin       (time, lat, lon) float32 22kB ...\n",
-       "    pr           (time, lat, lon) float32 22kB ...\n",
-       "Attributes: (12/30)\n",
-       "    GRIB_NV:                                  0\n",
-       "    GRIB_Nx:                                  1440\n",
-       "    GRIB_Ny:                                  721\n",
-       "    GRIB_cfName:                              unknown\n",
-       "    GRIB_cfVarName:                           t2m\n",
-       "    GRIB_dataType:                            an\n",
-       "    ...                                       ...\n",
-       "    GRIB_totalNumber:                         0\n",
-       "    GRIB_typeOfLevel:                         surface\n",
-       "    GRIB_units:                               K\n",
-       "    long_name:                                2 metre temperature\n",
-       "    standard_name:                            unknown\n",
-       "    units:                                    K
" - ], - "text/plain": [ - " Size: 69kB\n", - "Dimensions: (lat: 3, lon: 5, time: 366)\n", - "Coordinates:\n", - " spatial_agg Date: Wed, 16 Oct 2024 09:40:41 -0400 Subject: [PATCH 13/13] regenerate outputs --- docs/notebooks/gis.ipynb | 3759 +++++++++++++++++++++++++++++++++++++- 1 file changed, 3727 insertions(+), 32 deletions(-) diff --git a/docs/notebooks/gis.ipynb b/docs/notebooks/gis.ipynb index 10c1420d..814b91e6 100644 --- a/docs/notebooks/gis.ipynb +++ b/docs/notebooks/gis.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -47,9 +47,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2d7a024ea42e4b4ba7904fda40396340", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Map(center=[48.63, -74.71], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_…" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "m = leafmap.Map(center=(48.63, -74.71), zoom=5, basemap=\"USGS Hydrography\")\n", "m" @@ -65,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -90,12 +106,12 @@ "\n", "![test](../../docs/_static/_images/example_draw_marker.png)\n", "\n", - "The next cell is only useful for the documentation as it simulates a user selecting an outlet from the map `m`. You should instead remove this code and interact with the map in object `m` as shown above by positionning markers at sites of interest" + "The next cell is only useful for the documentation as it simulates a user selecting an outlet from the map `m`. You should instead remove this code and interact with the map in object `m` as shown above by positioning markers at sites of interest" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -117,9 +133,113 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
HYBAS_IDUpstream Area (sq. km).geometrycategorycolor
0712003433087595.8POLYGON ((-74.37864 48.88141, -74.37452 48.886...1#ffffd9
1712003433087595.8POLYGON ((-74.33808 49.28658, -74.34388 49.288...1#ffffd9
2712003433087595.8POLYGON ((-74.38747 49.38815, -74.38578 49.386...1#ffffd9
37120398781144026.8POLYGON ((-80.07991 46.7786, -80.08529 46.7827...2#c7e9b4
47120398781144026.8POLYGON ((-78.59583 45.475, -78.59675 45.46602...2#c7e9b4
5712038286023717.7POLYGON ((-73.77437 43.36757, -73.77557 43.388...1#ffffd9
\n", + "
" + ], + "text/plain": [ + " HYBAS_ID Upstream Area (sq. km). \\\n", + "0 7120034330 87595.8 \n", + "1 7120034330 87595.8 \n", + "2 7120034330 87595.8 \n", + "3 7120398781 144026.8 \n", + "4 7120398781 144026.8 \n", + "5 7120382860 23717.7 \n", + "\n", + " geometry category color \n", + "0 POLYGON ((-74.37864 48.88141, -74.37452 48.886... 1 #ffffd9 \n", + "1 POLYGON ((-74.33808 49.28658, -74.34388 49.288... 1 #ffffd9 \n", + "2 POLYGON ((-74.38747 49.38815, -74.38578 49.386... 1 #ffffd9 \n", + "3 POLYGON ((-80.07991 46.7786, -80.08529 46.7827... 2 #c7e9b4 \n", + "4 POLYGON ((-78.59583 45.475, -78.59675 45.46602... 2 #c7e9b4 \n", + "5 POLYGON ((-73.77437 43.36757, -73.77557 43.388... 1 #ffffd9 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "gdf = xhgis.watershed_delineation(coordinates=lng_lat, map=m)\n", "gdf" @@ -134,7 +254,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -158,9 +278,70 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StationSuperficiegeometry
003150121.868620POLYGON ((-72.47379 46.2334, -72.46888 46.2287...
103150215.708960POLYGON ((-72.50126 46.21216, -72.50086 46.213...
2042103579.479614POLYGON ((-78.49014 46.64514, -78.4901 46.6450...
\n", + "
" + ], + "text/plain": [ + " Station Superficie geometry\n", + "0 031501 21.868620 POLYGON ((-72.47379 46.2334, -72.46888 46.2287...\n", + "1 031502 15.708960 POLYGON ((-72.50126 46.21216, -72.50086 46.213...\n", + "2 042103 579.479614 POLYGON ((-78.49014 46.64514, -78.4901 46.6450..." + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "gdf = xd.Query(\n", " **{\n", @@ -200,9 +381,87 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
StationSuperficieareaperimetergraveliuscentroid
003150121.8686202.186862e+0727186.9968451.640007(-72.48631199105834, 46.22277542928622)
103150215.7089601.570896e+0720263.2930211.442220(-72.47966677792694, 46.21359517038631)
2042103579.4796145.794796e+08283765.0583903.325331(-78.37036445281987, 46.48287117609677)
\n", + "
" + ], + "text/plain": [ + " Station Superficie area perimeter gravelius \\\n", + "0 031501 21.868620 2.186862e+07 27186.996845 1.640007 \n", + "1 031502 15.708960 1.570896e+07 20263.293021 1.442220 \n", + "2 042103 579.479614 5.794796e+08 283765.058390 3.325331 \n", + "\n", + " centroid \n", + "0 (-72.48631199105834, 46.22277542928622) \n", + "1 (-72.47966677792694, 46.21359517038631) \n", + "2 (-78.37036445281987, 46.48287117609677) " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "xhgis.watershed_properties(gdf)" ] @@ -216,9 +475,405 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 120B\n",
+       "Dimensions:    (Station: 3)\n",
+       "Coordinates:\n",
+       "  * Station    (Station) object 24B '031501' '031502' '042103'\n",
+       "Data variables:\n",
+       "    area       (Station) float64 24B 2.187e+07 1.571e+07 5.795e+08\n",
+       "    perimeter  (Station) float64 24B 2.719e+04 2.026e+04 2.838e+05\n",
+       "    gravelius  (Station) float64 24B 1.64 1.442 3.325\n",
+       "    centroid   (Station) object 24B (-72.48631199105834, 46.22277542928622) ....
" + ], + "text/plain": [ + " Size: 120B\n", + "Dimensions: (Station: 3)\n", + "Coordinates:\n", + " * Station (Station) object 24B '031501' '031502' '042103'\n", + "Data variables:\n", + " area (Station) float64 24B 2.187e+07 1.571e+07 5.795e+08\n", + " perimeter (Station) float64 24B 2.719e+04 2.026e+04 2.838e+05\n", + " gravelius (Station) float64 24B 1.64 1.442 3.325\n", + " centroid (Station) object 24B (-72.48631199105834, 46.22277542928622) ...." + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "xhgis.watershed_properties(\n", " gdf[[\"Station\", \"geometry\"]], unique_id=\"Station\", output_format=\"xarray\"\n", @@ -234,9 +889,123 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
elevationslopeaspectproj:shapebandplatformepsgtimegsdproj:epsgspatial_ref
geometry
033.5730090.324613239.025970{1200}dataTanDEM-X43262021-04-229043260
151.3932950.518484242.431335{1200}dataTanDEM-X43262021-04-229043260
2358.5498662.500644178.557648{1200}dataTanDEM-X43262021-04-229043260
\n", + "
" + ], + "text/plain": [ + " elevation slope aspect proj:shape band platform epsg \\\n", + "geometry \n", + "0 33.573009 0.324613 239.025970 {1200} data TanDEM-X 4326 \n", + "1 51.393295 0.518484 242.431335 {1200} data TanDEM-X 4326 \n", + "2 358.549866 2.500644 178.557648 {1200} data TanDEM-X 4326 \n", + "\n", + " time gsd proj:epsg spatial_ref \n", + "geometry \n", + "0 2021-04-22 90 4326 0 \n", + "1 2021-04-22 90 4326 0 \n", + "2 2021-04-22 90 4326 0 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "xhgis.surface_properties(gdf)" ] @@ -250,9 +1019,430 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 180B\n",
+       "Dimensions:      (Station: 3)\n",
+       "Coordinates:\n",
+       "    proj:shape   object 8B {1200}\n",
+       "    band         <U4 16B 'data'\n",
+       "    platform     <U8 32B 'TanDEM-X'\n",
+       "    epsg         int64 8B 4326\n",
+       "    time         datetime64[ns] 8B 2021-04-22\n",
+       "    gsd          int64 8B 90\n",
+       "    proj:epsg    int64 8B 4326\n",
+       "    spatial_ref  int64 8B 0\n",
+       "    geometry     (Station) object 24B POLYGON ((-306224.9316606918 257197.438...\n",
+       "  * Station      (Station) object 24B '031501' '031502' '042103'\n",
+       "Data variables:\n",
+       "    elevation    (Station) float32 12B 33.57 51.39 358.5\n",
+       "    slope        (Station) float32 12B 0.3246 0.5185 2.501\n",
+       "    aspect       (Station) float32 12B 239.0 242.4 178.6\n",
+       "Attributes:\n",
+       "    spec:        RasterSpec(epsg=4326, bounds=(-79.00083333333333, 46.0, -72....\n",
+       "    resolution:  0.0008333333333333334\n",
+       "    _FillValue:  nan
" + ], + "text/plain": [ + " Size: 180B\n", + "Dimensions: (Station: 3)\n", + "Coordinates:\n", + " proj:shape object 8B {1200}\n", + " band \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pct_built_areapct_cropspct_treespct_rangelandpct_waterpct_snow/icepct_bare_groundpct_flooded_vegetation
Station
0315010.0153210.7241020.2555480.0050290.000000.000000e+000.0000000.000000
0315020.0095260.6707920.3126800.0070020.000000.000000e+000.0000000.000000
0421030.0000130.0000000.8904410.0240520.085373.444143e-070.0000110.000113
\n", + "" + ], + "text/plain": [ + " pct_built_area pct_crops pct_trees pct_rangeland pct_water \\\n", + "Station \n", + "031501 0.015321 0.724102 0.255548 0.005029 0.00000 \n", + "031502 0.009526 0.670792 0.312680 0.007002 0.00000 \n", + "042103 0.000013 0.000000 0.890441 0.024052 0.08537 \n", + "\n", + " pct_snow/ice pct_bare_ground pct_flooded_vegetation \n", + "Station \n", + "031501 0.000000e+00 0.000000 0.000000 \n", + "031502 0.000000e+00 0.000000 0.000000 \n", + "042103 3.444143e-07 0.000011 0.000113 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df = xhgis.land_use_classification(gdf, unique_id=\"Station\")\n", "df" @@ -279,9 +1582,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "ax = xhgis.land_use_plot(gdf, unique_id=\"Station\", idx=2)" ] @@ -298,9 +1612,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "353c631c466649a6b5cf1e98fe596f37", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "datasets = {\n", " \"era5_land_reanalysis\": {\"variables\": [\"t2m\", \"tp\", \"sd\"]},\n", @@ -336,9 +1665,428 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 15MB\n",
+       "Dimensions:  (Station: 2, time: 262968)\n",
+       "Coordinates:\n",
+       "  * time     (time) datetime64[ns] 2MB 1981-01-01 ... 2010-12-31T23:00:00\n",
+       "  * Station  (Station) object 16B '031501' '031502'\n",
+       "    source   <U20 80B 'era5_land_reanalysis'\n",
+       "Data variables:\n",
+       "    tas      (Station, time) float64 4MB -23.29 -23.28 -23.49 ... 2.734 2.454\n",
+       "    pr       (Station, time) float64 4MB 0.0 0.0 0.0 ... 0.01582 0.3079 1.186\n",
+       "    snd      (Station, time) float64 4MB 55.07 55.07 55.07 ... 35.57 35.27 35.01
" + ], + "text/plain": [ + " Size: 15MB\n", + "Dimensions: (Station: 2, time: 262968)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 2MB 1981-01-01 ... 2010-12-31T23:00:00\n", + " * Station (Station) object 16B '031501' '031502'\n", + " source \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 36kB\n",
+       "Dimensions:               (Station: 2, time: 30)\n",
+       "Coordinates:\n",
+       "  * Station               (Station) object 16B '031501' '031502'\n",
+       "    source                <U20 80B 'era5_land_reanalysis'\n",
+       "  * time                  (time) datetime64[ns] 240B 1981-01-01 ... 2010-01-01\n",
+       "Data variables: (12/75)\n",
+       "    tas_max_01            (Station, time) float64 480B 5.1 3.616 ... 9.685\n",
+       "    tas_max_02            (Station, time) float64 480B 13.23 1.781 ... 5.404\n",
+       "    tas_max_03            (Station, time) float64 480B 11.61 10.72 ... 11.53\n",
+       "    tas_max_04            (Station, time) float64 480B 19.4 20.66 ... 25.72 25.3\n",
+       "    tas_max_05            (Station, time) float64 480B 24.39 28.17 ... 31.67\n",
+       "    tas_max_06            (Station, time) float64 480B 29.32 28.33 ... 28.63\n",
+       "    ...                    ...\n",
+       "    snd_mean_10           (Station, time) float64 480B 0.3611 ... 0.0389\n",
+       "    snd_mean_11           (Station, time) float64 480B 4.29 2.369 ... 2.396\n",
+       "    snd_mean_12           (Station, time) float64 480B 44.07 5.757 ... 29.87\n",
+       "    snd_mean_spring       (Station, time) float64 480B 6.949 92.08 ... 16.39\n",
+       "    snd_mean_summer_fall  (Station, time) float64 480B 0.1345 0.1227 ... 0.03939\n",
+       "    snd_mean_year         (Station, time) float64 480B 14.36 47.45 ... 15.62\n",
+       "Attributes:\n",
+       "    cat:variable:          ('tas_max_01',)\n",
+       "    cat:xrfreq:            YS-JAN\n",
+       "    cat:frequency:         yr\n",
+       "    cat:processing_level:  indicators\n",
+       "    cat:id:                
" + ], + "text/plain": [ + " Size: 36kB\n", + "Dimensions: (Station: 2, time: 30)\n", + "Coordinates:\n", + " * Station (Station) object 16B '031501' '031502'\n", + " source \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Station031501031502
sourceera5_land_reanalysisera5_land_reanalysis
tas_max_015.793285.83979
tas_max_025.7095445.74949
tas_max_0312.45172612.531728
tas_max_0421.22463421.254693
tas_max_0526.61874326.62262
tas_max_0629.91525429.914234
tas_max_0730.53817730.541674
tas_max_0829.40167629.396607
tas_max_0926.40974326.420074
tas_max_1020.43363520.457859
tas_max_1114.84029914.884756
tas_max_127.1100357.155206
tas_max_spring29.2728429.27054
tas_max_summer_fall31.17183731.172982
tas_max_year31.37376131.372966
tas_mean_01-11.098958-11.070966
tas_mean_02-8.575376-8.555364
tas_mean_03-3.011887-2.994205
tas_mean_045.1687795.193515
tas_mean_0512.84946412.856895
tas_mean_0618.24693418.250927
tas_mean_0720.6019520.605273
tas_mean_0819.55662219.560292
tas_mean_0915.10044615.109986
tas_mean_108.0605418.074052
tas_mean_111.3300691.348995
tas_mean_12-6.698234-6.672344
tas_mean_spring5.0319985.047103
tas_mean_summer_fall14.46616514.474516
tas_mean_year6.0281066.042794
tas_min_01-28.778872-28.809396
tas_min_02-25.183904-25.231202
tas_min_03-20.468419-20.494124
tas_min_04-7.592577-7.580951
tas_min_051.6425971.65338
tas_min_068.1138888.126952
tas_min_0712.1205912.114125
tas_min_0810.29727210.30083
tas_min_094.899944.900005
tas_min_10-1.616498-1.610984
tas_min_11-11.544179-11.551885
tas_min_12-24.749929-24.769652
tas_min_spring-24.09364-24.113668
tas_min_summer_fall-6.582494-6.571843
tas_min_year-30.032823-30.080185
pr_sum_0179.06173279.090602
pr_sum_0266.88893166.917058
pr_sum_0376.44473376.478452
pr_sum_0493.79018393.890757
pr_sum_0599.6473999.727621
pr_sum_06110.389847110.467514
pr_sum_07118.354004118.343317
pr_sum_08108.421897108.597886
pr_sum_09105.164435105.113248
pr_sum_10104.317676104.318942
pr_sum_11105.9594105.997777
pr_sum_1292.27641992.311662
pr_sum_spring376.994477377.308115
pr_sum_summer_fall552.196939552.293122
pr_sum_year1160.7166461161.254838
snd_mean_0167.387166.592959
snd_mean_0295.08466193.688919
snd_mean_0395.80424193.601279
snd_mean_0420.81310619.620342
snd_mean_050.025170.021946
snd_mean_06-0.0-0.0
snd_mean_07-0.0-0.0
snd_mean_08-0.0-0.0
snd_mean_090.0000010.000001
snd_mean_100.2183640.213499
snd_mean_114.6551224.610496
snd_mean_1230.77039930.495989
snd_mean_spring41.78858440.769412
snd_mean_summer_fall0.3198960.315362
snd_mean_year25.92351225.435699
\n", + "" + ], + "text/plain": [ + "Station 031501 031502\n", + "source era5_land_reanalysis era5_land_reanalysis\n", + "tas_max_01 5.79328 5.83979\n", + "tas_max_02 5.709544 5.74949\n", + "tas_max_03 12.451726 12.531728\n", + "tas_max_04 21.224634 21.254693\n", + "tas_max_05 26.618743 26.62262\n", + "tas_max_06 29.915254 29.914234\n", + "tas_max_07 30.538177 30.541674\n", + "tas_max_08 29.401676 29.396607\n", + "tas_max_09 26.409743 26.420074\n", + "tas_max_10 20.433635 20.457859\n", + "tas_max_11 14.840299 14.884756\n", + "tas_max_12 7.110035 7.155206\n", + "tas_max_spring 29.27284 29.27054\n", + "tas_max_summer_fall 31.171837 31.172982\n", + "tas_max_year 31.373761 31.372966\n", + "tas_mean_01 -11.098958 -11.070966\n", + "tas_mean_02 -8.575376 -8.555364\n", + "tas_mean_03 -3.011887 -2.994205\n", + "tas_mean_04 5.168779 5.193515\n", + "tas_mean_05 12.849464 12.856895\n", + "tas_mean_06 18.246934 18.250927\n", + "tas_mean_07 20.60195 20.605273\n", + "tas_mean_08 19.556622 19.560292\n", + "tas_mean_09 15.100446 15.109986\n", + "tas_mean_10 8.060541 8.074052\n", + "tas_mean_11 1.330069 1.348995\n", + "tas_mean_12 -6.698234 -6.672344\n", + "tas_mean_spring 5.031998 5.047103\n", + "tas_mean_summer_fall 14.466165 14.474516\n", + "tas_mean_year 6.028106 6.042794\n", + "tas_min_01 -28.778872 -28.809396\n", + "tas_min_02 -25.183904 -25.231202\n", + "tas_min_03 -20.468419 -20.494124\n", + "tas_min_04 -7.592577 -7.580951\n", + "tas_min_05 1.642597 1.65338\n", + "tas_min_06 8.113888 8.126952\n", + "tas_min_07 12.12059 12.114125\n", + "tas_min_08 10.297272 10.30083\n", + "tas_min_09 4.89994 4.900005\n", + "tas_min_10 -1.616498 -1.610984\n", + "tas_min_11 -11.544179 -11.551885\n", + "tas_min_12 -24.749929 -24.769652\n", + "tas_min_spring -24.09364 -24.113668\n", + "tas_min_summer_fall -6.582494 -6.571843\n", + "tas_min_year -30.032823 -30.080185\n", + "pr_sum_01 79.061732 79.090602\n", + "pr_sum_02 66.888931 66.917058\n", + "pr_sum_03 76.444733 76.478452\n", + "pr_sum_04 93.790183 93.890757\n", + "pr_sum_05 99.64739 99.727621\n", + "pr_sum_06 110.389847 110.467514\n", + "pr_sum_07 118.354004 118.343317\n", + "pr_sum_08 108.421897 108.597886\n", + "pr_sum_09 105.164435 105.113248\n", + "pr_sum_10 104.317676 104.318942\n", + "pr_sum_11 105.9594 105.997777\n", + "pr_sum_12 92.276419 92.311662\n", + "pr_sum_spring 376.994477 377.308115\n", + "pr_sum_summer_fall 552.196939 552.293122\n", + "pr_sum_year 1160.716646 1161.254838\n", + "snd_mean_01 67.3871 66.592959\n", + "snd_mean_02 95.084661 93.688919\n", + "snd_mean_03 95.804241 93.601279\n", + "snd_mean_04 20.813106 19.620342\n", + "snd_mean_05 0.02517 0.021946\n", + "snd_mean_06 -0.0 -0.0\n", + "snd_mean_07 -0.0 -0.0\n", + "snd_mean_08 -0.0 -0.0\n", + "snd_mean_09 0.000001 0.000001\n", + "snd_mean_10 0.218364 0.213499\n", + "snd_mean_11 4.655122 4.610496\n", + "snd_mean_12 30.770399 30.495989\n", + "snd_mean_spring 41.788584 40.769412\n", + "snd_mean_summer_fall 0.319896 0.315362\n", + "snd_mean_year 25.923512 25.435699" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "pd.set_option(\"display.max_rows\", 100)\n", "ds_climatology.mean(\"time\").to_dataframe().T"