From 26153bb036b9dabb832a52430b9cb68dd798fd8e Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 09:06:17 -0700 Subject: [PATCH 1/6] Set topo elevation to -inf on global to bypass check --- simpeg_drivers/electromagnetics/base_1d_driver.py | 1 + 1 file changed, 1 insertion(+) diff --git a/simpeg_drivers/electromagnetics/base_1d_driver.py b/simpeg_drivers/electromagnetics/base_1d_driver.py index 2f5b8f3f..fd7779a6 100644 --- a/simpeg_drivers/electromagnetics/base_1d_driver.py +++ b/simpeg_drivers/electromagnetics/base_1d_driver.py @@ -97,6 +97,7 @@ def simulation(self): mesh=self.inversion_mesh.mesh, models=self.models, survey=self.inversion_data.survey, + topo=[0, 0, -np.inf], # Overload for global ) self._simulation.mesh = self.inversion_mesh.mesh From 3d5e9c053a7ee6fc92e4183150ceda94284216df Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 09:15:17 -0700 Subject: [PATCH 2/6] Allow to pass kwargs to simulation construction --- .../components/factories/simulation_factory.py | 12 +++++------- simpeg_drivers/electromagnetics/base_1d_driver.py | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/simpeg_drivers/components/factories/simulation_factory.py b/simpeg_drivers/components/factories/simulation_factory.py index 15514722..c0e106a2 100644 --- a/simpeg_drivers/components/factories/simulation_factory.py +++ b/simpeg_drivers/components/factories/simulation_factory.py @@ -121,19 +121,17 @@ def assemble_arguments( survey=None, mesh=None, models=None, + **kwargs, ): if "1d" in self.factory_type: return () return [mesh] - def assemble_keyword_arguments( - self, - survey=None, - mesh=None, - models=None, - ): - kwargs = {} + def assemble_keyword_arguments(self, survey=None, mesh=None, models=None, **kwargs): + if not kwargs: + kwargs = {} + kwargs["survey"] = survey kwargs["max_chunk_size"] = self.params.compute.max_chunk_size kwargs["store_sensitivities"] = ( diff --git a/simpeg_drivers/electromagnetics/base_1d_driver.py b/simpeg_drivers/electromagnetics/base_1d_driver.py index fd7779a6..00f50095 100644 --- a/simpeg_drivers/electromagnetics/base_1d_driver.py +++ b/simpeg_drivers/electromagnetics/base_1d_driver.py @@ -97,7 +97,7 @@ def simulation(self): mesh=self.inversion_mesh.mesh, models=self.models, survey=self.inversion_data.survey, - topo=[0, 0, -np.inf], # Overload for global + topo=[0, 0, -np.inf], # Bypass check for global simulation ) self._simulation.mesh = self.inversion_mesh.mesh From 677b8498c3c3ce9fc041423880563bf99b0329c4 Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 09:27:27 -0700 Subject: [PATCH 3/6] Check for option when creating directive --- simpeg_drivers/components/factories/directives_factory.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/simpeg_drivers/components/factories/directives_factory.py b/simpeg_drivers/components/factories/directives_factory.py index ba64bba1..5f3bec65 100644 --- a/simpeg_drivers/components/factories/directives_factory.py +++ b/simpeg_drivers/components/factories/directives_factory.py @@ -200,8 +200,10 @@ def save_property_group(self): @property def save_sensitivities_directive(self): """""" - if self._save_sensitivities_directive is None and isinstance( - self.params, BaseInversionOptions + if ( + self._save_sensitivities_directive is None + and isinstance(self.params, BaseInversionOptions) + and self.params.directives.save_sensitivities ): self._save_sensitivities_directive = SaveSensitivitiesGeoh5Factory( self.params From 028ece5f1962878b8bc8f378fd415a16c6367f61 Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 09:29:57 -0700 Subject: [PATCH 4/6] Augment test --- tests/run_tests/driver_airborne_fem_1d_test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/run_tests/driver_airborne_fem_1d_test.py b/tests/run_tests/driver_airborne_fem_1d_test.py index 5b9d4b25..c5aae5e6 100644 --- a/tests/run_tests/driver_airborne_fem_1d_test.py +++ b/tests/run_tests/driver_airborne_fem_1d_test.py @@ -143,6 +143,7 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True): percentile=100, cooling_rate=3, chi_factor=0.25, + save_sensitivities=False, **data_kwargs, ) params.write_ui_json(path=tmp_path / "Inv_run.ui.json") @@ -154,7 +155,7 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True): driver.params.geoh5.h5file, driver.params.out_group.uid ) output["data"] = orig_z_real_1 - + assert not run_ws.get_entity("Iteration_0_sensitivities")[0] assert ( run_ws.get_entity("Iteration_1_z_imag_[1]")[0].entity_type.uid == run_ws.get_entity("Observed_z_imag_[1]")[0].entity_type.uid From 30921502cf0d6f01e1827bc4582be4f1c7c89624 Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 10:55:36 -0700 Subject: [PATCH 5/6] Add test to MT --- simpeg_drivers/components/factories/directives_factory.py | 2 +- tests/run_tests/driver_mt_test.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/simpeg_drivers/components/factories/directives_factory.py b/simpeg_drivers/components/factories/directives_factory.py index 5f3bec65..71ed8264 100644 --- a/simpeg_drivers/components/factories/directives_factory.py +++ b/simpeg_drivers/components/factories/directives_factory.py @@ -144,7 +144,7 @@ def save_directives(self): ]: save_directive = getattr(self, directive) if save_directive is not None: - directives_list.append(getattr(self, directive)) + directives_list.append(save_directive) if ( isinstance(save_directive, directives.SaveDataGeoH5) diff --git a/tests/run_tests/driver_mt_test.py b/tests/run_tests/driver_mt_test.py index 059fa193..b0b8892c 100644 --- a/tests/run_tests/driver_mt_test.py +++ b/tests/run_tests/driver_mt_test.py @@ -178,6 +178,7 @@ def test_magnetotellurics_run(tmp_path: Path, max_iterations=1, pytest=True): driver.params.geoh5.h5file, driver.params.out_group.uid ) output["data"] = orig_zyy_real_1 + assert not run_ws.get_entity("Iteration_0_sensitivities")[0] if pytest: check_target(output, target_run, tolerance=0.2) nan_ind = np.isnan(run_ws.get_entity("Iteration_0_model")[0].values) From 11245329c3474defbb63e84781a1af5e7da40340 Mon Sep 17 00:00:00 2001 From: dominiquef Date: Sat, 1 Nov 2025 11:01:20 -0700 Subject: [PATCH 6/6] Revert 1D test --- tests/run_tests/driver_airborne_fem_1d_test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/run_tests/driver_airborne_fem_1d_test.py b/tests/run_tests/driver_airborne_fem_1d_test.py index c5aae5e6..5b9d4b25 100644 --- a/tests/run_tests/driver_airborne_fem_1d_test.py +++ b/tests/run_tests/driver_airborne_fem_1d_test.py @@ -143,7 +143,6 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True): percentile=100, cooling_rate=3, chi_factor=0.25, - save_sensitivities=False, **data_kwargs, ) params.write_ui_json(path=tmp_path / "Inv_run.ui.json") @@ -155,7 +154,7 @@ def test_fem_1d_run(tmp_path: Path, max_iterations=1, pytest=True): driver.params.geoh5.h5file, driver.params.out_group.uid ) output["data"] = orig_z_real_1 - assert not run_ws.get_entity("Iteration_0_sensitivities")[0] + assert ( run_ws.get_entity("Iteration_1_z_imag_[1]")[0].entity_type.uid == run_ws.get_entity("Observed_z_imag_[1]")[0].entity_type.uid