diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 28f49512..d349a943 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -86,6 +86,7 @@ repos: - id: mixed-line-ending exclude: ^\.idea/.*\.xml$ - id: name-tests-test + exclude: testing_utils.py - id: pretty-format-json args: - --autofix diff --git a/simpeg_drivers/driver.py b/simpeg_drivers/driver.py index 1d2cb02f..a7ab4fee 100644 --- a/simpeg_drivers/driver.py +++ b/simpeg_drivers/driver.py @@ -612,30 +612,38 @@ def configure_dask(self): dconf.set(scheduler="threads", pool=ThreadPool(n_cpu)) @classmethod - def start(cls, filepath: str | Path | InputFile): + def start( + cls, filepath: str | Path | InputFile, driver_class=None, **kwargs + ) -> InversionDriver: + """ + Start the inversion driver. + + :param filepath: Path to the input file or InputFile object. + :param driver_class: Optional driver class to use instead of the default. + :param kwargs: Additional keyword arguments for InputFile read_ui_json. + + :return: InversionDriver instance with the specified parameters. + """ if isinstance(filepath, InputFile): ifile = filepath else: - ifile = InputFile.read_ui_json(filepath) + ifile = InputFile.read_ui_json(filepath, **kwargs) - forward_only = ifile.data["forward_only"] - inversion_type = ifile.ui_json.get("inversion_type", None) - - driver_class = cls.driver_class_from_name( - inversion_type, forward_only=forward_only - ) - - with ifile.data["geoh5"].open(mode="r+"): - params = driver_class._options_class.build(ifile) - driver = driver_class(params) + if driver_class is None: + driver = cls.from_input_file(ifile) + else: + with ifile.data["geoh5"].open(mode="r+"): + params = driver_class._options_class.build(ifile) + driver = driver_class(params) driver.run() + return driver @staticmethod def driver_class_from_name( name: str, forward_only: bool = False - ) -> InversionDriver: + ) -> type[InversionDriver]: if name not in DRIVER_MAP: msg = f"Inversion type {name} is not supported." msg += f" Valid inversions are: {(*list(DRIVER_MAP),)}." @@ -649,6 +657,26 @@ def driver_class_from_name( module = __import__(mod_name, fromlist=[class_name]) return getattr(module, class_name) + @classmethod + def from_input_file(cls, ifile: InputFile) -> InversionDriver: + forward_only = ifile.data["forward_only"] + inversion_type = ifile.ui_json.get("inversion_type", None) + if inversion_type is None: + raise GeoAppsError( + "Key/value 'inversion_type' not found in the input file. " + "Please specify the inversion type in the UI JSON." + ) + + driver_class = cls.driver_class_from_name( + inversion_type, forward_only=forward_only + ) + + with ifile.data["geoh5"].open(mode="r+"): + params = driver_class._options_class.build(ifile) + driver = driver_class(params) + + return driver + class InversionLogger: def __init__(self, logfile, driver): diff --git a/tests/data_test.py b/tests/data_test.py index 82288b5d..5f01de33 100644 --- a/tests/data_test.py +++ b/tests/data_test.py @@ -29,7 +29,7 @@ from simpeg_drivers.potential_fields.magnetic_vector.options import ( MVIInversionOptions, ) -from simpeg_drivers.utils.testing import Geoh5Tester, setup_inversion_workspace +from tests.testing_utils import Geoh5Tester, setup_inversion_workspace def get_mvi_params(tmp_path: Path, **kwargs) -> MVIInversionOptions: diff --git a/tests/driver_test.py b/tests/driver_test.py index aa99564e..a3c419ac 100644 --- a/tests/driver_test.py +++ b/tests/driver_test.py @@ -15,7 +15,7 @@ from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields import GravityInversionOptions from simpeg_drivers.potential_fields.gravity.driver import GravityInversionDriver -from simpeg_drivers.utils.testing import setup_inversion_workspace +from tests.testing_utils import setup_inversion_workspace def test_smallness_terms(tmp_path: Path): diff --git a/tests/legacy/v0.2.1/direct_current_forward_2d.ui.json b/tests/legacy/v0.2.1/direct_current_forward_2d.ui.json new file mode 100644 index 00000000..c5b4cbe6 --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_forward_2d.ui.json @@ -0,0 +1,275 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 2D Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current 2d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Survey", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Survey", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "line_id": { + "group": "Survey", + "main": true, + "min": 1, + "label": "Line number", + "value": 1, + "tooltip": "Selects the line of data to be processed." + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "potential_channel_bool": true, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{c94968ea-cf7d-11eb-b8bc-0242ac130003}", + "value": "" + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "label": "Expansion factor", + "value": 1.1 + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "", + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + } +} diff --git a/tests/legacy/v0.2.1/direct_current_forward_3d.ui.json b/tests/legacy/v0.2.1/direct_current_forward_3d.ui.json new file mode 100644 index 00000000..99aacd6b --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_forward_3d.ui.json @@ -0,0 +1,178 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 3D Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current 3d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Survey", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "potential_channel_bool": true, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/direct_current_forward_pseudo3d.ui.json b/tests/legacy/v0.2.1/direct_current_forward_pseudo3d.ui.json new file mode 100644 index 00000000..615c47d6 --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_forward_pseudo3d.ui.json @@ -0,0 +1,235 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 2D Batch Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current pseudo 3d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Survey", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "potential_channel_bool": true, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "dependencyType": "disabled", + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "label": "Expansion factor", + "value": 1.1 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "optional": true, + "enabled": false, + "value": "", + "visible": true + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "files_only": { + "label": "Generate files only", + "group": "Python run preferences", + "main": true, + "value": false + }, + "cleanup": { + "main": true, + "group": "Python run preferences", + "label": "Clean directory", + "value": false + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/direct_current_inversion_2d.ui.json b/tests/legacy/v0.2.1/direct_current_inversion_2d.ui.json new file mode 100644 index 00000000..a34ce7b9 --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_inversion_2d.ui.json @@ -0,0 +1,605 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 2D Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current 2d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Data", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Data", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "line_id": { + "group": "Data", + "main": true, + "min": 1, + "label": "Line number", + "value": 1, + "tooltip": "Selects the line of data to be processed." + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "potential_channel": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Potential (V/I)", + "tooltip": "Potential: voltage normalized by current", + "parent": "data_object", + "value": "" + }, + "potential_uncertainty": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{c94968ea-cf7d-11eb-b8bc-0242ac130003}", + "value": "" + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "label": "Expansion factor", + "value": 1.1 + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": "Cell", + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "", + "potential_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/direct_current_inversion_3d.ui.json b/tests/legacy/v0.2.1/direct_current_inversion_3d.ui.json new file mode 100644 index 00000000..7b351571 --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_inversion_3d.ui.json @@ -0,0 +1,562 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 3D Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current 3d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Data", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "potential_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Potential (V/I)", + "parent": "data_object", + "value": "" + }, + "potential_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.0 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "", + "potential_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/direct_current_inversion_pseudo3d.ui.json b/tests/legacy/v0.2.1/direct_current_inversion_pseudo3d.ui.json new file mode 100644 index 00000000..ce546a34 --- /dev/null +++ b/tests/legacy/v0.2.1/direct_current_inversion_pseudo3d.ui.json @@ -0,0 +1,575 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Direct Current (DC) 2D Batch Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "direct current pseudo 3d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Data", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "potential_channel": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Potential (V/I)", + "parent": "data_object", + "value": "" + }, + "potential_uncertainty": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "dependencyType": "disabled", + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "label": "Expansion factor", + "value": 1.1 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "optional": true, + "enabled": false, + "value": "", + "visible": true + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": "Cell", + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Reference Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "files_only": { + "label": "Generate files only", + "group": "Python run preferences", + "main": true, + "value": false + }, + "cleanup": { + "main": true, + "group": "Python run preferences", + "label": "Clean directory", + "value": true + }, + "distributed_workers": "", + "potential_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/fem_forward.ui.json b/tests/legacy/v0.2.1/fem_forward.ui.json new file mode 100644 index 00000000..5b059c8e --- /dev/null +++ b/tests/legacy/v0.2.1/fem_forward.ui.json @@ -0,0 +1,184 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Frequency-domain EM (FEM) Forward", + "icon": "surveyairborneem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "fem", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": [ + "{b3a47539-0301-4b27-922e-1dde9d882c60}" + ], + "value": "" + }, + "z_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Z real component", + "value": true + }, + "z_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Z imag component", + "value": true + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/fem_inversion.ui.json b/tests/legacy/v0.2.1/fem_inversion.ui.json new file mode 100644 index 00000000..ef627ad6 --- /dev/null +++ b/tests/legacy/v0.2.1/fem_inversion.ui.json @@ -0,0 +1,590 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Frequency-domain EM (FEM) Inversion", + "icon": "surveyairborneem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "fem", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": [ + "{b3a47539-0301-4b27-922e-1dde9d882c60}" + ], + "value": "" + }, + "z_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "z-real component", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "z_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "z_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "z_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "z-imag component", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "z_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "z_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 1.0, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/gravity_forward.ui.json b/tests/legacy/v0.2.1/gravity_forward.ui.json new file mode 100644 index 00000000..13bffb86 --- /dev/null +++ b/tests/legacy/v0.2.1/gravity_forward.ui.json @@ -0,0 +1,262 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Gravity Forward", + "icon": "surveyairbornegravity", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "gravity", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{b54f6be6-0eb5-4a4e-887a-ba9d276f9a83}", + "{5ffa3816-358d-4cdd-9b7d-e1f7f5543e05}" + ], + "value": "" + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "gz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gz (mGal)", + "value": true + }, + "gx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gx (mGal)", + "value": false + }, + "gy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gy (mGal)", + "value": false + }, + "guv_channel_bool": { + "group": "Survey", + "main": true, + "label": "Guv (Eo)", + "value": false + }, + "gxy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gxy/Gne (Eo)", + "value": false + }, + "gxx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gxx (Eo)", + "value": false + }, + "gyy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gyy (Eo)", + "value": false + }, + "gzz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gzz (Eo)", + "value": false + }, + "gxz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gxz (Eo)", + "value": false + }, + "gyz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Gyz (Eo)", + "value": false + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Density (g/cc)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/gravity_inversion.ui.json b/tests/legacy/v0.2.1/gravity_inversion.ui.json new file mode 100644 index 00000000..e60a48f7 --- /dev/null +++ b/tests/legacy/v0.2.1/gravity_inversion.ui.json @@ -0,0 +1,825 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Gravity Inversion", + "icon": "surveyairbornegravity", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "gravity", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{b54f6be6-0eb5-4a4e-887a-ba9d276f9a83}", + "{5ffa3816-358d-4cdd-9b7d-e1f7f5543e05}" + ], + "value": "" + }, + "gz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gz (mGal)", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "gz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gx (mGal)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gy (mGal)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "guv_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Guv (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "guv_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "guv_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gxy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gxy/Gne (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gxy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gxy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gxx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gxx (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gxx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gxx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gyy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gyy (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gyy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gyy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gzz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gzz (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gzz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gzz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gxz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gxz (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gxz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gxz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "gyz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Gyz (Eo)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "gyz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "gyz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial density (g/cc)", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Reference density (g/cc)", + "property": "", + "value": 0.0 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (g/cc)", + "property": "", + "optional": true, + "value": -10.0, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (g/cc)", + "property": "", + "optional": true, + "value": 10.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 1, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": false, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/induced_polarization_forward_2d.ui.json b/tests/legacy/v0.2.1/induced_polarization_forward_2d.ui.json new file mode 100644 index 00000000..a10aee5a --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_forward_2d.ui.json @@ -0,0 +1,275 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 2D Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization 2d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Survey", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Survey", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "line_id": { + "group": "Survey", + "main": true, + "min": 1, + "label": "Line number", + "value": 1, + "tooltip": "Selects the line of data to be processed." + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel_bool": true, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{c94968ea-cf7d-11eb-b8bc-0242ac130003}", + "value": "" + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "label": "Expansion factor", + "value": 1.1 + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.0 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/induced_polarization_forward_3d.ui.json b/tests/legacy/v0.2.1/induced_polarization_forward_3d.ui.json new file mode 100644 index 00000000..acd13b1e --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_forward_3d.ui.json @@ -0,0 +1,218 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 3D Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization 3d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Survey", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel_bool": true, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "min": 0.0, + "max": 10000.0, + "value": 0.0 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/induced_polarization_forward_pseudo3d.ui.json b/tests/legacy/v0.2.1/induced_polarization_forward_pseudo3d.ui.json new file mode 100644 index 00000000..09e68683 --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_forward_pseudo3d.ui.json @@ -0,0 +1,272 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 2D Batch Forward", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization pseudo 3d", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Survey", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": true, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel_bool": true, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "dependencyType": "disabled", + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "label": "Expansion factor", + "value": 1.1 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "visible": true + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "files_only": { + "label": "Generate files only", + "group": "Python run preferences", + "main": true, + "value": false + }, + "cleanup": { + "main": true, + "group": "Python run preferences", + "label": "Clean directory", + "value": false + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/induced_polarization_inversion_2d.ui.json b/tests/legacy/v0.2.1/induced_polarization_inversion_2d.ui.json new file mode 100644 index 00000000..714f7a6f --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_inversion_2d.ui.json @@ -0,0 +1,615 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 2D Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization 2d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Data", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Data", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "line_id": { + "group": "Data", + "main": true, + "min": 1, + "label": "Line number", + "value": 1, + "tooltip": "Selects the line of data to be processed." + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Chargeability (V/V)", + "parent": "data_object", + "value": "" + }, + "chargeability_uncertainty": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{c94968ea-cf7d-11eb-b8bc-0242ac130003}", + "value": "" + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "main": true, + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "dependency": "mesh", + "dependencyType": "disabled", + "label": "Expansion factor", + "value": 1.1 + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial chargeability (V/V)", + "property": "", + "value": 0.0 + }, + "reference_model": { + "association": "Cell", + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference chargeability (V/V)", + "property": "", + "optional": true, + "enabled": false, + "value": 0.0 + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (V/V)", + "property": "", + "optional": true, + "value": 0.0, + "enabled": true + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (V/V)", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "max_ram": "", + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "", + "chargeability_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/induced_polarization_inversion_3d.ui.json b/tests/legacy/v0.2.1/induced_polarization_inversion_3d.ui.json new file mode 100644 index 00000000..aede42d7 --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_inversion_3d.ui.json @@ -0,0 +1,602 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 3D Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization 3d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "z_from_topo": { + "group": "Data", + "main": true, + "label": "Surface survey", + "tooltip": "Uncheck if borehole data is present", + "value": true + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Chargeability (V/V)", + "parent": "data_object", + "value": "" + }, + "chargeability_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial Chargeability (V/V)", + "property": "", + "min": 0.0, + "max": 10000.0, + "value": 0.0 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference Chargeability (V/V)", + "property": "", + "optional": true, + "enabled": false, + "value": 0.0 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (V/V)", + "property": "", + "optional": true, + "value": 0.0, + "enabled": true + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (V/V", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_ram": "", + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "", + "chargeability_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/induced_polarization_inversion_pseudo3d.ui.json b/tests/legacy/v0.2.1/induced_polarization_inversion_pseudo3d.ui.json new file mode 100644 index 00000000..c78b126f --- /dev/null +++ b/tests/legacy/v0.2.1/induced_polarization_inversion_pseudo3d.ui.json @@ -0,0 +1,612 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Induced Polarization (IP) 2D Batch Inversion", + "icon": "PotentialElectrode", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "induced polarization pseudo 3d", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{275ecee9-9c24-4378-bf94-65f3c5fbe163}", + "value": "" + }, + "line_object": { + "association": "Cell", + "dataType": "Referenced", + "group": "Data", + "main": true, + "label": "Line ID", + "parent": "data_object", + "value": "", + "tooltip": "Selects the data representing the different lines in the survey." + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": true, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "chargeability_channel": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Chargeability (V/V)", + "parent": "data_object", + "value": "" + }, + "chargeability_uncertainty": { + "association": "Cell", + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "property": "", + "value": 1.0 + }, + "u_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Easting core cell size (m)", + "value": 25.0 + }, + "v_cell_size": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Northing core cell size (m)", + "value": 25.0 + }, + "depth_core": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Depth of core (m)", + "value": 500.0 + }, + "horizontal_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "enabled": true, + "label": "Horizontal padding (m)", + "value": 1000.0 + }, + "vertical_padding": { + "min": 0.0, + "group": "Mesh and models", + "main": true, + "dependencyType": "disabled", + "label": "Vertical padding (m)", + "value": 1000.0 + }, + "expansion_factor": { + "main": true, + "group": "Mesh and models", + "label": "Expansion factor", + "value": 1.1 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "optional": true, + "enabled": false, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "visible": true + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "conductivity_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Conductivity (S/m)", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial chargeability (V/V)", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": "Cell", + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference chargeability (V/V)", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (V/V)", + "property": "", + "optional": true, + "value": 0.0, + "enabled": true + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (V/V)", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": 1, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "files_only": { + "label": "Generate files only", + "group": "Python run preferences", + "main": true, + "value": false + }, + "cleanup": { + "main": true, + "group": "Python run preferences", + "label": "Clean directory", + "value": true + }, + "distributed_workers": "", + "chargeability_channel_bool": true +} diff --git a/tests/legacy/v0.2.1/joint_cross_gradient_inversion.ui.json b/tests/legacy/v0.2.1/joint_cross_gradient_inversion.ui.json new file mode 100644 index 00000000..9bdec927 --- /dev/null +++ b/tests/legacy/v0.2.1/joint_cross_gradient_inversion.ui.json @@ -0,0 +1,464 @@ +{ + "version": "0.2.0-alpha.1", + "title": "SimPEG Joint Cross Gradient Inversion", + "icon": "", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "joint cross gradient", + "forward_only": false, + "group_a": { + "main": true, + "group": "Joint", + "label": "Group A", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "value": "" + }, + "group_a_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit A Scale", + "value": 1.0, + "tooltip": "Constant multiplier for the data misfit function for Group A." + }, + "group_b": { + "main": true, + "group": "Joint", + "label": "Group B", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "value": "" + }, + "group_b_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit B Scale", + "value": 1.0, + "tooltip": "Constant multiplier for the data misfit function for Group B." + }, + "cross_gradient_weight_a_b": { + "min": 0.0, + "group": "Joint", + "label": "A x B Coupling Scale", + "value": 1.0, + "main": true, + "lineEdit": false, + "tooltip": "Weight applied to the cross gradient regularizations (1: equal weight with the standard Smallness and Smoothness terms.)" + }, + "group_c": { + "main": true, + "group": "Joint", + "label": "Group C", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "optional": true, + "enabled": false, + "value": "" + }, + "group_c_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit C Scale", + "value": 1.0, + "dependency": "group_c", + "dependencyType": "enabled", + "tooltip": "Constant multiplier for the data misfit function for Group C." + }, + "cross_gradient_weight_c_a": { + "min": 0.0, + "group": "Joint", + "label": "A x C Coupling Scale", + "value": 1.0, + "main": true, + "lineEdit": false, + "dependency": "group_c", + "dependencyType": "enabled", + "tooltip": "Weight applied to the cross gradient regularizations (1: equal weight with the standard Smallness and Smoothness terms.)" + }, + "cross_gradient_weight_c_b": { + "min": 0.0, + "group": "Joint", + "label": "B x C Coupling Scale", + "value": 1.0, + "main": true, + "lineEdit": false, + "dependency": "group_c", + "dependencyType": "enabled", + "tooltip": "Weight applied to the cross gradient regularizations (1: equal weight with the standard Smallness and Smoothness terms.)" + }, + "mesh": { + "group": "Mesh and Models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "enabled": false, + "optional": true + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "groupOptional": true, + "label": "Smallness weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "enabled": false + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "enabled": false + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "enabled": false + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "enabled": false + }, + "s_norm": { + "min": 0.0, + "max": 2.0, + "group": "Regularization", + "label": "Smallness norm", + "value": 0.0, + "precision": 2, + "lineEdit": false, + "enabled": false + }, + "x_norm": { + "min": 0.0, + "max": 2.0, + "group": "Regularization", + "label": "X-smoothness norm", + "value": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": false + }, + "y_norm": { + "min": 0.0, + "max": 2.0, + "group": "Regularization", + "label": "Y-smoothness norm", + "value": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": false + }, + "z_norm": { + "min": 0.0, + "max": 2.0, + "group": "Regularization", + "label": "Z-smoothness norm", + "value": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": false + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Regularization", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "enabled": false + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 1, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/joint_surveys_inversion.ui.json b/tests/legacy/v0.2.1/joint_surveys_inversion.ui.json new file mode 100644 index 00000000..74967253 --- /dev/null +++ b/tests/legacy/v0.2.1/joint_surveys_inversion.ui.json @@ -0,0 +1,543 @@ +{ + "version": "0.2.0-alpha.1", + "title": "SimPEG Joint Surveys Inversion", + "icon": "", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "joint surveys", + "forward_only": false, + "group_a": { + "main": true, + "group": "Joint", + "label": "Group A", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "value": "" + }, + "group_a_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit A Scale", + "value": 1.0, + "tooltip": "Constant multiplier for the data misfit function for Group A." + }, + "group_b": { + "main": true, + "group": "Joint", + "label": "Group B", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "value": "" + }, + "group_b_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit B Scale", + "value": 1.0, + "tooltip": "Constant multiplier for the data misfit function for Group B." + }, + "group_c": { + "main": true, + "group": "Joint", + "label": "Group C", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "optional": true, + "enabled": false, + "value": "" + }, + "group_c_multiplier": { + "min": 0.0, + "main": true, + "group": "Joint", + "label": "Misfit C Scale", + "value": 1.0, + "dependency": "group_c", + "dependencyType": "enabled", + "tooltip": "Constant multiplier for the data misfit function for Group C." + }, + "mesh": { + "group": "Mesh and Models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "enabled": false, + "optional": true + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and Models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": "Cell", + "dataType": "Float", + "group": "Mesh and Models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial model", + "property": "", + "optional": true, + "enabled": false, + "value": 0.0001 + }, + "reference_model": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and Models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "value": 0.0001, + "enabled": false + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and Models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound)", + "property": "", + "optional": true, + "value": -10.0, + "enabled": false + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and Models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 10.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 1, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetic_scalar_forward.ui.json b/tests/legacy/v0.2.1/magnetic_scalar_forward.ui.json new file mode 100644 index 00000000..5edd3802 --- /dev/null +++ b/tests/legacy/v0.2.1/magnetic_scalar_forward.ui.json @@ -0,0 +1,258 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetic Forward", + "icon": "surveyairbornemagnetics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetic scalar", + "forward_only": true, + "inducing_field_strength": { + "min": 0.0, + "max": 100000.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Strength (nT)", + "value": 50000.0 + }, + "inducing_field_inclination": { + "min": -90.0, + "max": 90.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Inclination (deg)", + "value": 90.0 + }, + "inducing_field_declination": { + "min": -180.0, + "max": 180.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Declination (deg)", + "value": 0.0 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{4b99204c-d133-4579-a916-a9c8b98cfccb}", + "{028e4905-cc97-4dab-b1bf-d76f58b501b5}" + ], + "value": "" + }, + "tmi_channel_bool": { + "group": "Survey", + "main": true, + "label": "TMI (nT)", + "value": true + }, + "bx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bx (nT)", + "value": false + }, + "by_channel_bool": { + "group": "Survey", + "main": true, + "label": "By (nT)", + "value": false + }, + "bz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bz (nT)", + "value": false + }, + "bxx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxx (nT/m)", + "value": false + }, + "bxy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxy (nT/m)", + "value": false + }, + "bxz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxz (nT/m)", + "value": false + }, + "byy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Byy (nT/m)", + "value": false + }, + "byz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Byz (nT/m)", + "value": false + }, + "bzz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bzz (nT/m)", + "value": false + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Susceptibility (si)", + "property": "", + "value": 0.0001 + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetic_scalar_inversion.ui.json b/tests/legacy/v0.2.1/magnetic_scalar_inversion.ui.json new file mode 100644 index 00000000..5991b367 --- /dev/null +++ b/tests/legacy/v0.2.1/magnetic_scalar_inversion.ui.json @@ -0,0 +1,855 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetic Inversion", + "icon": "surveyairbornemagnetics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetic scalar", + "forward_only": false, + "inducing_field_strength": { + "min": 0.0, + "max": 100000.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Strength (nT)", + "value": 50000.0 + }, + "inducing_field_inclination": { + "min": -90.0, + "max": 90.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Inclination (deg)", + "value": 90.0 + }, + "inducing_field_declination": { + "min": -180.0, + "max": 180.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Declination (deg)", + "value": 0.0 + }, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{4b99204c-d133-4579-a916-a9c8b98cfccb}", + "{028e4905-cc97-4dab-b1bf-d76f58b501b5}" + ], + "value": "" + }, + "tmi_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "TMI (nT)", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "tmi_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "tmi_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bx (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "by_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "By (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "by_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "by_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bz (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxx (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxy (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "byy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Byy (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "byy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "byy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "byz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Byz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "byz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "byz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bzz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bzz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bzz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bzz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial susceptibility (SI)", + "property": "", + "value": 0.0001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Reference susceptibility (SI)", + "property": "", + "value": 0.0 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (SI)", + "property": "", + "optional": true, + "value": 0.0, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (SI)", + "property": "", + "optional": true, + "value": 1.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 1, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": false, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetic_vector_forward.ui.json b/tests/legacy/v0.2.1/magnetic_vector_forward.ui.json new file mode 100644 index 00000000..0273839c --- /dev/null +++ b/tests/legacy/v0.2.1/magnetic_vector_forward.ui.json @@ -0,0 +1,290 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetic Vector (MVI) Forward", + "icon": "surveyairbornemagnetics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetic vector", + "forward_only": true, + "inducing_field_strength": { + "min": 0.1, + "max": 100000.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Strength (nT)", + "value": 50000.0 + }, + "inducing_field_inclination": { + "min": -90.0, + "max": 90.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Inclination (deg)", + "value": 90.0 + }, + "inducing_field_declination": { + "min": -180.0, + "max": 180.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Declination (deg)", + "value": 0.0 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{4b99204c-d133-4579-a916-a9c8b98cfccb}", + "{028e4905-cc97-4dab-b1bf-d76f58b501b5}" + ], + "value": "" + }, + "tmi_channel_bool": { + "group": "Survey", + "main": true, + "label": "TMI (nT)", + "value": true + }, + "bx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bx (nT)", + "value": false + }, + "by_channel_bool": { + "group": "Survey", + "main": true, + "label": "By (nT)", + "value": false + }, + "bz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bz (nT)", + "value": false + }, + "bxx_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxx (nT/m)", + "value": false + }, + "bxy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxy (nT/m)", + "value": false + }, + "bxz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bxz (nT/m)", + "value": false + }, + "byy_channel_bool": { + "group": "Survey", + "main": true, + "label": "Byy (nT/m)", + "value": false + }, + "byz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Byz (nT/m)", + "value": false + }, + "bzz_channel_bool": { + "group": "Survey", + "main": true, + "label": "Bzz (nT/m)", + "value": false + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Susceptibility (si)", + "property": "", + "value": 0.0001 + }, + "starting_inclination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Inclination (deg)", + "property": "", + "value": 0.0 + }, + "starting_declination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Declination (deg)", + "property": "", + "value": 0.0 + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetic_vector_inversion.ui.json b/tests/legacy/v0.2.1/magnetic_vector_inversion.ui.json new file mode 100644 index 00000000..c04086e2 --- /dev/null +++ b/tests/legacy/v0.2.1/magnetic_vector_inversion.ui.json @@ -0,0 +1,919 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetic Vector (MVI) Inversion", + "icon": "surveyairbornemagnetics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetic vector", + "forward_only": false, + "inducing_field_strength": { + "min": 0.1, + "max": 100000.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Strength (nT)", + "value": 50000.0 + }, + "inducing_field_inclination": { + "min": -90.0, + "max": 90.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Inclination (deg)", + "value": 90.0 + }, + "inducing_field_declination": { + "min": -180.0, + "max": 180.0, + "precision": 2, + "lineEdit": false, + "main": true, + "group": "Inducing Field", + "label": "Declination (deg)", + "value": 0.0 + }, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}", + "{4b99204c-d133-4579-a916-a9c8b98cfccb}", + "{028e4905-cc97-4dab-b1bf-d76f58b501b5}" + ], + "value": "" + }, + "tmi_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "TMI (nT)", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "tmi_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "tmi_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bx (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "by_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "By (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "by_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "by_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bz (nT)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxx_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxx (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxx_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxx_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxy (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bxz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bxz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bxz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bxz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "byy_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Byy (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "byy_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "byy_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "byz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Byz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "byz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "byz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "bzz_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "label": "Bzz (nT/m)", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "bzz_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "main": true, + "isValue": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "bzz_channel", + "dependencyType": "enabled", + "property": "", + "value": 1.0 + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial susceptibility (SI)", + "property": "", + "value": 0.0001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Reference susceptibility (SI)", + "property": "", + "value": 0.0 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound (SI)", + "property": "", + "optional": true, + "value": 0.0, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound (SI)", + "property": "", + "optional": true, + "value": 1.0, + "enabled": false + }, + "starting_inclination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Initial inclination (deg)", + "property": "", + "value": 0.0 + }, + "starting_declination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "parent": "mesh", + "label": "Initial declination (deg)", + "property": "", + "value": 0.0 + }, + "reference_inclination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "label": "Reference inclination (deg)", + "parent": "mesh", + "property": "", + "value": 0.0 + }, + "reference_declination": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "optional": true, + "enabled": false, + "label": "Reference declination (deg)", + "parent": "mesh", + "property": "", + "value": 0.0 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 1, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 0.001, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": false, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "ga_group": "", + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetotellurics_forward.ui.json b/tests/legacy/v0.2.1/magnetotellurics_forward.ui.json new file mode 100644 index 00000000..a95b3af4 --- /dev/null +++ b/tests/legacy/v0.2.1/magnetotellurics_forward.ui.json @@ -0,0 +1,259 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetotellurics (MT) Forward", + "icon": "surveymagnetotellurics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetotellurics", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{b99bd6e5-4fe1-45a5-bd2f-75fc31f91b38}", + "value": "" + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "zxx_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zxx real", + "value": true + }, + "zxx_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zxx imaginary", + "value": true + }, + "zxy_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zxy real", + "value": true + }, + "zxy_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zxy imaginary", + "value": true + }, + "zyx_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zyx real", + "value": true + }, + "zyx_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zyx imaginary", + "value": true + }, + "zyy_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zyy real", + "value": true + }, + "zyy_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Zyy imaginary", + "value": true + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "background_conductivity": { + "group": "Mesh and models", + "main": true, + "label": "Background", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/magnetotellurics_inversion.ui.json b/tests/legacy/v0.2.1/magnetotellurics_inversion.ui.json new file mode 100644 index 00000000..17d0164e --- /dev/null +++ b/tests/legacy/v0.2.1/magnetotellurics_inversion.ui.json @@ -0,0 +1,809 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Magnetotellurics (MT) Inversion", + "icon": "surveymagnetotellurics", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "magnetotellurics", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{b99bd6e5-4fe1-45a5-bd2f-75fc31f91b38}", + "value": "" + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "zxx_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zxx real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zxx_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zxx_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "zxx_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zxx imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zxx_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zxx_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "zxy_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zxy real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zxy_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zxy_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "zxy_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zxy imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zxy_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zxy_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "zyx_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zyx real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zyx_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zyx_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "zyx_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zyx imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zyx_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zyx_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "zyy_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zyy real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zyy_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zyy_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "zyy_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Zyy imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "zyy_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "zyy_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "background_conductivity": { + "group": "Mesh and models", + "main": true, + "label": "Background", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 1.0, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/tdem_forward.ui.json b/tests/legacy/v0.2.1/tdem_forward.ui.json new file mode 100644 index 00000000..21b94d59 --- /dev/null +++ b/tests/legacy/v0.2.1/tdem_forward.ui.json @@ -0,0 +1,203 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Time-domain EM (TEM) Forward", + "icon": "surveyairborneem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "tdem", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": [ + "{19730589-fd28-4649-9de0-ad47249d9aba}", + "{deebe11a-b57b-4a03-99d6-8f27b25eb2a8}" + ], + "value": "" + }, + "data_units": { + "choiceList": [ + "dB/dt (T/s)", + "B (T)", + "H (A/m)" + ], + "group": "Survey", + "main": true, + "label": "Data type", + "tooltip": "Set the units of the data.", + "value": "dB/dt (T/s)" + }, + "z_channel_bool": { + "group": "Survey", + "main": true, + "label": "Z component", + "value": true + }, + "x_channel_bool": { + "group": "Survey", + "main": true, + "label": "X component", + "value": true + }, + "y_channel_bool": { + "group": "Survey", + "main": true, + "label": "Y component", + "value": true + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/tdem_inversion.ui.json b/tests/legacy/v0.2.1/tdem_inversion.ui.json new file mode 100644 index 00000000..928db145 --- /dev/null +++ b/tests/legacy/v0.2.1/tdem_inversion.ui.json @@ -0,0 +1,626 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Time-domain EM (TEM) Inversion", + "icon": "surveyairborneem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "tdem", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": [ + "{19730589-fd28-4649-9de0-ad47249d9aba}", + "{deebe11a-b57b-4a03-99d6-8f27b25eb2a8}" + ], + "value": "" + }, + "data_units": { + "choiceList": [ + "dB/dt (T/s)", + "B (T)", + "H (A/m)" + ], + "group": "Data", + "main": true, + "label": "Data type", + "tooltip": "Set the units of the data.", + "value": "dB/dt (T/s)" + }, + "z_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "z-component", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "z_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "z_channel", + "dependencyType": "enabled", + "value": "" + }, + "x_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "x-component", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "x_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "x_channel", + "dependencyType": "enabled", + "value": "" + }, + "y_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "y-component", + "parent": "data_object", + "optional": true, + "enabled": false, + "value": "" + }, + "y_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "y_channel", + "dependencyType": "enabled", + "value": "" + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": "Cell", + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 1.0, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "store_sensitivities": { + "choiceList": [ + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Only RAM storage available for now.", + "value": "ram" + }, + "max_ram": "", + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/tipper_forward.ui.json b/tests/legacy/v0.2.1/tipper_forward.ui.json new file mode 100644 index 00000000..8a135653 --- /dev/null +++ b/tests/legacy/v0.2.1/tipper_forward.ui.json @@ -0,0 +1,235 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Tipper Forward", + "icon": "surveyztem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "tipper", + "forward_only": true, + "data_object": { + "main": true, + "group": "Survey", + "label": "Object", + "meshType": "{0b639533-f35b-44d8-92a8-f70ecff3fd26}", + "value": "" + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "txz_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Txz real", + "value": true + }, + "txz_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Txz imaginary", + "value": true + }, + "tyz_real_channel_bool": { + "group": "Survey", + "main": true, + "label": "Tyz real", + "value": true + }, + "tyz_imag_channel_bool": { + "group": "Survey", + "main": true, + "label": "Tyz imaginary", + "value": true + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "background_conductivity": { + "group": "Mesh and models", + "main": true, + "label": "Background", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Value(s)", + "property": "", + "value": 0.001 + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/legacy/v0.2.1/tipper_inversion.ui.json b/tests/legacy/v0.2.1/tipper_inversion.ui.json new file mode 100644 index 00000000..17d6c60e --- /dev/null +++ b/tests/legacy/v0.2.1/tipper_inversion.ui.json @@ -0,0 +1,689 @@ +{ + "version": "0.2.0-alpha.1", + "title": "Tipper Inversion", + "icon": "surveyztem", + "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/stable/intro.html", + "conda_environment": "simpeg_drivers", + "run_command": "simpeg_drivers.driver", + "geoh5": "", + "monitoring_directory": "", + "workspace_geoh5": "", + "inversion_type": "tipper", + "forward_only": false, + "data_object": { + "main": true, + "group": "Data", + "label": "Object", + "meshType": "{0b639533-f35b-44d8-92a8-f70ecff3fd26}", + "value": "" + }, + "z_from_topo": { + "group": "Data pre-processing", + "label": "Take z from topography", + "tooltip": "Sets survey elevation to topography before any offsets are applied.", + "value": false, + "verbose": 3, + "visible": false + }, + "receivers_radar_drape": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data pre-processing", + "label": "Z radar offset", + "tooltip": "Apply a non-homogeneous offset to survey object from radar channel.", + "optional": true, + "parent": "data_object", + "value": "", + "enabled": false, + "verbose": 3, + "visible": false + }, + "receivers_offset_z": { + "group": "Data pre-processing", + "label": "Z static offset", + "optional": true, + "enabled": false, + "value": 0.0, + "verbose": 3, + "visible": false + }, + "gps_receivers_offset": "", + "txz_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Txz real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "txz_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "txz_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "txz_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Txz imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "txz_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "txz_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "tyz_real_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Tyz real", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "tyz_real_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "tyz_real_channel", + "dependencyType": "enabled", + "value": "" + }, + "tyz_imag_channel": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Tyz imaginary", + "parent": "data_object", + "optional": true, + "enabled": true, + "value": "" + }, + "tyz_imag_uncertainty": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Data", + "dataGroupType": "Multi-element", + "main": true, + "label": "Uncertainty", + "parent": "data_object", + "dependency": "tyz_imag_channel", + "dependencyType": "enabled", + "value": "" + }, + "mesh": { + "group": "Mesh and models", + "main": true, + "label": "Mesh", + "meshType": "{4ea87376-3ece-438b-bf12-3479733ded46}", + "value": "", + "tooltip": "Select a mesh for the inversion." + }, + "model_type": { + "choiceList": [ + "Conductivity (S/m)", + "Resistivity (Ohm-m)" + ], + "main": true, + "group": "Mesh and models", + "label": "Model units", + "tooltip": "Select the units of the model.", + "value": "Conductivity (S/m)" + }, + "background_conductivity": { + "group": "Mesh and models", + "main": true, + "label": "Background", + "property": "", + "value": 0.001 + }, + "starting_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "group": "Mesh and models", + "main": true, + "isValue": true, + "parent": "mesh", + "label": "Initial", + "property": "", + "value": 0.001 + }, + "reference_model": { + "association": [ + "Cell", + "Vertex" + ], + "dataType": "Float", + "main": true, + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Reference", + "property": "", + "optional": true, + "enabled": false, + "value": 0.001 + }, + "lower_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Lower bound", + "property": "", + "optional": true, + "value": 1e-08, + "enabled": false + }, + "upper_bound": { + "association": [ + "Cell", + "Vertex" + ], + "main": true, + "dataType": "Float", + "group": "Mesh and models", + "isValue": true, + "parent": "mesh", + "label": "Upper bound", + "property": "", + "optional": true, + "value": 100.0, + "enabled": false + }, + "topography_object": { + "main": true, + "group": "Topography", + "label": "Topography", + "meshType": [ + "{202c5db1-a56d-4004-9cad-baafd8899406}", + "{6a057fdc-b355-11e3-95be-fd84a7ffcb88}", + "{f26feba3-aded-494b-b9e9-b2bbcbe298e1}", + "{48f5054a-1c5c-4ca4-9048-80f36dc60a06}", + "{b020a277-90e2-4cd7-84d6-612ee3f25051}" + ], + "value": "", + "optional": true, + "enabled": true, + "tooltip": "Select a topography object to define the active cells for inversion." + }, + "topography": { + "association": [ + "Vertex", + "Cell" + ], + "dataType": "Float", + "group": "Topography", + "main": true, + "optional": true, + "enabled": false, + "label": "Elevation channel", + "tooltip": "Set elevation from channel. If not set the topography will be set from the geometry of the selected 'topography' object.", + "parent": "topography_object", + "dependency": "topography_object", + "dependencyType": "enabled", + "value": "", + "verbose": 2 + }, + "active_model": { + "association": "Cell", + "dataType": [ + "Referenced", + "Boolean", + "Integer" + ], + "group": "Topography", + "main": true, + "enabled": false, + "dependency": "topography_object", + "dependencyType": "disabled", + "label": "Active model", + "tooltip": "Provide the active cell boolean model directly if topography not set.", + "parent": "mesh", + "value": "" + }, + "output_tile_files": false, + "inversion_style": "voxel", + "alpha_s": { + "min": 0.0, + "group": "Regularization", + "label": "Reference weight", + "value": 1.0, + "tooltip": "Constant ratio compared to other weights. Larger values result in models that remain close to the reference model", + "dependency": "reference_model", + "dependencyType": "enabled", + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_x": { + "min": 0.0, + "group": "Regularization", + "label": "X-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in x biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_y": { + "min": 0.0, + "group": "Regularization", + "label": "Y-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in y biased smoothness", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "length_scale_z": { + "min": 0.0, + "group": "Regularization", + "label": "Z-smoothness weight", + "tooltip": "Larger values relative to other smoothness weights will result in z biased smoothess", + "value": 1.0, + "isValue": true, + "parent": "mesh", + "association": "Cell", + "dataType": "Float", + "property": "", + "enabled": true + }, + "s_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Smallness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 0.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": true, + "enabled": true, + "dependency": "reference_model", + "dependencyType": "enabled", + "tooltip": "Lp-norm used in the smallness term of the objective function." + }, + "x_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "X-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the x-smoothness term of the objective function." + }, + "y_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Y-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the y-smoothness term of the objective function." + }, + "z_norm": { + "association": "Cell", + "dataType": "Float", + "group": "Sparse/blocky model", + "label": "Z-smoothness norm", + "isValue": true, + "parent": "mesh", + "property": "", + "value": 2.0, + "min": 0.0, + "max": 2.0, + "precision": 2, + "lineEdit": false, + "enabled": true, + "tooltip": "Lp-norm used in the z-smoothness term of the objective function." + }, + "gradient_type": { + "choiceList": [ + "total", + "components" + ], + "group": "Sparse/blocky model", + "label": "Gradient type", + "value": "total", + "verbose": 3, + "tooltip": "Choose whether the IRLS weights for regularization terms are updated using total or partial gradients." + }, + "max_irls_iterations": { + "min": 0, + "group": "Sparse/blocky model", + "label": "Maximum IRLS iterations", + "tooltip": "Incomplete Re-weighted Least Squares iterations for non-L2 problems", + "value": 25, + "enabled": true, + "verbose": 2 + }, + "starting_chi_factor": { + "group": "Sparse/blocky model", + "label": "IRLS start chi factor", + "enabled": true, + "value": 1.0, + "tooltip": "This chi factor will be used to determine the misfit threshold after which IRLS iterations begin.", + "verbose": 3 + }, + "beta_tol": { + "group": "Update IRLS directive", + "label": "Beta tolerance", + "value": 0.5, + "min": 0.0001, + "verbose": 3, + "visible": false + }, + "prctile": { + "group": "Update IRLS directive", + "label": "Percentile", + "value": 95, + "max": 100, + "min": 5, + "verbose": 3, + "visible": false + }, + "chi_factor": { + "min": 0.1, + "max": 20.0, + "precision": 1, + "lineEdit": false, + "group": "Cooling schedule/target", + "label": "Chi factor", + "value": 1.0, + "enabled": true, + "tooltip": "The global target data misfit value." + }, + "auto_scale_misfits": { + "group": "Cooling schedule/target", + "label": "Auto-scale misfits", + "value": true, + "verbose": 3, + "visible": true, + "tooltip": "Whether to auto-scale misfits functions (tile, frequency, joint methods) based on chi-factor." + }, + "initial_beta_ratio": { + "min": 0.0, + "precision": 2, + "group": "Cooling schedule/target", + "optional": true, + "enabled": true, + "label": "Initial beta ratio", + "value": 100.0, + "verbose": 2, + "tooltip": "Estimate the trade-off parameter by scaling the ratio between the largest derivatives in the objective function gradients." + }, + "initial_beta": { + "min": 0.0, + "group": "Cooling schedule/target", + "optional": true, + "enabled": false, + "dependency": "initial_beta_ratio", + "dependencyType": "disabled", + "label": "Initial beta", + "value": 1.0, + "verbose": 2, + "tooltip": "Trade-off parameter between data misfit and regularization." + }, + "coolingFactor": { + "group": "Cooling schedule/target", + "label": "Beta cooling factor", + "tooltip": "Each beta cooling step will be calculated by dividing the current beta by this factor.", + "value": 2.0, + "min": 1.1, + "max": 100, + "precision": 1, + "lineEdit": false, + "verbose": 2 + }, + "coolingRate": { + "group": "Optimization", + "label": "Iterations per beta", + "value": 2, + "min": 1, + "LineEdit": false, + "max": 10, + "precision": 1, + "verbose": 2, + "enabled": true, + "tooltip": "Set the number of iterations per beta value. Use higher values for more non-linear optimization problems." + }, + "max_global_iterations": { + "min": 1, + "lineEdit": false, + "group": "Optimization", + "label": "Maximum iterations", + "tooltip": "Number of L2 and IRLS iterations combined", + "value": 50, + "enabled": true + }, + "max_line_search_iterations": { + "group": "Optimization", + "label": "Maximum number of line searches", + "value": 20, + "min": 1, + "enabled": true, + "verbose": 3, + "tooltip": "Perform an Armijo backtracking linesearch for the provided number of iterations." + }, + "max_cg_iterations": { + "min": 0, + "group": "Optimization", + "label": "Maximum CG iterations", + "value": 30, + "enabled": true, + "verbose": 2 + }, + "tol_cg": { + "min": 0, + "group": "Optimization", + "label": "Conjugate gradient tolerance", + "value": 0.0001, + "enabled": true, + "verbose": 3 + }, + "f_min_change": { + "group": "Optimization", + "label": "Minimum change in objective function", + "value": 0.01, + "min": 1e-06, + "verbose": 3, + "enabled": true, + "tooltip": "Minimum decrease in regularization beyond which the IRLS procedure is deemed to have completed." + }, + "sens_wts_threshold": { + "group": "Update sensitivity weights directive", + "tooltip": "Update sensitivity weight threshold", + "label": "Threshold (%)", + "value": 1.0, + "max": 100.0, + "min": 0.0, + "precision": 3, + "enabled": true, + "verbose": 2 + }, + "every_iteration_bool": { + "group": "Update sensitivity weights directive", + "tooltip": "Update weights at every iteration", + "label": "Every iteration", + "value": true, + "verbose": 2, + "enabled": true + }, + "save_sensitivities": { + "group": "Update sensitivity weights directive", + "label": "Save sensitivities", + "tooltip": "Save the summed square row sensitivities to geoh5.", + "value": false + }, + "parallelized": { + "group": "Compute", + "label": "Use parallelization", + "value": true, + "visible": false + }, + "n_cpu": { + "min": 1, + "group": "Compute", + "dependency": "parallelized", + "dependencyType": "enabled", + "optional": true, + "enabled": false, + "label": "Number of CPUs", + "value": 1, + "visible": false + }, + "tile_spatial": { + "group": "Compute", + "label": "Number of tiles", + "parent": "data_object", + "isValue": true, + "property": "", + "value": 1, + "min": 1, + "max": 1000, + "verbose": 2, + "tooltip": "Splits the objective function into spatial tiles for distributed computation using the Dask library." + }, + "max_ram": "", + "store_sensitivities": { + "choiceList": [ + "disk", + "ram" + ], + "group": "Compute", + "label": "Storage device", + "tooltip": "Use disk on a fast local SSD, and RAM elsewhere", + "value": "ram" + }, + "max_chunk_size": { + "min": 0, + "group": "Compute", + "optional": true, + "enabled": true, + "label": "Maximum chunk size (Mb)", + "value": 128, + "verbose": 3, + "visible": false, + "tooltip": "Limit the chunk size used by Dask for distributed computation." + }, + "chunk_by_rows": { + "group": "Compute", + "label": "Chunk by rows", + "value": true, + "verbose": 3, + "visible": false + }, + "out_group": { + "label": "SimPEG group", + "value": "", + "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", + "group": "Drag-and-drop options", + "visible": true, + "optional": true, + "enabled": false, + "tooltip": "Optionally set the SimPEG group to which results will be saved." + }, + "generate_sweep": { + "label": "Generate sweep file", + "group": "Python run preferences", + "main": true, + "value": false, + "tooltip": "Generates a file for sweeping parameters instead of running the application." + }, + "distributed_workers": "" +} diff --git a/tests/locations_test.py b/tests/locations_test.py index 997e07a2..b654cdc7 100644 --- a/tests/locations_test.py +++ b/tests/locations_test.py @@ -19,7 +19,7 @@ from simpeg_drivers.components.locations import InversionLocations from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields import MVIInversionOptions -from simpeg_drivers.utils.testing import Geoh5Tester, setup_inversion_workspace +from tests.testing_utils import Geoh5Tester, setup_inversion_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: diff --git a/tests/meshes_test.py b/tests/meshes_test.py index 5ed2ba25..e8a02391 100644 --- a/tests/meshes_test.py +++ b/tests/meshes_test.py @@ -22,7 +22,7 @@ from simpeg_drivers.components import InversionMesh from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields import MVIInversionOptions -from simpeg_drivers.utils.testing import Geoh5Tester, setup_inversion_workspace +from tests.testing_utils import Geoh5Tester, setup_inversion_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: diff --git a/tests/models_test.py b/tests/models_test.py index 3e5f741e..d8208574 100644 --- a/tests/models_test.py +++ b/tests/models_test.py @@ -25,7 +25,7 @@ from simpeg_drivers.potential_fields.magnetic_vector.driver import ( MVIInversionDriver, ) -from simpeg_drivers.utils.testing import Geoh5Tester, setup_inversion_workspace +from tests.testing_utils import Geoh5Tester, setup_inversion_workspace def get_mvi_params(tmp_path: Path) -> MVIInversionOptions: diff --git a/tests/run_tests/driver_airborne_fem_1d_test.py b/tests/run_tests/driver_airborne_fem_1d_test.py index 87528e29..a38b25a0 100644 --- a/tests/run_tests/driver_airborne_fem_1d_test.py +++ b/tests/run_tests/driver_airborne_fem_1d_test.py @@ -27,8 +27,8 @@ FDEM1DInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_airborne_tem_1d_test.py b/tests/run_tests/driver_airborne_tem_1d_test.py index e0b55afa..bddf1d09 100644 --- a/tests/run_tests/driver_airborne_tem_1d_test.py +++ b/tests/run_tests/driver_airborne_tem_1d_test.py @@ -26,8 +26,8 @@ TDEM1DInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -50,7 +50,7 @@ def test_airborne_tem_1d_fwr_run( n_lines=n_grid_points, cell_size=cell_size, refinement=refinement, - inversion_type="airborne_tem 1d", + inversion_type="airborne tdem 1d", drape_height=10.0, padding_distance=400.0, flatten=False, diff --git a/tests/run_tests/driver_airborne_tem_test.py b/tests/run_tests/driver_airborne_tem_test.py index a8df18a5..1ad5f7ae 100644 --- a/tests/run_tests/driver_airborne_tem_test.py +++ b/tests/run_tests/driver_airborne_tem_test.py @@ -26,8 +26,8 @@ TDEMInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -45,7 +45,7 @@ def test_bad_waveform(tmp_path: Path): n_electrodes=n_grid_points, n_lines=n_grid_points, refinement=refinement, - inversion_type="airborne_tem", + inversion_type="airborne tdem", drape_height=10.0, padding_distance=400.0, flatten=False, @@ -84,7 +84,7 @@ def test_airborne_tem_fwr_run( n_lines=n_grid_points, cell_size=cell_size, refinement=refinement, - inversion_type="airborne_tem", + inversion_type="airborne tdem", drape_height=10.0, padding_distance=400.0, flatten=False, diff --git a/tests/run_tests/driver_dc_2d_test.py b/tests/run_tests/driver_dc_2d_test.py index 706cb51e..3edd585d 100644 --- a/tests/run_tests/driver_dc_2d_test.py +++ b/tests/run_tests/driver_dc_2d_test.py @@ -30,8 +30,8 @@ DrapeModelOptions, LineSelectionOptions, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -58,7 +58,7 @@ def test_dc_2d_fwr_run( n_electrodes=n_electrodes, n_lines=n_lines, refinement=refinement, - inversion_type="dcip_2d", + inversion_type="direct current 2d", drape_height=0.0, flatten=False, ) diff --git a/tests/run_tests/driver_dc_b2d_test.py b/tests/run_tests/driver_dc_b2d_test.py index 6c8f9540..5368b407 100644 --- a/tests/run_tests/driver_dc_b2d_test.py +++ b/tests/run_tests/driver_dc_b2d_test.py @@ -33,8 +33,8 @@ DrapeModelOptions, LineSelectionOptions, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -57,7 +57,7 @@ def test_dc_p3d_fwr_run( n_electrodes=n_electrodes, n_lines=n_lines, refinement=refinement, - inversion_type="dcip", + inversion_type="direct current pseudo 3d", drape_height=0.0, flatten=False, ) diff --git a/tests/run_tests/driver_dc_test.py b/tests/run_tests/driver_dc_test.py index 2431af89..c13e64c6 100644 --- a/tests/run_tests/driver_dc_test.py +++ b/tests/run_tests/driver_dc_test.py @@ -24,8 +24,8 @@ DC3DInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -49,7 +49,7 @@ def test_dc_3d_fwr_run( n_lines=n_lines, refinement=refinement, drape_height=0.0, - inversion_type="dcip", + inversion_type="direct current 3d", flatten=False, ) diff --git a/tests/run_tests/driver_fem_test.py b/tests/run_tests/driver_fem_test.py index b62d055f..6f9054f4 100644 --- a/tests/run_tests/driver_fem_test.py +++ b/tests/run_tests/driver_fem_test.py @@ -28,8 +28,8 @@ FDEMInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_grav_test.py b/tests/run_tests/driver_grav_test.py index b30cdc32..83a6c86a 100644 --- a/tests/run_tests/driver_grav_test.py +++ b/tests/run_tests/driver_grav_test.py @@ -27,8 +27,8 @@ GravityForwardDriver, GravityInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -50,6 +50,7 @@ def test_gravity_fwr_run( n_electrodes=n_grid_points, n_lines=n_grid_points, refinement=refinement, + inversion_type="gravity", flatten=False, ) diff --git a/tests/run_tests/driver_ground_tem_test.py b/tests/run_tests/driver_ground_tem_test.py index a0677fb3..38b2d8ac 100644 --- a/tests/run_tests/driver_ground_tem_test.py +++ b/tests/run_tests/driver_ground_tem_test.py @@ -26,8 +26,8 @@ TDEMInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace logger = getLogger(__name__) @@ -54,7 +54,7 @@ def test_tiling_ground_tem( n_electrodes=n_grid_points, n_lines=n_grid_points, refinement=refinement, - inversion_type="ground_tem", + inversion_type="ground tdem", drape_height=5.0, padding_distance=1000.0, flatten=True, @@ -101,7 +101,7 @@ def test_ground_tem_fwr_run( n_electrodes=n_grid_points, n_lines=n_grid_points, refinement=refinement, - inversion_type="ground_tem", + inversion_type="ground tdem", drape_height=5.0, cell_size=cell_size, padding_distance=1000.0, diff --git a/tests/run_tests/driver_ip_2d_test.py b/tests/run_tests/driver_ip_2d_test.py index d4d2e86f..26daff56 100644 --- a/tests/run_tests/driver_ip_2d_test.py +++ b/tests/run_tests/driver_ip_2d_test.py @@ -24,8 +24,8 @@ IP2DInversionDriver, ) from simpeg_drivers.options import ActiveCellsOptions, LineSelectionOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -48,7 +48,7 @@ def test_ip_2d_fwr_run( n_electrodes=n_electrodes, n_lines=n_lines, refinement=refinement, - inversion_type="dcip_2d", + inversion_type="induced polarization 2d", flatten=False, drape_height=0.0, ) diff --git a/tests/run_tests/driver_ip_b2d_test.py b/tests/run_tests/driver_ip_b2d_test.py index 24959d41..f19ad257 100644 --- a/tests/run_tests/driver_ip_b2d_test.py +++ b/tests/run_tests/driver_ip_b2d_test.py @@ -32,8 +32,8 @@ DrapeModelOptions, LineSelectionOptions, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -56,7 +56,7 @@ def test_ip_p3d_fwr_run( n_electrodes=n_electrodes, n_lines=n_lines, refinement=refinement, - inversion_type="dcip", + inversion_type="induced polarization pseudo 3d", drape_height=0.0, flatten=False, ) diff --git a/tests/run_tests/driver_ip_test.py b/tests/run_tests/driver_ip_test.py index 167b365d..c191590e 100644 --- a/tests/run_tests/driver_ip_test.py +++ b/tests/run_tests/driver_ip_test.py @@ -23,8 +23,8 @@ IP3DInversionDriver, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -48,7 +48,7 @@ def test_ip_3d_fwr_run( n_lines=n_lines, refinement=refinement, drape_height=0.0, - inversion_type="dcip", + inversion_type="induced polarization 3d", flatten=False, ) params = IP3DForwardOptions( diff --git a/tests/run_tests/driver_joint_cross_gradient_test.py b/tests/run_tests/driver_joint_cross_gradient_test.py index 2b60cd92..e5d6598e 100644 --- a/tests/run_tests/driver_joint_cross_gradient_test.py +++ b/tests/run_tests/driver_joint_cross_gradient_test.py @@ -40,8 +40,8 @@ MVIForwardDriver, MVIInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -111,7 +111,7 @@ def test_joint_cross_gradient_fwr_run( n_lines=n_lines, refinement=refinement, drape_height=0.0, - inversion_type="dcip", + inversion_type="direct current 3d", flatten=False, ) diff --git a/tests/run_tests/driver_joint_surveys_test.py b/tests/run_tests/driver_joint_surveys_test.py index dce8f18c..59744f4e 100644 --- a/tests/run_tests/driver_joint_surveys_test.py +++ b/tests/run_tests/driver_joint_surveys_test.py @@ -22,8 +22,8 @@ GravityInversionOptions, ) from simpeg_drivers.potential_fields.gravity.driver import GravityInversionDriver -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_mag_automesh_test.py b/tests/run_tests/driver_mag_automesh_test.py index 28ca4cbd..8ac5db4d 100644 --- a/tests/run_tests/driver_mag_automesh_test.py +++ b/tests/run_tests/driver_mag_automesh_test.py @@ -25,8 +25,8 @@ MagneticForwardDriver, MagneticInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace TARGET = 1132.1998 diff --git a/tests/run_tests/driver_mag_test.py b/tests/run_tests/driver_mag_test.py index baeffa15..20dff4dd 100644 --- a/tests/run_tests/driver_mag_test.py +++ b/tests/run_tests/driver_mag_test.py @@ -25,8 +25,8 @@ MagneticForwardDriver, MagneticInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. @@ -48,6 +48,7 @@ def test_susceptibility_fwr_run( refinement=refinement, n_electrodes=n_grid_points, n_lines=n_grid_points, + inversion_type="magnetic", flatten=False, ) inducing_field = (49999.8, 90.0, 0.0) diff --git a/tests/run_tests/driver_mt_test.py b/tests/run_tests/driver_mt_test.py index c5a2f2fc..e9cb1b04 100644 --- a/tests/run_tests/driver_mt_test.py +++ b/tests/run_tests/driver_mt_test.py @@ -28,8 +28,8 @@ MTInversionOptions, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_mvi_test.py b/tests/run_tests/driver_mvi_test.py index 80d9304f..ca0ee227 100644 --- a/tests/run_tests/driver_mvi_test.py +++ b/tests/run_tests/driver_mvi_test.py @@ -29,8 +29,8 @@ MVIForwardDriver, MVIInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_rotated_gradients_test.py b/tests/run_tests/driver_rotated_gradients_test.py index 159fa64f..d7b2fc89 100644 --- a/tests/run_tests/driver_rotated_gradients_test.py +++ b/tests/run_tests/driver_rotated_gradients_test.py @@ -28,8 +28,8 @@ GravityForwardDriver, GravityInversionDriver, ) -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/driver_tile_estimator_test.py b/tests/run_tests/driver_tile_estimator_test.py index 8f7737ec..ddb0ae92 100644 --- a/tests/run_tests/driver_tile_estimator_test.py +++ b/tests/run_tests/driver_tile_estimator_test.py @@ -19,9 +19,9 @@ from simpeg_drivers.potential_fields.magnetic_scalar.driver import ( MagneticInversionDriver, ) -from simpeg_drivers.utils.testing import setup_inversion_workspace from simpeg_drivers.utils.tile_estimate import TileEstimator, TileParameters from simpeg_drivers.utils.utils import simpeg_group_to_driver +from tests.testing_utils import setup_inversion_workspace def test_tile_estimator_run( diff --git a/tests/run_tests/driver_tipper_test.py b/tests/run_tests/driver_tipper_test.py index 7165e7dc..d87f2a4a 100644 --- a/tests/run_tests/driver_tipper_test.py +++ b/tests/run_tests/driver_tipper_test.py @@ -25,8 +25,8 @@ TipperInversionDriver, ) from simpeg_drivers.options import ActiveCellsOptions -from simpeg_drivers.utils.testing import check_target, setup_inversion_workspace from simpeg_drivers.utils.utils import get_inversion_output +from tests.testing_utils import check_target, setup_inversion_workspace # To test the full run and validate the inversion. diff --git a/tests/run_tests/sensitivity_cutoff_test.py b/tests/run_tests/sensitivity_cutoff_test.py index f4388810..15cc11ef 100644 --- a/tests/run_tests/sensitivity_cutoff_test.py +++ b/tests/run_tests/sensitivity_cutoff_test.py @@ -24,7 +24,7 @@ from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields import GravityInversionOptions from simpeg_drivers.potential_fields.gravity.driver import GravityInversionDriver -from simpeg_drivers.utils.testing import setup_inversion_workspace +from tests.testing_utils import setup_inversion_workspace def setup_inversion_results( diff --git a/simpeg_drivers/utils/testing.py b/tests/testing_utils.py similarity index 66% rename from simpeg_drivers/utils/testing.py rename to tests/testing_utils.py index 9cc7589d..f200d99c 100644 --- a/simpeg_drivers/utils/testing.py +++ b/tests/testing_utils.py @@ -109,6 +109,16 @@ def check_target(output: dict, target: dict, tolerance=0.05): ) +def gaussian_topo_drape(x, y, flatten=False): + """Topography Gaussian function""" + b = 100 + A = 50 + if flatten: + return np.zeros_like(x) + else: + return A * np.exp(-0.5 * ((x / b) ** 2.0 + (y / b) ** 2.0)) + + def generate_dc_survey( workspace: Workspace, x_loc: np.ndarray, @@ -171,6 +181,157 @@ def generate_dc_survey( return potentials +def generate_fdem_survey(geoh5, vertices): + survey = AirborneFEMReceivers.create(geoh5, vertices=vertices, name="Airborne_rx") + freq_metadata = [ + {"Coaxial data": False, "Frequency": 900, "Offset": 7.86}, + {"Coaxial data": False, "Frequency": 7200, "Offset": 7.86}, + {"Coaxial data": False, "Frequency": 56000, "Offset": 6.3}, + ] + survey.metadata["EM Dataset"]["Frequency configurations"] = freq_metadata + + tx_locs = [] + freqs = [] + for meta in freq_metadata: + tx_vertices = vertices.copy() + tx_vertices[:, 0] -= meta["Offset"] + tx_locs.append(tx_vertices) + freqs.append([[meta["Frequency"]] * len(vertices)]) + tx_locs = np.vstack(tx_locs) + freqs = np.hstack(freqs).flatten() + + transmitters = AirborneFEMTransmitters.create( + geoh5, vertices=tx_locs, name="Airborne_tx" + ) + survey.transmitters = transmitters + survey.channels = [900.0, 7200.0, 56000.0] + + transmitters.add_data( + { + "Tx frequency": { + "values": freqs, + "association": "VERTEX", + "primitive_type": "REFERENCED", + "value_map": {k: str(k) for k in freqs}, + } + } + ) + + dist = np.linalg.norm( + survey.vertices[survey.cells[:, 0], :] - survey.vertices[survey.cells[:, 1], :], + axis=1, + ) + survey.remove_cells(np.where(dist > 200.0)[0]) + dist = np.linalg.norm( + transmitters.vertices[transmitters.cells[:, 0], :] + - transmitters.vertices[transmitters.cells[:, 1], :], + axis=1, + ) + transmitters.remove_cells(np.where(dist > 200.0)[0]) + + return survey + + +def generate_tdem_survey(geoh5, vertices, n_lines, flatten=False, airborne=False): + if airborne: + survey = AirborneTEMReceivers.create( + geoh5, vertices=vertices, name="Airborne_rx" + ) + transmitters = AirborneTEMTransmitters.create( + geoh5, vertices=vertices, name="Airborne_tx" + ) + + dist = np.linalg.norm( + survey.vertices[survey.cells[:, 0], :] + - survey.vertices[survey.cells[:, 1], :], + axis=1, + ) + survey.remove_cells(np.where(dist > 200.0)[0]) + transmitters.remove_cells(np.where(dist > 200.0)[0]) + survey.transmitters = transmitters + else: + X = vertices[:, 0].reshape((n_lines, -1)) + Y = vertices[:, 1].reshape((n_lines, -1)) + Z = vertices[:, 2].reshape((n_lines, -1)) + center = np.mean(vertices, axis=0) + arrays = [ + np.c_[ + X[: int(n_lines / 2), :].flatten(), + Y[: int(n_lines / 2), :].flatten(), + Z[: int(n_lines / 2), :].flatten(), + ], + np.c_[ + X[int(n_lines / 2) :, :].flatten(), + Y[int(n_lines / 2) :, :].flatten(), + Z[int(n_lines / 2) :, :].flatten(), + ], + ] + loops = [] + loop_cells = [] + loop_id = [] + count = 0 + for ind, array in enumerate(arrays): + loop_id += [np.ones(array.shape[0]) * (ind + 1)] + min_loc = np.min(array, axis=0) + max_loc = np.max(array, axis=0) + loop = np.vstack( + [ + np.c_[ + np.ones(5) * min_loc[0], + np.linspace(min_loc[1], max_loc[1], 5), + ], + np.c_[ + np.linspace(min_loc[0], max_loc[0], 5)[1:], + np.ones(4) * max_loc[1], + ], + np.c_[ + np.ones(4) * max_loc[0], + np.linspace(max_loc[1], min_loc[1], 5)[1:], + ], + np.c_[ + np.linspace(max_loc[0], min_loc[0], 5)[1:-1], + np.ones(3) * min_loc[1], + ], + ] + ) + loop = (loop - np.mean(loop, axis=0)) * 1.5 + np.mean(loop, axis=0) + loop = np.c_[ + loop, gaussian_topo_drape(loop[:, 0], loop[:, 1], flatten=flatten) + ] + loops += [loop + np.asarray(center)] + loop_cells += [np.c_[np.arange(15) + count, np.arange(15) + count + 1]] + loop_cells += [np.c_[count + 15, count]] + count += 16 + + transmitters = LargeLoopGroundTEMTransmitters.create( + geoh5, + vertices=np.vstack(loops), + cells=np.vstack(loop_cells), + ) + transmitters.tx_id_property = transmitters.parts + 1 + survey = LargeLoopGroundTEMReceivers.create(geoh5, vertices=np.vstack(vertices)) + survey.transmitters = transmitters + survey.tx_id_property = np.hstack(loop_id) + # survey.parts = np.repeat(np.arange(n_lines), n_electrodes) + + survey.channels = np.r_[3e-04, 6e-04, 1.2e-03] * 1e3 + waveform = np.c_[ + np.r_[ + np.arange(-0.002, -0.0001, 5e-4), + np.arange(-0.0004, 0.0, 1e-4), + np.arange(0.0, 0.002, 5e-4), + ] + * 1e3 + + 2.0, + np.r_[np.linspace(0, 1, 4), np.linspace(0.9, 0.0, 4), np.zeros(4)], + ] + survey.waveform = waveform + survey.timing_mark = 2.0 + survey.unit = "Milliseconds (ms)" + + return survey + + def setup_inversion_workspace( work_dir, background=None, @@ -196,16 +357,7 @@ def setup_inversion_workspace( # Topography xx, yy = np.meshgrid(np.linspace(-200.0, 200.0, 50), np.linspace(-200.0, 200.0, 50)) - def topo_drape(x, y): - """Topography Gaussian function""" - b = 100 - A = 50 - if flatten: - return np.zeros_like(x) - else: - return A * np.exp(-0.5 * ((x / b) ** 2.0 + (y / b) ** 2.0)) - - zz = topo_drape(xx, yy) + zz = gaussian_topo_drape(xx, yy, flatten=flatten) topo = np.c_[ utils.mkvc(xx) + center[0], utils.mkvc(yy) + center[1], @@ -218,16 +370,18 @@ def topo_drape(x, y): cells=triang.simplices, # pylint: disable=E1101 name="topography", ) + # Observation points n_electrodes = ( 4 - if (inversion_type in ["dcip", "dcip_2d"]) & (n_electrodes < 4) + if ("polarization" in inversion_type or "current" in inversion_type) + & (n_electrodes < 4) else n_electrodes ) xr = np.linspace(x_limits[0], x_limits[1], int(n_electrodes)) yr = np.linspace(y_limits[0], y_limits[1], int(n_lines)) X, Y = np.meshgrid(xr, yr) - Z = topo_drape(X, Y) + drape_height + Z = gaussian_topo_drape(X, Y, flatten=flatten) + drape_height vertices = np.c_[ utils.mkvc(X.T) + center[0], @@ -235,10 +389,10 @@ def topo_drape(x, y): utils.mkvc(Z.T) + center[2], ] - if inversion_type in ["dcip", "dcip_2d"]: + if "polarization" in inversion_type or "current" in inversion_type: survey = generate_dc_survey(geoh5, X, Y, Z) - elif inversion_type == "magnetotellurics": + elif "magnetotellurics" in inversion_type: survey = MTReceivers.create( geoh5, vertices=vertices, @@ -256,7 +410,7 @@ def topo_drape(x, y): channels=[10.0, 100.0, 1000.0], ) - elif inversion_type == "tipper": + elif "tipper" in inversion_type: survey = TipperReceivers.create( geoh5, vertices=vertices, @@ -280,149 +434,17 @@ def topo_drape(x, y): # survey.cells = survey.cells[dist < 100.0, :] survey.remove_cells(np.where(dist > 200)[0]) - elif "fdem" in inversion_type: - survey = AirborneFEMReceivers.create( - geoh5, vertices=vertices, name="Airborne_rx" - ) - freq_metadata = [ - {"Coaxial data": False, "Frequency": 900, "Offset": 7.86}, - {"Coaxial data": False, "Frequency": 7200, "Offset": 7.86}, - {"Coaxial data": False, "Frequency": 56000, "Offset": 6.3}, - ] - survey.metadata["EM Dataset"]["Frequency configurations"] = freq_metadata - - tx_locs = [] - freqs = [] - for meta in freq_metadata: - tx_vertices = vertices.copy() - tx_vertices[:, 0] -= meta["Offset"] - tx_locs.append(tx_vertices) - freqs.append([[meta["Frequency"]] * len(vertices)]) - tx_locs = np.vstack(tx_locs) - freqs = np.hstack(freqs).flatten() - - transmitters = AirborneFEMTransmitters.create( - geoh5, vertices=tx_locs, name="Airborne_tx" - ) - survey.transmitters = transmitters - survey.channels = [900.0, 7200.0, 56000.0] - - transmitters.add_data( - { - "Tx frequency": { - "values": freqs, - "association": "VERTEX", - "primitive_type": "REFERENCED", - "value_map": {k: str(k) for k in freqs}, - } - } - ) + elif inversion_type in ["fdem", "fem", "fdem 1d"]: + survey = generate_fdem_survey(geoh5, vertices) - dist = np.linalg.norm( - survey.vertices[survey.cells[:, 0], :] - - survey.vertices[survey.cells[:, 1], :], - axis=1, - ) - survey.remove_cells(np.where(dist > 200.0)[0]) - dist = np.linalg.norm( - transmitters.vertices[transmitters.cells[:, 0], :] - - transmitters.vertices[transmitters.cells[:, 1], :], - axis=1, + elif "tdem" in inversion_type: + survey = generate_tdem_survey( + geoh5, + vertices, + n_lines, + flatten=flatten, + airborne="airborne" in inversion_type, ) - transmitters.remove_cells(np.where(dist > 200.0)[0]) - - elif "tem" in inversion_type: - if "airborne" in inversion_type: - survey = AirborneTEMReceivers.create( - geoh5, vertices=vertices, name="Airborne_rx" - ) - transmitters = AirborneTEMTransmitters.create( - geoh5, vertices=vertices, name="Airborne_tx" - ) - - dist = np.linalg.norm( - survey.vertices[survey.cells[:, 0], :] - - survey.vertices[survey.cells[:, 1], :], - axis=1, - ) - survey.remove_cells(np.where(dist > 200.0)[0]) - transmitters.remove_cells(np.where(dist > 200.0)[0]) - survey.transmitters = transmitters - else: - arrays = [ - np.c_[ - X[: int(n_lines / 2), :].flatten(), - Y[: int(n_lines / 2), :].flatten(), - Z[: int(n_lines / 2), :].flatten(), - ], - np.c_[ - X[int(n_lines / 2) :, :].flatten(), - Y[int(n_lines / 2) :, :].flatten(), - Z[int(n_lines / 2) :, :].flatten(), - ], - ] - loops = [] - loop_cells = [] - loop_id = [] - count = 0 - for ind, array in enumerate(arrays): - loop_id += [np.ones(array.shape[0]) * (ind + 1)] - min_loc = np.min(array, axis=0) - max_loc = np.max(array, axis=0) - loop = np.vstack( - [ - np.c_[ - np.ones(5) * min_loc[0], - np.linspace(min_loc[1], max_loc[1], 5), - ], - np.c_[ - np.linspace(min_loc[0], max_loc[0], 5)[1:], - np.ones(4) * max_loc[1], - ], - np.c_[ - np.ones(4) * max_loc[0], - np.linspace(max_loc[1], min_loc[1], 5)[1:], - ], - np.c_[ - np.linspace(max_loc[0], min_loc[0], 5)[1:-1], - np.ones(3) * min_loc[1], - ], - ] - ) - loop = (loop - np.mean(loop, axis=0)) * 1.5 + np.mean(loop, axis=0) - loop = np.c_[loop, topo_drape(loop[:, 0], loop[:, 1]) + drape_height] - loops += [loop + np.asarray(center)] - loop_cells += [np.c_[np.arange(15) + count, np.arange(15) + count + 1]] - loop_cells += [np.c_[count + 15, count]] - count += 16 - - transmitters = LargeLoopGroundTEMTransmitters.create( - geoh5, - vertices=np.vstack(loops), - cells=np.vstack(loop_cells), - ) - transmitters.tx_id_property = transmitters.parts + 1 - survey = LargeLoopGroundTEMReceivers.create( - geoh5, vertices=np.vstack(vertices) - ) - survey.transmitters = transmitters - survey.tx_id_property = np.hstack(loop_id) - # survey.parts = np.repeat(np.arange(n_lines), n_electrodes) - - survey.channels = np.r_[3e-04, 6e-04, 1.2e-03] * 1e3 - waveform = np.c_[ - np.r_[ - np.arange(-0.002, -0.0001, 5e-4), - np.arange(-0.0004, 0.0, 1e-4), - np.arange(0.0, 0.002, 5e-4), - ] - * 1e3 - + 2.0, - np.r_[np.linspace(0, 1, 4), np.linspace(0.9, 0.0, 4), np.zeros(4)], - ] - survey.waveform = waveform - survey.timing_mark = 2.0 - survey.unit = "Milliseconds (ms)" else: survey = Points.create( @@ -432,7 +454,6 @@ def topo_drape(x, y): ) # Create a mesh - if "2d" in inversion_type: lines = survey.get_entity("line_ids")[0].values entity, mesh, _ = get_drape_model( # pylint: disable=unbalanced-tuple-unpacking @@ -466,7 +487,7 @@ def topo_drape(x, y): finalize=False, ) - if inversion_type in ["fdem", "airborne_tem"]: + if inversion_type in ["fdem", "airborne tdem"]: mesh = OctreeDriver.refine_tree_from_points( mesh, vertices, diff --git a/tests/topography_test.py b/tests/topography_test.py index e0f5114c..de8bebb8 100644 --- a/tests/topography_test.py +++ b/tests/topography_test.py @@ -17,7 +17,7 @@ from simpeg_drivers.components import InversionData, InversionMesh, InversionTopography from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields import MVIInversionOptions -from simpeg_drivers.utils.testing import Geoh5Tester, setup_inversion_workspace +from tests.testing_utils import Geoh5Tester, setup_inversion_workspace def test_get_locations(tmp_path: Path): diff --git a/tests/uijson_test.py b/tests/uijson_test.py index 07c4da27..7f76b0c8 100644 --- a/tests/uijson_test.py +++ b/tests/uijson_test.py @@ -16,16 +16,19 @@ import numpy as np import pytest from geoh5py import Workspace +from geoh5py.ui_json import InputFile from geoh5py.ui_json.annotations import Deprecated from packaging.version import Version from pydantic import AliasChoices, Field import simpeg_drivers +from simpeg_drivers.driver import InversionDriver +from simpeg_drivers.line_sweep.driver import LineSweepDriver from simpeg_drivers.options import ActiveCellsOptions from simpeg_drivers.potential_fields.gravity.options import GravityInversionOptions from simpeg_drivers.potential_fields.gravity.uijson import GravityInversionUIJson from simpeg_drivers.uijson import SimPEGDriversUIJson -from simpeg_drivers.utils.testing import setup_inversion_workspace +from tests.testing_utils import setup_inversion_workspace logger = logging.getLogger(__name__) @@ -250,3 +253,106 @@ def test_gravity_uijson(tmp_path): params_data_nobraces[param] = field_data_nobraces assert uijson_data == params_data_nobraces + + +CHANNEL_NAME = { + "direct current pseudo 3d": "potential", + "direct current 3d": "potential", + "direct current 2d": "potential", + "induced polarization pseudo 3d": "chargeability", + "induced polarization 3d": "chargeability", + "induced polarization 2d": "chargeability", + "fdem 1d": "z_real", + "fem": "z_real", + "fdem": "z_real", + "tdem 1d": "z", + "tdem": "z", + "gravity": "gz", + "magnetics": "tmi", + "magnetotellurics": "zxx_real", + "tipper": "txz_real", +} + + +def test_legacy_uijson(tmp_path: Path): + """ + Loop over all uijson files in the legacy directory and check that the + read and run still works. + """ + path = Path(__file__).resolve().parent / "legacy" + + for directory in path.iterdir(): + if not directory.is_dir(): + continue + + version_path = tmp_path / directory.name + for file in directory.glob("*.ui.json"): + ifile = InputFile.read_ui_json(file, validate=False) + inversion_type = ifile.data.get("inversion_type", None) + + if inversion_type not in CHANNEL_NAME: + continue + + forward = ifile.data.get("forward_only", None) + + work_path = version_path / ( + inversion_type + (" fwr" if forward else " inv") + ) + + work_path.mkdir(parents=True) + geoh5, mesh, model, survey, topo = setup_inversion_workspace( + work_path, + background=1.0, + anomaly=2.0, + n_electrodes=10, + n_lines=3, + inversion_type=inversion_type, + ) + + with geoh5.open(mode="r+"): + ifile.data["geoh5"] = geoh5 + ifile.data["mesh"] = mesh + ifile.data["starting_model"] = model + ifile.data["data_object"] = survey + ifile.data["topography_object"] = topo + + if "2d" in inversion_type or "pseudo 3d" in inversion_type: + line_id = geoh5.get_entity("line_ids")[0] + ifile.data["line_object"] = line_id + + if not forward: + n_vals = survey.n_vertices + if ( + "direct current" in inversion_type + or "induced polarization" in inversion_type + ): + n_vals = survey.n_cells + + channels = getattr(survey, "channels", [1]) + + data = [] + for channel in channels: + data.append( + survey.add_data( + { + CHANNEL_NAME[inversion_type] + f"[{channel}]": { + "values": np.ones(n_vals) + } + } + ) + ) + + if len(data) > 1: + channel = survey.add_data_to_group(data, "Group") + else: + channel = data[0] + + ifile.data[CHANNEL_NAME[inversion_type] + "_channel"] = channel + ifile.data[CHANNEL_NAME[inversion_type] + "_uncertainty"] = channel + + driver = InversionDriver.from_input_file(ifile) + + if isinstance(driver, LineSweepDriver): + continue + + assert driver.inversion