Examples#
import icclim
import datetime
Example 1: index SU#
files = [
"tasmax_day_CNRM-CM5_historical_r1i1p1_19950101-19991231.nc",
"tasmax_day_CNRM-CM5_historical_r1i1p1_20000101-20041231.nc",
"tasmax_day_CNRM-CM5_historical_r1i1p1_20050101-20051231.nc",
]
dt1 = datetime.datetime(1998, 1, 1)
dt2 = datetime.datetime(2005, 12, 31)
out_f = "SU_JJA_CNRM-CM5_historical_r1i1p1_1998-2005.nc" # OUTPUT FILE: summer season values of SU
icclim.index(
index_name="SU",
in_files=files,
var_name="tasmax",
time_range=[dt1, dt2],
slice_mode="JJA",
out_file=out_f,
)
dt1 = datetime.datetime(1998, 1, 1)
dt2 = datetime.datetime(2005, 12, 31)
out_f = "SU_JJA_CNRM-CM5_historical_r1i1p1_1998-2005.nc" # OUTPUT FILE: summer season values of SU
icclim.index(
index_name="SU",
in_files=files,
var_name="tasmax",
time_range=[dt1, dt2],
slice_mode="JJA",
out_file=out_f,
)
Example 2: index ETR#
files_tasmax = [
"tasmax_day_CNRM-CM5_historical_r1i1p1_19300101-19341231.nc",
"tasmax_day_CNRM-CM5_historical_r1i1p1_19350101-19391231.nc",
]
files_tasmin = [
"tasmin_day_CNRM-CM5_historical_r1i1p1_19300101-19341231.nc",
"tasmin_day_CNRM-CM5_historical_r1i1p1_19350101-19391231.nc",
]
out_f = "ETR_year_CNRM-CM5_historical_r1i1p1_1930-1939.nc" # OUTPUT FILE: annual values of ETR
icclim.index(
index_name="ETR",
in_files=[files_tasmax, files_tasmin],
var_name=["tasmax", "tasmin"],
slice_mode="year",
out_file=out_f,
)
files_tasmin = [
"tasmin_day_CNRM-CM5_historical_r1i1p1_19300101-19341231.nc",
"tasmin_day_CNRM-CM5_historical_r1i1p1_19350101-19391231.nc",
]
out_f = "ETR_year_CNRM-CM5_historical_r1i1p1_1930-1939.nc" # OUTPUT FILE: annual values of ETR
icclim.index(
index_name="ETR",
in_files=[files_tasmax, files_tasmin],
var_name=["tasmax", "tasmin"],
slice_mode="year",
out_file=out_f,
)
Warning
The order of var_name must be [‘tasmax’, ‘tasmin’] and NOT [‘tasmin’, ‘tasmax’]. The same for in_files.
Example 3: index TG90p with callback#
f = "tas_day_CNRM-CM5_historical_r1i1p1_19010101-20001231.nc"
# base period
base_dt1 = datetime.datetime(1961, 1, 1)
base_dt2 = datetime.datetime(1970, 12, 31)
# studied period
dt1 = datetime.datetime(1980, 1, 1)
dt2 = datetime.datetime(2000, 12, 31)
out_f = "TG90p_AMJJAS_CNRM-CM5_historical_r1i1p1_1980-2000.nc" # OUTPUT FILE: summer half-year values of TG90p
icclim.index(
index_name="TG90p",
in_files=f,
var_name="tas",
slice_mode="AMJJAS",
time_range=[dt1, dt2],
base_period_time_range=[base_dt1, base_dt2],
out_file=out_f,
out_unit="%",
)
f = "tas_day_CNRM-CM5_historical_r1i1p1_19010101-20001231.nc"
# base period
base_dt1 = datetime.datetime(1961, 1, 1)
base_dt2 = datetime.datetime(1970, 12, 31)
# studied period
dt1 = datetime.datetime(1980, 1, 1)
dt2 = datetime.datetime(2000, 12, 31)
out_f = "TG90p_AMJJAS_CNRM-CM5_historical_r1i1p1_1980-2000.nc" # OUTPUT FILE: summer half-year values of TG90p
icclim.index(
index_name="TG90p",
in_files=f,
var_name="tas",
slice_mode="AMJJAS",
time_range=[dt1, dt2],
base_period_time_range=[base_dt1, base_dt2],
out_file=out_f,
out_unit="%",
callback=callback.defaultCallback2,
)
Example 4: multivariable indices CD, CW, WD, WW#
f = "tas_day_CNRM-CM5_historical_r1i1p1_19010101-20001231.nc"
# base period
base_dt1 = datetime.datetime(1961, 1, 1)
base_dt2 = datetime.datetime(1970, 12, 31)
# studied period
dt1 = datetime.datetime(1980, 1, 1)
dt2 = datetime.datetime(2000, 12, 31)
out_f = "TG90p_AMJJAS_CNRM-CM5_historical_r1i1p1_1980-2000.nc" # OUTPUT FILE: summer half-year values of TG90p
icclim.index(
index_name="TG90p",
in_files=f,
var_name="tas",
slice_mode="AMJJAS",
time_range=[dt1, dt2],
base_period_time_range=[base_dt1, base_dt2],
out_file=out_f,
out_unit="%",
)
f = "tas_day_CNRM-CM5_historical_r1i1p1_19010101-20001231.nc"
# base period
base_dt1 = datetime.datetime(1961, 1, 1)
base_dt2 = datetime.datetime(1970, 12, 31)
# studied period
dt1 = datetime.datetime(1980, 1, 1)
dt2 = datetime.datetime(2000, 12, 31)
out_f = "TG90p_AMJJAS_CNRM-CM5_historical_r1i1p1_1980-2000.nc" # OUTPUT FILE: summer half-year values of TG90p
icclim.index(
index_name="TG90p",
in_files=f,
var_name="tas",
slice_mode="AMJJAS",
time_range=[dt1, dt2],
base_period_time_range=[base_dt1, base_dt2],
out_file=out_f,
out_unit="%",
callback=callback.defaultCallback2,
)
Multi index computation#
New in 5.1.0.
This feature allows you to compute multiple indices at the same time. This is just a shorthand to avoid writing your own for loop, there is no specific optimization done to group together similar operation.
Note
The input in_files
must include all the necessary variables to compute the indices.
You can bypass this by setting ignore_error=True.
In that case when icclim fails to compute an index it will simply be omitted in the result.
Compute every HEAT indices [SU, TR, WSDI, TG90p, TN90p, TX90p, TXx, TNx, CSU]#
bp = [datetime.datetime(1991, 1, 1), datetime.datetime(1999, 12, 31)]
tr = [datetime.datetime(1991, 1, 1), datetime.datetime(2010, 12, 31)]
# The file must include all necessary variable for HEAT indices i
file = "./netcdf_files/sampledata.1991-2010.nc"
res = icclim.indices(
index_group=IndexGroup.HEAT,
in_files=file,
base_period_time_range=bp,
time_range=tr,
out_file="heat_indices.nc",
)
Compute every indices#
bp = [datetime.datetime(1991, 1, 1), datetime.datetime(1999, 12, 31)]
tr = [datetime.datetime(1991, 1, 1), datetime.datetime(2010, 12, 31)]
file = "./netcdf_files/sampledata.1991-2010.nc"
res = icclim.indices(
index_group="all",
in_files=file,
base_period_time_range=bp,
time_range=tr,
out_file="heat_indices.nc",
)