Skip to content

Releases: emsig/emg3d

Release SciPy restriction

09 Jan 17:31
1478065
Compare
Choose a tag to compare
  • Maintenance:

    • Replace scipy.interpolate.interpnd with scipy.interpolate._interpnd (should be a temporary solution, would be better to not use private modules).
    • Fix test failures; they were related to the change of SciPy v1.15 of constants.mu_0 value changed to the more precise double precision value (scipy/scipy#11345).

Tmp restrict SciPy

07 Jan 06:42
Compare
Choose a tag to compare
  • Maintenance:

    • Restricting to SciPy<1.15. The function scipy.interpolate.interpnd is deprecated, and scipy.interpolate.interpnd._ndim_coords_from_array was removed. Needs fixing in emg3d.maps._points_from_grids.
    • Re-adding a test for normalizing source warning; avoid rounding over and over again in recursion of creating a dipole/wire source.

Bugfix and pyproject

02 Jan 16:35
6e81641
Compare
Choose a tag to compare
  • Bugfix and maintenance:

    • Fix bug in Dipole/Wire sources when coordinates are mixed increasing and decreasing over several cells #348.
    • Changed build backend from setup.py to pyproject.toml.

NumPy v2

09 Oct 16:28
639fabd
Compare
Choose a tag to compare

The code is now compatible with NumPy v2.

  • Created foundation for new module inversion.

  • Bumped the minimum requirements to:

    • Python 3.10
    • SciPy 1.10
    • empymod 2.3.2
    • Numba (without minimum version)
  • Maintenance

    • Testing: dropped Python 3.9 (Python 3.13 not added yet).
    • Update for NumPy v2: mainly np.infty -> np.inf.
    • Add notes for ipympl (interactive plots in modern Jupyter).
    • Reduce code by making use of new SciPy new features (complex-valued map_coordinate; lazy loading).

tol_gradient isfinite

27 Jun 11:24
9dea3cd
Compare
Choose a tag to compare
  • New hard dependency: empymod changed from being a soft dependency to being a hard dependency.

  • Simulation

    • A new parameter tol_gradient can be provided in the dict solver_opts; by default it is set to the value of tol. tol is the value used for compute (the forward), tol_gradient is used for gradient/jtvec and jvec (the gradient). In inversions, one can set the tolerance for the gradient often to a lower value, which saves computation time.
  • Survey

    • New attributes isfinite and finite_data. Former returns the indices of the finite data, latter returns directly the finite data.
  • Electrodes

    • Fixed TxMagneticDipole-representation and improved documentation of the magnetic sources.
  • Maintenance:

    • Bumped the minimum requirements to:

      • Python 3.9
      • SciPy 1.9
      • Numba 0.53
      • empymod 2.3.0 (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.

convert & pip-full

31 May 14:57
ade673d
Compare
Choose a tag to compare
  • io: New function convert to convert a file that was saved with emg3d from one file format to another file format.

  • Installation through pip has new the option pip install emg3d[full] which installs all soft dependencies as well.

  • Bumped the minimum requirements to:

    • Python 3.8
    • NumPy 1.19
    • SciPy 1.5
    • Numba 0.50
  • Bug fixes, small improvements and maintenance

    • 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.

Bugfix ellipse

15 Oct 20:40
4053fbb
Compare
Choose a tag to compare
  • Small improvements to the ellipse-function (and the CLI):

    • The major and minor axis of the ellipse are new forced to be at least 1e-9.
    • A radius of 0.0 provided through the CLI is now respected (was before
      overwritten).
  • empymod is more verbose when using layered computations.

  • Maintenance:

    • Replace deprecated sphinx-panels with sphinx-design.

Layered modelling

31 Aug 15:32
3b9a3c9
Compare
Choose a tag to compare

The simulation class takes new the parameters layered and layered_opts,
where the default values are False and None, respectively. If layered=True,
there will be no 3D computations. Instead, it will create a local layered (1D)
model for each source-receiver pair, and compute the response using the
semi-analytical code empymod (which needs to be installed manually, as it
is a soft dependency). In this case an eventual gradient is computed using the
finite-difference method, not the adjoint-state method, perturbing each layer
slightly. The main purpose of these layered computations is for quick checks,
QC, verifications, etc. Layered computation is also possible through the CLI,
through the new flag -l or --layered, and a new section [layered]
in the config file.

Other changes (many of them related to the above):

  • Model instances have a new attribute exctract_1d, which returns a layered
    (1D) model, extracted from the 3D model according the provided parameters;
    see :attr:emg3d.models.Model.extract_1d.

  • CLI takes new the boolean add_noise in the section [noise_opts]
    (default is True).

  • Maps: New function ellipse_indices returning a boolean indicating which
    points fall within a general ellipse for the provided input parameters.

  • Bug fixes, small improvements and maintenance

    • Simulation.misfit returns an ndarray again instead of an DataArray (was
      erroneously changed in v1.2.1).
    • Write json can now handle NumPy int/bool/float.
    • A clean on a Simulation now removes correctly the weights.
    • Capture error in jtvec if weight is complex NaN (should be real).
    • Model: mapping can now be an already instantiated map (sort of
      undocumented).
    • Cleaned-up the namespace by setting dir() explicitly.
    • Replace pytest-flake8 by plain flake8.
    • Moved all multiprocessing-related functions to _multiprocessing.py.

Bugfix trimmed z-vector

02 Aug 13:06
df86cc5
Compare
Choose a tag to compare
  • Meshing: Small fix to the automatic gridding from v1.5.0 (non-backwards
    compatible). A provided z-vector is new trimmed to the domain before the
    domain might be expanded due to the provided seasurface (which is as it was
    always intended, but not as it was implemented).
  • Few small maintenance things in the meta files.

CLI-clean

21 May 11:37
a4ea65e
Compare
Choose a tag to compare
  • CLI:

    • New command-line argument --clean: If an existing simulation is loaded,
      setting clean will remove any existing computed data (fields, misfit,
      gradient, residuals, synthetic data) and replace the model with the
      currently provided one.
    • New command-line argument --cache (or as parameter cache in the
      configuration file under [files]): Acts as a shortcut for --load --save using the same file name.
    • Parameters for noise generation should new be provided under their own
      section [noise_opts]; providing them under [simulation] is
      deprecated and will be removed in v1.9.0.
  • Simulation:

    • 'all' is now the same as 'computed' in to_file and to_dict,
      meaning the grids are stored as well.
    • Deprecation: The 'expand'-functionality in the gridding options is
      deprecated and will be removed in v1.9.0. A property-complete model has to
      be provided.
  • Meshes: Bumped the change of the default value for center_on_edge from
    True to False to v1.9.0, coinciding with the above deprecations.