SimPEG 0.22.0 Release Notes#
June 26th, 2024
Highlights
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:
@kehrl-kobold made their first contribution in simpeg/simpeg#1390
@williamjsdavis made their first contribution in simpeg/simpeg#1486
Pull Requests#
Remove the parameters argument from docstring by @santisoler in simpeg/simpeg#1417
Use reviewdog to annotate PR’s with black and flake8 errors. by @jcapriot in simpeg/simpeg#1424
Safely run reviewdog on
pull_request_target
events by @jcapriot in simpeg/simpeg#1427Add new Issue template for making a release by @santisoler in simpeg/simpeg#1410
Replace use of
refine_tree_xyz
in DCIP tutorials by @santisoler in simpeg/simpeg#1381Fix rst syntax in release notes for v0.21.0 by @santisoler in simpeg/simpeg#1434
Move to a PEP8 compliant package name. by @jcapriot in simpeg/simpeg#1430
Update copyright year in init.py by @lheagy in simpeg/simpeg#1436
Replace SimPEG for simpeg across docstrings by @santisoler in simpeg/simpeg#1438
Lowercase simpeg for generating coverage on Azure by @santisoler in simpeg/simpeg#1443
Rename spontaneous potential to self potential by @lheagy in simpeg/simpeg#1422
Fix distance calculation in
convert_survey_3d_to_2d_lines
by @kehrl-kobold in simpeg/simpeg#1390Replace SimPEG for simpeg in API reference by @santisoler in simpeg/simpeg#1446
Replace SimPEG for simpeg in getting started pages by @santisoler in simpeg/simpeg#1447
Check inputs for converting 3d surveys to 2d lines by @santisoler in simpeg/simpeg#1392
Always use Pydata Sphinx theme for building docs by @santisoler in simpeg/simpeg#1445
Simplify interface of UniformBackgroundField by @santisoler in simpeg/simpeg#1421
Ensure the queue’s are joined when the meta simulation is joined. by @jcapriot in simpeg/simpeg#1464
Add maintenance issue template by @santisoler in simpeg/simpeg#1468
Add instructions to update the environment by @santisoler in simpeg/simpeg#1462
Stop recommending mamba for installing simpeg by @santisoler in simpeg/simpeg#1463
Fix bug on arguments of beta estimator directives by @santisoler in simpeg/simpeg#1460
Improve interface for DC Dipole source by @santisoler in simpeg/simpeg#1393
Use Numpy random number generator in codebase by @santisoler in simpeg/simpeg#1394
Extend docstrings for FDEM and TDEM fields and 3D simulations by @dccowan in simpeg/simpeg#1414
Magnetic simulation with Choclo as engine by @santisoler in simpeg/simpeg#1321
Fix typos in EM docstrings by @santisoler in simpeg/simpeg#1473
Fix call to private method in GaussianMixtureWithPrior by @santisoler in simpeg/simpeg#1476
Add version switcher to Sphinx docs by @santisoler in simpeg/simpeg#1428
Use random seed on synthetic data in mag tests by @santisoler in simpeg/simpeg#1457
Fix links to source code in documentation pages by @santisoler in simpeg/simpeg#1444
Fix script for new deployment of docs by @santisoler in simpeg/simpeg#1478
Print SimPEG version in the inversion log by @santisoler in simpeg/simpeg#1477
Use Numpy rng in FDEM tests by @santisoler in simpeg/simpeg#1449
Add
random_seed
argument to objective fun’s derivative tests by @santisoler in simpeg/simpeg#1448Add
random_seed
to thetest
method of maps by @santisoler in simpeg/simpeg#1465Use Numpy rng in TDEM tests by @santisoler in simpeg/simpeg#1452
Use random seed in missed objective function tests by @santisoler in simpeg/simpeg#1483
Fix contour colors in gravity plot in User Guide by @williamjsdavis in simpeg/simpeg#1486
Hide type hints from signatures in documentation pages by @santisoler in simpeg/simpeg#1471
Reorganize the maps submodule by @santisoler in simpeg/simpeg#1480
Pyproject.toml by @jcapriot in simpeg/simpeg#1482
Use Numpy rng in static EM tests by @santisoler in simpeg/simpeg#1451
Split Azure Pipelines configuration into multiple files by @santisoler in simpeg/simpeg#1481
Ignore
survey_type
argument in DC and SIP surveys by @santisoler in simpeg/simpeg#1458Update deployment of docs to simpeg-docs by @santisoler in simpeg/simpeg#1490
Fix F821 flake error: undefined variable by @santisoler in simpeg/simpeg#1487
Use Numpy rng in viscous remanent mag tests by @santisoler in simpeg/simpeg#1453
Use Numpy rng in NSEM tests by @santisoler in simpeg/simpeg#1450
Unwrap lines in release checklist by @santisoler in simpeg/simpeg#1498
Improve instructions to update versions.json by @santisoler <https://github.com/santisoler> in simpeg/simpeg#1500