Release date: YYYY-MM-DD
Code freeze date: YYYY-MM-DD
Hazard.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
- Improved scaling factors implemented in
climada.hazard.trop_cyclone.apply_climate_scenario_knu
to model the impact of climate changes to tropical cyclones #734 - In
climada.util.plot.geo_im_from_array
, NaNs are plotted in gray while cells with no centroid are not plotted #929 - Renamed
climada.util.plot.subplots_from_gdf
toclimada.util.plot.plot_from_gdf
#929 Hazard.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.- Exposures complete overhaul. Notably
- the geometry column of the inherent
GeoDataFrame
is set up at initialization - latitude 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 anymore
- the geometry column of the inherent
- File handles are being closed after reading netcdf files with
climada.hazard
modules #953 - Avoids 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
climada.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
Release date: 2024-07-19
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
- GitHub actions workflow for CLIMADA Petals compatibility tests #855
climada.util.calibrate
module for calibrating impact functions #692- Method
Hazard.check_matrices
for bringing the stored CSR matrices into "canonical format" #893 - Generic s-shaped impact function via
ImpactFunc.from_poly_s_shape
#878 - climada.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
- 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 #863 - Update the Holland et al. 2010 TC windfield model and introduce
model_kwargs
parameter to adjust model parameters #846 - Changed module structure:
climada.hazard.Hazard
has been split into the modulesbase
,io
andplot
#871 - Ensure
csr_matrix
stored inclimada.hazard.Hazard
have consistent data format and store no explicit zeros when initializingImpactCalc
#893 Impact.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 #894- Split
climada.hazard.trop_cyclone
module into smaller submodules without affecting module usage #911
- 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
#900 - When writing
TCTracks
to NetCDF, only apply compression tofloat
orint
data types. This fixes a downstream issue, see climada_petals#135 #911
- 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
- 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
Release date: 2024-02-21
- 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
Release date: 2024-02-14
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
)
- Convenience method
api_client.Client.get_dataset_file
, combiningget_dataset_info
anddownload_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
- 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
. #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
andclimada.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 #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. #822- Explicitly require
pyproj
instead ofproj
(the latter is now implicitly required) #845
Hazard.from_xarray_raster
now stores strings as default values forHazard.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
andclimada.test.test_engine
updated to recent input data from worldbank #841- Set
nodefaults
in Conda environment specs becausedefaults
are not compatible with conda-forge #845 - Avoid redundant calls to
np.unique
inImpact.impact_at_reg
#848
Release date: 2023-09-27
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
- Rearranged file-system structure:
data
directory moved intoclimada
package directory. #781
climada.util.coordinates.get_country_code
bug, occurring with non-standard longitudinal coordinates around the anti-meridian. #770
Release date: 2023-09-01
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:
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 #712 - Added method
Exposures.centroids_total_value
to replace the functionality ofExposures.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 removedclimada.hazard.tag.Tag
class. #736 - New attribute
climada.entity.exposures.Exposures.description
: used for setting the default title in plots from plotting mathodsplot_hexbin
andplot_scatter
. In previous versions this information was stored in the deprecatedclimada.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
- Improved error messages from
climada.CONFIG
in case of missing configuration values #670 - Refactored
Exposure.assign_centroids
using a new util functionu_coord.match_centroids
#602 - Renamed
climada.util.coordinate.assign_grid_points
tomatch_grid_points
andclimada.util.coordinates.assign_coordinates
tomatch_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 ofnbsphinx
#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
tofalse
. #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 storedTCTracks
objects withTCTracks.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
toFalse
in theunsequa
module #746 list_dataset_infos
fromclimada.util.api_client.Client
: theproperties
argument, adict
, can now haveNone
as values. Before, only strings and lists of strings were allowed. Setting a particular property toNone
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 runningTropCyclone.from_tracks
#749 - The title of plots created by the
Exposures
methodsplot_hexbin
andplot_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
util.lines_polys_handler
solve polygon disaggregation issue in metre-based projection #666- Problem 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 #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
Centroids.from_geodataframe
andCentroids.from_pix_bounds
#721Impact.tot_value
: UseExposures.affected_total_value
to compute the total value affected by a hazard intensity above a custom threshold #702climada.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.
Centroids.set_raster_from_pix_bounds
#721requirements/env_developer.yml
environment specs. Use 'extra' requirements when installing the Python package instead #712- The
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, #779 impact.tot_value
attribute removed from unsequa module #763
Release date: 2023-03-02
Removed:
pybufrkit
#662
Release date: 2023-02-27
Patch-relaese with altered base config file so that the basic installation test passes.
- The base config file
climada/conf/climada.conf
has an entry forCONFIG.hazard.test_data
.
Release date: 2023-02-17
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)
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 fromclimada.engine.impact
and contains the code that dealing with impact calculation while the latter focuses on impact data #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.
- 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
- 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,
climada.enginge.impact.Impact.calc()
andclimada.enginge.impact.Impact.calc_impact_yearset()
#436.