Releases: emsig/empymod
El. current density
pyproject.toml
Small maintenance release:
- Update credits to reflect current situation.
- Changed from
setup.py
topyproject.toml
. - Some maintenance in tests and docs.
- Small modifications to the kernel.
NumPy v2
The code is now compatible with NumPy v2.
-
Gallery Update Part I:
- Update for Jupyterlab (ipympl/widget)
- Replaced implicit by explicit pyplots
- Use by default a positiv z-upwards coordinate system
- Part I: frequency domain; reproducing; published
-
Bumped the minimum requirements to:
- Python 3.10
- SciPy 1.10
- Numba, libdlf, scooby (without minimum version)
-
Maintenance:
- Testing: dropped Python 3.9 (Python 3.13 not added yet).
- Update for NumPy v2: mainly
np.infty -> np.inf
,np.float_ -> np.float64
. - Some fixes to address warnings regarding the deprecated conversion of an array with ndim > 0 to a scalar.
Julia wrapper
- @ruboerner created a Julia wrapper for empymod! Added a note in this regard to the README and the installation instructions.
- Small maintenance things and doc improvements.
libdlf and scooby
The digital linear filters are outsourced to libdlf, reducing the lines of code of empymod by over 50%. In addition to the new requirement libdlf, scooby is added as a requirement. Most user questions can be adressed much better if they provide the output of empymod.Report()
- however, most users do not have scooby installed. Having it as a requirement will make support smoother. Both new requirements are very lightweight modules, having at most numpy as a dependency.
-
Filters:
- The digital linear filters are outsourced to libdlf (https://github.com/emsig/libdlf). Note: How to access filters changed! The old way still works, with a deprecation note stating how to change your code. The old way will be removed in v3.0.
-
Examples:
- @efinden expanded the "Cole-Cole IP" example.
-
Maintenance:
-
Bumped the minimum requirements to:
- Python 3.9
- SciPy 1.9
- Numba 0.53
- libdlf (NEW requirement)
- scooby (NEW requirement)
-
Testing: added Python 3.12, dropped Python 3.8.
-
Fix remaining outdated
python setup.py
commands. -
Many small things to keep the package updated.
-
Flexible dipole coordinates
-
Modelling routines: The definition of the coordinates for
dipole
,dipole_k
, andanalytical
is now more flexible (x
andy
coordinate can now have different dimension, as long as one is a scalar). -
Bumped the minimum requirements to:
- Python 3.8
- NumPy 1.19
- SciPy 1.5
- Numba 0.50
-
Bug fixes, small improvements and maintenance:
- Cleaned-up the namespace by setting
dir()
explicitly. - Testing: added Python 3.11, dropped Python 3.7.
- Adjust copyright notice to only include original year, so it has not to be adjusted each year.
- Cleaned-up the namespace by setting
Minimum offset
-
Minimum offset:
Change regarding the enforced minimum horizontal offset, which can be set
throughempymod.set_minimum(min_off=1e-3)
, where 1e-3, hence 1 mm, is the
default. Until now, responses for smaller offsets were set to NaN. New, they
return the response for the minimum offset. The raised warning stays the
same. -
Maintenance
- Exclude
scipy!=v1.9.0
from MacOS/Windows test. - Replace
pytest-flake8
by plainflake8
. - Change the way
spacing
andshift
are calculated in
fdesign.print_result
to avoid numerical precision issues. - Replace deprecated
sphinx-panels
withsphinx-design
.
- Exclude
I/O & CLI
-
I/O & CLI:
- New Command-Line Interface (CLI) for the top-level modelling functions
bipole
,dipole
,loop
, andanalytical
. Consult the manual
for its description, or type in your terminalempymod --help
. Note that
the CLI is a simple wrapper and currently lacks proper logging. - New module
io
to save and load inputs and data.
- New Command-Line Interface (CLI) for the top-level modelling functions
-
Maintenance:
- Improved load time by lazy-loading matplotlib and some scipy submodules.
- Removed the file
runtests.sh
; usesmake
instead.
Squeeze
-
The main modelling routines
bipole
,dipole
,loop
, and
analytical
take a new keyword argumentsqueeze
, which is set to
True
by default. If true, the output is squeezed (status quo); if false,
the output is always a three-dimensional array(nfreqtime, nrec, nsrc)
. -
One can define new
+np.infty
as interface. Only use-case is to enforce a
coordinate system in a two-layer case with an interface atz
(see example
coordinate system in the educational section of the gallery). -
Documentation:
- Expanded note on FFTLog.
- Expanded note on coordinate system.
- Changed the description from
optional
todefault: xyz
in the main
modelling routines.
-
Maintenance:
- Use scipy through conda in CI.
- Fix
do_3d_projection
formatplotlib>3.5.0
.
Random noise example
-
New example: Random noise for f-domain CSEM data.
-
Maintenance:
- Change in the njit-settings of
kernel.wavenumber
to work withnumba>=0.54
. - Cannot use
matplotlib==3.5.0
to build the gallery (matplotlib#21688). - Move up the minimum matplotlib in the tests.
- Added a Cron-job to run the tests monthly; every 20th at 14:14.
- Change in the njit-settings of