Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
a918b45
Install zizmor through conda-forge in `environment.yml` (#1600)
santisoler Mar 6, 2025
368afb3
Raise errors if dpred in `BaseDataMisfit` has nans (#1615)
santisoler Mar 6, 2025
05f9f01
Update Black's Python versions in `pyproject.toml` (#1620)
santisoler Mar 6, 2025
bb8a517
Use shell rendering in Bug report template (#1612)
santisoler Mar 6, 2025
392959d
Merge Getting Started and Examples into User Guide (#1619)
santisoler Mar 7, 2025
55ccf52
Fix usage of "bug" label in bug report template (#1624)
santisoler Mar 10, 2025
5ae5e7b
Fix redirects links in docs (#1623)
santisoler Mar 10, 2025
b2e0006
Fix bug on `getJ` of gravity simulation (#1621)
santisoler Mar 10, 2025
985593f
Fix redirect to user guide index page (#1627)
santisoler Mar 11, 2025
c05d616
Move indexing of flat arrays to Survey classes (#1616)
santisoler Mar 18, 2025
d84a050
Replace Data indexing for Survey slicing where needed (#1632)
santisoler Mar 20, 2025
1148ef1
Implement `G` matrix as `LinearOperator` in gravity simulation (#1622)
santisoler Mar 21, 2025
33c4221
Set maximum number of iterations in eq sources tests (#1636)
santisoler Mar 28, 2025
11b407e
Em1d multiple rx locs (#1637)
jcapriot Mar 30, 2025
d2c49ff
Fix definition of model in gravity J-related tests (#1643)
santisoler Apr 14, 2025
b1804b8
Improve docstring of dip_azimuth2cartesian (#1642)
santisoler Apr 14, 2025
46fd664
Improve variable names in gravity test (#1641)
santisoler Apr 14, 2025
9026730
Test transpose of gravity getJ as linear operator (#1644)
santisoler Apr 14, 2025
f2440e6
Configure zizmor to pin reviewdog actions with tags (#1650)
santisoler Apr 22, 2025
1a0d3fb
Deprecate `components` in potential field surveys (#1633)
santisoler Apr 22, 2025
f852c69
Fix bug on magnetic simulation `nD` property (#1646)
santisoler Apr 23, 2025
1dee477
Make pytest error on random seeded test (#1598)
jcapriot Apr 23, 2025
5b7b891
Add support for potential fields survey indexing (#1635)
jcapriot Apr 23, 2025
e61d9b2
Implement magnetic G as linear operator (#1634)
santisoler Apr 23, 2025
8f5fe30
Use Numpy's RNG in tests for depth weighting (#1570)
santisoler Apr 24, 2025
725a09b
Raise NotImplementedError on getJ for NSEM 1D simulations (#1653)
santisoler Apr 24, 2025
24bf81e
Set the model when calling `getJ` in DC and SIP simulations (#1361)
lheagy Apr 24, 2025
deda172
Fix `getJ` method in TDEM and FDEM 1D simulations (#1638)
ghwilliams Apr 24, 2025
249e69a
Add release notes for v0.24.0 (#1655)
santisoler Apr 25, 2025
255d2fb
Update docstring descriptions for gravity gradient component guv (#1665)
williamjsdavis May 14, 2025
50eeac8
Clean up Numba functions for potential field simulations (#1663)
santisoler May 15, 2025
55cfbfa
Make directives submodules private (#1667)
santisoler May 15, 2025
55e4252
Ensure misfit is purely real valued (#1524)
prisae May 16, 2025
0a4cf76
Add key navigation to docs (#1668)
prisae May 16, 2025
f503c0e
Add missing map classes to the API reference (#1672)
santisoler May 23, 2025
1e205f8
Replace sklearn deprecated method for `validate_data` function (#1673)
santisoler May 26, 2025
b8a1548
Remove `BaseSurvey.counter` property (#1640)
santisoler May 26, 2025
3d6bb9d
Fixes sign error in 1D field calculation. (#1662)
jcapriot May 28, 2025
61de6d2
Allow use of `J` as `LinearOperator` in mag equivalent layers (#1676)
santisoler Jun 2, 2025
8f74379
Fix beta cooling in `UpdateIRLS` directive (#1659)
jcapriot Jun 3, 2025
ce7fa03
Allow use of `J` as `LinearOperator` in gravity equivalent layers (#1…
santisoler Jun 4, 2025
64f7e56
Improve admonitions in gravity simulation (#1677)
santisoler Jun 4, 2025
285e0f0
Have an option to take a step when the Linesearch breaks (#1581)
lheagy Jun 12, 2025
e44476b
Fix bug in phase for recursive 1d NSEM simulation (#1679)
dccowan Jun 12, 2025
6146a5e
Use conda-forge as only channel in Azure pipelines (#1688)
santisoler Jul 18, 2025
4a94b2c
Expose solver utility functions in `simpeg.utils` (#1678)
santisoler Jul 18, 2025
cba34e9
Use logging while setting default solver in PDE simulations (#1670)
santisoler Jul 23, 2025
3aed38d
Use `Impedance` and `Tipper` in examples and tests (#1690)
santisoler Aug 12, 2025
f191fc7
Fix bug on `Impedance.eval` when orientation is "xx" or "yy" (#1692)
dccowan Aug 13, 2025
d58b57f
Remove deprecated objects missed in v0.24.0 (#1658)
jcapriot Aug 21, 2025
88b5f57
Update magnetic simulation using differential formulation (#1682)
johnweis0480 Sep 5, 2025
22f8353
Standardize output directives and make them more reliable (#1657)
jcapriot Sep 12, 2025
5e87797
Make tests error on implicit complex to real (#1696)
jcapriot Sep 12, 2025
fbea6db
Avoids calculating unused values for boundary conditions on DC 2D sim…
jcapriot Sep 13, 2025
a3d45aa
Add How to Guide page on how to choose a solver (#1695)
santisoler Sep 13, 2025
e1af3e8
Make Logger a bit quieter when running pytest (#1697)
jcapriot Sep 15, 2025
0fe4df8
CG Minimizer Updates (#1656)
jcapriot Sep 18, 2025
256406f
Add top level descriptions to missing to functions (#1702)
jcapriot Sep 18, 2025
f04ba47
Update meeting times in README.rst (#1700)
santisoler Sep 22, 2025
b6b90cf
Add `_faceDiv` attribute to FDEM H `Fields` (#1346)
lheagy Sep 23, 2025
f0086d1
Improve landing page of docs (#1701)
santisoler Sep 26, 2025
42a5db9
Add How to Guide page on moving mesh to survey area (#1699)
santisoler Sep 26, 2025
3fc8383
Remove gravity and magnetic tutorials (#1704)
santisoler Sep 29, 2025
15bd44b
Minor fixes to docs of `UpdateSensitivityWeights` (#1705)
santisoler Oct 2, 2025
3cc6605
Update iteration print out (#1626)
jcapriot Oct 2, 2025
f5e5be5
Fix magnetic dipole source for for HJ formulation (#1575)
lheagy Oct 3, 2025
1ccc373
Drop support for Python 3.10 (#1708)
santisoler Oct 10, 2025
1218acd
Add documentation page for version compatibility (#1707)
santisoler Oct 10, 2025
80be606
Remove DC resistivity tutorials (#1710)
santisoler Oct 10, 2025
2b283eb
Merge branch 'main' into GEOPY-2522
domfournier Oct 13, 2025
6c4fafb
Clean ini import
domfournier Oct 13, 2025
ff58947
Fix save out for changes to log
domfournier Oct 13, 2025
da1cb4a
Switch order of operation in opt
domfournier Oct 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .ci/azure/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ jobs:
pool:
vmImage: ubuntu-latest
variables:
python.version: "3.10"
python.version: "3.11"
timeoutInMinutes: 240
steps:
# Checkout simpeg repo.
Expand Down
4 changes: 2 additions & 2 deletions .ci/azure/pypi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

- task: UsePythonVersion@0
inputs:
versionSpec: "3.10"
versionSpec: "3.11"
displayName: "Setup Python"

- bash: |
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:

- task: UsePythonVersion@0
inputs:
versionSpec: "3.10"
versionSpec: "3.11"
displayName: "Setup Python"

- bash: |
Expand Down
11 changes: 9 additions & 2 deletions .ci/azure/setup_env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,17 @@
set -ex #echo on and exit if any line fails

# TF_BUILD is set to True on azure pipelines.
is_azure=$(${TF_BUILD:-false} | tr '[:upper:]' '[:lower:]')
is_azure=$(echo "${TF_BUILD:-false}" | tr '[:upper:]' '[:lower:]')

if ${is_azure}
then
# Add conda-forge as channel
conda config --add channels conda-forge
# Remove defaults channels
# (both from ~/.condarc and from /usr/share/miniconda/.condarc)
conda config --remove channels defaults
conda config --remove channels defaults --system
# Update conda
conda update --yes -n base conda
fi

Expand All @@ -30,4 +37,4 @@ echo "Conda Environment:"
conda list

echo "Installed SimPEG version:"
python -c "import simpeg; print(simpeg.__version__)"
python -c "import simpeg; print(simpeg.__version__)"
2 changes: 1 addition & 1 deletion .ci/azure/test.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
parameters:
os : ['ubuntu-latest']
py_vers: ['3.10']
py_vers: ['3.11']
test: ['tests/em',
'tests/base tests/flow tests/seis tests/utils',
'tests/meta',
Expand Down
7 changes: 5 additions & 2 deletions .ci/environment_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@ channels:
- conda-forge
dependencies:
- numpy>=1.22
- scipy>=1.8
- scipy>=1.12
- pymatsolver>=0.3
- matplotlib-base
- discretize>=0.11
- geoana>=0.7
- libdlf
- typing_extensions

# optional dependencies
- dask
Expand All @@ -24,6 +25,8 @@ dependencies:
- sphinx
- sphinx-gallery>=0.1.13
- sphinxcontrib-apidoc
- sphinx-reredirects
- sphinx-design
- pydata-sphinx-theme
- nbsphinx
- numpydoc
Expand All @@ -43,4 +46,4 @@ dependencies:
# PyPI uploading
- wheel
- twine
- build
- python-build
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Bug report
description: Report a bug in SimPEG.
title: "BUG: <Please write a comprehensive title after the 'BUG: ' prefix>"
labels: [Bug]
labels: ["bug"]

body:
- type: markdown
Expand Down Expand Up @@ -46,6 +46,7 @@ body:
description: >
Please include the output from `simpeg.Report()` to describe your system for us.
Paste the output from `from simpeg import Report; print(Report())` below.
render: shell
validations:
required: true

Expand Down
17 changes: 17 additions & 0 deletions .github/zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Zizmor configuration
# --------------------
#
# This file configures zizmor. This is not a workflow that gets run in GitHub
# Actions.
#
# References: https://woodruffw.github.io/zizmor/configuration

rules:
unpinned-uses:
config:
policies:
# Mimic default behaviour: official actions can get pinned by tag.
actions/*: ref-pin
# Allow to use tags to pin reviewdog actions.
reviewdog/action-black: ref-pin
reviewdog/action-flake8: ref-pin
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ docs/_build/
docs/warnings.txt
docs/content/api/generated/*
.DS_Store
docs/content/examples/*
docs/content/tutorials/*
docs/content/user-guide/examples/*
docs/content/user-guide/tutorials/*
docs/modules/*
docs/sg_execution_times.rst
.vscode/*
Expand Down
33 changes: 29 additions & 4 deletions CITATION.rst
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
=============
Citing SimPEG
-------------
=============

There is a `paper about SimPEG <http://dx.doi.org/10.1016/j.cageo.2015.09.015>`_, if you use this code, please help our scientific visibility by citing our work!
There is a paper about SimPEG! If you are using this library in your research,
we greatly appreciate that the software gets cited!


Cockett, R., Kang, S., Heagy, L. J., Pidlisecky, A., & Oldenburg, D. W. (2015). SimPEG: An open source framework for simulation and gradient based parameter estimation in geophysical applications. Computers & Geosciences.
Cockett, R., Kang, S., Heagy, L. J., Pidlisecky, A., & Oldenburg, D. W.
(2015). SimPEG: An open source framework for simulation and gradient based
parameter estimation in geophysical applications. Computers & Geosciences.


BibTex:
Here is a Bibtex entry to make things easier if you’re using Latex:

.. code::

Expand All @@ -19,3 +23,24 @@ BibTex:
publisher={Elsevier}
}

Electromagnetics
----------------

If you are using the :mod:`simpeg.electromagnetics` module, please also cite:

Lindsey J. Heagy, Rowan Cockett, Seogi Kang, Gudni K. Rosenkjaer, Douglas W. Oldenburg, A framework for simulation and inversion in electromagnetics, Computers & Geosciences, Volume 107, 2017, Pages 1-19, ISSN 0098-3004, http://dx.doi.org/10.1016/j.cageo.2017.06.018.

Here is a Bibtex entry to make things easier if you’re using Latex:

.. code::

@article{heagy2017,
title={A framework for simulation and inversion in electromagnetics},
author={Lindsey J. Heagy and Rowan Cockett and Seogi Kang and Gudni K. Rosenkjaer and Douglas W. Oldenburg},
journal={Computers & Geosciences},
volume={107},
pages={1 - 19},
year={2017},
issn={0098-3004},
doi={http://dx.doi.org/10.1016/j.cageo.2017.06.018}
}
7 changes: 3 additions & 4 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ The vision is to create a package for finite volume simulation with applications

You are welcome to join our forum and engage with people who use and develop SimPEG at: https://simpeg.discourse.group/.

Weekly meetings are open to all. They are generally held on Wednesdays at 10:30am PDT. Please see the calendar (`GCAL <https://calendar.google.com/calendar/b/0?cid=ZHVhamYzMWlibThycWdkZXM5NTdoYXV2MnNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>`_, `ICAL <https://calendar.google.com/calendar/ical/duajf31ibm8rqgdes957hauv2s%40group.calendar.google.com/public/basic.ics>`_) for information on the next meeting.
Weekly meetings are open to all. They are generally held on Wednesdays at 3:00 PM Pacific Time. Please see the calendar (`GCAL <https://calendar.google.com/calendar/b/0?cid=ZHVhamYzMWlibThycWdkZXM5NTdoYXV2MnNAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ>`_, `ICAL <https://calendar.google.com/calendar/ical/duajf31ibm8rqgdes957hauv2s%40group.calendar.google.com/public/basic.ics>`_) for information on the next meeting.

Overview Video
==============
Expand Down Expand Up @@ -120,9 +120,8 @@ Meetings
SimPEG hosts weekly meetings for users to interact with each other,
for developers to discuss upcoming changes to the code base, and for
discussing topics related to geophysics in general.
Currently our meetings are held every Wednesday, alternating between
a mornings (10:30 am pacific time) and afternoons (3:00 pm pacific time)
on even numbered Wednesdays. Find more info on our
Currently our meetings are held every Wednesday at 3:00 PM Pacific Time.
Find more info on our
`Mattermost <https://mattermost.softwareunderground.org/simpeg>`_.


Expand Down
4 changes: 2 additions & 2 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ help:
clean:
rm -rf $(BUILDDIR)/*
rm -rf content/api/generated/
rm -rf content/examples/
rm -rf content/tutorials/
rm -rf content/user-guide/examples/
rm -rf content/user-guide/tutorials/

html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html -j auto
Expand Down
11 changes: 8 additions & 3 deletions docs/_static/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@
"url": "https://docs.simpeg.xyz/dev/"
},
{
"name": "v0.23.0 (latest)",
"version": "0.23.0",
"url": "https://docs.simpeg.xyz/v0.23.0/",
"name": "v0.24.0 (latest)",
"version": "0.24.0",
"url": "https://docs.simpeg.xyz/v0.24.0/",
"preferred": true
},
{
"name": "v0.23.0",
"version": "0.23.0",
"url": "https://docs.simpeg.xyz/v0.23.0/"
},
{
"name": "v0.22.2",
"version": "0.22.2",
Expand Down
63 changes: 58 additions & 5 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# All configuration values have a default; values that are commented out
# serve to show the default.

from pathlib import Path
import sys
import os
from sphinx_gallery.sorting import FileNameSortKey
Expand Down Expand Up @@ -44,11 +44,13 @@
"sphinx.ext.coverage",
"sphinx.ext.doctest",
"sphinx.ext.extlinks",
"sphinx_design",
"sphinx.ext.intersphinx",
"sphinx.ext.mathjax",
"sphinx_gallery.gen_gallery",
"sphinx.ext.todo",
"matplotlib.sphinxext.plot_directive",
"sphinx_reredirects",
]

# Autosummary pages will be generated by sphinx-autogen instead of sphinx-build
Expand Down Expand Up @@ -98,8 +100,8 @@

linkcheck_ignore = [
r"https://github.com/simpeg/simpeg*",
"/content/examples/*",
"/content/tutorials/*",
"/content/user-guide/examples/*",
"/content/user-guide/tutorials/*",
r"https://www.pardiso-project.org",
r"https://docs.github.com/*",
# GJI refuses the connexion during the check
Expand Down Expand Up @@ -296,6 +298,7 @@ def linkcode_resolve(domain, info):
"json_url": "https://docs.simpeg.xyz/latest/_static/versions.json",
},
"show_version_warning_banner": True,
"navigation_with_keys": True,
}

html_logo = "images/simpeg-logo.png"
Expand Down Expand Up @@ -464,7 +467,9 @@ def linkcode_resolve(domain, info):
]

tutorial_dirs = glob.glob("../tutorials/[!_]*")
tut_gallery_dirs = ["content/tutorials/" + os.path.basename(f) for f in tutorial_dirs]
tut_gallery_dirs = [
"content/user-guide/tutorials/" + os.path.basename(f) for f in tutorial_dirs
]

# Scaping images to generate on website
from plotly.io._sg_scraper import plotly_sg_scraper
Expand All @@ -475,7 +480,7 @@ def linkcode_resolve(domain, info):
sphinx_gallery_conf = {
# path to your examples scripts
"examples_dirs": ["../examples"] + tutorial_dirs,
"gallery_dirs": ["content/examples"] + tut_gallery_dirs,
"gallery_dirs": ["content/user-guide/examples"] + tut_gallery_dirs,
"within_subsection_order": FileNameSortKey,
"filename_pattern": "\.py",
"backreferences_dir": "content/api/generated/backreferences",
Expand Down Expand Up @@ -531,3 +536,51 @@ def linkcode_resolve(domain, info):
("py:class", "builtins.complex"),
("py:meth", "__call__"),
]


# Configure redirects
# -------------------
# Redirect some pages to support old links
OLD_FILES_FNAME = Path(__file__).parent.resolve() / "old-docs-files.txt"
MAPS = {
"content/tutorials": "content/user-guide/tutorials",
"content/examples": "content/user-guide/examples",
"content/getting_started": "content/user-guide/getting-started",
}
IGNORE = ["content/getting_started/index.html", "content/user_guide.html"]


def _get_source_target(old_fname: str) -> tuple[str, str]:
for old_dir, new_dir in MAPS.items():
if old_fname.startswith(old_dir):
source = old_fname.removesuffix(".html")
n_parents = len([p for p in Path(old_fname).parents if p != Path(".")])
target = "../" * n_parents + old_fname.replace(old_dir, new_dir, 1)
return source, target
raise ValueError()


def build_redirects():
"""
Build redirects dictionary for sphinx-reredirects.
"""
redirects = {}
with OLD_FILES_FNAME.open(mode="r") as f:
for line in f:
if line.startswith("#"):
continue
old_fname = line.strip()
if old_fname in IGNORE:
continue
source, target = _get_source_target(old_fname)
redirects[source] = target
return redirects


redirects = build_redirects()
redirects.update(
{
"content/getting_started/index": "../../content/user-guide/index.html",
"content/user_guide": "../content/user-guide/index.html",
}
)
10 changes: 9 additions & 1 deletion docs/content/api/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ Regularizations

simpeg.regularization

Optimizers
----------
Optimizers used within SimPEG inversions.

.. toctree::
:maxdepth: 2

simpeg.optimization

Directives
----------
.. toctree::
Expand All @@ -41,7 +50,6 @@ Directives

Utilities
---------

Classes and functions for performing useful operations.

.. toctree::
Expand Down
1 change: 1 addition & 0 deletions docs/content/api/simpeg.optimization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.. automodule:: simpeg.optimization
14 changes: 0 additions & 14 deletions docs/content/getting_started/index.rst

This file was deleted.

Loading