Changelog#

4.1.0#

Release date: 2024-02-14

Fixed#

  • Fix util.coordinates.latlon_bounds for cases where the specified buffer is very large so that the bounds cover more than the full longitudinal range [-180, 180] #839

  • Fix climada.hazard.trop_cyclone for TC tracks crossing the antimeridian #839

4.1.0#

Release date: 2024-02-14

Dependency Changes#

Added:

  • pyproj >=3.5

  • numexpr >=2.9

Updated:

  • contextily >=1.3 → >=1.5

  • dask >=2023 → >=2024

  • numba >=0.57 → >=0.59

  • pandas >=2.1 → >=2.1,<2.2

  • pint >=0.22 → >=0.23

  • scikit-learn >=1.3 → >=1.4

  • scipy >=1.11 → >=1.12

  • sparse >=0.14 → >=0.15

  • xarray >=2023.8 → >=2024.1

  • overpy =0.6 → =0.7

  • peewee =3.16.3 → =3.17.1

Removed:

  • proj (in favor of pyproj)

Added#

  • Convenience method api_client.Client.get_dataset_file, combining get_dataset_info and download_dataset, returning a single file objet. #821

  • Read and Write methods to and from csv files for the DiscRates class. #818

  • Add CalcDeltaClimate to unsequa module to allow uncertainty and sensitivity analysis of impact change calculations #844

  • Add function safe_divide in util which handles division by zero and NaN values in the numerator or denominator #844

  • Add 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 to geo_im_from_array to allow flexible turning on/off of plotting coastline in plot_intensity. #805

  • Update CONTRIBUTING.md to better explain types of contributions to this repository #797

  • The 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 and climada.entity.Exposures.plot_basemap. #798

  • Recommend using Mamba instead of Conda for installing CLIMADA #809

  • Hazard.from_xarray_raster now allows arbitrary values as ‘event’ coordinates #837

  • climada.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. #822

  • Explicitly require pyproj instead of proj (the latter is now implicitly required) #845

Fixed#

  • Hazard.from_xarray_raster now stores strings as default values for Hazard.event_name #795

  • Fix 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) 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 and climada.test.test_engine updated to recent input data from worldbank #841

  • Set nodefaults in Conda environment specs because defaults are not compatible with conda-forge #845

  • Avoid redundant calls to np.unique in Impact.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.14

  • pandas >=1.5,<2.0 → >=2.1

Removed:

  • matplotlib >=3.7

Changed#

  • Rearranged file-system structure: data directory moved into climada 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:

  • pytest #726

  • pytest-cov #726

  • pytest-subtests #726

  • unittest-xml-reporting

Changed:

  • cartopy >=0.20.0,<0.20.3 → >=0.21

  • cfgrib >=0.9.7,<0.9.10 → =0.9.9

  • contextily >=1.0 → >=1.3

  • dask >=2.25 → >=2023

  • eccodes [auto] → =2.27

  • gdal !=3.4.1 → >=3.6

  • geopandas >=0.8 → >=0.13

  • h5py >=2.10 → >=3.8

  • haversine >=2.3 → >=2.8

  • matplotlib >=3.2,< 3.6 → >=3.7

  • netcdf4 >=1.5 → >=1.6

  • numba >=0.51,!=0.55.0 → >=0.57

  • openpyxl >=3.0 → >=3.1

  • pandas-datareader >=0.9 → >=0.10

  • pathos >=0.2 → >=0.3

  • pint >=0.15 → >=0.22

  • proj !=9.0.0 → >=9.1

  • pycountry >=20.7 → >=22.3

  • pytables >=3.6 → >=3.7

  • rasterio >=1.2.7,<1.3 → >=1.3

  • requests >=2.24 → >=2.31

  • salib >=1.3.0 → >=1.4

  • scikit-learn >=1.0 → >=1.2

  • scipy >=1.6 → >=1.10

  • sparse >=0.13 → >=0.14

  • statsmodels >=0.11 → >=0.14

  • tabulate >=0.8 → >=0.9

  • tqdm >=4.48 → >=4.65

  • xarray >=0.13 → >=2023.5

  • xlrd >=1.2 → >=2.0

  • xlsxwriter >=1.3 → >=3.1

Removed:

Added#

  • Impact.impact_at_reg method for aggregating impacts per country or custom region #642

  • Impact.match_centroids convenience method for matching (hazard) centroids to impact objects #602

  • climada.util.coordinates.match_centroids method for matching (hazard) centroids to GeoDataFrames #602

  • ‘Extra’ requirements doc, test, and dev for Python package #712

  • Added method Exposures.centroids_total_value to replace the functionality of Exposures.affected_total_value. This method is temporary and deprecated. #702

  • New 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

  • 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

  • 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 #670

  • Refactored Exposure.assign_centroids using a new util function u_coord.match_centroids #602

  • Renamed climada.util.coordinate.assign_grid_points to match_grid_points and climada.util.coordinates.assign_coordinates to match_coordinates #602

  • Modified 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 #676

  • The 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 #691

  • Tests with long runtime were moved to integration tests in climada/test #709

  • Use myst-nb for parsing Jupyter Notebooks for the documentation instead of nbsphinx #712

  • Installation guide now recommends installing CLIMADA directly via conda install #714

  • Exposures.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 #730

  • Add option to pass region ID to LitPop.from_shape #720

  • Slightly improved performance on LitPop-internal computations #720

  • Use pytest for executing tests #726

  • Users can opt-out of the climada specific logging definitions and freely configure logging to their will, by setting the config value logging.managed to false. #724

  • Add option to read additional variables from IBTrACS when using TCTracks.from_ibtracs_netcdf #728

  • New file format for TCTracks I/O with better performance. This change is not backwards compatible: If you stored TCTracks objects with TCTracks.write_hdf5, reload the original data and store them again. #735

  • Add option to load only a subset when reading TC tracks using TCTracks.from_simulations_emanuel. #741

  • Set save_mat to False in the unsequa module #746

  • list_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

  • Reduce memory requirements of TropCyclone.from_tracks #749

  • Support for different wind speed and pressure units in TCTracks when running TropCyclone.from_tracks #749

  • The title of plots created by the Exposures methods plot_hexbin and plot_scatter can be set as a method argument. #756

  • Changed 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 #666

  • Problem with pyproj.CRS as Impact attribute, #706. Now CRS is always stored as str in WKT format.

  • Correctly handle assertion errors in Centroids.values_from_vector_files and fix the associated test #768

  • Text in Forecast class plots can now be adjusted #769

  • Impact.impact_at_reg now supports impact matrices where all entries are zero #773

  • upgrade 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 and Centroids.from_pix_bounds #721

  • Impact.tot_value: Use Exposures.affected_total_value to compute the total value affected by a hazard intensity above a custom threshold #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 #721

  • requirements/env_developer.yml environment specs. Use ‘extra’ requirements when installing the Python package instead #712

  • The climada.entitity.tag.Tag class, together with Impact.tag, Exposures.tag, ImpactFuncSet.tag, MeasuresSet.tag, Hazard.tag attributes. This may break backwards-compatibility with respect to the files written and read by the Impact class. #736, #743, #753, #754, #756, #767, #779

  • impact.tot_value attribute removed from unsequa module #763

v3.3.2#

Release date: 2023-03-02

Dependency Updates#

Removed:

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 for CONFIG.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 reading Hazard objects from an xarray.Dataset, or from a file that can be read by xarray. #507, #589, #652.

  • climada.engine.impact.Impact objects have new methods from_hdf5 and write_hdf5 for reading their data from, and writing it to, H5 files #606

  • climada.engine.impact.Impact objects has a new class method concat 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.

  • The classes Hazard, Impact and ImpactFreqCurve have a novel attribute frequency_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 by climada.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 a Hazard object to None which will have the same effect as if it were 1 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#

  • several antimeridian issues: #524, #551, #613.

  • bug in climada.hazard.Centroids.set_on_land() when coordinates go around the globe: #542, #543.

  • bug in climada.util.coordinates.get_country_code() when all coordinates are on sea.

  • suppress pointless warnings in plotting functions, #520.

  • test coverage improved: #583, #594, #608, #616, #637.

  • deprecated features removoed: #517, #535, #566,

Deprecated#

  • climada.enginge.impact.Impact.calc() and climada.enginge.impact.Impact.calc_impact_yearset() #436.