Changelog#
Unreleased#
Release date: YYYY-MM-DD
Code freeze date: YYYY-MM-DD
Description#
Dependency Changes#
Removed:
pandas-datareader
Added#
Added instructions to install Climada petals on Euler cluster in
doc.guide.Guide_Euler.ipynb
#1029
Changed#
Hazard.local_exceedance_intensity
,Hazard.local_return_period
andImpact.local_exceedance_impact
,Impact.local_return_period
, using theclimada.util.interpolation
module: New default (no binning), binning on decimals, and faster implementation #1012World Bank indicator data is now downloaded directly from their API via the function
download_world_bank_indicator
, instead of relying on thepandas-datareader
package #1033
Fixed#
NaN plotting issues in ``geo_im_from_array```#1038 <CLIMADA-project/climada_python#1038>`_
Deprecated#
Removed#
climada.util.interpolation.round_to_sig_digits
#1012
6.0.1#
Release date: 2025-03-13
Fixed#
bug in
climada.util.coordinates.bounding_box_from_countries
occurring if the country is a polygon and not a multipolygon #1018
6.0.0#
Release date: 2025-03-03
Dependency Changes#
Added:
osm-flex
>=1.1
Updated:
cartopy
>=0.23 → >=0.24cfgrib
>=0.9.9,<0.9.10 → >=0.9dask
>=2024.2,<2024.3 → >=2025.2eccodes
>=2.27,<2.28 → >=2.40gdal
>=3.6 → >=3.10geopandas
>=0.14 → >=0.14,<1.0h5py
>=3.8 → >=3.12haversine
>=2.8 → >=2.9matplotlib-base
>=3.9 → >=3.10netcdf4
>=1.6 → >=1.7numba
>=0.60 → >=0.61pillow
=9.4 → =11.1pyproj
>=3.5 → >=3.7pytables
>=3.7 → >=3.10python
=3.9 → =3.11rasterio
>=1.3 → >=1.4scikit-learn
>=1.5 → >=1.6scipy
>=1.13 → >=1.14,<1.15tqdm
>=4.66 → >=4.67xarray
>=2024.6 → >=2025.1xlsxwriter
>=3.1 → >=3.2
Removed:
pyepsg
Added#
climada.hazard.tc_tracks.TCTracks.subset_years
function #1023climada.hazard.tc_tracks.TCTracks.from_FAST
function, add Australia basin (AU) #993Add
osm-flex
package to CLIMADA core #981doc.tutorial.climada_entity_Exposures_osm.ipynb
tutorial explaining how to use ``osm-flex``with CLIMADAclimada.util.coordinates.bounding_box_global
function #980climada.util.coordinates.bounding_box_from_countries
function #980climada.util.coordinates.bounding_box_from_cardinal_bounds
function #980climada.engine.impact.Impact.local_return_period
method #971doc.tutorial.climada_util_local_exceedance_values.ipynb
tutorial explainingHazard.local_exceedance_intensity
,Hazard.local_return_period
,Impact.local_exceedance_impact
, andImpact.local_return_period
methods #971Hazard.local_exceedance_intensity
,Hazard.local_return_period
andImpact.local_exceedance_impact
, that all use theclimada.util.interpolation
module #918climada.util.interpolation
module for inter- and extrapolation util functions used in local exceedance intensity and return period functions #930climada.exposures.exposures.Exposures.geometry
propertyclimada.exposures.exposures.Exposures.latitude
propertyclimada.exposures.exposures.Exposures.longitude
propertyclimada.exposures.exposures.Exposures.value
propertyclimada.exposures.exposures.Exposures.region_id
propertyclimada.exposures.exposures.Exposures.category_id
propertyclimada.exposures.exposures.Exposures.cover
propertyclimada.exposures.exposures.Exposures.hazard_impf
methodclimada.exposures.exposures.Exposures.hazard_centroids
method
Changed#
Centroids.append
now takes multiple arguments and provides a performance boost when doing so #989climada.util.coordinates.get_country_geometries
function: Now throwing a ValueError if unregognized ISO country code is given (before, the invalid ISO code was ignored) #980Improved scaling factors implemented in
climada.hazard.trop_cyclone.apply_climate_scenario_knu
to model the impact of climate changes to tropical cyclones #734In
climada.util.plot.geo_im_from_array
, NaNs are plotted in gray while cells with no centroid are not plotted #929Renamed
climada.util.plot.subplots_from_gdf
toclimada.util.plot.plot_from_gdf
#929Hazard.local_exceedance_inten
,Hazard.local_return_period
, andImpact.local_exceedance_imp
call the corresponding new functions and a deprecation warning is added #918. Some inconsistencies in the previous versions are removed and the default method is changed. To reconstruct results from the previous versions, use CLIMADA v5.0.0 or less.elements of
event_name
are now explicitly converted tostr
infrom_raster
,from_xarray_raster
,from_excel
andfrom_csv
. #951, #910event_id
andevent_name
are now explicitly converted to respectively anp.ndarray
(event_id
), alist
(event_name
) in readers. #951, #950Exposures complete overhaul. Notably
the geometry column of the inherent
GeoDataFrame
is set up at initializationlatitude and longitude column are no longer present there (the according arrays can be retrieved as properties of the Exposures object:
exp.latitude
instead ofexp.gdf.latitude.values
).Exposures.gdf
has been renamed toExposures.data
(it still works though, as it is a property now pointing to the latter)the
check
method does not add a default “IMPF_” column to the GeoDataFrame anymoreUpdated IBTrACS version from v4.0 to v4.1 (#976
Fix xarray future warning in TCTracks for .dims to .sizes
Fix hazard.concatenate type test for pathos pools
Fixed#
Resolved an issue where windspeed computation was much slower than in Climada v3 #989
File handles are being closed after reading netcdf files with
climada.hazard
modules #953Avoids a ValueError in the impact calculation for cases with a single exposure point and MDR values of 0, by explicitly removing zeros in
climada.hazard.Hazard.get_mdr
#933
Deprecated#
climada.hazard.trop_cyclone.trop_cyclone_windfields.compute_angular_windspeeds.cyclostrophic
argumentclimada.entity.exposures.Exposures.meta
attributeclimada.entity.exposures.Exposures.set_lat_lon
methodclimada.entity.exposures.Exposures.set_geometry_points
methodclimada.hazard.Hazard.local_exceedance_inten
methodclimada.hazard.Hazard.plot_rp_intensity
methodclimada.engine.impact.Impact.local_exceedance_imp
methodclimada.engine.impact.Impact.plot_rp_imp
method
5.0.0#
Release date: 2024-07-19
Dependency Changes#
Added:
bayesian-optimization
seaborn
>=0.13
Updated:
bottleneck
>=1.3 → >=1.4cartopy
>=0.22 → >=0.23contextily
>=1.5 → >=1.6dask
>=2024.1,<2024.3 → >=2024.2,<2024.3matplotlib-base
>=3.8 → >=3.9numba
>=0.59 → >=0.60numexpr
>=2.9 → >=2.10pint
>=0.23 → >=0.24pycountry
>=22.3 → >=24.6requests
>=2.31 → >=2.32salib
>=1.4 → >=1.5scikit-learn
>=1.4 → >=1.5scipy
>=1.12 → >=1.13xarray
>=2024.2 → >=2024.6
Added#
GitHub actions workflow for CLIMADA Petals compatibility tests #855
climada.util.calibrate
module for calibrating impact functions #692Method
Hazard.check_matrices
for bringing the stored CSR matrices into “canonical format” #893Generic s-shaped impact function via
ImpactFunc.from_poly_s_shape
#878climada.hazard.centroids.centr.Centroids.get_area_pixel
climada.hazard.centroids.centr.Centroids.get_dist_coast
climada.hazard.centroids.centr.Centroids.get_elevation
climada.hazard.centroids.centr.Centroids.get_meta
climada.hazard.centroids.centr.Centroids.get_pixel_shapes
climada.hazard.centroids.centr.Centroids.to_crs
climada.hazard.centroids.centr.Centroids.to_default_crs
climada.hazard.centroids.centr.Centroids.write_csv
climada.hazard.centroids.centr.Centroids.write_excel
climada.hazard.local_return_period #898
climada.util.plot.subplots_from_gdf #898
Changed#
Use Geopandas GeoDataFrame.plot() for centroids plotting function 896
Update SALib sensitivity and sampling methods from newest version (SALib 1.4.7) #828
Allow for computation of relative and absolute delta impacts in
CalcDeltaClimate
Remove content tables and make minor improvements (fix typos and readability) in CLIMADA tutorials. #872
Centroids complete overhaul. Most function should be backward compatible. Internal data is stored in a geodataframe attribute. Raster are now stored as points, and the meta attribute is removed. Several methds were deprecated or removed. #787
Improved error messages produced by
ImpactCalc.impact()
in case impact function in the exposures is not found in impf_set #863Update the Holland et al. 2010 TC windfield model and introduce
model_kwargs
parameter to adjust model parameters #846Changed module structure:
climada.hazard.Hazard
has been split into the modulesbase
,io
andplot
#871Ensure
csr_matrix
stored inclimada.hazard.Hazard
have consistent data format and store no explicit zeros when initializingImpactCalc
#893Impact.from_hdf5
now callsstr
onevent_name
data that is not strings, and issue a warning then #894Impact.write_hdf5
now throws an error ifevent_name
is does not contain strings exclusively #894Split
climada.hazard.trop_cyclone
module into smaller submodules without affecting module usage #911yearly_steps
parameter ofTropCyclone.apply_climate_scenario_knu
has been made explicit #991
Fixed#
Avoid an issue where a Hazard subselection would have a fraction matrix with only zeros as entries by throwing an error #866
Allow downgrading the Python bugfix version to improve environment compatibility #900
Fix broken links in
CONTRIBUTING.md
#900When writing
TCTracks
to NetCDF, only apply compression tofloat
orint
data types. This fixes a downstream issue, see climada_petals#135 #911
Deprecated#
climada.hazard.centroids.centr.Centroids.from_lat_lon
climada.hazard.centroids.centr.Centroids.def set_area_pixel
climada.hazard.centroids.centr.Centroids.def set_area_approx
climada.hazard.centroids.centr.Centroids.set_dist_coast
climada.hazard.centroids.centr.Centroids.empty_geometry_points
climada.hazard.centroids.centr.Centroids.set_meta_to_lat_lon
climada.hazard.centroids.centr.Centroids.set_lat_lon_to_meta
scheduler
parameter inclimada.util.coordinates.set_df_geometry_points
, as dask is not used anymore, leaving all calculation to shapely #912
Removed#
climada.hazard.base.Hazard.clear
climada.hazard.base.Hazard.from_mat
climada.hazard.base.Hazard.raster_to_vector
climada.hazard.base.Hazard.read_mat
climada.hazard.base.Hazard.reproject_raster
climada.hazard.base.Hazard.set_vector
climada.hazard.base.Hazard.vector_to_raster
climada.hazard.centroids.centr.Centroids.calc_pixels_polygons
climada.hazard.centroids.centr.Centroids.check
climada.hazard.centroids.centr.Centroids.clear
climada.hazard.centroids.centr.Centroids.equal
climada.hazard.centroids.centr.Centroids.from_mat
climada.hazard.centroids.centr.Centroids.from_base_grid
climada.hazard.centroids.centr.Centroids.read_excel
climada.hazard.centroids.centr.Centroids.read_hdf5
climada.hazard.centroids.centr.Centroids.read_mat
climada.hazard.centroids.centr.Centroids.set_elevation
climada.hazard.centroids.centr.Centroids.set_geometry_points
climada.hazard.centroids.centr.Centroids.set_lat_lon
climada.hazard.centroids.centr.Centroids.set_raster_file
climada.hazard.centroids.centr.Centroids.set_raster_from_pnt_bounds
climada.hazard.centroids.centr.Centroids.set_vector_file
climada.hazard.centroids.centr.Centroids.values_from_raster_files
climada.hazard.centroids.centr.Centroids.values_from_vector_files
climada.hazard.centroids.centr.generate_nat_earth_centroids
requirements/env_docs.yml
. The regular environment specs are now used to build the online documentation #687
4.1.1#
Release date: 2024-02-21
Fixed#
4.1.0#
Release date: 2024-02-14
Dependency Changes#
Added:
pyproj
>=3.5numexpr
>=2.9
Updated:
contextily
>=1.3 → >=1.5dask
>=2023 → >=2024numba
>=0.57 → >=0.59pandas
>=2.1 → >=2.1,<2.2pint
>=0.22 → >=0.23scikit-learn
>=1.3 → >=1.4scipy
>=1.11 → >=1.12sparse
>=0.14 → >=0.15xarray
>=2023.8 → >=2024.1overpy
=0.6 → =0.7peewee
=3.16.3 → =3.17.1
Removed:
proj
(in favor ofpyproj
)
Added#
Convenience method
api_client.Client.get_dataset_file
, combiningget_dataset_info
anddownload_dataset
, returning a single file objet. #821Read and Write methods to and from csv files for the
DiscRates
class. #818Add
CalcDeltaClimate
to unsequa module to allow uncertainty and sensitivity analysis of impact change calculations #844Add function
safe_divide
in util which handles division by zero and NaN values in the numerator or denominator #844Add reset_frequency option for the impact.select() function. #847
Changed#
Update Developer and Installation Guides for easier accessibility by new developers. 808
Add
shapes
argument togeo_im_from_array
to allow flexible turning on/off of plotting coastline inplot_intensity
. #805Update
CONTRIBUTING.md
to better explain types of contributions to this repository #797The default tile layer in Exposures maps is not Stamen Terrain anymore, but CartoDB Positron. Affected methods are
climada.engine.Impact.plot_basemap_eai_exposure
,``climada.engine.Impact.plot_basemap_impact_exposure`` andclimada.entity.Exposures.plot_basemap
. #798Recommend using Mamba instead of Conda for installing CLIMADA #809
Hazard.from_xarray_raster
now allows arbitrary values as ‘event’ coordinates #837climada.test.get_test_file
now compares the version of the requested test dataset with the version of climada itself and selects the most appropriate dataset. In this way a test file can be updated without the need of changing the code of the unittest. #822Explicitly require
pyproj
instead ofproj
(the latter is now implicitly required) #845
Fixed#
Hazard.from_xarray_raster
now stores strings as default values forHazard.event_name
#795Fix the dist_approx util function when used with method=”geosphere” and log=True and points that are very close. #792
climada.util.yearsets.sample_from_poisson: fix a bug ([#819](CLIMADA-project/climada_python#819)) and inconsistency that occurs when lambda events per year (
lam
) are set to 1. [#823]In the TropCyclone class in the Holland model 2008 and 2010 implementation, a doublecounting of translational velocity is removed #833
climada.util.test.test_finance
andclimada.test.test_engine
updated to recent input data from worldbank #841Set
nodefaults
in Conda environment specs becausedefaults
are not compatible with conda-forge #845Avoid redundant calls to
np.unique
inImpact.impact_at_reg
#848
4.0.1#
Release date: 2023-09-27
Dependency Changes#
Added:
matplotlib-base
None → >=3.8
Changed:
geopandas
>=0.13 → >=0.14pandas
>=1.5,<2.0 → >=2.1salib
>=1.3.0 → >=1.4.7
Removed:
matplotlib
>=3.7
Changed#
Rearranged file-system structure:
data
directory moved intoclimada
package directory. #781
Fixed#
climada.util.coordinates.get_country_code
bug, occurring with non-standard longitudinal coordinates around the anti-meridian. #770
4.0.0#
Release date: 2023-09-01
Dependency Updates#
Added:
Changed:
cartopy
>=0.20.0,<0.20.3 → >=0.21cfgrib
>=0.9.7,<0.9.10 → =0.9.9contextily
>=1.0 → >=1.3dask
>=2.25 → >=2023eccodes
[auto] → =2.27gdal
!=3.4.1 → >=3.6geopandas
>=0.8 → >=0.13h5py
>=2.10 → >=3.8haversine
>=2.3 → >=2.8matplotlib
>=3.2,< 3.6 → >=3.7netcdf4
>=1.5 → >=1.6numba
>=0.51,!=0.55.0 → >=0.57openpyxl
>=3.0 → >=3.1pandas-datareader
>=0.9 → >=0.10pathos
>=0.2 → >=0.3pint
>=0.15 → >=0.22proj
!=9.0.0 → >=9.1pycountry
>=20.7 → >=22.3pytables
>=3.6 → >=3.7rasterio
>=1.2.7,<1.3 → >=1.3requests
>=2.24 → >=2.31salib
>=1.3.0 → >=1.4scikit-learn
>=1.0 → >=1.2scipy
>=1.6 → >=1.10sparse
>=0.13 → >=0.14statsmodels
>=0.11 → >=0.14tabulate
>=0.8 → >=0.9tqdm
>=4.48 → >=4.65xarray
>=0.13 → >=2023.5xlrd
>=1.2 → >=2.0xlsxwriter
>=1.3 → >=3.1
Removed:
Added#
Impact.impact_at_reg
method for aggregating impacts per country or custom region #642Impact.match_centroids
convenience method for matching (hazard) centroids to impact objects #602climada.util.coordinates.match_centroids
method for matching (hazard) centroids to GeoDataFrames #602‘Extra’ requirements
doc
,test
, anddev
for Python package #712Added method
Exposures.centroids_total_value
to replace the functionality ofExposures.affected_total_value
. This method is temporary and deprecated. #702New method
climada.util.api_client.Client.purge_cache
: utility function to remove outdated files from the local file system to free disk space. (#737)New attribute climada.hazard.Hazard.haz_type: used for assigning impacts to hazards. In previous versions this information was stored in the now removed climada.hazard.tag.Tag class. [#736](CLIMADA-project/climada_python#736)
New attribute climada.entity.exposures.Exposures.description: used for setting the default title in plots from plotting mathods plot_hexbin and plot_scatter. In previous versions this information was stored in the deprecated climada.entity.tag.Tag class. [#756](CLIMADA-project/climada_python#756)
Added advanced examples in unsequa tutorial for coupled input variables and for handling efficiently the loading of multiple large files #766
Changed#
Improved error messages from
climada.CONFIG
in case of missing configuration values #670Refactored
Exposure.assign_centroids
using a new util functionu_coord.match_centroids
#602Renamed
climada.util.coordinate.assign_grid_points
tomatch_grid_points
andclimada.util.coordinates.assign_coordinates
tomatch_coordinates
#602Modified the method to disaggregate lines in the
lines_polys_handler
utility module in order to better conserve the total length of all lines on average #679.Added test for non-default impact function id in the
lines_polys_handler
#676The sigmoid and step impact functions now require the user to define the hazard type. #675
Improved error messages produced by
ImpactCalc.impact()
in case hazard type is not found in exposures/impf_set #691Tests with long runtime were moved to integration tests in
climada/test
#709Use
myst-nb
for parsing Jupyter Notebooks for the documentation instead ofnbsphinx
#712Installation guide now recommends installing CLIMADA directly via
conda install
#714Exposures.affected_total_value
now takes a hazard intensity threshold as argument. Affected values are only those for which at least one event exceeds the threshold. (previously, all exposures points with an assigned centroid were considered affected). By default the centroids are reassigned. #702 #730Add option to pass region ID to
LitPop.from_shape
#720Slightly improved performance on
LitPop
-internal computations #720Use
pytest
for executing tests #726Users can opt-out of the climada specific logging definitions and freely configure logging to their will, by setting the config value
logging.managed
tofalse
. #724Add option to read additional variables from IBTrACS when using
TCTracks.from_ibtracs_netcdf
#728New file format for
TCTracks
I/O with better performance. This change is not backwards compatible: If you storedTCTracks
objects withTCTracks.write_hdf5
, reload the original data and store them again. #735Add option to load only a subset when reading TC tracks using
TCTracks.from_simulations_emanuel
. #741Set
save_mat
toFalse
in theunsequa
module #746list_dataset_infos
from climada.util.api_client.Client: the properties argument, a dict, can now have None as values. Before, only strings and lists of strings were allowed. Setting a particular property to None triggers a search for datasets where this property is not assigned. [#752](CLIMADA-project/climada_python#752)Reduce memory requirements of
TropCyclone.from_tracks
#749Support for different wind speed and pressure units in
TCTracks
when runningTropCyclone.from_tracks
#749The title of plots created by the
Exposures
methodsplot_hexbin
andplot_scatter
can be set as a method argument. #756Changed the parallel package from Pathos to Multiproess in the unsequa module #763
Updated installation instructions to use conda for core and petals #776
Fixed#
util.lines_polys_handler
solve polygon disaggregation issue in metre-based projection #666Problem with
pyproj.CRS
asImpact
attribute, #706. Now CRS is always stored asstr
in WKT format.Correctly handle assertion errors in
Centroids.values_from_vector_files
and fix the associated test #768Text in
Forecast
class plots can now be adjusted #769Impact.impact_at_reg
now supports impact matrices where all entries are zero #773upgrade pathos 0.3.0 -> 0.3.1 issue #761 (for unsequa module #763)
Fix bugs with pandas 2.0 (iteritems -> items, append -> concat) (fix issue #700 for unsequa module) #763)
Remove matplotlib styles in unsequa module (fixes issue #758) #763
Deprecated#
Centroids.from_geodataframe
andCentroids.from_pix_bounds
#721Impact.tot_value: Use Exposures.affected_total_value to compute the total value affected by a hazard intensity above a custom threshold [#702](CLIMADA-project/climada_python#702)
climada.entity.tag.Tag
. #779. The class is not used anymore but had to be kept for reading Exposures HDF5 files that were created with previous versions of CLIMADA.
Removed#
Centroids.set_raster_from_pix_bounds
#721requirements/env_developer.yml
environment specs. Use ‘extra’ requirements when installing the Python package instead #712The
climada.entitity.tag.Tag
class, together withImpact.tag
,Exposures.tag
,ImpactFuncSet.tag
,MeasuresSet.tag
,Hazard.tag
attributes. This may break backwards-compatibility with respect to the files written and read by theImpact
class. #736, #743, #753, #754, #756, #767, #779impact.tot_value
attribute removed from unsequa module #763
v3.3.2#
Release date: 2023-03-02
Dependency Updates#
Removed:
pybufrkit
#662
v3.3.1#
Release date: 2023-02-27
Description#
Patch-relaese with altered base config file so that the basic installation test passes.
Changed#
The base config file
climada/conf/climada.conf
has an entry forCONFIG.hazard.test_data
.
v3.3.0#
Release date: 2023-02-17
Dependency Changes#
new:
sparse (>=0.13) for #578
updated:
python 3.9 - python 3.8 will still work, but python 3.9 is now the default version for installing climada (#614)
contextily >=1.0 (no longer restricted to <1.2 as
contextily.sources
has been replaced in #517)cartopy >=0.20.0,<0.20.3 (>=0.20.3 has an issue with geographic crs in plots)
matplotlib >=3.2,<3.6 (3.6 depends on cartopy 0.21)
Added#
climada.hazard.Hazard.from_xarray_raster(_file)
class methods for readingHazard
objects from anxarray.Dataset
, or from a file that can be read byxarray
. #507, #589, #652.climada.engine.impact.Impact
objects have new methodsfrom_hdf5
andwrite_hdf5
for reading their data from, and writing it to, H5 files #606climada.engine.impact.Impact
objects has a new class methodconcat
for concatenation of impacts based on the same exposures #529.climada.engine.impact_calc: this module was separated from climada.engine.impact and contains the code that dealing with impact _calculation_ while the latter focuses on impact _data_ [#560](CLIMADA-project/climada_python#560).
The classes
Hazard
,Impact
andImpactFreqCurve
have a novel attributefrequency_unit
. Before it was implicitly set to annual, now it can be specified and accordingly displayed in plots. #532.CONTRIBUTING.md #518.
Changelog based on the CLIMADA release overview and https://keepachangelog.com template #626.
Changed#
The
Impact
calculation underwent a major refactoring. Now the suggested way to run an impact calculation is byclimada.engine.impact_calc.ImpactCalc.impact()
. #436, #527.Addition of uncertainty helper methods variables: list of hazard, list of impact function sets, and hazard fraction. This allows to pre-compute hazards or impact function sets from different sources from which one can then sample uniformly. #513
Full initialization of most Climada objects is now possible (and suggested!) in one step, by simply calling the constructor with all arguments required for coherently filling the object with data: #560, #553, #550, #564, #563, #565, #573, #569, #570, #574, #559, #571, #549, #567, #568, #562.
It is possible now to set the
fraction
of aHazard
object toNone
which will have the same effect as if it were1
everywhere. This saves a lot of memory and calculation time, #541.The online documentation has been completely overhauled: #597, #600, #609, #620, #615, #617, #622, #656.
Updated installation instructions #644
Fixed#
Deprecated#
climada.enginge.impact.Impact.calc()
andclimada.enginge.impact.Impact.calc_impact_yearset()
#436.