Skip to content

Release 0.2.7

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Nov 19:49
· 0 commits to 11daadfdf8e7de548a2b9668272811945f392876 since this release

[0.2.7] - 2023-11-24

Changed

  • The Quickstart tutorial has been updated.
  • The property Field.ndim has now been moved into Field.domain.ndim, as it is fundamentally a property of the domain
  • The init_params function now will inherit the default parameters from its operator, to remove any source of ambiguity. This means that it should not have any default values, and an error is raised if it does.

Removed

  • The __about__ file has been removed, as it is redundant
  • The function params_map is removed, use jax.tree_util.tree_map instead.
  • Operators are now expected to return only their outputs, and not parameters. If you need to get the parameters of an operator use its default_params method. To minimize problems for packages relying on jaxdf, in this release the outputs of an operator are filtered to keep only the first one. This will change soon to allow the user to return arbitrary PyTrees.

Added

  • JaxDF Fields are now based on equinox. In theory, this should allow to use jaxdf with all the scientific libraries for the jax ecosystem. In practice, please raise an issue when you encounter one of the inevitable bugs :)
  • The new operator.abstract decorator can be used to define an unimplemented operator, for specifying input arguments and docstrings.
  • Linear fields are now defined as equal if they have the same set of parameters and the same Domain.
  • Ongrid fields now have the method .add_dim(), which adds an extra tailing dimension to its parameters. This is not an in-place update: the method returns a new field.
  • The function jaxdf.util.get_implemented is now exposed to the user.
  • Added laplacian operator for FiniteDifferences fields.
  • JaxDF now uses standard Python logging. To set the logging level, use jaxdf.logger.set_logging_level, for example jaxdf.logger.set_logging_level("DEBUG"). The default level is INFO.
  • Fields have now a handy property which is an alias for .params
  • Continuous and Linear fields now have the .is_complex property
  • Field and Domain are now Moduless, which are based on from equinox.Module. They are entirely equivalent to equinox.Module, but have the extra .replace method that is used to update a single field.

Deprecated

  • The property .is_field_complex is now deprecated in favor of .is_complex. Same goes for .is_real.
  • Field.get_field is now deprecated in favor of the __call__ method.
  • The @discretization decorator is deprecated, as now Fields are equinox modules. It is just not needed now, and until removed it will act as a simple pass-trough

Fixed

  • OnGrid.from_grid now automatically adds a dimension at the end of the array for scalar fields, if needed
  • Added a custom operator for equinox.internal._omega._Metaω objects and Fields, which makes the library compatible with diffrax