GEOPY-2799: Implement MVI with PDE inversion#375
Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces support for a new “magnetic vector pde” workflow (forward + inversion) and integrates it into joint inversion drivers/tests, alongside updates to rotated-regularization handling and related plumbing.
Changes:
- Added new
magnetic_vector_pdedriver package (forward/inversion/options) and new PDE UI JSON assets. - Updated joint drivers/tests to exercise MVI PDE in joint survey / cross-gradient contexts.
- Refactored rotated-regularization operator handling (degrees vs radians) and adjusted nested/simulation factory logic for remanence mapping.
Reviewed changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
simpeg_drivers/potential_fields/magnetic_vector_pde/* |
Adds PDE forward/inversion drivers and options for the new method. |
simpeg_drivers-assets/uijson/magnetic_vector_pde_*.ui.json |
Adds UI schemas for PDE forward/inversion runs. |
simpeg_drivers/components/models.py |
Extends vector-model logic to include PDE inversion type; adjusts gradient rotation handling. |
simpeg_drivers/components/factories/* |
Allows factories (survey/source/receiver/simulation/directives) to recognize “magnetic vector pde”. |
simpeg_drivers/joint/* |
Adjusts joint regularization/model handling to work with global mesh + PDE cases. |
simpeg_drivers/utils/regularization.py |
Updates rotated operator setup to accept degrees and convert internally. |
simpeg_drivers/utils/nested.py |
Ensures local tile mapping uses 3 components when remanence mapping is present. |
tests/run_tests/driver_mvi_pde_test.py |
Adds an integration-style test file for PDE forward+inversion. |
tests/run_tests/driver_joint_surveys_test.py |
Parametrizes joint surveys MVI test to include PDE driver/options. |
tests/run_tests/driver_joint_cross_gradient_test.py |
Adds a rotated-gradient joint cross-gradient test and tweaks inv run behavior. |
pyproject.toml + conda lock files |
Pins mira-simpeg and refreshes environment locks accordingly. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
# Conflicts: # environments/py-3.12-linux-64-dev.conda.lock.yml # environments/py-3.12-linux-64.conda.lock.yml # environments/py-3.12-win-64-dev.conda.lock.yml # environments/py-3.12-win-64.conda.lock.yml # environments/py-3.13-linux-64-dev.conda.lock.yml # environments/py-3.13-linux-64.conda.lock.yml # environments/py-3.13-win-64-dev.conda.lock.yml # environments/py-3.13-win-64.conda.lock.yml # environments/py-3.14-linux-64-dev.conda.lock.yml # environments/py-3.14-linux-64.conda.lock.yml # environments/py-3.14-win-64-dev.conda.lock.yml # environments/py-3.14-win-64.conda.lock.yml # py-3.12.conda-lock.yml # py-3.13.conda-lock.yml # py-3.14.conda-lock.yml
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #375 +/- ##
===========================================
+ Coverage 90.05% 90.21% +0.15%
===========================================
Files 127 131 +4
Lines 6368 6497 +129
Branches 795 809 +14
===========================================
+ Hits 5735 5861 +126
+ Misses 428 427 -1
- Partials 205 209 +4
🚀 New features to boost your workflow:
|
benk-mira
left a comment
There was a problem hiding this comment.
Some questions/comments in the review. Also.. I wasn't expecting a whole new driver/options/ui.json combo. 1. Is the old method worth keeping around? (Will people want to choose between them on a case-by-case basis?) 2. Could this be written as an option in the mvi ui.json to switch from pde/integral equation?
domfournier
left a comment
There was a problem hiding this comment.
Fair point that there is a lot of overlap, but there is enough for us to keep both around, for now. Main difference is that the PDE can't do reference angles, and has a special VectorAmplitude reg.
I think it would be possible to do reference angles in Cartesian space, but I ll need more time to develop. For now it's just simpler to have a second.
Co-authored-by: benk-mira <81254271+benk-mira@users.noreply.github.com>
GEOPY-2799 - Implement MVI with PDE inversion