Releases: emsig/empymod
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
Bugfix np.seterr(all='ignore')
-
Bumped the minimum requirements to:
- Python 3.7
- NumPy 1.17
- SciPy 1.4
- Numba 0.47
-
Legacy clean-up: The kernel of empymod used to switch off all NumPy errors
vianp.seterr(all='ignore')
. That means that any script or library that
used empymod switched off all warnings from NumPy, which is not good. Since
empymod v2 this does make even less sense, as the entire kernel is jitted
with numba. This setting is therefore removed.
Bugfix azm/dip broadcasting
- Bugfix in
empymod.bipole
andempymod.loop
when using various azimuths
and dips (some cases used to cause a shape-mismatch error).
Theme change & streamline
-
Streamline some things with emsig and emg3d:
- Change theme from rtd to pydata.
- New primary links https://emsig.xyz and https://empymod.emsig.xyz.
- Move copyright from «The empymod Developers» to «The emsig community».
- Slight rework of some parts of the docs.