Skip to content

Develop release#415

Open
domfournier wants to merge 159 commits into
developfrom
develop_release
Open

Develop release#415
domfournier wants to merge 159 commits into
developfrom
develop_release

Conversation

@domfournier
Copy link
Copy Markdown
Collaborator

No description provided.

domfournier and others added 30 commits April 1, 2026 10:35
# 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
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
# 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
GEOPY-2826: Plate match parallel process fails without good error log
benk-mira and others added 27 commits May 13, 2026 14:48
GEOPY-2745: Refresh screenshots of UIJsons in docs
GEOPY-2665: Accept 2D inversion mesh (DrapeModel) in `sensitivity_cutoff` application
GEOPY-2865: Add optional out_group to Depth of Investigation app
GEOPY-2015: Add tooltips to missing IP inversion inputs
GEOPY-2879: Allow rotated receivers for ground EM survey
# Conflicts:
#	simpeg_drivers/plate_simulation/options.py
Copilot AI review requested due to automatic review settings May 25, 2026 16:20
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR appears to be a release-prep refactor that migrates UI JSON handling toward BaseUIJson / SimPEGDriversUIJson, reorganizes driver imports into explicit forward/inversion modules, and updates tests, assets, and docs to match the new structure and behavior.

Changes:

  • Migrate multiple code paths from InputFile to BaseUIJson / SimPEGDriversUIJson (including legacy UI JSON reading and driver start helpers).
  • Restructure driver/module imports (tests and runtime) to use explicit .forward / .inversion modules and add/refresh app metadata (icons/tooltips).
  • Update FEM/TEM/MT-related logic and assets (receiver orientation/coaxial handling, uncertainty validation, UI JSON schema tweaks), plus lockfile/doc refresh.

Reviewed changes

Copilot reviewed 178 out of 214 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
tests/utils_tile_estimate_test.py Adds tile-estimator validation test coverage.
tests/uijson_test.py Updates legacy UI JSON tests to use SimPEGDriversUIJson.
tests/topography_test.py Updates magnetic vector import path.
tests/run_tests/sensitivity_cutoff_test.py Updates gravity driver import path.
tests/run_tests/oriented_airborne_tem_receiver_test.py Updates TDEM forward import path.
tests/run_tests/oriented_airborne_fem_receiver_test.py Updates FDEM forward import + orientation expectations.
tests/run_tests/driver_tipper_test.py Splits tipper imports into forward/inversion modules.
tests/run_tests/driver_tile_estimator_test.py Updates magnetic scalar import path.
tests/run_tests/driver_rotated_gradients_test.py Splits gravity imports + tweaks directive params.
tests/run_tests/driver_mvi_test.py Splits magnetic vector imports into forward/inversion modules.
tests/run_tests/driver_mvi_pde_test.py Splits MVI-PDE imports into forward/inversion modules.
tests/run_tests/driver_mt_test.py Splits MT imports + adds uncertainty validation test.
tests/run_tests/driver_mag_test.py Splits magnetic scalar imports into forward/inversion modules.
tests/run_tests/driver_mag_automesh_test.py Updates magnetic scalar forward import path.
tests/run_tests/driver_joint_surveys_test.py Updates imports for joint + gravity + magnetics drivers.
tests/run_tests/driver_joint_pgi_homogeneous_test.py Updates imports + makes options cleanup safer.
tests/run_tests/driver_joint_cross_gradient_test.py Updates imports + adjusts how joint driver is started/asserted.
tests/run_tests/driver_ip_test.py Splits IP3D imports into forward/inversion modules.
tests/run_tests/driver_ip_2d_test.py Splits IP2D imports into forward/inversion modules.
tests/run_tests/driver_ground_tem_test.py Splits TDEM imports into forward/inversion modules.
tests/run_tests/driver_grav_test.py Splits gravity imports + adds uncertainty validation test.
tests/run_tests/driver_dc_test.py Splits DC3D imports into forward/inversion modules.
tests/run_tests/driver_dc_2d_test.py Splits DC2D imports into forward/inversion modules.
tests/run_tests/driver_dc_2d_rotated_gradients_test.py Splits DC2D imports into forward/inversion modules.
tests/run_tests/driver_app_con_test.py Splits apparent conductivity imports into forward/inversion modules.
tests/run_tests/driver_airborne_tem_test.py Splits TDEM imports into forward/inversion modules.
tests/run_tests/driver_airborne_tem_1d_test.py Splits TDEM1D imports into forward/inversion modules.
tests/run_tests/driver_airborne_fem_test.py Updates FDEM test channels naming (real/imag) and entity expectations.
tests/run_tests/driver_airborne_fem_1d_test.py Updates FDEM1D test channels naming + target metrics.
tests/plate_simulation/runtest/sweep_test.py Migrates sweep test from InputFile to BaseUIJson.
tests/plate_simulation/runtest/match_test.py Migrates match test to BaseUIJson and driver .start().
tests/plate_simulation/runtest/driver_test.py Migrates plate simulation test to BaseUIJson and new out-group creation flow.
tests/models_test.py Updates imports for DC3D forward and MVI inversion.
tests/meshes_test.py Updates imports for MVI inversion.
tests/locations_test.py Updates imports for MVI options.
tests/driver_test.py Updates gravity inversion imports + adds mesh visual-parameter copy test.
tests/data_test.py Updates imports for MVI inversion.
simpeg_drivers/utils/utils.py Switches SimPEG-group-to-driver conversion to SimPEGDriversUIJson and changes driver import resolution.
simpeg_drivers/utils/tile_estimate.py Adds simulation target validation + icon metadata for tile estimator.
simpeg_drivers/utils/synthetics/surveys/frequency_domain/fdem.py Changes synthetic FDEM transmitter frequency referencing/value_map behavior.
simpeg_drivers/uijson.py Adds from_dict() helper for legacy dict-to-UIJson conversion.
simpeg_drivers/potential_fields/magnetic_vector/options.py Adds icon metadata for MVI forward/inversion options.
simpeg_drivers/potential_fields/magnetic_vector/inversion.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_vector/forward.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_vector/init.py Removes re-exported symbols from package init.
simpeg_drivers/potential_fields/magnetic_vector_pde/inversion.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_vector_pde/forward.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_vector_pde/init.py Removes re-exported symbols from package init.
simpeg_drivers/potential_fields/magnetic_scalar/options.py Adds icon metadata for magnetic scalar forward/inversion options.
simpeg_drivers/potential_fields/magnetic_scalar/inversion.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_scalar/forward.py Updates options import path.
simpeg_drivers/potential_fields/magnetic_scalar/init.py Removes re-exported symbols from package init.
simpeg_drivers/potential_fields/gravity/options.py Adds icon metadata for gravity forward/inversion options.
simpeg_drivers/potential_fields/gravity/inversion.py Updates options import path.
simpeg_drivers/potential_fields/gravity/forward.py Updates options import path.
simpeg_drivers/potential_fields/gravity/init.py Removes re-exported symbols from package init.
simpeg_drivers/plate_simulation/sweep/options.py Migrates sweep option flattening to SimPEGDriversUIJson + adds icon metadata.
simpeg_drivers/plate_simulation/sweep/init.py Removes re-export from package init.
simpeg_drivers/plate_simulation/options.py Adds icon + adds simulation-parameter generation via UIJson conversion.
simpeg_drivers/plate_simulation/match/options.py Adds icon metadata.
simpeg_drivers/plate_simulation/match/driver.py Migrates to SimPEGDriversUIJson and adjusts run/start behaviors.
simpeg_drivers/plate_simulation/match/init.py Removes re-export from package init.
simpeg_drivers/plate_simulation/init.py Removes re-export from package init.
simpeg_drivers/options.py Adds custom write_ui_json, uncertainty validation enhancements, and EM data access tweaks.
simpeg_drivers/natural_sources/tipper/options.py Adds icon metadata for tipper forward/inversion options.
simpeg_drivers/natural_sources/tipper/inversion.py Updates options import path.
simpeg_drivers/natural_sources/tipper/forward.py Updates options import path.
simpeg_drivers/natural_sources/tipper/init.py Removes re-exported symbols from package init.
simpeg_drivers/natural_sources/magnetotellurics/options.py Adds icon metadata for MT forward/inversion options.
simpeg_drivers/natural_sources/magnetotellurics/inversion.py Updates options import path.
simpeg_drivers/natural_sources/magnetotellurics/forward.py Updates options import path.
simpeg_drivers/natural_sources/magnetotellurics/init.py Removes re-exported symbols from package init.
simpeg_drivers/natural_sources/apparent_conductivity/options.py Adds icon metadata for AppCon forward/inversion options.
simpeg_drivers/natural_sources/apparent_conductivity/inversion.py Updates options import path.
simpeg_drivers/natural_sources/apparent_conductivity/forward.py Updates options import path.
simpeg_drivers/natural_sources/apparent_conductivity/init.py Removes re-exported symbols from package init.
simpeg_drivers/natural_sources/init.py Removes re-exports from natural_sources package init.
simpeg_drivers/joint/joint_surveys/options.py Adds icon metadata for joint surveys options.
simpeg_drivers/joint/joint_surveys/driver.py Updates options import path.
simpeg_drivers/joint/joint_surveys/init.py Removes re-exports from package init.
simpeg_drivers/joint/joint_petrophysics/options.py Adds icon metadata for joint petrophysics options.
simpeg_drivers/joint/joint_petrophysics/driver.py Updates options import path and removes unused import.
simpeg_drivers/joint/joint_petrophysics/init.py Removes re-exports from package init.
simpeg_drivers/joint/joint_cross_gradient/options.py Adds icon metadata for cross-gradient options.
simpeg_drivers/joint/joint_cross_gradient/driver.py Updates options import path.
simpeg_drivers/joint/joint_cross_gradient/init.py Removes re-exports from package init.
simpeg_drivers/electromagnetics/time_domain/options.py Adds icon metadata for TDEM forward/inversion options.
simpeg_drivers/electromagnetics/time_domain/inversion.py Updates options import path.
simpeg_drivers/electromagnetics/time_domain/forward.py Updates options import path.
simpeg_drivers/electromagnetics/time_domain/init.py Removes re-exports from package init.
simpeg_drivers/electromagnetics/time_domain_1d/options.py Adds icon metadata for TDEM1D forward/inversion options.
simpeg_drivers/electromagnetics/time_domain_1d/inversion.py Updates options import path.
simpeg_drivers/electromagnetics/time_domain_1d/forward.py Updates options import path.
simpeg_drivers/electromagnetics/time_domain_1d/init.py Removes re-exports from package init.
simpeg_drivers/electromagnetics/frequency_domain/options.py Adds cached metadata access + updates channel naming + adds icon metadata.
simpeg_drivers/electromagnetics/frequency_domain/inversion.py Updates options import path.
simpeg_drivers/electromagnetics/frequency_domain/forward.py Updates options import path.
simpeg_drivers/electromagnetics/frequency_domain/init.py Removes re-exports from package init.
simpeg_drivers/electromagnetics/frequency_domain_1d/options.py Updates channel naming + adds icon metadata for FDEM1D forward/inversion.
simpeg_drivers/electromagnetics/frequency_domain_1d/inversion.py Updates options import path.
simpeg_drivers/electromagnetics/frequency_domain_1d/forward.py Updates options import path.
simpeg_drivers/electromagnetics/frequency_domain_1d/init.py Removes re-exports from package init.
simpeg_drivers/electromagnetics/base_1d_driver.py Passes triangulation when topography is a Surface.
simpeg_drivers/electricals/induced_polarization/two_dimensions/options.py Adds icon metadata for IP2D forward/inversion options.
simpeg_drivers/electricals/induced_polarization/two_dimensions/inversion.py Updates options import path.
simpeg_drivers/electricals/induced_polarization/two_dimensions/forward.py Updates options import path.
simpeg_drivers/electricals/induced_polarization/two_dimensions/init.py Removes re-exports from package init.
simpeg_drivers/electricals/induced_polarization/three_dimensions/options.py Adds icon metadata for IP3D forward/inversion options.
simpeg_drivers/electricals/induced_polarization/three_dimensions/inversion.py Updates options import path.
simpeg_drivers/electricals/induced_polarization/three_dimensions/forward.py Updates options import path.
simpeg_drivers/electricals/induced_polarization/three_dimensions/init.py Removes re-exports from package init.
simpeg_drivers/electricals/direct_current/two_dimensions/options.py Introduces 2D-specific conductivity model options + adds icons.
simpeg_drivers/electricals/direct_current/two_dimensions/inversion.py Updates options import path.
simpeg_drivers/electricals/direct_current/two_dimensions/forward.py Updates options import path.
simpeg_drivers/electricals/direct_current/two_dimensions/init.py Removes re-exports from package init.
simpeg_drivers/electricals/direct_current/three_dimensions/options.py Adds icon metadata for DC3D forward/inversion options.
simpeg_drivers/electricals/direct_current/three_dimensions/inversion.py Updates options import path.
simpeg_drivers/electricals/direct_current/three_dimensions/forward.py Updates options import path.
simpeg_drivers/electricals/direct_current/three_dimensions/init.py Removes re-exports from package init.
simpeg_drivers/electricals/base_2d.py Adds Conductivity2DModelOptions and related typing/aliasing updates.
simpeg_drivers/driver.py Adds Driver.start() that consumes BaseUIJson / SimPEGDriversUIJson.
simpeg_drivers/depth_of_investigation/sensitivity_cutoff/options.py Expands mesh typing + adds out_group/icon metadata.
simpeg_drivers/depth_of_investigation/sensitivity_cutoff/driver.py Masks zero sensitivities + supports output group/mesh copying.
simpeg_drivers/components/meshes.py Copies mesh visual parameters to output mesh + fixes cell convention reorder logic.
simpeg_drivers/components/factories/survey_factory.py Adjusts FDEM source/receiver construction for coaxial/coplanar handling.
simpeg_drivers/components/factories/source_factory.py Sets FDEM source orientation from receivers.
simpeg_drivers/components/factories/receiver_factory.py Refines EM receiver orientation parsing and averaging behavior.
simpeg_drivers/components/data.py Updates FDEM normalization including coaxial/coplanar scaling.
simpeg_drivers-assets/uijson/tipper_inversion.ui.json Adds tooltips + removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/tipper_forward.ui.json Removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json Updates unit label/tooltips and removes legacy fields.
simpeg_drivers-assets/uijson/tdem1d_forward.ui.json Updates unit label and removes legacy fields.
simpeg_drivers-assets/uijson/tdem_inversion.ui.json Adds tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/tdem_forward.ui.json Updates unit label and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/sensitivity_cutoff.ui.json Expands mesh type support and adds out_group field.
simpeg_drivers-assets/uijson/plate_sweep.ui.json Fixes tooltip field name typos.
simpeg_drivers-assets/uijson/plate_simulation.ui.json Updates labels and removes deprecated sweep toggle.
simpeg_drivers-assets/uijson/magnetotellurics_inversion.ui.json Adds tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/magnetotellurics_forward.ui.json Removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/magnetic_vector_pde_inversion.ui.json Adds tooltips + hides tile_spatial.
simpeg_drivers-assets/uijson/magnetic_vector_pde_forward.ui.json Updates mesh type list + hides tile_spatial.
simpeg_drivers-assets/uijson/magnetic_vector_inversion.ui.json Adds tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/magnetic_vector_forward.ui.json Updates mesh type list and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/magnetic_scalar_inversion.ui.json Adds tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/magnetic_scalar_forward.ui.json Removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/joint_surveys_inversion.ui.json Adds tooltips and updates directive tooltip text.
simpeg_drivers-assets/uijson/joint_petrophysics_inversion.ui.json Adds tooltips and updates directive tooltip text.
simpeg_drivers-assets/uijson/joint_cross_gradient_inversion.ui.json Adds tooltips and updates directive tooltip text.
simpeg_drivers-assets/uijson/induced_polarization_3d_inversion.ui.json Adds/updates tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/induced_polarization_3d_forward.ui.json Adds tooltip and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/induced_polarization_2d_inversion.ui.json Improves tooltips and converts tile_spatial from scalar to object.
simpeg_drivers-assets/uijson/induced_polarization_2d_forward.ui.json Improves background conductivity tooltip wording.
simpeg_drivers-assets/uijson/gravity_inversion.ui.json Updates mesh types, tooltips, and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/gravity_forward.ui.json Removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json Renames channels to real/imag and updates tooltips.
simpeg_drivers-assets/uijson/fdem1d_forward.ui.json Renames booleans to real/imag and updates tooltips.
simpeg_drivers-assets/uijson/fdem_inversion.ui.json Renames channels to real/imag and removes per-orientation channel UI.
simpeg_drivers-assets/uijson/fdem_forward.ui.json Renames booleans to real/imag and removes per-orientation channel UI.
simpeg_drivers-assets/uijson/direct_current_3d_inversion.ui.json Improves tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/direct_current_3d_forward.ui.json Removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/direct_current_2d_inversion.ui.json Adds tooltips and updates directive tooltip text.
simpeg_drivers-assets/uijson/apparent_conductivity_inversion.ui.json Adds tooltips and removes legacy tile_spatial subfields.
simpeg_drivers-assets/uijson/apparent_conductivity_forward.ui.json Removes legacy tile_spatial subfields.
environments/py-3.13-win-64.conda.lock.yml Refreshes pinned dependencies and git SHAs.
environments/py-3.13-win-64-dev.conda.lock.yml Refreshes dev lockfile pins and git SHAs.
environments/py-3.13-linux-64.conda.lock.yml Refreshes pinned dependencies and git SHAs.
environments/py-3.13-linux-64-dev.conda.lock.yml Refreshes dev lockfile pins and git SHAs.
environments/py-3.12-win-64.conda.lock.yml Refreshes pinned dependencies and git SHAs.
environments/py-3.12-win-64-dev.conda.lock.yml Refreshes dev lockfile pins and git SHAs.
environments/py-3.12-linux-64.conda.lock.yml Refreshes pinned dependencies and git SHAs.
docs/tutorials/magnetic.ipynb Fixes tutorial text and adjusts figure scaling.
docs/tutorials/gravity.ipynb Adjusts figure scaling.
docs/tutorials/dc_resistivity.ipynb Adjusts figure scaling.
docs/plate-simulation/standalone.rst Updates narrative to match plate depth/centering behavior.
docs/fundamentals/mesh_design.ipynb Fixes typo (“though” → “thought”) and notebook structure.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 774 to +776
if forward_only:
class_name = classes.get("forward", class_name)
mod_name += ".forward"
class_name = classes.get("forward")
Comment thread simpeg_drivers/driver.py
Comment on lines +508 to +512
uijson = (
SimPEGDriversUIJson.read(filepath)
if isinstance(filepath, str | Path)
else filepath
)
Comment on lines 58 to 63
tx_vertices = vertices[line, :] - delta * config["Offset"]
tx_locs_list.append(tx_vertices)
frequency_list.append([[config["Frequency"]] * sum(line)])
frequency_list.append([np.full(sum(line), f_count + 1)])

tx_locs = np.vstack(tx_locs_list)
freqs = np.hstack(frequency_list).flatten()
Comment on lines 231 to 233
names = results.get_data("file")[0]
assert names.values[0] == file.stem + f"_[{1}].geoh5"
assert names.values == file.stem + f"_[{1}].geoh5"

Comment on lines 18 to 22
from simpeg_drivers.depth_of_investigation.sensitivity_cutoff.options import (
SensitivityCutoffOptions,
)
from simpeg_drivers.utils.utils import validate_out_group

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants