SimPEG 0.22.0 Release Notes#

June 26th, 2024

Updates#

SimPEG has been renamed to simpeg#

SimPEG v0.22.0 comes with a major change that everyone will experience! We are excited to announce that we renamed the package from SimPEG to simpeg, making it compliant to PEP8.

Since this version and moving forward we’ll import simpeg as:

import simpeg

or any of its submodules as:

from simpeg.potential_fields import magnetics

Although we encourage users to update their code after they update their installed SimPEG version, we still support the old SimPEG. We’ll just receive a warning about the deprecation of SimPEG with upper-cases if we try to import it:

import SimPEG
FutureWarning: Importing `SimPEG` is deprecated. please import from `simpeg`.

New features#

We have a faster and more memory efficient implementation of the magnetic simulation Simulation3DIntegral, built using Choclo and Numba. In order to use it, you will need to install Choclo in addition to simpeg. This new implementation is able to forward model TMI and all magnetic field components with susceptibility (scalar) or effective susceptibility (vector) models.

Documentation#

Since v0.22.0, we serve the documentation pages for latest and older versions of SimPEG, along with the pages for the development version (the latest version in the main branch of our GitHub repository). The docs now include a version switcher in the top bar that will allow users to navigate between the pages for each different version.

Several improvements have been made to the documentation pages.

In the Getting Started guide we stopped recommending mamba as the best package manager for installing SimPEG after conda started using libmamba under the hood, achieving the same performance as mamba. We also included instructions so our contributors can easily update their local environment, which is specially useful after we update the minimum version of the development dependencies (such as autoformatters and linters).

The documentation for Frequency-Domain (FDEM) and Time-Domain (TDEM) EM fields and 3D simulations got greatly extended, with more details on the parameters for each method, along with more mathematical background for their implementations.

Lastly, we fixed typos, the contour colors for one of the gravity examples, and the broken links to the source code for each class, function and method. These links now point to their corresponding version in the GitHub repository.

Bugfixes#

This release comes with a few bug fixes. We solved an issue with the distance calculation in the convert_survey_3d_to_2d_lines() utility function that converts 3D DC-IP survey locations to 2D lines. We fixed a bug on how the arguments passed to the directives that estimate the beta parameter where being passed to the parent classes. We updated the code in GaussianMixtureWithPrior to make it compatible with the latest versions of scikit-learn. And we now make sure that the queues are joined when the MetaSimulation is joined.

Breaking changes#

The spontaneous_potential has been renamed to self_potential to accurately reflect the nature of the process, as the term being used in the literature.

General improvements#

We improved the interface of the UniformBackgroundField class, and for the DC Dipole source class.

We moved away from the deprecated Numpy’s global random seeds and replace them for the new random number generator object in the entire SimPEG’s code base and in most of its tests. This greatly helps the experience of ensuring reproducible runs of our inversions and tests.

Lastly, the inversion logs now also include the SimPEG version that is being used.

Maintenance#

We updated the configuration files to build and install SimPEG, moving away from the old setup.py into the new pyproject.toml. We fixed another important flake8 warning across the code base: F821, which highlights undefined varibles in the code. And cleaned up the scripts for running automated tasks in Azure Pipelines (like checking style, testing, deploying docs and code).

Contributors#

This is a combination of contributors and reviewers who’ve made contributions towards this release (in no particular order).

We would like to highlight the contributions made by new contributors:

Pull Requests#