diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2a1b0eb7..aadd2c9e 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/environments/py-3.10-linux-64-dev.conda.lock.yml b/environments/py-3.10-linux-64-dev.conda.lock.yml index 77c2379f..bde1b9c2 100644 --- a/environments/py-3.10-linux-64-dev.conda.lock.yml +++ b/environments/py-3.10-linux-64-dev.conda.lock.yml @@ -151,7 +151,7 @@ dependencies: - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h89163eb_1 @@ -185,7 +185,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py310h5eaa309_3 - - pandoc=3.7.0.1=ha770c72_0 + - pandoc=3.7.0.2=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -305,7 +305,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.10-linux-64.conda.lock.yml b/environments/py-3.10-linux-64.conda.lock.yml index d376b8c6..522d4586 100644 --- a/environments/py-3.10-linux-64.conda.lock.yml +++ b/environments/py-3.10-linux-64.conda.lock.yml @@ -88,7 +88,7 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h89163eb_1 - matplotlib-base=3.8.4=py310hef631a5_2 @@ -157,7 +157,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.10-win-64-dev.conda.lock.yml b/environments/py-3.10-win-64-dev.conda.lock.yml index 23d18ddc..0564d90a 100644 --- a/environments/py-3.10-win-64-dev.conda.lock.yml +++ b/environments/py-3.10-win-64-dev.conda.lock.yml @@ -139,7 +139,7 @@ dependencies: - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h38315fa_1 @@ -170,7 +170,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py310hb4db72f_3 - - pandoc=3.7.0.1=h57928b3_0 + - pandoc=3.7.0.2=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -295,7 +295,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.10-win-64.conda.lock.yml b/environments/py-3.10-win-64.conda.lock.yml index 699ca99b..0c790229 100644 --- a/environments/py-3.10-win-64.conda.lock.yml +++ b/environments/py-3.10-win-64.conda.lock.yml @@ -75,7 +75,7 @@ dependencies: - libxcb=1.17.0=h0e4246c_0 - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py310h38315fa_1 - matplotlib-base=3.8.4=py310hadb10a8_2 @@ -145,7 +145,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.11-linux-64-dev.conda.lock.yml b/environments/py-3.11-linux-64-dev.conda.lock.yml index 5507eecd..e0a57db3 100644 --- a/environments/py-3.11-linux-64-dev.conda.lock.yml +++ b/environments/py-3.11-linux-64-dev.conda.lock.yml @@ -153,7 +153,7 @@ dependencies: - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h2dc5d0c_1 @@ -187,7 +187,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py311h7db5c69_3 - - pandoc=3.7.0.1=ha770c72_0 + - pandoc=3.7.0.2=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -308,7 +308,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.11-linux-64.conda.lock.yml b/environments/py-3.11-linux-64.conda.lock.yml index dd3322d6..adc54e39 100644 --- a/environments/py-3.11-linux-64.conda.lock.yml +++ b/environments/py-3.11-linux-64.conda.lock.yml @@ -89,7 +89,7 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h2dc5d0c_1 - matplotlib-base=3.8.4=py311ha4ca890_2 @@ -159,7 +159,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.11-win-64-dev.conda.lock.yml b/environments/py-3.11-win-64-dev.conda.lock.yml index 051cf996..f5b676b4 100644 --- a/environments/py-3.11-win-64-dev.conda.lock.yml +++ b/environments/py-3.11-win-64-dev.conda.lock.yml @@ -141,7 +141,7 @@ dependencies: - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h5082efb_1 @@ -172,7 +172,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py311hcf9f919_3 - - pandoc=3.7.0.1=h57928b3_0 + - pandoc=3.7.0.2=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -298,7 +298,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.11-win-64.conda.lock.yml b/environments/py-3.11-win-64.conda.lock.yml index 2efa2593..a565e61a 100644 --- a/environments/py-3.11-win-64.conda.lock.yml +++ b/environments/py-3.11-win-64.conda.lock.yml @@ -76,7 +76,7 @@ dependencies: - libxcb=1.17.0=h0e4246c_0 - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py311h5082efb_1 - matplotlib-base=3.8.4=py311h9b31f6e_2 @@ -147,7 +147,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.12-linux-64-dev.conda.lock.yml b/environments/py-3.12-linux-64-dev.conda.lock.yml index d2c6ccba..55398d0c 100644 --- a/environments/py-3.12-linux-64-dev.conda.lock.yml +++ b/environments/py-3.12-linux-64-dev.conda.lock.yml @@ -153,7 +153,7 @@ dependencies: - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h178313f_1 @@ -187,7 +187,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py312hf9745cd_3 - - pandoc=3.7.0.1=ha770c72_0 + - pandoc=3.7.0.2=ha770c72_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -308,7 +308,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.12-linux-64.conda.lock.yml b/environments/py-3.12-linux-64.conda.lock.yml index 7a11c865..dca98fa6 100644 --- a/environments/py-3.12-linux-64.conda.lock.yml +++ b/environments/py-3.12-linux-64.conda.lock.yml @@ -89,7 +89,7 @@ dependencies: - libxcrypt=4.4.36=hd590300_1 - libxml2=2.13.8=h4bc477f_0 - libzlib=1.3.1=hb9d3cd8_2 - - llvm-openmp=20.1.5=h024ca30_0 + - llvm-openmp=20.1.6=h024ca30_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h178313f_1 - matplotlib-base=3.8.4=py312h20ab3a6_2 @@ -159,7 +159,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.12-win-64-dev.conda.lock.yml b/environments/py-3.12-win-64-dev.conda.lock.yml index e8648843..45bf9920 100644 --- a/environments/py-3.12-win-64-dev.conda.lock.yml +++ b/environments/py-3.12-win-64-dev.conda.lock.yml @@ -141,7 +141,7 @@ dependencies: - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - linkify-it-py=2.0.3=pyhd8ed1ab_1 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markdown-it-py=2.2.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h31fea79_1 @@ -172,7 +172,7 @@ dependencies: - overrides=7.7.0=pyhd8ed1ab_1 - packaging=25.0=pyh29332c3_1 - pandas=2.2.3=py312h72972c8_3 - - pandoc=3.7.0.1=h57928b3_0 + - pandoc=3.7.0.2=h57928b3_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - parso=0.8.4=pyhd8ed1ab_1 - partd=1.4.2=pyhd8ed1ab_0 @@ -298,7 +298,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/environments/py-3.12-win-64.conda.lock.yml b/environments/py-3.12-win-64.conda.lock.yml index 6357305c..cbbd416c 100644 --- a/environments/py-3.12-win-64.conda.lock.yml +++ b/environments/py-3.12-win-64.conda.lock.yml @@ -76,7 +76,7 @@ dependencies: - libxcb=1.17.0=h0e4246c_0 - libxml2=2.13.8=h442d1da_0 - libzlib=1.3.1=h2466b09_2 - - llvm-openmp=20.1.5=h30eaf37_0 + - llvm-openmp=20.1.6=h30eaf37_0 - locket=1.0.0=pyhd8ed1ab_0 - markupsafe=3.0.2=py312h31fea79_1 - matplotlib-base=3.8.4=py312hfee7060_2 @@ -147,7 +147,7 @@ dependencies: - geoapps-utils @ git+https://github.com/MiraGeoscience/geoapps-utils.git@388f8f781c834f8f1d5c6243e636112bd2fd4dcb - geoh5py @ git+https://github.com/MiraGeoscience/geoh5py.git@2b2b72f906d85bf460292f66e763ff2331017b02 - mira-simpeg @ git+https://github.com/MiraGeoscience/simpeg.git@447de6c5c257883c4eea045cb3372bf6a1051ad1 - - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + - octree-creation-app @ git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 - param-sweeps @ git+https://github.com/MiraGeoscience/param-sweeps.git@d5959a0e19b45a89eb8a02cd608bc8accb74adb7 variables: diff --git a/py-3.10.conda-lock.yml b/py-3.10.conda-lock.yml index 0294bbd2..47336b15 100644 --- a/py-3.10.conda-lock.yml +++ b/py-3.10.conda-lock.yml @@ -4132,29 +4132,29 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.5-h024ca30_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda hash: - md5: 86f58be65a51d62ccc06cacfd83ff987 - sha256: 646907391a8d744508049ef7bd76653d59480b061a3a76ce047064f2923b6f84 + md5: e4ece7ed81e43ae97a3b58ac4230c3c5 + sha256: 43ad6a0772c0fc554d2712ae00ea788a391a40c494e9c04ec13f4aea17c95ffc category: main optional: false - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.2,<15' vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.5-h30eaf37_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.6-h30eaf37_0.conda hash: - md5: a88e3b6c1a5133b21d54a81fd8cb5c04 - sha256: 6e2c3e4c5faf0a1e65ee67ef2396f7de4fa81c2077d0e30e2a96c04156b191d2 + md5: b95ac67b4a85052c54268ba4b80be753 + sha256: de24f885d918455eb510da054658531bbf69a2bc5ee5945314d0451f375a881d category: main optional: false - name: locket @@ -5142,25 +5142,25 @@ package: category: main optional: false - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: linux-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.1-ha770c72_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda hash: - md5: fc8eb2a998f2883fe9842c556c0b175c - sha256: c22060f68acc1565e567f4e2a1671737320a0005749158718646d59d0324197e + md5: db0c1632047d38997559ce2c4741dd91 + sha256: 243c49b34caa9328e9d5f62c98be9eb046be8fee9836854b88d9022ce8013497 category: dev optional: true - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: win-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.1-h57928b3_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda hash: - md5: daa6680ef0c1f8c9cabca561bc77635c - sha256: d2b2146ddc2198bd735e0347e6540ed4e092ba542ca83dacac1caad7f8fb1b8c + md5: a77c859d9469f24691d6c6590b56fa45 + sha256: 7fff0deca558c5ab6c836127481decbec83c0add3a0ab2b81d1f10130146c357 category: dev optional: true - name: pandocfilters @@ -8581,12 +8581,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: octree-creation-app @@ -8600,12 +8600,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: param-sweeps diff --git a/py-3.11.conda-lock.yml b/py-3.11.conda-lock.yml index 17cd4c08..df71530d 100644 --- a/py-3.11.conda-lock.yml +++ b/py-3.11.conda-lock.yml @@ -4184,29 +4184,29 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.5-h024ca30_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda hash: - md5: 86f58be65a51d62ccc06cacfd83ff987 - sha256: 646907391a8d744508049ef7bd76653d59480b061a3a76ce047064f2923b6f84 + md5: e4ece7ed81e43ae97a3b58ac4230c3c5 + sha256: 43ad6a0772c0fc554d2712ae00ea788a391a40c494e9c04ec13f4aea17c95ffc category: main optional: false - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.2,<15' vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.5-h30eaf37_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.6-h30eaf37_0.conda hash: - md5: a88e3b6c1a5133b21d54a81fd8cb5c04 - sha256: 6e2c3e4c5faf0a1e65ee67ef2396f7de4fa81c2077d0e30e2a96c04156b191d2 + md5: b95ac67b4a85052c54268ba4b80be753 + sha256: de24f885d918455eb510da054658531bbf69a2bc5ee5945314d0451f375a881d category: main optional: false - name: locket @@ -5196,25 +5196,25 @@ package: category: main optional: false - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: linux-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.1-ha770c72_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda hash: - md5: fc8eb2a998f2883fe9842c556c0b175c - sha256: c22060f68acc1565e567f4e2a1671737320a0005749158718646d59d0324197e + md5: db0c1632047d38997559ce2c4741dd91 + sha256: 243c49b34caa9328e9d5f62c98be9eb046be8fee9836854b88d9022ce8013497 category: dev optional: true - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: win-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.1-h57928b3_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda hash: - md5: daa6680ef0c1f8c9cabca561bc77635c - sha256: d2b2146ddc2198bd735e0347e6540ed4e092ba542ca83dacac1caad7f8fb1b8c + md5: a77c859d9469f24691d6c6590b56fa45 + sha256: 7fff0deca558c5ab6c836127481decbec83c0add3a0ab2b81d1f10130146c357 category: dev optional: true - name: pandocfilters @@ -8666,12 +8666,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: octree-creation-app @@ -8685,12 +8685,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: param-sweeps diff --git a/py-3.12.conda-lock.yml b/py-3.12.conda-lock.yml index bd2563f9..ac3afe87 100644 --- a/py-3.12.conda-lock.yml +++ b/py-3.12.conda-lock.yml @@ -4184,29 +4184,29 @@ package: category: dev optional: true - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: linux-64 dependencies: __glibc: '>=2.17,<3.0.a0' - url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.5-h024ca30_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/llvm-openmp-20.1.6-h024ca30_0.conda hash: - md5: 86f58be65a51d62ccc06cacfd83ff987 - sha256: 646907391a8d744508049ef7bd76653d59480b061a3a76ce047064f2923b6f84 + md5: e4ece7ed81e43ae97a3b58ac4230c3c5 + sha256: 43ad6a0772c0fc554d2712ae00ea788a391a40c494e9c04ec13f4aea17c95ffc category: main optional: false - name: llvm-openmp - version: 20.1.5 + version: 20.1.6 manager: conda platform: win-64 dependencies: ucrt: '>=10.0.20348.0' vc: '>=14.2,<15' vc14_runtime: '>=14.29.30139' - url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.5-h30eaf37_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/llvm-openmp-20.1.6-h30eaf37_0.conda hash: - md5: a88e3b6c1a5133b21d54a81fd8cb5c04 - sha256: 6e2c3e4c5faf0a1e65ee67ef2396f7de4fa81c2077d0e30e2a96c04156b191d2 + md5: b95ac67b4a85052c54268ba4b80be753 + sha256: de24f885d918455eb510da054658531bbf69a2bc5ee5945314d0451f375a881d category: main optional: false - name: locket @@ -5196,25 +5196,25 @@ package: category: main optional: false - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: linux-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.1-ha770c72_0.conda + url: https://repo.prefix.dev/conda-forge/linux-64/pandoc-3.7.0.2-ha770c72_0.conda hash: - md5: fc8eb2a998f2883fe9842c556c0b175c - sha256: c22060f68acc1565e567f4e2a1671737320a0005749158718646d59d0324197e + md5: db0c1632047d38997559ce2c4741dd91 + sha256: 243c49b34caa9328e9d5f62c98be9eb046be8fee9836854b88d9022ce8013497 category: dev optional: true - name: pandoc - version: 3.7.0.1 + version: 3.7.0.2 manager: conda platform: win-64 dependencies: {} - url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.1-h57928b3_0.conda + url: https://repo.prefix.dev/conda-forge/win-64/pandoc-3.7.0.2-h57928b3_0.conda hash: - md5: daa6680ef0c1f8c9cabca561bc77635c - sha256: d2b2146ddc2198bd735e0347e6540ed4e092ba542ca83dacac1caad7f8fb1b8c + md5: a77c859d9469f24691d6c6590b56fa45 + sha256: 7fff0deca558c5ab6c836127481decbec83c0add3a0ab2b81d1f10130146c357 category: dev optional: true - name: pandocfilters @@ -8666,12 +8666,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: octree-creation-app @@ -8685,12 +8685,12 @@ package: numpy: '>=1.26.0,<1.27.0' pydantic: '>=2.5.2,<3.0.0' scipy: '>=1.14.0,<1.15.0' - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 hash: - sha256: e9c99d6fd5d324571a2717990aecb3ed673cbaca + sha256: 02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 source: type: url - url: git+https://github.com/MiraGeoscience/octree-creation-app.git@e9c99d6fd5d324571a2717990aecb3ed673cbaca + url: git+https://github.com/MiraGeoscience/octree-creation-app.git@02fbd85bf7d54b8f4336f1f0094c1c3e27714e81 category: main optional: false - name: param-sweeps diff --git a/pyproject.toml b/pyproject.toml index fd6f7f56..e1a46b02 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -83,7 +83,7 @@ octree-creation-app = {git = "https://github.com/MiraGeoscience/octree-creation- #geoapps-utils = {version = ">=0.6.0a, <0.7.dev", source = "pypi", allow-prereleases = true} geoapps-utils = {git = "https://github.com/MiraGeoscience/geoapps-utils.git", rev = "develop"} -#mira-simpeg = {version = ">=0.23.0.1a4, <0.23.1.dev", source="pypi", allow-prereleases = true, extras = ["dask"]} +#mira-simpeg = {version = ">=0.23.0.1b1, <0.23.1.dev", source="pypi", allow-prereleases = true, extras = ["dask"]} mira-simpeg = {git = "https://github.com/MiraGeoscience/simpeg.git", rev = "develop", extras = ["dask"]} #param-sweeps = {version = ">=0.3.0a, <0.4.dev", source = "pypi", allow-prereleases = true} diff --git a/recipe.yaml b/recipe.yaml index 1dbe5456..7fea1768 100644 --- a/recipe.yaml +++ b/recipe.yaml @@ -31,6 +31,7 @@ requirements: - mira-simpeg >=0.23.0.1a3, <0.23.1.dev - octree-creation-app >=0.4.0a1, <0.5.dev - param-sweeps >=0.3.0a1, <0.4.dev + # direct dependencies - dask-core >=2025.3, <2025.4.dev - discretize >=0.11.0, <0.12.dev diff --git a/simpeg_drivers-assets/uijson/direct_current_2d_forward.ui.json b/simpeg_drivers-assets/uijson/direct_current_2d_forward.ui.json index 96068825..5fd3ef84 100644 --- a/simpeg_drivers-assets/uijson/direct_current_2d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_2d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 2D Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current 2d", "forward_only": true, "physical_property": "conductivity", diff --git a/simpeg_drivers-assets/uijson/direct_current_2d_inversion.ui.json b/simpeg_drivers-assets/uijson/direct_current_2d_inversion.ui.json index 7c197dff..5b0d3ccf 100644 --- a/simpeg_drivers-assets/uijson/direct_current_2d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_2d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 2D Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current 2d", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/direct_current_3d_forward.ui.json b/simpeg_drivers-assets/uijson/direct_current_3d_forward.ui.json index 3e3b4354..d262e4b6 100644 --- a/simpeg_drivers-assets/uijson/direct_current_3d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_3d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 3D Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current 3d", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/direct_current_3d_inversion.ui.json b/simpeg_drivers-assets/uijson/direct_current_3d_inversion.ui.json index ac613947..77346710 100644 --- a/simpeg_drivers-assets/uijson/direct_current_3d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_3d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 3D Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current 3d", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/direct_current_batch2d_forward.ui.json b/simpeg_drivers-assets/uijson/direct_current_batch2d_forward.ui.json index 6bbfbade..d4502c29 100644 --- a/simpeg_drivers-assets/uijson/direct_current_batch2d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_batch2d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 2D Batch Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current pseudo 3d", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/direct_current_batch2d_inversion.ui.json b/simpeg_drivers-assets/uijson/direct_current_batch2d_inversion.ui.json index cc2e1f0d..f798ead5 100644 --- a/simpeg_drivers-assets/uijson/direct_current_batch2d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/direct_current_batch2d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Direct Current (DC) 2D Batch Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "direct current pseudo 3d", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/fdem1d_forward.ui.json b/simpeg_drivers-assets/uijson/fdem1d_forward.ui.json index ecb17470..399943c5 100644 --- a/simpeg_drivers-assets/uijson/fdem1d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/fdem1d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Frequency-domain EM (FEM) 1D Forward", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "fdem 1d", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json b/simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json index 6fa187a4..e163fe82 100644 --- a/simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/fdem1d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Frequency-domain EM (FEM) 1D Inversion", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "fdem 1d", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/fdem_forward.ui.json b/simpeg_drivers-assets/uijson/fdem_forward.ui.json index 0adc378e..9e9fd756 100644 --- a/simpeg_drivers-assets/uijson/fdem_forward.ui.json +++ b/simpeg_drivers-assets/uijson/fdem_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Frequency-domain EM (FEM) Forward", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "fdem", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/fdem_inversion.ui.json b/simpeg_drivers-assets/uijson/fdem_inversion.ui.json index 859be0b2..2254cbab 100644 --- a/simpeg_drivers-assets/uijson/fdem_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/fdem_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Frequency-domain EM (FEM) Inversion", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "fdem", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/gravity_forward.ui.json b/simpeg_drivers-assets/uijson/gravity_forward.ui.json index 109ecb93..be3dcfb6 100644 --- a/simpeg_drivers-assets/uijson/gravity_forward.ui.json +++ b/simpeg_drivers-assets/uijson/gravity_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Gravity Forward", "icon": "surveyairbornegravity", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", diff --git a/simpeg_drivers-assets/uijson/gravity_inversion.ui.json b/simpeg_drivers-assets/uijson/gravity_inversion.ui.json index 9fa2f6da..5efc0c32 100644 --- a/simpeg_drivers-assets/uijson/gravity_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/gravity_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Gravity Inversion", "icon": "surveyairbornegravity", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", diff --git a/simpeg_drivers-assets/uijson/induced_polarization_2d_forward.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_2d_forward.ui.json index 5e74ec3e..fa99cfca 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_2d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_2d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 2D Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization 2d", "physical_property": "chargeability", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/induced_polarization_2d_inversion.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_2d_inversion.ui.json index 21f71dd6..6294ff19 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_2d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_2d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 2D Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization 2d", "physical_property": "chargeability", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/induced_polarization_3d_forward.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_3d_forward.ui.json index 0467722b..c884fb90 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_3d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_3d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 3D Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization 3d", "physical_property": "chargeability", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/induced_polarization_3d_inversion.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_3d_inversion.ui.json index 3d8abad4..72871576 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_3d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_3d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 3D Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization 3d", "physical_property": "chargeability", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/induced_polarization_batch2d_forward.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_batch2d_forward.ui.json index d0ced561..235a93ec 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_batch2d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_batch2d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 2D Batch Forward", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization pseudo 3d", "physical_property": "chargeability", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/induced_polarization_batch2d_inversion.ui.json b/simpeg_drivers-assets/uijson/induced_polarization_batch2d_inversion.ui.json index 96d1676f..30dc2be9 100644 --- a/simpeg_drivers-assets/uijson/induced_polarization_batch2d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/induced_polarization_batch2d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Induced Polarization (IP) 2D Batch Inversion", "icon": "PotentialElectrode", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "induced polarization pseudo 3d", "physical_property": "chargeability", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/joint_cross_gradient_inversion.ui.json b/simpeg_drivers-assets/uijson/joint_cross_gradient_inversion.ui.json index 40988724..5b448f2c 100644 --- a/simpeg_drivers-assets/uijson/joint_cross_gradient_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/joint_cross_gradient_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Joint Cross Gradient Inversion", "icon": "function", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,11 +7,8 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "joint cross gradient", - "physical_property": [ - "" - ], + "physical_property": "", "forward_only": false, "group_a": { "main": true, diff --git a/simpeg_drivers-assets/uijson/joint_surveys_inversion.ui.json b/simpeg_drivers-assets/uijson/joint_surveys_inversion.ui.json index 811f9cbb..8918b092 100644 --- a/simpeg_drivers-assets/uijson/joint_surveys_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/joint_surveys_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Joint Surveys Inversion", "icon": "model", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "joint surveys", "physical_property": "", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/magnetic_scalar_forward.ui.json b/simpeg_drivers-assets/uijson/magnetic_scalar_forward.ui.json index 56a02cd2..b2a40f85 100644 --- a/simpeg_drivers-assets/uijson/magnetic_scalar_forward.ui.json +++ b/simpeg_drivers-assets/uijson/magnetic_scalar_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetic Forward", "icon": "surveyairbornemagnetics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetic scalar", "physical_property": "susceptibility", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/magnetic_scalar_inversion.ui.json b/simpeg_drivers-assets/uijson/magnetic_scalar_inversion.ui.json index 3602e9e4..8ba44d51 100644 --- a/simpeg_drivers-assets/uijson/magnetic_scalar_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/magnetic_scalar_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetic Inversion", "icon": "surveyairbornemagnetics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetic scalar", "physical_property": "susceptibility", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/magnetic_vector_forward.ui.json b/simpeg_drivers-assets/uijson/magnetic_vector_forward.ui.json index c1be39b4..96e140ce 100644 --- a/simpeg_drivers-assets/uijson/magnetic_vector_forward.ui.json +++ b/simpeg_drivers-assets/uijson/magnetic_vector_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetic Vector (MVI) Forward", "icon": "surveyairbornemagnetics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetic vector", "physical_property": "susceptibility", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/magnetic_vector_inversion.ui.json b/simpeg_drivers-assets/uijson/magnetic_vector_inversion.ui.json index a9344eea..4e2e9aeb 100644 --- a/simpeg_drivers-assets/uijson/magnetic_vector_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/magnetic_vector_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetic Vector (MVI) Inversion", "icon": "surveyairbornemagnetics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetic vector", "physical_property": "susceptibility", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/magnetotellurics_forward.ui.json b/simpeg_drivers-assets/uijson/magnetotellurics_forward.ui.json index 40996151..b1f7f72a 100644 --- a/simpeg_drivers-assets/uijson/magnetotellurics_forward.ui.json +++ b/simpeg_drivers-assets/uijson/magnetotellurics_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetotellurics (MT) Forward", "icon": "surveymagnetotellurics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetotellurics", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/magnetotellurics_inversion.ui.json b/simpeg_drivers-assets/uijson/magnetotellurics_inversion.ui.json index 599e1fd8..b06e9359 100644 --- a/simpeg_drivers-assets/uijson/magnetotellurics_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/magnetotellurics_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Magnetotellurics (MT) Inversion", "icon": "surveymagnetotellurics", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "magnetotellurics", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/sensitivity_cutoff.ui.json b/simpeg_drivers-assets/uijson/sensitivity_cutoff.ui.json index f41bf347..e5bcfb6d 100644 --- a/simpeg_drivers-assets/uijson/sensitivity_cutoff.ui.json +++ b/simpeg_drivers-assets/uijson/sensitivity_cutoff.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Depth of Investigation: Sensitivity Cutoff", "icon": "", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,10 +7,8 @@ "run_command": "simpeg_drivers.depth_of_investigation.sensitivity_cutoff.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "mesh": { "main": true, - "group": "Sensitivity", "meshType": [ "4ea87376-3ece-438b-bf12-3479733ded46" ], @@ -19,7 +17,6 @@ }, "sensitivity_model": { "main": true, - "group": "Sensitivity", "parent": "mesh", "association": "Cell", "dataType": "Float", @@ -28,7 +25,6 @@ }, "sensitivity_cutoff": { "main": true, - "group": "Sensitivity", "label": "Cutoff (%)", "tooltip": "The created mask will eliminate cells below the cutoff percentage", "value": 10.0, @@ -39,7 +35,6 @@ }, "cutoff_method": { "main": true, - "group": "Sensitivity", "label": "Method", "choiceList": [ "percentile", @@ -50,9 +45,7 @@ }, "mask_name": { "main": true, - "label": "Name", - "value": "Sensitivity Cutoff", - "optional": true, - "enabled": false + "label": "Output name", + "value": "Sensitivity cutoff" } } diff --git a/simpeg_drivers-assets/uijson/tdem1d_forward.ui.json b/simpeg_drivers-assets/uijson/tdem1d_forward.ui.json index 10cc1008..846e7cac 100644 --- a/simpeg_drivers-assets/uijson/tdem1d_forward.ui.json +++ b/simpeg_drivers-assets/uijson/tdem1d_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Time-domain EM (TEM) 1D Forward", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tdem 1d", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json b/simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json index 0fcd8cc2..3b49335f 100644 --- a/simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/tdem1d_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Time-domain EM (TEM) 1D Inversion", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tdem 1d", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers-assets/uijson/tdem_forward.ui.json b/simpeg_drivers-assets/uijson/tdem_forward.ui.json index 2431ed07..8a6dfd5c 100644 --- a/simpeg_drivers-assets/uijson/tdem_forward.ui.json +++ b/simpeg_drivers-assets/uijson/tdem_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Time-domain EM (TEM) Forward", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tdem", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/tdem_inversion.ui.json b/simpeg_drivers-assets/uijson/tdem_inversion.ui.json index 3f092ba1..068ef9d6 100644 --- a/simpeg_drivers-assets/uijson/tdem_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/tdem_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Time-domain EM (TEM) Inversion", "icon": "surveyairborneem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tdem", "physical_property": "conductivity", "forward_only": false, @@ -316,6 +315,8 @@ ], "label": "Gradient rotation", "parent": "mesh", + "optional": true, + "enabled": false, "value": "" }, "s_norm": { diff --git a/simpeg_drivers-assets/uijson/tile_estimator.ui.json b/simpeg_drivers-assets/uijson/tile_estimator.ui.json index 41c37955..999713f5 100644 --- a/simpeg_drivers-assets/uijson/tile_estimator.ui.json +++ b/simpeg_drivers-assets/uijson/tile_estimator.ui.json @@ -1,30 +1,27 @@ { - "version": "0.3.0-alpha.4", - "title": "Tile Estimation", + "version": "0.3.0-alpha.6", + "title": "SimPEG Tile Estimation", "icon": "", - "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", "conda_environment": "simpeg_drivers", "run_command": "simpeg_drivers.utils.tile_estimate", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "simulation": { "main": true, - "label": "Group A", + "label": "SimPEG Group", "groupType": "{55ed3daf-c192-4d4b-a439-60fa987fe2b8}", "value": "" }, "render_plot": { "main": true, - "label": "Render Plot", + "label": "Create plot", "value": true }, "out_group": { "label": "UIJson group", "value": "", "groupType": "{BB50AC61-A657-4926-9C82-067658E246A0}", - "group": "Drag-and-drop options", - "visible": true, + "main": true, "optional": true, "enabled": false, "tooltip": "Assign a group to which results will be saved" diff --git a/simpeg_drivers-assets/uijson/tipper_forward.ui.json b/simpeg_drivers-assets/uijson/tipper_forward.ui.json index 476a3679..0c89241f 100644 --- a/simpeg_drivers-assets/uijson/tipper_forward.ui.json +++ b/simpeg_drivers-assets/uijson/tipper_forward.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Tipper Forward", "icon": "surveyztem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tipper", "physical_property": "conductivity", "forward_only": true, diff --git a/simpeg_drivers-assets/uijson/tipper_inversion.ui.json b/simpeg_drivers-assets/uijson/tipper_inversion.ui.json index c96d1e8d..e2038f84 100644 --- a/simpeg_drivers-assets/uijson/tipper_inversion.ui.json +++ b/simpeg_drivers-assets/uijson/tipper_inversion.ui.json @@ -1,5 +1,5 @@ { - "version": "0.3.0-alpha.4", + "version": "0.3.0-alpha.6", "title": "Tipper Inversion", "icon": "surveyztem", "documentation": "https://mirageoscience-simpeg-drivers.readthedocs-hosted.com/en/latest/", @@ -7,7 +7,6 @@ "run_command": "simpeg_drivers.driver", "geoh5": "", "monitoring_directory": "", - "workspace_geoh5": "", "inversion_type": "tipper", "physical_property": "conductivity", "forward_only": false, diff --git a/simpeg_drivers/__init__.py b/simpeg_drivers/__init__.py index f20fb9a9..071b45ab 100644 --- a/simpeg_drivers/__init__.py +++ b/simpeg_drivers/__init__.py @@ -65,6 +65,13 @@ def assets_path() -> Path: "inversion": "FDEMInversionDriver", }, ), + "fem": ( + "simpeg_drivers.electromagnetics.frequency_domain.driver", + { + "forward": "FDEMForwardDriver", + "inversion": "FDEMInversionDriver", + }, + ), "fdem 1d": ( "simpeg_drivers.electromagnetics.frequency_domain_1d.driver", { diff --git a/simpeg_drivers/components/factories/directives_factory.py b/simpeg_drivers/components/factories/directives_factory.py index cbbe98ab..735eb947 100644 --- a/simpeg_drivers/components/factories/directives_factory.py +++ b/simpeg_drivers/components/factories/directives_factory.py @@ -15,6 +15,7 @@ from __future__ import annotations from abc import ABC +from logging import getLogger from typing import TYPE_CHECKING import numpy as np @@ -29,6 +30,8 @@ if TYPE_CHECKING: from simpeg_drivers.driver import InversionDriver +logger = getLogger(__name__) + class DirectivesFactory: def __init__(self, driver: InversionDriver): @@ -263,7 +266,15 @@ def scale_misfits(self): def update_irls_directive(self): """Directive to update IRLS.""" if self._update_irls_directive is None: - has_chi_start = self.params.starting_chi_factor is not None + start_chi_fact = self.params.starting_chi_factor + + if start_chi_fact is not None and self.params.chi_factor > start_chi_fact: + logger.warning( + "Starting chi factor is greater than target chi factor.\n" + "Setting the target chi factor to the starting chi factor." + ) + start_chi_fact = self.params.chi_factor + self._update_irls_directive = directives.UpdateIRLS( f_min_change=self.params.f_min_change, max_irls_iterations=self.params.max_irls_iterations, @@ -272,11 +283,7 @@ def update_irls_directive(self): cooling_rate=self.params.cooling_rate, cooling_factor=self.params.cooling_factor, irls_cooling_factor=self.params.epsilon_cooling_factor, - chifact_start=( - self.params.starting_chi_factor - if has_chi_start - else self.params.chi_factor - ), + chifact_start=start_chi_fact or self.params.chi_factor, chifact_target=self.params.chi_factor, ) return self._update_irls_directive diff --git a/simpeg_drivers/components/factories/misfit_factory.py b/simpeg_drivers/components/factories/misfit_factory.py index 0caabc77..98177771 100644 --- a/simpeg_drivers/components/factories/misfit_factory.py +++ b/simpeg_drivers/components/factories/misfit_factory.py @@ -79,7 +79,19 @@ def assemble_arguments( # pylint: disable=arguments-differ for local_index in tiles: if len(local_index) == 0: continue - local_mesh = None + + local_sim, _, _, _ = self.create_nested_simulation( + inversion_data, + inversion_mesh, + None, + active_cells, + local_index, + channel=None, + tile_id=tile_count, + padding_cells=self.params.padding_cells, + ) + + local_mesh = getattr(local_sim, "mesh", None) for count, channel in enumerate(channels): n_split = split_list[misfit_count] @@ -97,8 +109,6 @@ def assemble_arguments( # pylint: disable=arguments-differ ) ) - local_mesh = getattr(local_sim, "mesh", None) - if count == 0: if self.factory_type in [ "fdem", diff --git a/simpeg_drivers/driver.py b/simpeg_drivers/driver.py index 973b5bdb..3b7ae6c4 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/simpeg_drivers/electromagnetics/frequency_domain/__init__.py b/simpeg_drivers/electromagnetics/frequency_domain/__init__.py index 3036db9a..4d06f672 100644 --- a/simpeg_drivers/electromagnetics/frequency_domain/__init__.py +++ b/simpeg_drivers/electromagnetics/frequency_domain/__init__.py @@ -7,12 +7,3 @@ # (see LICENSE file at the root of this source code package). ' # ' # ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - - -from .options import ( - FDEMForwardOptions, - FDEMInversionOptions, -) - -# pylint: disable=unused-import -# flake8: noqa diff --git a/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py b/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py index c9478e90..2ea767d9 100644 --- a/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py +++ b/simpeg_drivers/electromagnetics/frequency_domain_1d/options.py @@ -17,14 +17,17 @@ from geoh5py.groups import PropertyGroup from simpeg_drivers import assets_path -from simpeg_drivers.electromagnetics.frequency_domain import ( - FDEMForwardOptions, - FDEMInversionOptions, +from simpeg_drivers.electromagnetics.frequency_domain.options import ( + BaseFDEMOptions, +) +from simpeg_drivers.options import ( + BaseForwardOptions, + BaseInversionOptions, + DrapeModelOptions, ) -from simpeg_drivers.options import DrapeModelOptions -class FDEM1DForwardOptions(FDEMForwardOptions): +class FDEM1DForwardOptions(BaseFDEMOptions, BaseForwardOptions): """ Frequency Domain Electromagnetic forward options. @@ -40,6 +43,10 @@ class FDEM1DForwardOptions(FDEMForwardOptions): title: str = "Frequency-domain EM-1D (FEM-1D) Forward" inversion_type: str = "fdem 1d" + + z_real_channel_bool: bool + z_imag_channel_bool: bool + drape_model: DrapeModelOptions = DrapeModelOptions( u_cell_size=10.0, v_cell_size=10.0, @@ -50,7 +57,7 @@ class FDEM1DForwardOptions(FDEMForwardOptions): ) -class FDEM1DInversionOptions(FDEMInversionOptions): +class FDEM1DInversionOptions(BaseFDEMOptions, BaseInversionOptions): """ Frequency Domain Electromagnetic Inversion options. @@ -64,9 +71,9 @@ class FDEM1DInversionOptions(FDEMInversionOptions): name: ClassVar[str] = "Frequency Domain 1D Electromagnetics Inversion" default_ui_json: ClassVar[Path] = assets_path() / "uijson/fdem1d_inversion.ui.json" - title: str = "Frequency-domain EM-1D (FEM-1D) Inversion" inversion_type: str = "fdem 1d" + drape_model: DrapeModelOptions = DrapeModelOptions( u_cell_size=10.0, v_cell_size=10.0, @@ -75,7 +82,14 @@ class FDEM1DInversionOptions(FDEMInversionOptions): vertical_padding=100.0, expansion_factor=1.1, ) + + # 1D specific options auto_scale_misfits: bool = False sens_wts_threshold: float = 100.0 length_scale_y: None = None y_norm: None = None + + z_real_channel: PropertyGroup | None = None + z_real_uncertainty: PropertyGroup | None = None + z_imag_channel: PropertyGroup | None = None + z_imag_uncertainty: PropertyGroup | None = None diff --git a/simpeg_drivers/electromagnetics/time_domain/options.py b/simpeg_drivers/electromagnetics/time_domain/options.py index e3fd2066..50dfd7e8 100644 --- a/simpeg_drivers/electromagnetics/time_domain/options.py +++ b/simpeg_drivers/electromagnetics/time_domain/options.py @@ -30,7 +30,33 @@ ) -class TDEMForwardOptions(EMDataMixin, BaseForwardOptions): +class BaseTDEMOptions(EMDataMixin): + """ + Base class for Time Domain Electromagnetic options. + + :param data_object: The data object containing the TDEM data. + :param physical_property: The physical property being modeled (e.g., conductivity). + :param data_units: The units of the TDEM data (e.g., "dB/dt (T/s)"). + :param model_type: The type of model used (e.g., "Conductivity (S/m)"). + """ + + data_object: Receivers + physical_property: str = "conductivity" + data_units: str = "dB/dt (T/s)" + model_type: str = "Conductivity (S/m)" + + @property + def unit_conversion(self): + """Return time unit conversion factor.""" + conversion = { + "Seconds (s)": 1.0, + "Milliseconds (ms)": 1e-3, + "Microseconds (us)": 1e-6, + } + return conversion[self.data_object.unit] + + +class TDEMForwardOptions(BaseTDEMOptions, BaseForwardOptions): """ Time Domain Electromagnetic forward options. @@ -48,25 +74,12 @@ class TDEMForwardOptions(EMDataMixin, BaseForwardOptions): physical_property: str = "conductivity" inversion_type: str = "tdem" - data_object: Receivers z_channel_bool: bool | None = None x_channel_bool: bool | None = None y_channel_bool: bool | None = None - data_units: str = "dB/dt (T/s)" - model_type: str = "Conductivity (S/m)" - - @property - def unit_conversion(self): - """Return time unit conversion factor.""" - conversion = { - "Seconds (s)": 1.0, - "Milliseconds (ms)": 1e-3, - "Microseconds (us)": 1e-6, - } - return conversion[self.data_object.unit] -class TDEMInversionOptions(EMDataMixin, BaseInversionOptions): +class TDEMInversionOptions(BaseTDEMOptions, BaseInversionOptions): """ Time Domain Electromagnetic Inversion options. @@ -82,27 +95,12 @@ class TDEMInversionOptions(EMDataMixin, BaseInversionOptions): name: ClassVar[str] = "Time Domain Electromagnetics Inversion" default_ui_json: ClassVar[Path] = assets_path() / "uijson/tdem_inversion.ui.json" - title: str = "Time-domain EM (TEM) Inversion" - physical_property: str = "conductivity" inversion_type: str = "tdem" - data_object: Receivers z_channel: PropertyGroup | None = None z_uncertainty: PropertyGroup | None = None x_channel: PropertyGroup | None = None x_uncertainty: PropertyGroup | None = None y_channel: PropertyGroup | None = None y_uncertainty: PropertyGroup | None = None - data_units: str = "dB/dt (T/s)" - model_type: str = "Conductivity (S/m)" - - @property - def unit_conversion(self): - """Return time unit conversion factor.""" - conversion = { - "Seconds (s)": 1.0, - "Milliseconds (ms)": 1e-3, - "Microseconds (us)": 1e-6, - } - return conversion[self.data_object.unit] diff --git a/simpeg_drivers/electromagnetics/time_domain_1d/__init__.py b/simpeg_drivers/electromagnetics/time_domain_1d/__init__.py index 7af431ad..4d06f672 100644 --- a/simpeg_drivers/electromagnetics/time_domain_1d/__init__.py +++ b/simpeg_drivers/electromagnetics/time_domain_1d/__init__.py @@ -7,12 +7,3 @@ # (see LICENSE file at the root of this source code package). ' # ' # ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' - - -from .options import ( - TDEM1DForwardOptions, - TDEM1DInversionOptions, -) - -# pylint: disable=unused-import -# flake8: noqa diff --git a/simpeg_drivers/electromagnetics/time_domain_1d/options.py b/simpeg_drivers/electromagnetics/time_domain_1d/options.py index 02abce25..120e40a3 100644 --- a/simpeg_drivers/electromagnetics/time_domain_1d/options.py +++ b/simpeg_drivers/electromagnetics/time_domain_1d/options.py @@ -22,6 +22,7 @@ ) from simpeg_drivers import assets_path +from simpeg_drivers.electromagnetics.time_domain.options import BaseTDEMOptions from simpeg_drivers.options import ( BaseForwardOptions, BaseInversionOptions, @@ -35,7 +36,7 @@ ) -class TDEM1DForwardOptions(EMDataMixin, BaseForwardOptions): +class TDEM1DForwardOptions(BaseTDEMOptions, BaseForwardOptions): """ Time Domain Electromagnetic forward options. @@ -51,12 +52,9 @@ class TDEM1DForwardOptions(EMDataMixin, BaseForwardOptions): title: str = "Time-domain EM-1D (TEM-1D) Forward" inversion_type: str = "tdem 1d" - physical_property: str = "conductivity" - data_object: Receivers z_channel_bool: bool - data_units: str = "dB/dt (T/s)" - model_type: str = "Conductivity (S/m)" + drape_model: DrapeModelOptions = DrapeModelOptions( u_cell_size=10.0, v_cell_size=10.0, @@ -66,18 +64,8 @@ class TDEM1DForwardOptions(EMDataMixin, BaseForwardOptions): expansion_factor=1.1, ) - @property - def unit_conversion(self): - """Return time unit conversion factor.""" - conversion = { - "Seconds (s)": 1.0, - "Milliseconds (ms)": 1e-3, - "Microseconds (us)": 1e-6, - } - return conversion[self.data_object.unit] - -class TDEM1DInversionOptions(EMDataMixin, BaseInversionOptions): +class TDEM1DInversionOptions(BaseTDEMOptions, BaseInversionOptions): """ Time Domain Electromagnetic Inversion options. @@ -96,15 +84,12 @@ class TDEM1DInversionOptions(EMDataMixin, BaseInversionOptions): title: str = "Time-domain EM-1D (TEM-1D) Inversion" inversion_type: str = "tdem 1d" - physical_property: str = "conductivity" - data_object: Receivers z_channel: PropertyGroup | None = None z_uncertainty: PropertyGroup | None = None length_scale_y: None = None y_norm: None = None - data_units: str = "dB/dt (T/s)" - model_type: str = "Conductivity (S/m)" + drape_model: DrapeModelOptions = DrapeModelOptions( u_cell_size=10.0, v_cell_size=10.0, @@ -115,13 +100,3 @@ class TDEM1DInversionOptions(EMDataMixin, BaseInversionOptions): ) auto_scale_misfits: bool = False sens_wts_threshold: float = 100.0 - - @property - def unit_conversion(self): - """Return time unit conversion factor.""" - conversion = { - "Seconds (s)": 1.0, - "Milliseconds (ms)": 1e-3, - "Microseconds (us)": 1e-6, - } - return conversion[self.data_object.unit] diff --git a/simpeg_drivers/joint/driver.py b/simpeg_drivers/joint/driver.py index 21f46f2a..686246a1 100644 --- a/simpeg_drivers/joint/driver.py +++ b/simpeg_drivers/joint/driver.py @@ -78,19 +78,14 @@ def drivers(self) -> list[InversionDriver] | None: """List of inversion drivers.""" if self._drivers is None: drivers = [] - physical_property = [] # Create sub-drivers for group in self.params.groups: _ = group.options # Triggers something... otherwise ui_json is empty group = group.copy(parent=self.params.out_group) - driver = simpeg_group_to_driver(group, self.workspace) - - physical_property.append(driver.params.physical_property) drivers.append(driver) self._drivers = drivers - self.params.physical_property = physical_property return self._drivers diff --git a/simpeg_drivers/joint/joint_cross_gradient/options.py b/simpeg_drivers/joint/joint_cross_gradient/options.py index 923429ed..3c79e150 100644 --- a/simpeg_drivers/joint/joint_cross_gradient/options.py +++ b/simpeg_drivers/joint/joint_cross_gradient/options.py @@ -38,8 +38,6 @@ class JointCrossGradientOptions(BaseJointOptions): ) title: str = "Joint Cross Gradient Inversion" - physical_property: list[str] = [""] - inversion_type: str = "joint cross gradient" mesh: Octree | None = None diff --git a/simpeg_drivers/joint/options.py b/simpeg_drivers/joint/options.py index bc3acfe9..5248d499 100644 --- a/simpeg_drivers/joint/options.py +++ b/simpeg_drivers/joint/options.py @@ -46,7 +46,7 @@ class BaseJointOptions(BaseData): run_command: str = "simpeg_drivers.driver" conda_environment: str = "simpeg-drivers" forward_only: bool = False - physical_property: list[str] = ["conductivity"] + physical_property: str | None = None group_a: SimPEGGroup group_a_multiplier: float = 1.0 @@ -86,7 +86,7 @@ class BaseJointOptions(BaseData): initial_beta: float | None = None cooling_factor: float = 2.0 - cooling_rate: float = 1.0 + cooling_rate: int = 1 max_global_iterations: int = 50 max_line_search_iterations: int = 20 max_cg_iterations: int = 30 @@ -103,6 +103,11 @@ class BaseJointOptions(BaseData): percentile: float = 95.0 epsilon_cooling_factor: float = 1.2 + n_workers: int | None = 1 + n_threads: int | None = None + max_ram: float | None = None + performance_report: bool = False + @property def groups(self) -> list[SimPEGGroup]: """List all active groups.""" diff --git a/simpeg_drivers/options.py b/simpeg_drivers/options.py index 5ce01bc8..be55d390 100644 --- a/simpeg_drivers/options.py +++ b/simpeg_drivers/options.py @@ -365,7 +365,7 @@ class BaseInversionOptions(CoreOptions): initial_beta: float | None = None cooling_factor: float = 2.0 - cooling_rate: float = 1.0 + cooling_rate: int = 1 max_global_iterations: int = 50 max_line_search_iterations: int = 20 max_cg_iterations: int = 30 diff --git a/simpeg_drivers/potential_fields/gravity/options.py b/simpeg_drivers/potential_fields/gravity/options.py index 177231bf..b95f850e 100644 --- a/simpeg_drivers/potential_fields/gravity/options.py +++ b/simpeg_drivers/potential_fields/gravity/options.py @@ -41,7 +41,7 @@ class GravityForwardOptions(BaseForwardOptions): title: str = "Gravity Forward" physical_property: str = "density" inversion_type: str = "gravity" - + workspace_geoh5: Path | None = None gx_channel_bool: bool = False gy_channel_bool: bool = False gz_channel_bool: bool = True @@ -84,7 +84,7 @@ class GravityInversionOptions(BaseInversionOptions): title: str = "Gravity Inversion" physical_property: str = "density" inversion_type: str = "gravity" - + workspace_geoh5: Path | None = None gx_channel: FloatData | None = None gy_channel: FloatData | None = None gz_channel: FloatData | None = None 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..03b69ea6 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): @@ -57,3 +57,40 @@ def test_smallness_terms(tmp_path: Path): params.alpha_s = None driver = GravityInversionDriver(params) assert driver.regularization.objfcts[0].alpha_s == 0.0 + + +def test_target_chi(tmp_path: Path, caplog): + n_grid_points = 2 + refinement = (2,) + + geoh5, _, model, survey, topography = setup_inversion_workspace( + tmp_path, + background=0.0, + anomaly=0.75, + n_electrodes=n_grid_points, + n_lines=n_grid_points, + refinement=refinement, + flatten=False, + ) + + with geoh5.open(): + gz = survey.add_data({"gz": {"values": np.ones(survey.n_vertices)}}) + mesh = model.parent + active_cells = ActiveCellsOptions(topography_object=topography) + params = GravityInversionOptions( + geoh5=geoh5, + mesh=mesh, + active_cells=active_cells, + data_object=gz.parent, + gz_channel=gz, + gz_uncertainty=2e-3, + starting_model=1e-4, + starting_chi_factor=1.0, + chi_factor=2.0, + ) + driver = GravityInversionDriver(params) + + with caplog.at_level("WARNING"): + assert driver.directives.update_irls_directive.chifact_start == 2.0 + + assert "Starting chi factor is greater" in caplog.text 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_2d_rotated_gradients_test.py b/tests/run_tests/driver_2d_rotated_gradients_test.py index 84592171..74a3790e 100644 --- a/tests/run_tests/driver_2d_rotated_gradients_test.py +++ b/tests/run_tests/driver_2d_rotated_gradients_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_dc2d_rotated_grad_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_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 61a4c21a..cbf3cdfb 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_pgi_homogeneous_test.py b/tests/run_tests/driver_joint_pgi_homogeneous_test.py index ecac604d..1b06d0c6 100644 --- a/tests/run_tests/driver_joint_pgi_homogeneous_test.py +++ b/tests/run_tests/driver_joint_pgi_homogeneous_test.py @@ -48,8 +48,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_joint_surveys_test.py b/tests/run_tests/driver_joint_surveys_test.py index 5142d11a..214aceb2 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 b87461d0..ec6664b8 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