Wavespectra is an open source project that was started at MetOcean Solutions and open sourced in April 2018. In July 2019 it was moved into the wavespectra github open source organisation and transitioned into a fully community developed project. This changelog covers the release history since v3.0 when wavespectra was open-sourced.
Changes to all netcdf- and zarr-based, and some ascii-based reader functions to allow providing file objects. This allows reading from remote files without downloading them first, e.g. from Google Cloud Storage or AWS S3 by providing a fsspec file object. By Matthew Iannucci (PR92).
Replace deprecated date_parser argument in pandas.read_csv calls by date_format (GH44).
This release adds deprecation warnings to functions and modules that will be removed or redesigned in the next major release.
Fix reading of gzipped swan ascii files.
Add deprecation warnings to prepare for the next major release.
Redefine packaging via pyproject.toml to conform to PEP517/518 (PR77).
All packaging metadata removed from setup.py and moved to pyproject.toml. The setup.py file is now only used to build the Fortran module.
Removed the MANIFEST.in file, package data now handled in pyproject.toml.
Removed the requirements folder, requirements now handled in pyproject.toml.
Removed some packaging attributes from wavespectra.__init__.py, now handled in pyproject.toml.
Replace docs the RTD by the PYDATA docs theme, this fixes issue with rtd not working with sphinx>=7.0.
Add readthedocs config.
New github action to test and publish package on new releases.
Replace previous NDBC ASCII reader read_ndbc by read_ndbc_ascii.
Improve installation section in the docs to mention pre-install requirements of numpy and Fortran compiler.
Fix bug caused by fixed numpy version (PR72).
Import Fortran partition code inside function so the library can still be imported if the module does not build.
Remove Hypothesis from requirements.
Only interpolate with inverse distance weighting if 2 or more neighbour sites are found within tolerance (PR62).
Allow pathlib objects in read_swan (PR64).
Increase float precision in Octopus writer.
Make zarr, fsspec and gcsfs extra dependencies instead of default.
Remove get_mapper call from zarr opener.
New option in read_triaxys to allow providing the magnitic declination to correct.
New spectral regridding capability by RubendeBruin. The function is wrapped in SpecArray.interp and SpecArray.interp_by which mimic the behaviour in the respective counterparts from xarray.
Replace plot api by a simple wrapper around xarray plotting capability. The new wrapper no longer duplicate internal functions from xarray and should better integrate any upstream changes. The new api also handles logarithmic axes and masking in a more natural way (PR48).
New wavespectra.core.utils.unique_indices function (unique_times will be deprecated in future releases.
Fix plot bug with the new plot api (GH44).
Fix bug in scale_by_hs when run on dask datasets.
Calling the plot kind as a method from SpecArray.plot, e.g. SpecArray.plot.contourf is deprecated with the new plotting api. Now kind needs to be provided as an argument.
Arguments show_radius_label and show_direction_label are deprecated from SpecArray.plot. Labels are no longer drawn as they fall on top of ticks. In order to show it the axes properties now must be manually defined from the axis.
Argument as_log10 from the old plot api to plot the log10(efth) is deprecated in the new api. Similar result can be achieved in the new api by manually converting efth before plotting.
Remove deprecated methods _strictly_increasing and _collapse_array.
Add numba to setup.py, not installed properly from requirements/default.txt for some reason.
Core watershed partitioning code organised into watershed module.
max_swells replaced by swells in watershed partition to return fixed number of swells.
Renamed module wavespectra.core.misc by wavespectra.core.utils.
Removed deprecated method _same_dims, _inflection and _product from SpecArray.
Get rid of simpy dependency.
New daskable stats defined as ufuncs using numba.
SpecArray attributes redefined as property methods.
Drop support for python < 3.7
Dropped args hs_min and nearest in SpecArray.partition.
Stop fixing pandas and xarray versions.
Remove attrdict dependency.
Define _FillValue in to_netcdf.
New json reader and writer (PR21).
Raise exception when trying to compute directional methods on 1d, frequency spectra.
Fix bug in sel methods.
Ensure yml config is shipped with distribution.
Increase time resolution in netcdf outptu from to_netcdf.
Make netcdf packing work for datasets in zarr format.
Packing output netcdf files as int32 dtype by default.
New method to construct spectra from NDBC buoy data (PR17).
New method to output spectra in native WW3 format.
Fix bug with selecting circular longitudes in different conventions (GH20).
Ensure directions in coming-from convention in read_era5 (PR18).
Fix radian convertions in read_era5 (PR19).
Fix coordinate values assignment errors with xarray>=0.15.1 (GH16).
Ensure coordinates attributes are kept with certain readers.
Remove curly brackets from units.
Remove original variable attributes from files hidden with underscores (_units and _variable_name).
Remove xarray version limitation to <0.15.0.
Fix xarray version until breaking changes with 0.15.1 are taken care of.
Avoid index duplication when merging datasets in to_octopus function.
Fix xarray at 0.15.0 for now as 0.15.1 introduces many breaking changes.
Import accessors within try block in __init__.py so install won’t break.
Added some more tests.
The first PyPI release from new wavespectra github organisation.
Drop support for Python 2.
Drop support for Python < 3.6.
Add method in SpecDataset accessor to plot polar wave spectra, api borrowed from xarray.
New sel method in SpecDataset accessor to select sites using different methods.
Support for zarr wave spectra datasets from either local or remote sources.
New read_spotter function to read spectra from Spotter file format, currently only reading as 1D.
Add read_dataset function to convert existing dataset from unknown file into SpecDataset.
New branch pure-python with fortran watershed algorithm replaced by python. This code is ~3x slower than the fortran one but it is easier to install particularly if the system does not have fortran compiler. We will make an effort to keep this branch in sync with Master.
Consolidate history to link to github commits from all contributors.
Fix error in partition with dask array not supportting item assignment.
Fix docs building, currently working from pure-python branch due to gfortran dependency.
Decouple file reading from accessor definition in input functions so existing datasets can be converted.
Compute method _twod lazily.
Replace drop calls to fix deprecation warnings.
Consolidate changelog in history file.
Building with travis and tox.
Adopt black code formatting.
Set up flake8.
The last PyPI release from old metocean github organisation.
Add support to Python 3.
Support SWAN Cartesian locations.
Support energy unit in SWAN ASCII spectra.
Add dircap_270 option in read_swan.
Ensure lazy computations in swe method.
Remove inplace calls that will deprecate in xarray.
Ensure datasets are loaded lazily in read_swan and read_wwm.
Fix tp-smooth bug caused by float32 dtype.
Function read_triaxys to read spectra from TRIAXYS file format.
Fix bug with frequency and energy units in read_wwm.
Ensure dataset from swan netcdf has site coordinate.
Function read_wwm to read spectra from WWM model format.
Convert direction to degree in read_ncswan.
Function read_ncswan to read spectra from SWAN netcdf model format.
Ensure lazy computation in uv_to_spddir.
Unify library PyPI release versions.
Fix bug in read_swans when handling swan bnd files with ntimes argument.
Use 10m convention in default wind standard names.
Adjust default standard name for dm.
Fix renaming option in stats method.
Allow choosing maximum number of partitions in partition method.
Function to read spectra in cf-json formatting.
Fix but in read_swan when files have no timestamp.
Ensure data is not loaded into memory in read_ww3.
Method read_dictionary to define SpecDataset from python dictionary.
Set pytest as the testing framework and add several new testings.
Get rid of left over freq coordinate in hs method.
Fix calculation in _peak method.
Stop misleading warning in tp method.
Fix to hs method.
Replace obsolete sort method by xarray’s sortby.
Falster calculation in tp.
Improvements to SpecDataset wrapper.
This major release marks the migration from the predecessor `pyspectra`** library, as well as the open-sourcing of wavespectra and first PyPI release.**
Library restructured with plugins input / output modules .
New _peak method to return the true peak instead of the maxima.
Making reading functions available at module level.
Ensure slicing won’t break due to precision (xarray bug).