From b4450cf72efab5c8a2e45093b9f37a3ebc16196a Mon Sep 17 00:00:00 2001 From: dominiquef Date: Thu, 30 Oct 2025 14:07:07 -0700 Subject: [PATCH 1/2] Use default scale of 1, allow for None group and multiplier in PGI --- simpeg_drivers/joint/driver.py | 3 ++- simpeg_drivers/joint/joint_petrophysics/options.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/simpeg_drivers/joint/driver.py b/simpeg_drivers/joint/driver.py index 5ad9c34bc..bc93f59ea 100644 --- a/simpeg_drivers/joint/driver.py +++ b/simpeg_drivers/joint/driver.py @@ -65,7 +65,8 @@ def data_misfit(self): fun.name = f"Group_{label.upper()}:Tile_{ii}" multipliers += [ - getattr(self.params, f"group_{label}_multiplier") ** 2.0 + (getattr(self.params, f"group_{label}_multiplier") or 1.0) + ** 2.0 ] * len(driver.data_misfit.objfcts) if self.client: diff --git a/simpeg_drivers/joint/joint_petrophysics/options.py b/simpeg_drivers/joint/joint_petrophysics/options.py index ab901db0d..b10816bfe 100644 --- a/simpeg_drivers/joint/joint_petrophysics/options.py +++ b/simpeg_drivers/joint/joint_petrophysics/options.py @@ -15,6 +15,7 @@ from typing import ClassVar from geoh5py.data import FloatData, ReferencedData +from geoh5py.groups import SimPEGGroup from geoh5py.objects import Octree from simpeg_drivers import assets_path @@ -49,6 +50,8 @@ class JointPetrophysicsOptions(BaseJointOptions): title: str = "Joint Petrophysically Guided Inversion (PGI)" inversion_type: str = "joint petrophysics" + group_a_multiplier: float | None = None group_b_multiplier: float | None = None + group_b: SimPEGGroup | None = None mesh: Octree models: JointPetrophysicsModelOptions From 40ae015c8b4e9728cb37d8d293f6cb70d3b13371 Mon Sep 17 00:00:00 2001 From: dominiquef Date: Thu, 30 Oct 2025 14:12:48 -0700 Subject: [PATCH 2/2] Add unit test --- .../driver_joint_pgi_homogeneous_test.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/run_tests/driver_joint_pgi_homogeneous_test.py b/tests/run_tests/driver_joint_pgi_homogeneous_test.py index aff3e37d8..37cea33aa 100644 --- a/tests/run_tests/driver_joint_pgi_homogeneous_test.py +++ b/tests/run_tests/driver_joint_pgi_homogeneous_test.py @@ -143,7 +143,7 @@ def test_homogeneous_run( orig_data = [] petrophysics = None gradient_rotation = None - mesh = None + for suffix in "AB": components = SyntheticsComponents( geoh5=geoh5, @@ -226,6 +226,19 @@ def test_homogeneous_run( ) drivers.append(MagneticInversionDriver(params)) + # Test if single group is valid + params = JointPetrophysicsOptions.build( + topography_object=topography, + geoh5=geoh5, + group_a=drivers[0].out_group, + mesh=global_mesh, + petrophysical_model=petrophysics, + ) + driver = JointPetrophysicsDriver(params) + assert len(driver.data_misfit.objfcts) == 1 + assert driver.data_misfit.multipliers == [1.0] + + # Re-build full params = JointPetrophysicsOptions.build( topography_object=topography, geoh5=geoh5,