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