diff --git a/.idea/.gitignore b/.idea/.gitignore index 13566b8..9f5c49d 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -6,3 +6,5 @@ # Datasource local storage ignored files /dataSources/ /dataSources.local.xml +# Harpooner +Harpooner Menu \ No newline at end of file diff --git a/_downloads/15667dfd325a23fa166b9479624ac830/02_model_1_bayesian.ipynb b/_downloads/15667dfd325a23fa166b9479624ac830/02_model_1_bayesian.ipynb index bc3f788..e41b3b2 100644 --- a/_downloads/15667dfd325a23fa166b9479624ac830/02_model_1_bayesian.ipynb +++ b/_downloads/15667dfd325a23fa166b9479624ac830/02_model_1_bayesian.ipynb @@ -26,7 +26,25 @@ }, "outputs": [], "source": [ - "import time\nimport os\nimport numpy as np\nimport xarray as xr\nimport pandas as pd\nimport torch\nimport pyro\nimport pyro.distributions as dist\nimport gempy as gp\nimport gempy_viewer as gpv\nfrom matplotlib import pyplot as plt\nfrom dotenv import dotenv_values\nfrom pyro.infer import MCMC, NUTS, Predictive\nimport arviz as az\n\nfrom gempy_probability.plot_posterior import default_red, default_blue\nfrom vector_geology.bayesian_helpers import calculate_scale_shift, gaussian_kernel\nfrom vector_geology.model_1_builder import initialize_geo_model, setup_geophysics\nfrom vector_geology.omf_to_gempy import process_file\nfrom vector_geology.utils import extend_box\nimport gempy_engine\nfrom gempy_engine.core.backend_tensor import BackendTensor" + "import os\nimport time\n\nimport arviz as az\nimport numpy as np\nimport pyro\nimport pyro.distributions as dist\nimport torch\nimport xarray as xr\nfrom dotenv import dotenv_values\nfrom matplotlib import pyplot as plt\nfrom pyro.infer import MCMC, NUTS, Predictive\n\nimport gempy as gp\nimport gempy_engine\nimport gempy_viewer as gpv\nfrom gempy_engine.core.backend_tensor import BackendTensor\nfrom gempy_probability.plot_posterior import default_red, default_blue\nfrom vector_geology.bayesian_helpers import calculate_scale_shift, gaussian_kernel\nfrom vector_geology.model_1_builder import initialize_geo_model, setup_geophysics\nfrom vector_geology.omf_to_gempy import process_file" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Config\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "seed = 123456\ntorch.manual_seed(seed)\npyro.set_rng_seed(seed)" ] }, { @@ -296,7 +314,7 @@ }, "outputs": [], "source": [ - "y_obs_list = torch.tensor(adapted_observed_grav.values).view(1, 17)\ninterpolation_options.mesh_extraction = False\ninterpolation_options.number_octree_levels = 1\ngeo_model.grid.set_inactive(\"topography\")\ngeo_model.grid.set_inactive(\"regular\")" + "y_obs_list = torch.tensor(adapted_observed_grav.values).view(1, 17)\ninterpolation_options.mesh_extraction = False\ninterpolation_options.number_octree_levels = 1\ngeo_model.grid.active_grids ^= gp.data.Grid.GridTypes.TOPOGRAPHY\ngeo_model.grid.active_grids ^= gp.data.Grid.GridTypes.DENSE" ] }, { @@ -314,7 +332,7 @@ }, "outputs": [], "source": [ - "if True:\n prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input)\n data = az.from_pyro(prior=prior)\n az.plot_trace(data.prior)\n plt.show()" + "raise NotImplementedError(\"From this point we need to optimize the code again.\")\nif True:\n prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy)\n data = az.from_pyro(prior=prior)\n az.plot_trace(data.prior)\n plt.show()" ] }, { @@ -332,7 +350,7 @@ }, "outputs": [], "source": [ - "pyro.primitives.enable_validation(is_validate=True)\nnuts_kernel = NUTS(model)\nmcmc = MCMC(nuts_kernel, num_samples=1000, warmup_steps=300)\nmcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input)" + "pyro.primitives.enable_validation(is_validate=True)\nnuts_kernel = NUTS(model)\nmcmc = MCMC(nuts_kernel, num_samples=1000, warmup_steps=300)\nmcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input_copy)" ] }, { @@ -350,7 +368,7 @@ }, "outputs": [], "source": [ - "posterior_samples = mcmc.get_samples(50)\nposterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input)\ndata = az.from_pyro(\n posterior=mcmc,\n prior=prior,\n posterior_predictive=posterior_predictive\n)\naz.plot_trace(data)\nplt.show()" + "posterior_samples = mcmc.get_samples(50)\nposterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy)\ndata = az.from_pyro(\n posterior=mcmc,\n prior=prior,\n posterior_predictive=posterior_predictive\n)\naz.plot_trace(data)\nplt.show()" ] }, { diff --git a/_downloads/182d45f17a36be0fd850895c86d70e9a/01_read_OMF_sites.py b/_downloads/182d45f17a36be0fd850895c86d70e9a/01_read_OMF_sites.py index b9a3b46..52eb6bc 100644 --- a/_downloads/182d45f17a36be0fd850895c86d70e9a/01_read_OMF_sites.py +++ b/_downloads/182d45f17a36be0fd850895c86d70e9a/01_read_OMF_sites.py @@ -14,10 +14,12 @@ import pyvista import subsurface from subsurface import TriSurf -from subsurface.visualization import to_pyvista_mesh, pv_plot -from subsurface.writer import base_structs_to_binary_file from dotenv import dotenv_values +from subsurface.modules.visualization import to_pyvista_mesh, pv_plot +from subsurface.modules.writer import base_structs_to_binary_file + + # %% # Load OMF Project # ---------------- diff --git a/_downloads/1aeb58e5a4aa6113a6a48c4d659d2222/03_model_spremberg_import.py b/_downloads/1aeb58e5a4aa6113a6a48c4d659d2222/03_model_spremberg_import.py new file mode 100644 index 0000000..f05af5e --- /dev/null +++ b/_downloads/1aeb58e5a4aa6113a6a48c4d659d2222/03_model_spremberg_import.py @@ -0,0 +1,222 @@ +""" +Construct Spremberg: Importing borehole data +-------------------------------------------- + +This example demonstrates how to construct a 3D geological model of the Model 1 deposit using GemPy. +It leverages custom APIs to streamline the modeling process. +""" +# %% [markdown] +# Import the necessary libraries for geological modeling and visualization. +# sphinx_gallery_thumbnail_number = -1 +import os +import pandas as pd +import pyvista + +import gempy as gp +import gempy_viewer as gpv +from subsurface.core.geological_formats.boreholes.boreholes import BoreholeSet, MergeOptions +from subsurface.core.geological_formats.boreholes.collars import Collars +from subsurface.core.geological_formats.boreholes.survey import Survey +from subsurface.core.reader_helpers.readers_data import GenericReaderFilesHelper +from subsurface.modules.reader.wells.read_borehole_interface import read_lith, read_survey, read_collar +from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points, init_plotter + +# %% [markdown] +# Initialize the reader for the lithological data. Specify the file path and column mappings. +import dotenv +dotenv.load_dotenv() +reader: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_STRATIGRAPHY"), + columns_map={ + 'hole_id' : 'id', + 'depth_from': 'top', + 'depth_to' : 'base', + 'lit_code' : 'component lith' + } +) + +# Read the lithological data into a DataFrame. +lith: pd.DataFrame = read_lith(reader) + +# %% [markdown] +# Initialize the reader for the survey data. Specify the file path and column mappings. +reader: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_SURVEY"), + columns_map={ + 'depth' : 'md', + 'dip' : 'dip', + 'azimuth': 'azi' + }, +) + +# Read the survey data into a DataFrame. +df = read_survey(reader) + +# %% [markdown] +# Create a Survey object from the DataFrame and update it with lithological data. +survey: Survey = Survey.from_df(df) +survey.update_survey_with_lith(lith) + +# %% [markdown] +# Initialize the reader for the collar data. Specify the file path, header, and column mappings. +reader_collar: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_COLLAR"), + header=0, + usecols=[0, 1, 2, 4], + columns_map={ + "hole_id" : "id", + "X_GK5_incl_inserted": "x", + "Y__incl_inserted" : "y", + "Z_GK" : "z" + } +) + +# Read the collar data into a DataFrame and create a Collars object. +df_collar = read_collar(reader_collar) +collar = Collars.from_df(df_collar) + +# %% [markdown] +# Combine the collar and survey data into a BoreholeSet. +borehole_set = BoreholeSet( + collars=collar, + survey=survey, + merge_option=MergeOptions.INTERSECT +) + +# %% [markdown] +# Visualize the borehole trajectories and collars using PyVista. +well_mesh = to_pyvista_line( + line_set=borehole_set.combined_trajectory, + active_scalar="lith_ids", + radius=10 +) + +collars = to_pyvista_points( + borehole_set.collars.collar_loc, +) + +# Initialize the PyVista plotter. +pyvista_plotter = init_plotter() + +# Define the units limit for thresholding the well mesh. +units_limit = [0, 20] + +# Add the well mesh and collars to the plotter and display. +pyvista_plotter.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit +) + +pyvista_plotter.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True +) + +pyvista_plotter.show() + +# %% [markdown] +# Create structural elements from the borehole set for different lithological units. +elements: list[gp.data.StructuralElement] = gp.structural_elements_from_borehole_set( + borehole_set=borehole_set, + elements_dict={ + "Buntsandstein" : { + "id" : 53_300, + "color": "#983999" + }, + "Werra-Anhydrit" : { + "id" : 61_730, + "color": "#00923f" + }, + "Kupfershiefer" : { + "id" : 61_760, + "color": "#da251d" + }, + "Zechsteinkonglomerat": { + "id" : 61_770, + "color": "#f8c300" + }, + "Rotliegend" : { + "id" : 62_000, + "color": "#bb825b" + } + } +) + +# %% [markdown] +# Group the structural elements into a StructuralGroup and create a StructuralFrame. +group = gp.data.StructuralGroup( + name="Stratigraphic Pile", + elements=elements, + structural_relation=gp.data.StackRelationType.ERODE +) +structural_frame = gp.data.StructuralFrame( + structural_groups=[group], + color_gen=gp.data.ColorsGenerator() +) + +# %% [markdown] +# Determine the extent of the geological model from the surface points coordinates. +all_surface_points_coords: gp.data.SurfacePointsTable = structural_frame.surface_points_copy +extent_from_data = all_surface_points_coords.xyz.min(axis=0), all_surface_points_coords.xyz.max(axis=0) + +# %% [markdown] +# Create a GeoModel with the specified extent, grid resolution, and interpolation options. +geo_model = gp.data.GeoModel( + name="Stratigraphic Pile", + structural_frame=structural_frame, + grid=gp.data.Grid( + extent=[extent_from_data[0][0], extent_from_data[1][0], extent_from_data[0][1], extent_from_data[1][1], extent_from_data[0][2], extent_from_data[1][2]], + resolution=(50, 50, 50) + ), + interpolation_options=gp.data.InterpolationOptions( + range=5, + c_o=10, + mesh_extraction=True, + number_octree_levels=3, + ), +) + +# %% [markdown] +# Visualize the 3D geological model using GemPy's plot_3d function. +gempy_plot = gpv.plot_3d( + model=geo_model, + kwargs_pyvista_bounds={ + 'show_xlabels': False, + 'show_ylabels': False, + }, + show=True, + image=True +) + +# %% [markdown] +# Combine all visual elements and display them together. +sp_mesh: pyvista.PolyData = gempy_plot.surface_points_mesh + +pyvista_plotter = init_plotter() +pyvista_plotter.show_bounds(all_edges=True) + +pyvista_plotter.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit +) + +pyvista_plotter.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True +) + +pyvista_plotter.add_point_labels( + points=collar.collar_loc.points, + labels=collar.ids, + point_size=10, + shape_opacity=0.5, + font_size=12, + bold=True +) +pyvista_plotter.add_actor(gempy_plot.surface_points_actor) + +pyvista_plotter.show() diff --git a/_downloads/21b5cdd06c29a4da40678038c93313df/02_model_1_OMF_to_subsurface.ipynb b/_downloads/21b5cdd06c29a4da40678038c93313df/02_model_1_OMF_to_subsurface.ipynb index 36cb18b..b1928bf 100644 --- a/_downloads/21b5cdd06c29a4da40678038c93313df/02_model_1_OMF_to_subsurface.ipynb +++ b/_downloads/21b5cdd06c29a4da40678038c93313df/02_model_1_OMF_to_subsurface.ipynb @@ -33,7 +33,7 @@ }, "outputs": [], "source": [ - "import pandas as pd\nimport pyvista\nimport xarray\n\nimport subsurface\nfrom subsurface import TriSurf, LineSet\nfrom subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter\nfrom vector_geology.utils import load_omf" + "import pandas as pd\nimport pyvista\nimport xarray\n\nimport subsurface\nfrom subsurface import TriSurf, LineSet\nfrom subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter\nfrom vector_geology.utils import load_omf" ] }, { diff --git a/_downloads/299bae2ea23dd4572c01f886c9168e59/04_model_spremberg_building.py b/_downloads/299bae2ea23dd4572c01f886c9168e59/04_model_spremberg_building.py new file mode 100644 index 0000000..63c3c8c --- /dev/null +++ b/_downloads/299bae2ea23dd4572c01f886c9168e59/04_model_spremberg_building.py @@ -0,0 +1,190 @@ +""" +Construct Spremberg: Building initial model +-------------------------------------------- + +This example demonstrates... + +""" + +# sphinx_gallery_thumbnail_number = -2 +import numpy as np + +import gempy as gp +import gempy_viewer as gpv +from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points +from vector_geology.model_contructor.spremberg import generate_spremberg_model, get_spremberg_borehole_set, add_wells_plot + +# %% +elements_to_gempy = { + "Buntsandstein" : { + "id" : 53_300, + "color": "#983999" + }, + "Werra-Anhydrit" : { + "id" : 61_730, + "color": "#00923f" + }, + # "Kupferschiefer" : { + # "id" : 61_760, + # "color": "#da251d" + # }, + "Zechsteinkonglomerat": { + "id" : 61_770, + "color": "#f8c300" + }, + "Rotliegend" : { + "id" : 62_000, + "color": "#bb825b" + } +} + +spremberg_boreholes = get_spremberg_borehole_set() +geo_model: gp.data.GeoModel = generate_spremberg_model( + borehole_set=spremberg_boreholes, + elements_to_gempy=elements_to_gempy, + plot=False +) + +# %% +# Add one orientation to the model +rotliegend: gp.data.StructuralElement = geo_model.structural_frame.get_element_by_name("Rotliegend") +gp.add_orientations( + geo_model=geo_model, + x=[5_460_077.527386775, 5_450_077.527386775], + y=[5_720_030.2446156405, 5_710_030.2446156405], + z=[-600, -600], + elements_names=["Rotliegend", "Rotliegend"], + pole_vector=[ + np.array([.7, 0.7, 0.2]), + np.array([-1, 0, 0.2]) + ], +) + +# %% +pivot = [5_478_256.5, 5_698_528.946534388] +point_2 = [5_483_077.527386775, 5_710_030.2446156405] +point_3 = [5_474_977.5974836275, 5_712_059.373443342] +section_dict = { + 'section1': (pivot, point_2, [100, 100]), + 'section2': (pivot, point_3, [100, 100]), + 'section3': (point_2, point_3, [100, 100]) +} + + +# %% +gp.set_section_grid(geo_model.grid, section_dict) +gpv.plot_section_traces(geo_model) + +# %% +_ = gpv.plot_3d( + model=geo_model, + ve=10, + image=True, + transformed_data=True, + kwargs_pyvista_bounds={ + 'show_xlabels': False, + 'show_ylabels': False, + }, + kwargs_plot_data={ + 'arrow_size': 0.001000 + } +) + +# %% + +# * Ignore curvature for now +geo_model.interpolation_options.kernel_options.range = 3 +geo_model.interpolation_options.compute_scalar_gradient = False +geo_model.interpolation_options.evaluation_options.curvature_threshold = 0.4 +geo_model.interpolation_options.evaluation_options.number_octree_levels_surface = 5 + +geo_model.interpolation_options.evaluation_options.error_threshold = 1 +geo_model.interpolation_options.evaluation_options.verbose = True + + +gp.compute_model( + gempy_model=geo_model, + engine_config=gp.data.GemPyEngineConfig( + backend=gp.data.AvailableBackends.PYTORCH, + dtype="float64", + ) +) + +# %% +gpv.plot_2d( + model=geo_model, + figsize=(15, 15), + ve=10, + section_names=['section1', 'section2', 'section3'] +) + +# %% +gempy_plot = gpv.plot_3d( + model=geo_model, + show_lith=False, + ve=10, + show=False, + image=False, + transformed_data=False, + kwargs_pyvista_bounds={ + 'show_xlabels': True, + 'show_ylabels': True, + 'show_zlabels': False, + }, + kwargs_plot_data={ + 'arrow_size': 100.001000 + } +) + +well_mesh = to_pyvista_line( + line_set=spremberg_boreholes.combined_trajectory, + active_scalar="lith_ids", + radius=10 +) +units_limit = [0, 20] +collars = to_pyvista_points(spremberg_boreholes.collars.collar_loc) +gempy_plot.p.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit +) + +gempy_plot.p.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True +) + +gempy_plot.p.add_point_labels( + points=spremberg_boreholes.collars.collar_loc.points, + labels=spremberg_boreholes.collars.ids, + point_size=3, + shape_opacity=0.5, + font_size=12, + bold=True +) + +gempy_plot.p.show() + + +# %% +# LiquidEarth Integration +# ~~~~~~~~~~~~~~~~~~~~~~~ +# Beyond the classical plotting capabilities introduced in GemPy v3, users can now also upload models to LiquidEarth. +# `LiquidEarth `_ is a collaborative platform designed for 3D visualization, +# developed by many of the main `gempy` maintainers, with a strong focus on collaboration and sharing. +# This makes it an excellent tool for sharing your models with others and viewing them across different platforms. +# To upload a model to LiquidEarth, you must have an account and a user token. Once your model is uploaded, +# you can easily share the link with anyone. + +# # %% +if True: + link = gpv.plot_to_liquid_earth( + geo_model=geo_model, + space_name="Spremberg", + file_name="gempy_model", + user_token=None, # If None, it will try to grab it from the environment + grab_link=True, + ) + + print(f"Generated Link: {link}") diff --git a/_downloads/4b511070d48395a0f9f67690590ca84d/04_model_spremberg_building.ipynb b/_downloads/4b511070d48395a0f9f67690590ca84d/04_model_spremberg_building.ipynb new file mode 100644 index 0000000..872ec92 --- /dev/null +++ b/_downloads/4b511070d48395a0f9f67690590ca84d/04_model_spremberg_building.ipynb @@ -0,0 +1,167 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\nfrom pyvista import set_plot_theme\nset_plot_theme('document')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Construct Spremberg: Building initial model\n\nThis example demonstrates...\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# sphinx_gallery_thumbnail_number = -2\nimport numpy as np\n\nimport gempy as gp\nimport gempy_viewer as gpv\nfrom subsurface.modules.visualization import to_pyvista_line, to_pyvista_points\nfrom vector_geology.model_contructor.spremberg import generate_spremberg_model, get_spremberg_borehole_set, add_wells_plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "elements_to_gempy = {\n \"Buntsandstein\" : {\n \"id\" : 53_300,\n \"color\": \"#983999\"\n },\n \"Werra-Anhydrit\" : {\n \"id\" : 61_730,\n \"color\": \"#00923f\"\n },\n # \"Kupferschiefer\" : {\n # \"id\" : 61_760,\n # \"color\": \"#da251d\"\n # },\n \"Zechsteinkonglomerat\": {\n \"id\" : 61_770,\n \"color\": \"#f8c300\"\n },\n \"Rotliegend\" : {\n \"id\" : 62_000,\n \"color\": \"#bb825b\"\n }\n}\n\nspremberg_boreholes = get_spremberg_borehole_set()\ngeo_model: gp.data.GeoModel = generate_spremberg_model(\n borehole_set=spremberg_boreholes,\n elements_to_gempy=elements_to_gempy,\n plot=False\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add one orientation to the model\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rotliegend: gp.data.StructuralElement = geo_model.structural_frame.get_element_by_name(\"Rotliegend\")\ngp.add_orientations(\n geo_model=geo_model,\n x=[5_460_077.527386775, 5_450_077.527386775],\n y=[5_720_030.2446156405, 5_710_030.2446156405],\n z=[-600, -600],\n elements_names=[\"Rotliegend\", \"Rotliegend\"],\n pole_vector=[\n np.array([.7, 0.7, 0.2]),\n np.array([-1, 0, 0.2])\n ],\n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pivot = [5_478_256.5, 5_698_528.946534388]\npoint_2 = [5_483_077.527386775, 5_710_030.2446156405]\npoint_3 = [5_474_977.5974836275, 5_712_059.373443342]\nsection_dict = {\n 'section1': (pivot, point_2, [100, 100]),\n 'section2': (pivot, point_3, [100, 100]),\n 'section3': (point_2, point_3, [100, 100])\n}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gp.set_section_grid(geo_model.grid, section_dict)\ngpv.plot_section_traces(geo_model)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "_ = gpv.plot_3d(\n model=geo_model,\n ve=10,\n image=True,\n transformed_data=True,\n kwargs_pyvista_bounds={\n 'show_xlabels': False,\n 'show_ylabels': False,\n },\n kwargs_plot_data={\n 'arrow_size': 0.001000\n }\n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# * Ignore curvature for now\ngeo_model.interpolation_options.kernel_options.range = 3\ngeo_model.interpolation_options.compute_scalar_gradient = False\ngeo_model.interpolation_options.evaluation_options.curvature_threshold = 0.4\ngeo_model.interpolation_options.evaluation_options.number_octree_levels_surface = 5\n\ngeo_model.interpolation_options.evaluation_options.error_threshold = 1\ngeo_model.interpolation_options.evaluation_options.verbose = True\n\n\ngp.compute_model(\n gempy_model=geo_model,\n engine_config=gp.data.GemPyEngineConfig(\n backend=gp.data.AvailableBackends.PYTORCH,\n dtype=\"float64\",\n )\n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gpv.plot_2d(\n model=geo_model,\n figsize=(15, 15),\n ve=10,\n section_names=['section1', 'section2', 'section3']\n)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gempy_plot = gpv.plot_3d(\n model=geo_model,\n show_lith=False,\n ve=10,\n show=False,\n image=False,\n transformed_data=False,\n kwargs_pyvista_bounds={\n 'show_xlabels': True,\n 'show_ylabels': True,\n 'show_zlabels': False,\n },\n kwargs_plot_data={\n 'arrow_size': 100.001000\n }\n)\n\nwell_mesh = to_pyvista_line(\n line_set=spremberg_boreholes.combined_trajectory,\n active_scalar=\"lith_ids\",\n radius=10\n)\nunits_limit = [0, 20]\ncollars = to_pyvista_points(spremberg_boreholes.collars.collar_loc)\ngempy_plot.p.add_mesh(\n well_mesh.threshold(units_limit),\n cmap=\"tab20c\",\n clim=units_limit\n)\n\ngempy_plot.p.add_mesh(\n collars,\n point_size=10,\n render_points_as_spheres=True\n)\n\ngempy_plot.p.add_point_labels(\n points=spremberg_boreholes.collars.collar_loc.points,\n labels=spremberg_boreholes.collars.ids,\n point_size=3,\n shape_opacity=0.5,\n font_size=12,\n bold=True\n)\n\ngempy_plot.p.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## LiquidEarth Integration\nBeyond the classical plotting capabilities introduced in GemPy v3, users can now also upload models to LiquidEarth. \n[LiquidEarth](https://www.terranigma-solutions.com/liquidearth) is a collaborative platform designed for 3D visualization,\ndeveloped by many of the main `gempy` maintainers, with a strong focus on collaboration and sharing. \nThis makes it an excellent tool for sharing your models with others and viewing them across different platforms.\nTo upload a model to LiquidEarth, you must have an account and a user token. Once your model is uploaded, \nyou can easily share the link with anyone.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# # %%\nif True:\n link = gpv.plot_to_liquid_earth(\n geo_model=geo_model,\n space_name=\"Spremberg\",\n file_name=\"gempy_model\",\n user_token=None, # If None, it will try to grab it from the environment\n grab_link=True,\n )\n\n print(f\"Generated Link: {link}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/5d1a84a1ce4edd8dc607289ae695f0a9/02_model_1_gempy.ipynb b/_downloads/5d1a84a1ce4edd8dc607289ae695f0a9/02_model_1_gempy.ipynb index a3511aa..c9acdc1 100644 --- a/_downloads/5d1a84a1ce4edd8dc607289ae695f0a9/02_model_1_gempy.ipynb +++ b/_downloads/5d1a84a1ce4edd8dc607289ae695f0a9/02_model_1_gempy.ipynb @@ -170,7 +170,7 @@ }, "outputs": [], "source": [ - "gp.modify_surface_points(\n geo_model,\n slice=0,\n X=geo_model.surface_points.data[0][0] + 130,\n)" + "gp.modify_surface_points(\n geo_model,\n slice=0,\n X=geo_model.surface_points_copy.data[0][0] + 130,\n)" ] }, { diff --git a/_downloads/69f617885fefd9344a9bb650daa0e46f/01_read_OMF_sites.ipynb b/_downloads/69f617885fefd9344a9bb650daa0e46f/01_read_OMF_sites.ipynb index 2d705b1..ed345c5 100644 --- a/_downloads/69f617885fefd9344a9bb650daa0e46f/01_read_OMF_sites.ipynb +++ b/_downloads/69f617885fefd9344a9bb650daa0e46f/01_read_OMF_sites.ipynb @@ -33,7 +33,7 @@ }, "outputs": [], "source": [ - "import omfvista\nimport pyvista\nimport subsurface\nfrom subsurface import TriSurf\nfrom subsurface.visualization import to_pyvista_mesh, pv_plot\nfrom subsurface.writer import base_structs_to_binary_file\nfrom dotenv import dotenv_values" + "import omfvista\nimport pyvista\nimport subsurface\nfrom subsurface import TriSurf\nfrom dotenv import dotenv_values\n\nfrom subsurface.modules.visualization import to_pyvista_mesh, pv_plot\nfrom subsurface.modules.writer import base_structs_to_binary_file" ] }, { diff --git a/_downloads/71916b46938f22a9c23a758261bcd310/03_model_spremberg_import.ipynb b/_downloads/71916b46938f22a9c23a758261bcd310/03_model_spremberg_import.ipynb new file mode 100644 index 0000000..13e24f1 --- /dev/null +++ b/_downloads/71916b46938f22a9c23a758261bcd310/03_model_spremberg_import.ipynb @@ -0,0 +1,277 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\nfrom pyvista import set_plot_theme\nset_plot_theme('document')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n# Construct Spremberg: Importing borehole data\n\nThis example demonstrates how to construct a 3D geological model of the Model 1 deposit using GemPy. \nIt leverages custom APIs to streamline the modeling process.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Import the necessary libraries for geological modeling and visualization.\nsphinx_gallery_thumbnail_number = -1\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os\nimport pandas as pd\nimport pyvista\n\nimport gempy as gp\nimport gempy_viewer as gpv\nfrom subsurface.core.geological_formats.boreholes.boreholes import BoreholeSet, MergeOptions\nfrom subsurface.core.geological_formats.boreholes.collars import Collars\nfrom subsurface.core.geological_formats.boreholes.survey import Survey\nfrom subsurface.core.reader_helpers.readers_data import GenericReaderFilesHelper\nfrom subsurface.modules.reader.wells.read_borehole_interface import read_lith, read_survey, read_collar\nfrom subsurface.modules.visualization import to_pyvista_line, to_pyvista_points, init_plotter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize the reader for the lithological data. Specify the file path and column mappings.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import dotenv\ndotenv.load_dotenv()\nreader: GenericReaderFilesHelper = GenericReaderFilesHelper(\n file_or_buffer=os.getenv(\"PATH_TO_SPREMBERG_STRATIGRAPHY\"),\n columns_map={\n 'hole_id' : 'id',\n 'depth_from': 'top',\n 'depth_to' : 'base',\n 'lit_code' : 'component lith'\n }\n)\n\n# Read the lithological data into a DataFrame.\nlith: pd.DataFrame = read_lith(reader)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize the reader for the survey data. Specify the file path and column mappings.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "reader: GenericReaderFilesHelper = GenericReaderFilesHelper(\n file_or_buffer=os.getenv(\"PATH_TO_SPREMBERG_SURVEY\"),\n columns_map={\n 'depth' : 'md',\n 'dip' : 'dip',\n 'azimuth': 'azi'\n },\n)\n\n# Read the survey data into a DataFrame.\ndf = read_survey(reader)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a Survey object from the DataFrame and update it with lithological data.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "survey: Survey = Survey.from_df(df)\nsurvey.update_survey_with_lith(lith)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize the reader for the collar data. Specify the file path, header, and column mappings.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "reader_collar: GenericReaderFilesHelper = GenericReaderFilesHelper(\n file_or_buffer=os.getenv(\"PATH_TO_SPREMBERG_COLLAR\"),\n header=0,\n usecols=[0, 1, 2, 4],\n columns_map={\n \"hole_id\" : \"id\",\n \"X_GK5_incl_inserted\": \"x\",\n \"Y__incl_inserted\" : \"y\",\n \"Z_GK\" : \"z\"\n }\n)\n\n# Read the collar data into a DataFrame and create a Collars object.\ndf_collar = read_collar(reader_collar)\ncollar = Collars.from_df(df_collar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Combine the collar and survey data into a BoreholeSet.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "borehole_set = BoreholeSet(\n collars=collar,\n survey=survey,\n merge_option=MergeOptions.INTERSECT\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualize the borehole trajectories and collars using PyVista.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "well_mesh = to_pyvista_line(\n line_set=borehole_set.combined_trajectory,\n active_scalar=\"lith_ids\",\n radius=10\n)\n\ncollars = to_pyvista_points(\n borehole_set.collars.collar_loc,\n)\n\n# Initialize the PyVista plotter.\npyvista_plotter = init_plotter()\n\n# Define the units limit for thresholding the well mesh.\nunits_limit = [0, 20]\n\n# Add the well mesh and collars to the plotter and display.\npyvista_plotter.add_mesh(\n well_mesh.threshold(units_limit),\n cmap=\"tab20c\",\n clim=units_limit\n)\n\npyvista_plotter.add_mesh(\n collars,\n point_size=10,\n render_points_as_spheres=True\n)\n\npyvista_plotter.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create structural elements from the borehole set for different lithological units.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "elements: list[gp.data.StructuralElement] = gp.structural_elements_from_borehole_set(\n borehole_set=borehole_set,\n elements_dict={\n \"Buntsandstein\" : {\n \"id\" : 53_300,\n \"color\": \"#983999\"\n },\n \"Werra-Anhydrit\" : {\n \"id\" : 61_730,\n \"color\": \"#00923f\"\n },\n \"Kupfershiefer\" : {\n \"id\" : 61_760,\n \"color\": \"#da251d\"\n },\n \"Zechsteinkonglomerat\": {\n \"id\" : 61_770,\n \"color\": \"#f8c300\"\n },\n \"Rotliegend\" : {\n \"id\" : 62_000,\n \"color\": \"#bb825b\"\n }\n }\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Group the structural elements into a StructuralGroup and create a StructuralFrame.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "group = gp.data.StructuralGroup(\n name=\"Stratigraphic Pile\",\n elements=elements,\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_frame = gp.data.StructuralFrame(\n structural_groups=[group],\n color_gen=gp.data.ColorsGenerator()\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Determine the extent of the geological model from the surface points coordinates.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "all_surface_points_coords: gp.data.SurfacePointsTable = structural_frame.surface_points_copy\nextent_from_data = all_surface_points_coords.xyz.min(axis=0), all_surface_points_coords.xyz.max(axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a GeoModel with the specified extent, grid resolution, and interpolation options.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "geo_model = gp.data.GeoModel(\n name=\"Stratigraphic Pile\",\n structural_frame=structural_frame,\n grid=gp.data.Grid(\n extent=[extent_from_data[0][0], extent_from_data[1][0], extent_from_data[0][1], extent_from_data[1][1], extent_from_data[0][2], extent_from_data[1][2]],\n resolution=(50, 50, 50)\n ),\n interpolation_options=gp.data.InterpolationOptions(\n range=5,\n c_o=10,\n mesh_extraction=True,\n number_octree_levels=3,\n ),\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualize the 3D geological model using GemPy's plot_3d function.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gempy_plot = gpv.plot_3d(\n model=geo_model,\n kwargs_pyvista_bounds={\n 'show_xlabels': False,\n 'show_ylabels': False,\n },\n show=True,\n image=True\n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Combine all visual elements and display them together.\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sp_mesh: pyvista.PolyData = gempy_plot.surface_points_mesh\n\npyvista_plotter = init_plotter()\npyvista_plotter.show_bounds(all_edges=True)\n\npyvista_plotter.add_mesh(\n well_mesh.threshold(units_limit),\n cmap=\"tab20c\",\n clim=units_limit\n)\n\npyvista_plotter.add_mesh(\n collars,\n point_size=10,\n render_points_as_spheres=True\n)\n\npyvista_plotter.add_point_labels(\n points=collar.collar_loc.points,\n labels=collar.ids,\n point_size=10,\n shape_opacity=0.5,\n font_size=12,\n bold=True\n)\npyvista_plotter.add_actor(gempy_plot.surface_points_actor)\n\npyvista_plotter.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/_downloads/7ab9d4e8019cc7d15d0fdcf29a8e490c/03_model_2_OMF_to_subsurface.py b/_downloads/7ab9d4e8019cc7d15d0fdcf29a8e490c/03_model_2_OMF_to_subsurface.py index 1603446..86fa758 100644 --- a/_downloads/7ab9d4e8019cc7d15d0fdcf29a8e490c/03_model_2_OMF_to_subsurface.py +++ b/_downloads/7ab9d4e8019cc7d15d0fdcf29a8e490c/03_model_2_OMF_to_subsurface.py @@ -18,7 +18,7 @@ from dotenv import dotenv_values import subsurface from subsurface import TriSurf, LineSet -from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter +from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter # %% # Load OMF Project @@ -64,7 +64,7 @@ def load_omf(): cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data} # Process based on cell type - match polydata_obj.cell_type(0): + match polydata_obj.get_cell(0).type: case pyvista.CellType.TRIANGLE: # Process triangle mesh cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:] diff --git a/_downloads/81038bb04125592c3c65856ab7d33bba/01_model_1_gempy_step_by_step.ipynb b/_downloads/81038bb04125592c3c65856ab7d33bba/01_model_1_gempy_step_by_step.ipynb index 93af6ca..40baa07 100644 --- a/_downloads/81038bb04125592c3c65856ab7d33bba/01_model_1_gempy_step_by_step.ipynb +++ b/_downloads/81038bb04125592c3c65856ab7d33bba/01_model_1_gempy_step_by_step.ipynb @@ -26,7 +26,7 @@ }, "outputs": [], "source": [ - "# Import necessary libraries\nimport time\nimport numpy as np\nimport os\nimport xarray as xr\nfrom dotenv import dotenv_values\nfrom vector_geology.omf_to_gempy import process_file\nimport gempy as gp\nimport gempy_viewer as gpv\nfrom vector_geology.model_building_functions import optimize_nuggets_for_group\nfrom gempy_engine.core.data.kernel_classes.kernel_functions import AvailableKernelFunctions\n\n# Start timer to track execution time\nstart_time = time.time()" + "# Import necessary libraries\nimport time\nimport numpy as np\nimport os\nfrom dotenv import dotenv_values\nfrom vector_geology.omf_to_gempy import process_file\nimport gempy as gp\nimport gempy_viewer as gpv\nfrom vector_geology.model_building_functions import optimize_nuggets_for_group\nfrom gempy_engine.core.data.kernel_classes.kernel_functions import AvailableKernelFunctions\n\n# Start timer to track execution time\nstart_time = time.time()" ] }, { @@ -62,7 +62,7 @@ }, "outputs": [], "source": [ - "# Define structural groups and their relationships\nstructural_group_red = gp.data.StructuralGroup(\n name=\"Red\",\n elements=[structural_elements[i] for i in [0, 4, 8]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_green = gp.data.StructuralGroup(\n name=\"Green\",\n elements=[structural_elements[i] for i in [5]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_blue = gp.data.StructuralGroup(\n name=\"Blue\",\n elements=[structural_elements[i] for i in [2, 3]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_intrusion = gp.data.StructuralGroup(\n name=\"Intrusion\",\n elements=[structural_elements[i] for i in [1]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\n\n# Combine structural groups into a frame\nstructural_groups = [structural_group_intrusion, structural_group_green, structural_group_blue, structural_group_red]\nstructural_frame = gp.data.StructuralFrame(\n structural_groups=structural_groups[2:],\n color_gen=color_gen\n)\n\n# Create the GeoModel object\ngeo_model: gp.data.GeoModel = gp.create_geomodel(\n project_name='Tutorial_ch1_1_Basics',\n extent=global_extent,\n resolution=[20, 10, 20],\n refinement=6,\n structural_frame=structural_frame\n)" + "# Define structural groups and their relationships\nstructural_group_red = gp.data.StructuralGroup(\n name=\"Red\",\n elements=[structural_elements[i] for i in [0, 4, 8]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_green = gp.data.StructuralGroup(\n name=\"Green\",\n elements=[structural_elements[i] for i in [5]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_blue = gp.data.StructuralGroup(\n name=\"Blue\",\n elements=[structural_elements[i] for i in [2, 3]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\nstructural_group_intrusion = gp.data.StructuralGroup(\n name=\"Intrusion\",\n elements=[structural_elements[i] for i in [1]],\n structural_relation=gp.data.StackRelationType.ERODE\n)\n\n# Combine structural groups into a frame\nstructural_groups = [structural_group_intrusion, structural_group_green, structural_group_blue, structural_group_red]\nstructural_frame = gp.data.StructuralFrame(\n structural_groups=structural_groups[2:],\n color_gen=color_gen\n)\n\n# Create the GeoModel object\ngeo_model: gp.data.GeoModel = gp.create_geomodel(\n project_name='Tutorial_ch1_1_Basics',\n extent=global_extent,\n refinement=5,\n structural_frame=structural_frame\n)" ] }, { @@ -98,7 +98,7 @@ }, "outputs": [], "source": [ - "TRIGGER_OPTIMIZE_NUGGETS = False\nAPPLY_OPTIMIZED_NUGGETS = True\nif TRIGGER_OPTIMIZE_NUGGETS:\n\n # Optimization process for different structural groups\n geo_model.interpolation_options.kernel_options.range = 0.7\n geo_model.interpolation_options.kernel_options.c_o = 4\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_red,\n plot_evaluation=False,\n plot_result=True\n )\n geo_model.interpolation_options.kernel_options.range = 2\n geo_model.interpolation_options.kernel_options.c_o = 4\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_blue,\n plot_evaluation=False,\n plot_result=False\n )\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_green,\n plot_evaluation=False,\n plot_result=True\n )\n\nif APPLY_OPTIMIZED_NUGGETS:\n # Apply optimized nuggets to the model\n loaded_nuggets_red = np.load(\"../temp/nuggets_Red.npy\")\n loaded_nuggets_green = np.load(\"../temp/nuggets_Green.npy\")\n loaded_nuggets_blue = np.load(\"../temp/nuggets_Blue.npy\")\n gp.modify_surface_points(\n geo_model,\n slice=None,\n elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Red').elements],\n nugget=loaded_nuggets_red\n )\n if True: # Conditional application of nuggets\n gp.modify_surface_points(\n geo_model,\n slice=None,\n elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Blue').elements],\n nugget=loaded_nuggets_blue\n )" + "TRIGGER_OPTIMIZE_NUGGETS = False\nAPPLY_OPTIMIZED_NUGGETS = True\nif TRIGGER_OPTIMIZE_NUGGETS:\n geo_model.interpolation_options.cache_mode = gp.data.InterpolationOptions.CacheMode.NO_CACHE\n \n # Optimization process for different structural groups\n geo_model.interpolation_options.kernel_options.range = 0.7\n geo_model.interpolation_options.kernel_options.c_o = 4\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_red,\n plot_evaluation=False,\n plot_result=True\n )\n geo_model.interpolation_options.kernel_options.range = 2\n geo_model.interpolation_options.kernel_options.c_o = 4\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_blue,\n plot_evaluation=False,\n plot_result=False\n )\n optimize_nuggets_for_group(\n geo_model=geo_model,\n structural_group=structural_group_green,\n plot_evaluation=False,\n plot_result=True\n )\n\nif APPLY_OPTIMIZED_NUGGETS:\n # Apply optimized nuggets to the model\n loaded_nuggets_red = np.load(\"../temp/nuggets_Red.npy\")\n loaded_nuggets_green = np.load(\"../temp/nuggets_Green.npy\")\n loaded_nuggets_blue = np.load(\"../temp/nuggets_Blue.npy\")\n gp.modify_surface_points(\n geo_model,\n slice=None,\n elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Red').elements],\n nugget=loaded_nuggets_red\n )\n if True: # Conditional application of nuggets\n gp.modify_surface_points(\n geo_model,\n slice=None,\n elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Blue').elements],\n nugget=loaded_nuggets_blue\n )" ] }, { diff --git a/_downloads/9a11f8f0374b9be93df13a38a958da8a/01_model_1_gempy_step_by_step.py b/_downloads/9a11f8f0374b9be93df13a38a958da8a/01_model_1_gempy_step_by_step.py index c8b676f..8fe40d3 100644 --- a/_downloads/9a11f8f0374b9be93df13a38a958da8a/01_model_1_gempy_step_by_step.py +++ b/_downloads/9a11f8f0374b9be93df13a38a958da8a/01_model_1_gempy_step_by_step.py @@ -9,7 +9,6 @@ import time import numpy as np import os -import xarray as xr from dotenv import dotenv_values from vector_geology.omf_to_gempy import process_file import gempy as gp @@ -75,8 +74,7 @@ geo_model: gp.data.GeoModel = gp.create_geomodel( project_name='Tutorial_ch1_1_Basics', extent=global_extent, - resolution=[20, 10, 20], - refinement=6, + refinement=5, structural_frame=structural_frame ) @@ -101,7 +99,8 @@ TRIGGER_OPTIMIZE_NUGGETS = False APPLY_OPTIMIZED_NUGGETS = True if TRIGGER_OPTIMIZE_NUGGETS: - + geo_model.interpolation_options.cache_mode = gp.data.InterpolationOptions.CacheMode.NO_CACHE + # Optimization process for different structural groups geo_model.interpolation_options.kernel_options.range = 0.7 geo_model.interpolation_options.kernel_options.c_o = 4 diff --git a/_downloads/a51ee1dc5ae51d9e0b87a1974006e940/01_thickness_problem_gempy.py b/_downloads/a51ee1dc5ae51d9e0b87a1974006e940/01_thickness_problem_gempy.py index 2398c43..bf22eba 100644 --- a/_downloads/a51ee1dc5ae51d9e0b87a1974006e940/01_thickness_problem_gempy.py +++ b/_downloads/a51ee1dc5ae51d9e0b87a1974006e940/01_thickness_problem_gempy.py @@ -23,6 +23,12 @@ from gempy_probability.plot_posterior import default_red, default_blue # sphinx_gallery_thumbnail_number = -1 +# %% +# Config +seed = 123456 +torch.manual_seed(seed) +pyro.set_rng_seed(seed) + # %% # Set the data path data_path = os.path.abspath('../') @@ -66,7 +72,7 @@ def plot_geo_setting_well(geo_model): project_name='Wells', extent=[0, 12000, -500, 500, 0, 4000], resolution=[100, 2, 100], - refinement=1, + # refinement=1, importer_helper=gp.data.ImporterHelper( path_to_orientations=data_path + "/data/2-layers/2-layers_orientations.csv", path_to_surface_points=data_path + "/data/2-layers/2-layers_surface_points.csv" @@ -82,7 +88,7 @@ def plot_geo_setting_well(geo_model): geo_model.interpolation_options.uni_degree = 0 geo_model.interpolation_options.mesh_extraction = False -geo_model.interpolation_options.sigmoid_slope = 1100. +geo_model.interpolation_options.sigmoid_slope = -1 # ! Temporary fix to set the hard sigmoid # %% # Setting up a Custom Grid @@ -126,7 +132,7 @@ def plot_geo_setting_well(geo_model): # By using Pyro, a probabilistic programming language, we define a model that integrates # geological data with uncertainty quantification. -sp_coords_copy = geo_model.interpolation_input.surface_points.sp_coords.copy() +sp_coords_copy = geo_model.interpolation_input_copy.surface_points.sp_coords.copy() # Change the backend to PyTorch for probabilistic modeling BackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH) @@ -149,7 +155,7 @@ def model(y_obs_list): mu_top = pyro.sample(r'$\mu_{top}$', dist.Normal(prior_mean, torch.tensor(0.02, dtype=torch.float64))) # Update the model with the new top layer's location - interpolation_input = geo_model.interpolation_input + interpolation_input = geo_model.interpolation_input_copy interpolation_input.surface_points.sp_coords = torch.index_put( interpolation_input.surface_points.sp_coords, (torch.tensor([0]), torch.tensor([2])), diff --git a/_downloads/b6f6dddf3369cf324da24450f201df11/02_model_1_OMF_to_subsurface.py b/_downloads/b6f6dddf3369cf324da24450f201df11/02_model_1_OMF_to_subsurface.py index baadc8d..453b0f7 100644 --- a/_downloads/b6f6dddf3369cf324da24450f201df11/02_model_1_OMF_to_subsurface.py +++ b/_downloads/b6f6dddf3369cf324da24450f201df11/02_model_1_OMF_to_subsurface.py @@ -16,7 +16,7 @@ import subsurface from subsurface import TriSurf, LineSet -from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter +from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter from vector_geology.utils import load_omf # %% diff --git a/_downloads/c3dcc50fab252e61ec89f67816b606a4/02_model_1_bayesian.py b/_downloads/c3dcc50fab252e61ec89f67816b606a4/02_model_1_bayesian.py index 9815ae1..1043909 100644 --- a/_downloads/c3dcc50fab252e61ec89f67816b606a4/02_model_1_bayesian.py +++ b/_downloads/c3dcc50fab252e61ec89f67816b606a4/02_model_1_bayesian.py @@ -6,28 +6,34 @@ This example demonstrates a probabilistic inversion of a geological model using Bayesian methods. """ -import time import os +import time + +import arviz as az import numpy as np -import xarray as xr -import pandas as pd -import torch import pyro import pyro.distributions as dist -import gempy as gp -import gempy_viewer as gpv -from matplotlib import pyplot as plt +import torch +import xarray as xr from dotenv import dotenv_values +from matplotlib import pyplot as plt from pyro.infer import MCMC, NUTS, Predictive -import arviz as az +import gempy as gp +import gempy_engine +import gempy_viewer as gpv +from gempy_engine.core.backend_tensor import BackendTensor from gempy_probability.plot_posterior import default_red, default_blue from vector_geology.bayesian_helpers import calculate_scale_shift, gaussian_kernel from vector_geology.model_1_builder import initialize_geo_model, setup_geophysics from vector_geology.omf_to_gempy import process_file -from vector_geology.utils import extend_box -import gempy_engine -from gempy_engine.core.backend_tensor import BackendTensor + + +# %% +# Config +seed = 123456 +torch.manual_seed(seed) +pyro.set_rng_seed(seed) # %% # Start the timer for benchmarking purposes @@ -167,13 +173,14 @@ def model(y_obs_list, interpolation_input): y_obs_list = torch.tensor(adapted_observed_grav.values).view(1, 17) interpolation_options.mesh_extraction = False interpolation_options.number_octree_levels = 1 -geo_model.grid.set_inactive("topography") -geo_model.grid.set_inactive("regular") +geo_model.grid.active_grids ^= gp.data.Grid.GridTypes.TOPOGRAPHY +geo_model.grid.active_grids ^= gp.data.Grid.GridTypes.DENSE # %% # Perform prior sampling and visualize the results +raise NotImplementedError("From this point we need to optimize the code again.") if True: - prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input) + prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) data = az.from_pyro(prior=prior) az.plot_trace(data.prior) plt.show() @@ -183,12 +190,12 @@ def model(y_obs_list, interpolation_input): pyro.primitives.enable_validation(is_validate=True) nuts_kernel = NUTS(model) mcmc = MCMC(nuts_kernel, num_samples=1000, warmup_steps=300) -mcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input) +mcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) # %% # Analyze posterior samples and predictives, and visualize the results posterior_samples = mcmc.get_samples(50) -posterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input) +posterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) data = az.from_pyro( posterior=mcmc, prior=prior, diff --git a/_downloads/c6e7636b7672db18e241e4f58389664c/01_thickness_problem_gempy.ipynb b/_downloads/c6e7636b7672db18e241e4f58389664c/01_thickness_problem_gempy.ipynb index 372c490..6e89ca0 100644 --- a/_downloads/c6e7636b7672db18e241e4f58389664c/01_thickness_problem_gempy.ipynb +++ b/_downloads/c6e7636b7672db18e241e4f58389664c/01_thickness_problem_gempy.ipynb @@ -29,6 +29,24 @@ "import os\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport torch\nimport pyro\nimport pyro.distributions as dist\nfrom pyro.infer import MCMC, NUTS, Predictive\nfrom pyro.infer.autoguide import init_to_mean\n\nimport gempy as gp\nimport gempy_engine\nimport gempy_viewer as gpv\nfrom gempy_engine.core.backend_tensor import BackendTensor\nimport arviz as az\nfrom gempy_probability.plot_posterior import default_red, default_blue\n# sphinx_gallery_thumbnail_number = -1" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Config\n\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "seed = 123456\ntorch.manual_seed(seed)\npyro.set_rng_seed(seed)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -80,7 +98,7 @@ }, "outputs": [], "source": [ - "geo_model = gp.create_geomodel(\n project_name='Wells',\n extent=[0, 12000, -500, 500, 0, 4000],\n resolution=[100, 2, 100],\n refinement=1,\n importer_helper=gp.data.ImporterHelper(\n path_to_orientations=data_path + \"/data/2-layers/2-layers_orientations.csv\",\n path_to_surface_points=data_path + \"/data/2-layers/2-layers_surface_points.csv\"\n )\n)" + "geo_model = gp.create_geomodel(\n project_name='Wells',\n extent=[0, 12000, -500, 500, 0, 4000],\n resolution=[100, 2, 100],\n # refinement=1,\n importer_helper=gp.data.ImporterHelper(\n path_to_orientations=data_path + \"/data/2-layers/2-layers_orientations.csv\",\n path_to_surface_points=data_path + \"/data/2-layers/2-layers_surface_points.csv\"\n )\n)" ] }, { @@ -98,7 +116,7 @@ }, "outputs": [], "source": [ - "geo_model.interpolation_options.uni_degree = 0\ngeo_model.interpolation_options.mesh_extraction = False\ngeo_model.interpolation_options.sigmoid_slope = 1100." + "geo_model.interpolation_options.uni_degree = 0\ngeo_model.interpolation_options.mesh_extraction = False\ngeo_model.interpolation_options.sigmoid_slope = -1 # ! Temporary fix to set the hard sigmoid" ] }, { @@ -170,7 +188,7 @@ }, "outputs": [], "source": [ - "sp_coords_copy = geo_model.interpolation_input.surface_points.sp_coords.copy()\n# Change the backend to PyTorch for probabilistic modeling\nBackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH)" + "sp_coords_copy = geo_model.interpolation_input_copy.surface_points.sp_coords.copy()\n# Change the backend to PyTorch for probabilistic modeling\nBackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH)" ] }, { @@ -188,7 +206,7 @@ }, "outputs": [], "source": [ - "def model(y_obs_list):\n \"\"\"\n This Pyro model represents the probabilistic aspects of the geological model.\n It defines a prior distribution for the top layer's location and \n computes the thickness of the geological layer as an observed variable.\n \"\"\"\n # Define prior for the top layer's location\n prior_mean = sp_coords_copy[0, 2]\n mu_top = pyro.sample(r'$\\mu_{top}$', dist.Normal(prior_mean, torch.tensor(0.02, dtype=torch.float64)))\n\n # Update the model with the new top layer's location\n interpolation_input = geo_model.interpolation_input\n interpolation_input.surface_points.sp_coords = torch.index_put(\n interpolation_input.surface_points.sp_coords,\n (torch.tensor([0]), torch.tensor([2])),\n mu_top\n )\n\n # Compute the geological model\n geo_model.solutions = gempy_engine.compute_model(\n interpolation_input=interpolation_input,\n options=geo_model.interpolation_options,\n data_descriptor=geo_model.input_data_descriptor,\n geophysics_input=geo_model.geophysics_input,\n )\n\n # Compute and observe the thickness of the geological layer\n simulated_well = geo_model.solutions.octrees_output[0].last_output_center.custom_grid_values\n thickness = simulated_well.sum()\n pyro.deterministic(r'$\\mu_{thickness}$', thickness.detach())\n y_thickness = pyro.sample(r'$y_{thickness}$', dist.Normal(thickness, 50), obs=y_obs_list)" + "def model(y_obs_list):\n \"\"\"\n This Pyro model represents the probabilistic aspects of the geological model.\n It defines a prior distribution for the top layer's location and \n computes the thickness of the geological layer as an observed variable.\n \"\"\"\n # Define prior for the top layer's location\n prior_mean = sp_coords_copy[0, 2]\n mu_top = pyro.sample(r'$\\mu_{top}$', dist.Normal(prior_mean, torch.tensor(0.02, dtype=torch.float64)))\n\n # Update the model with the new top layer's location\n interpolation_input = geo_model.interpolation_input_copy\n interpolation_input.surface_points.sp_coords = torch.index_put(\n interpolation_input.surface_points.sp_coords,\n (torch.tensor([0]), torch.tensor([2])),\n mu_top\n )\n\n # Compute the geological model\n geo_model.solutions = gempy_engine.compute_model(\n interpolation_input=interpolation_input,\n options=geo_model.interpolation_options,\n data_descriptor=geo_model.input_data_descriptor,\n geophysics_input=geo_model.geophysics_input,\n )\n\n # Compute and observe the thickness of the geological layer\n simulated_well = geo_model.solutions.octrees_output[0].last_output_center.custom_grid_values\n thickness = simulated_well.sum()\n pyro.deterministic(r'$\\mu_{thickness}$', thickness.detach())\n y_thickness = pyro.sample(r'$y_{thickness}$', dist.Normal(thickness, 50), obs=y_obs_list)" ] }, { diff --git a/_downloads/e4b9d68eae49356aa287b7703ece0488/03_model_2_OMF_to_subsurface.ipynb b/_downloads/e4b9d68eae49356aa287b7703ece0488/03_model_2_OMF_to_subsurface.ipynb index 07013ae..479ca07 100644 --- a/_downloads/e4b9d68eae49356aa287b7703ece0488/03_model_2_OMF_to_subsurface.ipynb +++ b/_downloads/e4b9d68eae49356aa287b7703ece0488/03_model_2_OMF_to_subsurface.ipynb @@ -33,7 +33,7 @@ }, "outputs": [], "source": [ - "import omfvista\nimport pandas as pd\nimport pyvista\nfrom dotenv import dotenv_values\nimport subsurface\nfrom subsurface import TriSurf, LineSet\nfrom subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter" + "import omfvista\nimport pandas as pd\nimport pyvista\nfrom dotenv import dotenv_values\nimport subsurface\nfrom subsurface import TriSurf, LineSet\nfrom subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter" ] }, { @@ -87,7 +87,7 @@ }, "outputs": [], "source": [ - "meshes = []\nlines = []\n\nfor block_index in range(omf_project.n_blocks):\n block_name = omf_project.get_block_name(block_index)\n polydata_obj: pyvista.PolyData = omf_project[block_name]\n\n # Skip if the polydata is not a mesh\n if not isinstance(polydata_obj, pyvista.PolyData):\n continue\n\n unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()\n cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data}\n\n # Process based on cell type\n match polydata_obj.cell_type(0):\n case pyvista.CellType.TRIANGLE:\n # Process triangle mesh\n cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]\n new_cell_data = {\"Formation_Major_\": block_index, **cell_data}\n unstruct = subsurface.UnstructuredData.from_array(\n vertex=unstruct_pyvista.points,\n cells=cells_pyvista,\n cells_attr=pd.DataFrame(new_cell_data)\n )\n ts = TriSurf(mesh=unstruct)\n meshes.append(to_pyvista_mesh(ts))\n\n case pyvista.CellType.LINE:\n # Process line data\n if \"Formation_Major\" not in cell_data.keys():\n continue\n cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:]\n unstruct = subsurface.UnstructuredData.from_array(\n vertex=unstruct_pyvista.points,\n cells=cells_pyvista,\n cells_attr=pd.DataFrame(cell_data)\n )\n line = LineSet(data=unstruct)\n lines.append(to_pyvista_line(line, radius=100, as_tube=True, spline=False))\n\n# Export to desired format here if necessary" + "meshes = []\nlines = []\n\nfor block_index in range(omf_project.n_blocks):\n block_name = omf_project.get_block_name(block_index)\n polydata_obj: pyvista.PolyData = omf_project[block_name]\n\n # Skip if the polydata is not a mesh\n if not isinstance(polydata_obj, pyvista.PolyData):\n continue\n\n unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()\n cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data}\n\n # Process based on cell type\n match polydata_obj.get_cell(0).type:\n case pyvista.CellType.TRIANGLE:\n # Process triangle mesh\n cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]\n new_cell_data = {\"Formation_Major_\": block_index, **cell_data}\n unstruct = subsurface.UnstructuredData.from_array(\n vertex=unstruct_pyvista.points,\n cells=cells_pyvista,\n cells_attr=pd.DataFrame(new_cell_data)\n )\n ts = TriSurf(mesh=unstruct)\n meshes.append(to_pyvista_mesh(ts))\n\n case pyvista.CellType.LINE:\n # Process line data\n if \"Formation_Major\" not in cell_data.keys():\n continue\n cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:]\n unstruct = subsurface.UnstructuredData.from_array(\n vertex=unstruct_pyvista.points,\n cells=cells_pyvista,\n cells_attr=pd.DataFrame(cell_data)\n )\n line = LineSet(data=unstruct)\n lines.append(to_pyvista_line(line, radius=100, as_tube=True, spline=False))\n\n# Export to desired format here if necessary" ] }, { diff --git a/_downloads/e98fb3cc90cb3c5ec53603f273bc17a8/02_model_1_gempy.py b/_downloads/e98fb3cc90cb3c5ec53603f273bc17a8/02_model_1_gempy.py index 4e155fc..15410fe 100644 --- a/_downloads/e98fb3cc90cb3c5ec53603f273bc17a8/02_model_1_gempy.py +++ b/_downloads/e98fb3cc90cb3c5ec53603f273bc17a8/02_model_1_gempy.py @@ -72,7 +72,7 @@ gp.modify_surface_points( geo_model, slice=0, - X=geo_model.surface_points.data[0][0] + 130, + X=geo_model.surface_points_copy.data[0][0] + 130, ) # %% diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_006.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_006.png index 4ab1c88..31b007e 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_006.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_006.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_007.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_007.png index f1c3cf5..3e90507 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_007.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_007.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_008.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_008.png index c4f8510..9e7ae46 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_008.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_008.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_009.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_009.png index ee04319..980183a 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_009.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_009.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_010.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_010.png index 5c88669..1d5c5bf 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_010.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_010.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_011.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_011.png index 425412e..bc608a7 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_011.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_011.png differ diff --git a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_013.png b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_013.png index 7868893..357ca9d 100644 Binary files a/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_013.png and b/_images/sphx_glr_01_gravity_gradiometry_inversion_pgi_013.png differ diff --git a/_images/sphx_glr_01_model_1_gempy_step_by_step_001.png b/_images/sphx_glr_01_model_1_gempy_step_by_step_001.png index 21c65d4..8ec2f6c 100644 Binary files a/_images/sphx_glr_01_model_1_gempy_step_by_step_001.png and b/_images/sphx_glr_01_model_1_gempy_step_by_step_001.png differ diff --git a/_images/sphx_glr_01_model_1_gempy_step_by_step_002.png b/_images/sphx_glr_01_model_1_gempy_step_by_step_002.png index 4248d9b..c4c487a 100644 Binary files a/_images/sphx_glr_01_model_1_gempy_step_by_step_002.png and b/_images/sphx_glr_01_model_1_gempy_step_by_step_002.png differ diff --git a/_images/sphx_glr_01_model_1_gempy_step_by_step_thumb.png b/_images/sphx_glr_01_model_1_gempy_step_by_step_thumb.png index df2f61e..7cadc60 100644 Binary files a/_images/sphx_glr_01_model_1_gempy_step_by_step_thumb.png and b/_images/sphx_glr_01_model_1_gempy_step_by_step_thumb.png differ diff --git a/_images/sphx_glr_01_read_OMF_sites_001.png b/_images/sphx_glr_01_read_OMF_sites_001.png index 30b2677..8bf5ee5 100644 Binary files a/_images/sphx_glr_01_read_OMF_sites_001.png and b/_images/sphx_glr_01_read_OMF_sites_001.png differ diff --git a/_images/sphx_glr_01_read_OMF_sites_002.png b/_images/sphx_glr_01_read_OMF_sites_002.png index 1d4e026..6bdf23c 100644 Binary files a/_images/sphx_glr_01_read_OMF_sites_002.png and b/_images/sphx_glr_01_read_OMF_sites_002.png differ diff --git a/_images/sphx_glr_01_read_OMF_sites_thumb.png b/_images/sphx_glr_01_read_OMF_sites_thumb.png index 70c87f8..b05defa 100644 Binary files a/_images/sphx_glr_01_read_OMF_sites_thumb.png and b/_images/sphx_glr_01_read_OMF_sites_thumb.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_001.png b/_images/sphx_glr_01_thickness_problem_gempy_001.png index aff3e75..4c441dd 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_001.png and b/_images/sphx_glr_01_thickness_problem_gempy_001.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_002.png b/_images/sphx_glr_01_thickness_problem_gempy_002.png index 2587761..1e6127d 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_002.png and b/_images/sphx_glr_01_thickness_problem_gempy_002.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_003.png b/_images/sphx_glr_01_thickness_problem_gempy_003.png index 5af28d5..fbb8c4f 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_003.png and b/_images/sphx_glr_01_thickness_problem_gempy_003.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_004.png b/_images/sphx_glr_01_thickness_problem_gempy_004.png index a84d17a..c9b6e83 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_004.png and b/_images/sphx_glr_01_thickness_problem_gempy_004.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_005.png b/_images/sphx_glr_01_thickness_problem_gempy_005.png index 56e0071..b9f86d4 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_005.png and b/_images/sphx_glr_01_thickness_problem_gempy_005.png differ diff --git a/_images/sphx_glr_01_thickness_problem_gempy_thumb.png b/_images/sphx_glr_01_thickness_problem_gempy_thumb.png index 9397b2a..5016c7b 100644 Binary files a/_images/sphx_glr_01_thickness_problem_gempy_thumb.png and b/_images/sphx_glr_01_thickness_problem_gempy_thumb.png differ diff --git a/_images/sphx_glr_02_model_1_OMF_to_subsurface_001.png b/_images/sphx_glr_02_model_1_OMF_to_subsurface_001.png index 3c5dade..c3f05f6 100644 Binary files a/_images/sphx_glr_02_model_1_OMF_to_subsurface_001.png and b/_images/sphx_glr_02_model_1_OMF_to_subsurface_001.png differ diff --git a/_images/sphx_glr_02_model_1_OMF_to_subsurface_thumb.png b/_images/sphx_glr_02_model_1_OMF_to_subsurface_thumb.png index 1f03bf6..13e09e9 100644 Binary files a/_images/sphx_glr_02_model_1_OMF_to_subsurface_thumb.png and b/_images/sphx_glr_02_model_1_OMF_to_subsurface_thumb.png differ diff --git a/_images/sphx_glr_02_model_1_bayesian_001.png b/_images/sphx_glr_02_model_1_bayesian_001.png index 4248d9b..fe32ce3 100644 Binary files a/_images/sphx_glr_02_model_1_bayesian_001.png and b/_images/sphx_glr_02_model_1_bayesian_001.png differ diff --git a/_images/sphx_glr_02_model_1_bayesian_002.png b/_images/sphx_glr_02_model_1_bayesian_002.png index 0d32661..638dbac 100644 Binary files a/_images/sphx_glr_02_model_1_bayesian_002.png and b/_images/sphx_glr_02_model_1_bayesian_002.png differ diff --git a/_images/sphx_glr_02_model_1_bayesian_003.png b/_images/sphx_glr_02_model_1_bayesian_003.png index 7d0eed1..25902fc 100644 Binary files a/_images/sphx_glr_02_model_1_bayesian_003.png and b/_images/sphx_glr_02_model_1_bayesian_003.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_001.png b/_images/sphx_glr_02_model_1_gempy_001.png index b1a0d4a..e212f03 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_001.png and b/_images/sphx_glr_02_model_1_gempy_001.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_002.png b/_images/sphx_glr_02_model_1_gempy_002.png index 25d4915..4a4f49a 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_002.png and b/_images/sphx_glr_02_model_1_gempy_002.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_001.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_001.png index 5408919..ceb9b06 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_001.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_001.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_002.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_002.png index 3911c38..b68fb40 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_002.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_002.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_003.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_003.png index ce12cfc..dd61359 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_003.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_003.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_004.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_004.png index 3346947..759f424 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_004.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_004.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_005.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_005.png index a103183..9ab3ca1 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_005.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_005.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_fw_gravity_thumb.png b/_images/sphx_glr_02_model_1_gempy_fw_gravity_thumb.png index 32b61b0..18993d0 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_fw_gravity_thumb.png and b/_images/sphx_glr_02_model_1_gempy_fw_gravity_thumb.png differ diff --git a/_images/sphx_glr_02_model_1_gempy_thumb.png b/_images/sphx_glr_02_model_1_gempy_thumb.png index 898ad8a..6e79c0d 100644 Binary files a/_images/sphx_glr_02_model_1_gempy_thumb.png and b/_images/sphx_glr_02_model_1_gempy_thumb.png differ diff --git a/_images/sphx_glr_03_model_2_OMF_to_subsurface_001.png b/_images/sphx_glr_03_model_2_OMF_to_subsurface_001.png index 1948851..3b88f92 100644 Binary files a/_images/sphx_glr_03_model_2_OMF_to_subsurface_001.png and b/_images/sphx_glr_03_model_2_OMF_to_subsurface_001.png differ diff --git a/_images/sphx_glr_03_model_2_OMF_to_subsurface_thumb.png b/_images/sphx_glr_03_model_2_OMF_to_subsurface_thumb.png index 6673a6d..1db3ab4 100644 Binary files a/_images/sphx_glr_03_model_2_OMF_to_subsurface_thumb.png and b/_images/sphx_glr_03_model_2_OMF_to_subsurface_thumb.png differ diff --git a/_images/sphx_glr_03_model_spremberg_import_001.png b/_images/sphx_glr_03_model_spremberg_import_001.png new file mode 100644 index 0000000..240dca6 Binary files /dev/null and b/_images/sphx_glr_03_model_spremberg_import_001.png differ diff --git a/_images/sphx_glr_03_model_spremberg_import_002.png b/_images/sphx_glr_03_model_spremberg_import_002.png new file mode 100644 index 0000000..624db44 Binary files /dev/null and b/_images/sphx_glr_03_model_spremberg_import_002.png differ diff --git a/_images/sphx_glr_03_model_spremberg_import_003.png b/_images/sphx_glr_03_model_spremberg_import_003.png new file mode 100644 index 0000000..b2fe138 Binary files /dev/null and b/_images/sphx_glr_03_model_spremberg_import_003.png differ diff --git a/_images/sphx_glr_03_model_spremberg_import_004.png b/_images/sphx_glr_03_model_spremberg_import_004.png new file mode 100644 index 0000000..9325057 Binary files /dev/null and b/_images/sphx_glr_03_model_spremberg_import_004.png differ diff --git a/_images/sphx_glr_03_model_spremberg_import_thumb.png b/_images/sphx_glr_03_model_spremberg_import_thumb.png new file mode 100644 index 0000000..316a827 Binary files /dev/null and b/_images/sphx_glr_03_model_spremberg_import_thumb.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_001.png b/_images/sphx_glr_04_model_spremberg_building_001.png new file mode 100644 index 0000000..fab6e94 Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_001.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_002.png b/_images/sphx_glr_04_model_spremberg_building_002.png new file mode 100644 index 0000000..c4eb28e Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_002.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_003.png b/_images/sphx_glr_04_model_spremberg_building_003.png new file mode 100644 index 0000000..6199291 Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_003.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_004.png b/_images/sphx_glr_04_model_spremberg_building_004.png new file mode 100644 index 0000000..a38005a Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_004.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_005.png b/_images/sphx_glr_04_model_spremberg_building_005.png new file mode 100644 index 0000000..b2d9441 Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_005.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_006.png b/_images/sphx_glr_04_model_spremberg_building_006.png new file mode 100644 index 0000000..bc8e06f Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_006.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_007.png b/_images/sphx_glr_04_model_spremberg_building_007.png new file mode 100644 index 0000000..22224bd Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_007.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_008.png b/_images/sphx_glr_04_model_spremberg_building_008.png new file mode 100644 index 0000000..2ad97b1 Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_008.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_009.png b/_images/sphx_glr_04_model_spremberg_building_009.png new file mode 100644 index 0000000..fbb2b4f Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_009.png differ diff --git a/_images/sphx_glr_04_model_spremberg_building_thumb.png b/_images/sphx_glr_04_model_spremberg_building_thumb.png new file mode 100644 index 0000000..b0db053 Binary files /dev/null and b/_images/sphx_glr_04_model_spremberg_building_thumb.png differ diff --git a/_sources/examples/01_readers/01_read_OMF_sites.rst.txt b/_sources/examples/01_readers/01_read_OMF_sites.rst.txt index fb6e9f9..10770dd 100644 --- a/_sources/examples/01_readers/01_read_OMF_sites.rst.txt +++ b/_sources/examples/01_readers/01_read_OMF_sites.rst.txt @@ -29,42 +29,37 @@ Required Libraries ------------------ First, we import the necessary libraries for handling and visualizing OMF files. -.. GENERATED FROM PYTHON SOURCE LINES 12-21 +.. GENERATED FROM PYTHON SOURCE LINES 12-23 -.. code-block:: default +.. code-block:: Python import omfvista import pyvista import subsurface from subsurface import TriSurf - from subsurface.visualization import to_pyvista_mesh, pv_plot - from subsurface.writer import base_structs_to_binary_file from dotenv import dotenv_values + from subsurface.modules.visualization import to_pyvista_mesh, pv_plot + from subsurface.modules.writer import base_structs_to_binary_file -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - /home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible. - warnings.warn("Welly or Striplog not installed. No well reader possible.") -.. GENERATED FROM PYTHON SOURCE LINES 22-25 +.. GENERATED FROM PYTHON SOURCE LINES 24-27 Load OMF Project ---------------- Here, we define a function to load an OMF project using a path specified in a .env file. -.. GENERATED FROM PYTHON SOURCE LINES 25-34 +.. GENERATED FROM PYTHON SOURCE LINES 27-36 -.. code-block:: default +.. code-block:: Python def load_omf(): @@ -82,15 +77,15 @@ Here, we define a function to load an OMF project using a path specified in a .e -.. GENERATED FROM PYTHON SOURCE LINES 35-38 +.. GENERATED FROM PYTHON SOURCE LINES 37-40 Visualize OMF with PyVista -------------------------- Utilize PyVista for an interactive visualization of the OMF project. -.. GENERATED FROM PYTHON SOURCE LINES 38-41 +.. GENERATED FROM PYTHON SOURCE LINES 40-43 -.. code-block:: default +.. code-block:: Python omf_project.plot(multi_colors=True, show_edges=True, notebook=False) @@ -107,15 +102,15 @@ Utilize PyVista for an interactive visualization of the OMF project. -.. GENERATED FROM PYTHON SOURCE LINES 42-45 +.. GENERATED FROM PYTHON SOURCE LINES 44-47 Convert OMF to Unstructured Single Block ---------------------------------------- Convert the loaded OMF project into an unstructured single block for further processing. -.. GENERATED FROM PYTHON SOURCE LINES 45-61 +.. GENERATED FROM PYTHON SOURCE LINES 47-63 -.. code-block:: default +.. code-block:: Python block_name = omf_project.get_block_name(4) @@ -140,15 +135,15 @@ Convert the loaded OMF project into an unstructured single block for further pro -.. GENERATED FROM PYTHON SOURCE LINES 62-65 +.. GENERATED FROM PYTHON SOURCE LINES 64-67 Visualize Unstructured Data --------------------------- Finally, visualize the converted unstructured data using Subsurface and PyVista. -.. GENERATED FROM PYTHON SOURCE LINES 65-69 +.. GENERATED FROM PYTHON SOURCE LINES 67-71 -.. code-block:: default +.. code-block:: Python ts = TriSurf(mesh=unstruct) @@ -168,14 +163,14 @@ Finally, visualize the converted unstructured data using Subsurface and PyVista. .. code-block:: none - + .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 2.341 seconds) + **Total running time of the script:** (0 minutes 2.693 seconds) .. _sphx_glr_download_examples_01_readers_01_read_OMF_sites.py: @@ -184,17 +179,14 @@ Finally, visualize the converted unstructured data using Subsurface and PyVista. .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 01_read_OMF_sites.ipynb <01_read_OMF_sites.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 01_read_OMF_sites.py <01_read_OMF_sites.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 01_read_OMF_sites.ipynb <01_read_OMF_sites.ipynb>` - .. only:: html diff --git a/_sources/examples/01_readers/02_model_1_OMF_to_subsurface.rst.txt b/_sources/examples/01_readers/02_model_1_OMF_to_subsurface.rst.txt index ec7dbdc..de32727 100644 --- a/_sources/examples/01_readers/02_model_1_OMF_to_subsurface.rst.txt +++ b/_sources/examples/01_readers/02_model_1_OMF_to_subsurface.rst.txt @@ -31,7 +31,7 @@ Begin by importing the necessary libraries for this tutorial. .. GENERATED FROM PYTHON SOURCE LINES 12-22 -.. code-block:: default +.. code-block:: Python import pandas as pd @@ -40,7 +40,7 @@ Begin by importing the necessary libraries for this tutorial. import subsurface from subsurface import TriSurf, LineSet - from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter + from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter from vector_geology.utils import load_omf @@ -58,7 +58,7 @@ Load the OMF project file using a custom function. .. GENERATED FROM PYTHON SOURCE LINES 26-29 -.. code-block:: default +.. code-block:: Python omf = load_omf("PATH_TO_MODEL_1") @@ -78,7 +78,7 @@ Next, we use PyVista for an initial visualization of the OMF project. .. GENERATED FROM PYTHON SOURCE LINES 33-38 -.. code-block:: default +.. code-block:: Python # Replace `False` with a condition or toggle to enable plotting. @@ -100,7 +100,7 @@ Use Subsurface and PyVista to visualize the unstructured data. .. GENERATED FROM PYTHON SOURCE LINES 42-109 -.. code-block:: default +.. code-block:: Python @@ -221,7 +221,7 @@ Use Subsurface and PyVista to visualize the unstructured data. .. GENERATED FROM PYTHON SOURCE LINES 113-131 -.. code-block:: default +.. code-block:: Python plotter = init_plotter() @@ -265,7 +265,7 @@ Lithology data and gravity seems to be confidential so how much we can share in .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 8.682 seconds) + **Total running time of the script:** (0 minutes 6.341 seconds) .. _sphx_glr_download_examples_01_readers_02_model_1_OMF_to_subsurface.py: @@ -274,17 +274,14 @@ Lithology data and gravity seems to be confidential so how much we can share in .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 02_model_1_OMF_to_subsurface.ipynb <02_model_1_OMF_to_subsurface.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 02_model_1_OMF_to_subsurface.py <02_model_1_OMF_to_subsurface.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 02_model_1_OMF_to_subsurface.ipynb <02_model_1_OMF_to_subsurface.ipynb>` - .. only:: html diff --git a/_sources/examples/01_readers/03_model_2_OMF_to_subsurface.rst.txt b/_sources/examples/01_readers/03_model_2_OMF_to_subsurface.rst.txt index 6eddab7..d631718 100644 --- a/_sources/examples/01_readers/03_model_2_OMF_to_subsurface.rst.txt +++ b/_sources/examples/01_readers/03_model_2_OMF_to_subsurface.rst.txt @@ -32,7 +32,7 @@ Import the necessary libraries for reading an OMF file and processing it. .. GENERATED FROM PYTHON SOURCE LINES 14-23 -.. code-block:: default +.. code-block:: Python import omfvista @@ -41,7 +41,7 @@ Import the necessary libraries for reading an OMF file and processing it. from dotenv import dotenv_values import subsurface from subsurface import TriSurf, LineSet - from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter + from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter @@ -59,7 +59,7 @@ Load the OMF project using a fixture. .. GENERATED FROM PYTHON SOURCE LINES 28-37 -.. code-block:: default +.. code-block:: Python def load_omf(): @@ -86,7 +86,7 @@ Optionally, visualize the OMF project using PyVista. This step can be skipped or .. GENERATED FROM PYTHON SOURCE LINES 42-46 -.. code-block:: default +.. code-block:: Python if False: # Change to True to enable visualization @@ -108,7 +108,7 @@ Convert the loaded OMF project into an unstructured single block for further ana .. GENERATED FROM PYTHON SOURCE LINES 51-95 -.. code-block:: default +.. code-block:: Python meshes = [] @@ -126,7 +126,7 @@ Convert the loaded OMF project into an unstructured single block for further ana cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data} # Process based on cell type - match polydata_obj.cell_type(0): + match polydata_obj.get_cell(0).type: case pyvista.CellType.TRIANGLE: # Process triangle mesh cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:] @@ -158,25 +158,6 @@ Convert the loaded OMF project into an unstructured single block for further ana -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead - warnings.warn( - @@ -189,7 +170,7 @@ Visualize the unstructured data using Subsurface and PyVista. .. GENERATED FROM PYTHON SOURCE LINES 100-111 -.. code-block:: default +.. code-block:: Python plotter = init_plotter() @@ -217,7 +198,7 @@ Visualize the unstructured data using Subsurface and PyVista. .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 1.332 seconds) + **Total running time of the script:** (0 minutes 1.242 seconds) .. _sphx_glr_download_examples_01_readers_03_model_2_OMF_to_subsurface.py: @@ -226,17 +207,14 @@ Visualize the unstructured data using Subsurface and PyVista. .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 03_model_2_OMF_to_subsurface.ipynb <03_model_2_OMF_to_subsurface.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 03_model_2_OMF_to_subsurface.py <03_model_2_OMF_to_subsurface.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 03_model_2_OMF_to_subsurface.ipynb <03_model_2_OMF_to_subsurface.ipynb>` - .. only:: html diff --git a/_sources/examples/01_readers/sg_execution_times.rst.txt b/_sources/examples/01_readers/sg_execution_times.rst.txt index ee2a80f..85e0eb9 100644 --- a/_sources/examples/01_readers/sg_execution_times.rst.txt +++ b/_sources/examples/01_readers/sg_execution_times.rst.txt @@ -6,14 +6,41 @@ Computation times ================= -**00:12.426** total execution time for **examples_01_readers** files: - -+-----------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_01_readers_02_model_1_OMF_to_subsurface.py` (``02_model_1_OMF_to_subsurface.py``) | 00:08.682 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_01_readers_01_read_OMF_sites.py` (``01_read_OMF_sites.py``) | 00:02.341 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_01_readers_03_model_2_OMF_to_subsurface.py` (``03_model_2_OMF_to_subsurface.py``) | 00:01.332 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_01_readers_04_model_1_read_gravity.py` (``04_model_1_read_gravity.py``) | 00:00.071 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------+-----------+--------+ +**00:01.242** total execution time for 4 files **from examples/01_readers**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_01_readers_03_model_2_OMF_to_subsurface.py` (``03_model_2_OMF_to_subsurface.py``) + - 00:01.242 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_01_read_OMF_sites.py` (``01_read_OMF_sites.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_02_model_1_OMF_to_subsurface.py` (``02_model_1_OMF_to_subsurface.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_04_model_1_read_gravity.py` (``04_model_1_read_gravity.py``) + - 00:00.000 + - 0.0 diff --git a/_sources/examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst.txt b/_sources/examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst.txt index fbe383c..381a87b 100644 --- a/_sources/examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst.txt +++ b/_sources/examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst.txt @@ -23,16 +23,15 @@ Constructing Structural Geological Model This example illustrates how to construct a 3D geological model of a deposit using GemPy. -.. GENERATED FROM PYTHON SOURCE LINES 7-23 +.. GENERATED FROM PYTHON SOURCE LINES 7-22 -.. code-block:: default +.. code-block:: Python # Import necessary libraries import time import numpy as np import os - import xarray as xr from dotenv import dotenv_values from vector_geology.omf_to_gempy import process_file import gempy as gp @@ -47,24 +46,17 @@ This example illustrates how to construct a 3D geological model of a deposit usi -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - /home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible. - warnings.warn("Welly or Striplog not installed. No well reader possible.") - - -.. GENERATED FROM PYTHON SOURCE LINES 24-26 +.. GENERATED FROM PYTHON SOURCE LINES 23-25 Load the data necessary for model construction. This involves processing data from nc files and organizing it for use in the geological model. -.. GENERATED FROM PYTHON SOURCE LINES 26-39 +.. GENERATED FROM PYTHON SOURCE LINES 25-38 -.. code-block:: default +.. code-block:: Python config = dotenv_values() @@ -86,16 +78,16 @@ and organizing it for use in the geological model. -.. GENERATED FROM PYTHON SOURCE LINES 40-44 +.. GENERATED FROM PYTHON SOURCE LINES 39-43 Setting Up GemPy Model ----------------------- Configure the GemPy model object, including defining structural groups and configuring their properties. This is a crucial step in setting up the structural framework of the geological model. -.. GENERATED FROM PYTHON SOURCE LINES 44-83 +.. GENERATED FROM PYTHON SOURCE LINES 43-81 -.. code-block:: default +.. code-block:: Python # Define structural groups and their relationships @@ -131,8 +123,7 @@ This is a crucial step in setting up the structural framework of the geological geo_model: gp.data.GeoModel = gp.create_geomodel( project_name='Tutorial_ch1_1_Basics', extent=global_extent, - resolution=[20, 10, 20], - refinement=6, + refinement=5, structural_frame=structural_frame ) @@ -143,14 +134,14 @@ This is a crucial step in setting up the structural framework of the geological -.. GENERATED FROM PYTHON SOURCE LINES 84-86 +.. GENERATED FROM PYTHON SOURCE LINES 82-84 Incorporate topography into the model using a dataset in nc format. This adds realism to the model by including surface variations. -.. GENERATED FROM PYTHON SOURCE LINES 86-95 +.. GENERATED FROM PYTHON SOURCE LINES 84-93 -.. code-block:: default +.. code-block:: Python import xarray as xr @@ -169,28 +160,29 @@ by including surface variations. .. code-block:: none - Active grids: ['regular' 'topography'] + Active grids: GridTypes.NONE|TOPOGRAPHY|OCTREE - + -.. GENERATED FROM PYTHON SOURCE LINES 96-100 +.. GENERATED FROM PYTHON SOURCE LINES 94-98 Optimizing Nuggets ------------------ Nuggets add a small random noise to the data to account for discrepancies in complex geometries. Here, we optimize the nugget value to balance between overfitting and underfitting the data. -.. GENERATED FROM PYTHON SOURCE LINES 100-148 +.. GENERATED FROM PYTHON SOURCE LINES 98-147 -.. code-block:: default +.. code-block:: Python TRIGGER_OPTIMIZE_NUGGETS = False APPLY_OPTIMIZED_NUGGETS = True if TRIGGER_OPTIMIZE_NUGGETS: - + geo_model.interpolation_options.cache_mode = gp.data.InterpolationOptions.CacheMode.NO_CACHE + # Optimization process for different structural groups geo_model.interpolation_options.kernel_options.range = 0.7 geo_model.interpolation_options.kernel_options.c_o = 4 @@ -241,14 +233,14 @@ Here, we optimize the nugget value to balance between overfitting and underfitti -.. GENERATED FROM PYTHON SOURCE LINES 149-151 +.. GENERATED FROM PYTHON SOURCE LINES 148-150 Compute the geological model. This involves setting interpolation options and executing the computation to generate the 3D geological structure. -.. GENERATED FROM PYTHON SOURCE LINES 151-176 +.. GENERATED FROM PYTHON SOURCE LINES 150-175 -.. code-block:: default +.. code-block:: Python geo_model.interpolation_options.mesh_extraction = True @@ -284,25 +276,25 @@ to generate the 3D geological structure. .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - /home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten - warnings.warn( + Condition number: 146830.09028250765. + Condition number: 276736.9518433538. .. raw:: html
- Solutions: 6 Octree Levels, 5 DualContouringMeshes + Solutions: 5 Octree Levels, 5 DualContouringMeshes


-.. GENERATED FROM PYTHON SOURCE LINES 177-178 +.. GENERATED FROM PYTHON SOURCE LINES 176-177 Visualize the constructed geological model in both 2D and 3D formats to assess the structure and layout. -.. GENERATED FROM PYTHON SOURCE LINES 178-182 +.. GENERATED FROM PYTHON SOURCE LINES 177-181 -.. code-block:: default +.. code-block:: Python # 2D visualization of the model @@ -322,17 +314,17 @@ Visualize the constructed geological model in both 2D and 3D formats to assess t .. code-block:: none - + -.. GENERATED FROM PYTHON SOURCE LINES 183-184 +.. GENERATED FROM PYTHON SOURCE LINES 182-183 3D visualization in GemPy viewer -.. GENERATED FROM PYTHON SOURCE LINES 184-190 +.. GENERATED FROM PYTHON SOURCE LINES 183-189 -.. code-block:: default +.. code-block:: Python gempy_vista = gpv.plot_3d( model=geo_model, @@ -352,13 +344,13 @@ Visualize the constructed geological model in both 2D and 3D formats to assess t -.. GENERATED FROM PYTHON SOURCE LINES 191-192 +.. GENERATED FROM PYTHON SOURCE LINES 190-191 Measure the total time taken to execute the script, providing insights into performance. -.. GENERATED FROM PYTHON SOURCE LINES 192-198 +.. GENERATED FROM PYTHON SOURCE LINES 191-197 -.. code-block:: default +.. code-block:: Python end_time = time.time() @@ -374,7 +366,7 @@ Measure the total time taken to execute the script, providing insights into perf .. code-block:: none - The function executed in 3.7581591606140137 seconds. + The function executed in 10.007350206375122 seconds. @@ -382,7 +374,7 @@ Measure the total time taken to execute the script, providing insights into perf .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 3.922 seconds) + **Total running time of the script:** (0 minutes 10.189 seconds) .. _sphx_glr_download_examples_02_structural_modeling_01_model_1_gempy_step_by_step.py: @@ -391,17 +383,14 @@ Measure the total time taken to execute the script, providing insights into perf .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 01_model_1_gempy_step_by_step.ipynb <01_model_1_gempy_step_by_step.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 01_model_1_gempy_step_by_step.py <01_model_1_gempy_step_by_step.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 01_model_1_gempy_step_by_step.ipynb <01_model_1_gempy_step_by_step.ipynb>` - .. only:: html diff --git a/_sources/examples/02_structural_modeling/02_model_1_gempy.rst.txt b/_sources/examples/02_structural_modeling/02_model_1_gempy.rst.txt index 5c3dce3..78d4023 100644 --- a/_sources/examples/02_structural_modeling/02_model_1_gempy.rst.txt +++ b/_sources/examples/02_structural_modeling/02_model_1_gempy.rst.txt @@ -26,7 +26,7 @@ It leverages custom APIs to streamline the modeling process. .. GENERATED FROM PYTHON SOURCE LINES 8-19 -.. code-block:: default +.. code-block:: Python import time @@ -43,13 +43,6 @@ It leverages custom APIs to streamline the modeling process. -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - /home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible. - warnings.warn("Welly or Striplog not installed. No well reader possible.") - @@ -59,7 +52,7 @@ Start the timer to measure execution time .. GENERATED FROM PYTHON SOURCE LINES 21-23 -.. code-block:: default +.. code-block:: Python start_time = time.time() @@ -77,7 +70,7 @@ This step is crucial for setting up the directory paths for the model data. .. GENERATED FROM PYTHON SOURCE LINES 26-29 -.. code-block:: default +.. code-block:: Python config = dotenv_values() path = config.get("PATH_TO_MODEL_1_Subsurface") @@ -96,7 +89,7 @@ Here we prepare the containers for the structural elements and the global extent .. GENERATED FROM PYTHON SOURCE LINES 32-36 -.. code-block:: default +.. code-block:: Python structural_elements = [] global_extent = None @@ -116,7 +109,7 @@ This loop reads the necessary data from each .nc file for modeling. .. GENERATED FROM PYTHON SOURCE LINES 39-45 -.. code-block:: default +.. code-block:: Python for filename in os.listdir(path): base, ext = os.path.splitext(filename) @@ -138,7 +131,7 @@ We use the data processed above to initialize the geological model with GemPy. .. GENERATED FROM PYTHON SOURCE LINES 48-55 -.. code-block:: default +.. code-block:: Python geo_model = initialize_geo_model( structural_elements=structural_elements, @@ -155,7 +148,9 @@ We use the data processed above to initialize the geological model with GemPy. .. code-block:: none - Active grids: ['regular' 'topography'] + /home/leguark/gempy/gempy/core/data/structural_frame.py:188: UserWarning: The basement color was already used in the structural elements.Changing the basement color to #015482. + warnings.warn(f"The basement color was already used in the structural elements." + Active grids: GridTypes.NONE|TOPOGRAPHY|DENSE @@ -167,7 +162,7 @@ It's helpful to print the model to verify its initialization. .. GENERATED FROM PYTHON SOURCE LINES 58-60 -.. code-block:: default +.. code-block:: Python print(geo_model) @@ -179,8 +174,39 @@ It's helpful to print the model to verify its initialization. .. code-block:: none - {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': , derivative_div_r=, second_derivative=, consume_sq_distance=False)>, 'kernel_solver': , 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, number_octree_levels=6, current_octree_level=0, compute_scalar_gradient=False, mesh_extraction=True, mesh_extraction_masking_options=MeshExtractionMaskingOptions.INTERSECT, mesh_extraction_fancy=True, debug=True, debug_water_tight=False, sigmoid_slope=50000, _number_octree_levels_surface=4, _model_name=None), - 'grid': , + {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': , derivative_div_r=, second_derivative=, consume_sq_distance=False)>, 'kernel_solver': , 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, evaluation_options={'_number_octree_levels': 5, '_number_octree_levels_surface': 4, 'curvature_threshold': -1, 'error_threshold': 1.5, 'min_octree_level': 2, 'mesh_extraction': True, 'mesh_extraction_masking_options': , 'mesh_extraction_fancy': True, 'evaluation_chunk_size': 5000000, 'compute_scalar_gradient': False, 'verbose': False}, temp_interpolation_values=, debug=True, cache_mode=CacheMode.IN_MEMORY_CACHE, cache_model_name=, block_solutions_type=BlockSolutionType.OCTREE, sigmoid_slope=50000, debug_water_tight=False), + 'grid': Grid(_octree_grid=None, + _dense_grid=RegularGrid(resolution=array([20, 10, 20]), + extent=array([ 5.59902830e+05, 5.64955682e+05, 6.44278260e+05, 6.50608735e+05, + -1.75340000e+03, 1.60326604e+02]), + values=array([[ 5.60029151e+05, 6.44594784e+05, -1.70555683e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.60987050e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.51418417e+03], + ..., + [ 5.64829361e+05, 6.50292212e+05, -7.88892213e+01], + [ 5.64829361e+05, 6.50292212e+05, 1.67971089e+01], + [ 5.64829361e+05, 6.50292212e+05, 1.12483439e+02]]), + mask_topo=array([], shape=(0, 3), dtype=bool), + _transform=None), + _custom_grid=None, + _topography=, + _sections=None, + _centered_grid=None, + values=array([[ 5.60029151e+05, 6.44594784e+05, -1.70555683e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.60987050e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.51418417e+03], + ..., + [ 5.64955682e+05, 6.49201963e+05, 1.06993262e+02], + [ 5.64955682e+05, 6.49905349e+05, 8.89864414e+01], + [ 5.64955682e+05, 6.50608735e+05, 7.05702308e+01]]), + length=array([], dtype=float64), + _transform=None, + _octree_levels=-1), + 'input_transform': {'_cached_pivot': None, + '_is_default_transform': False, + 'position': array([-562422.65655014, -647329.31794742, 823.58712106]), + 'rotation': array([0., 0., 0.]), + 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])}, 'meta': GeoModelMeta(name='Tutorial_ch1_1_Basics', creation_date=None, last_modification_date=None, @@ -228,11 +254,7 @@ It's helpful to print the model to verify its initialization. fault_relations= [[False, False], [False, False]], - , - 'transform': {'_is_default_transform': False, - 'position': array([-562422.65655014, -647329.31794742, 823.58712106]), - 'rotation': array([0., 0., 0.]), - 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])}} + } @@ -244,7 +266,7 @@ This step configures the model's interpolation settings for better accuracy. .. GENERATED FROM PYTHON SOURCE LINES 63-69 -.. code-block:: default +.. code-block:: Python interpolation_options = geo_model.interpolation_options interpolation_options.mesh_extraction = True @@ -266,12 +288,12 @@ Adjustments to the surface points can influence the resulting geological feature .. GENERATED FROM PYTHON SOURCE LINES 72-78 -.. code-block:: default +.. code-block:: Python gp.modify_surface_points( geo_model, slice=0, - X=geo_model.surface_points.data[0][0] + 130, + X=geo_model.surface_points_copy.data[0][0] + 130, ) @@ -346,7 +368,7 @@ This is where the model computation happens, utilizing the GemPy engine. .. GENERATED FROM PYTHON SOURCE LINES 81-90 -.. code-block:: default +.. code-block:: Python before_compute_time = time.time() gp.compute_model( @@ -366,16 +388,14 @@ This is where the model computation happens, utilizing the GemPy engine. .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - /home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten - warnings.warn( - Final Iteration 230, Residual Norm: 3.6824900462306687e-08 - Final Iteration 102, Residual Norm: 8.902938475330302e-07 + Condition number: 146825.828125. + Condition number: 276737.5. .. raw:: html
- Solutions: 6 Octree Levels, 5 DualContouringMeshes + Solutions: 5 Octree Levels, 5 DualContouringMeshes


@@ -387,7 +407,7 @@ Visualizing the model in 2D helps in understanding the geological layers. .. GENERATED FROM PYTHON SOURCE LINES 93-95 -.. code-block:: default +.. code-block:: Python gpv.plot_2d(geo_model, show_scalar=False) @@ -405,7 +425,7 @@ Visualizing the model in 2D helps in understanding the geological layers. .. code-block:: none - + @@ -416,7 +436,7 @@ A 3D view provides a comprehensive look at the model's structure. .. GENERATED FROM PYTHON SOURCE LINES 98-104 -.. code-block:: default +.. code-block:: Python gempy_vista = gpv.plot_3d( model=geo_model, @@ -443,7 +463,7 @@ It's useful to know how long different parts of the process take. .. GENERATED FROM PYTHON SOURCE LINES 107-117 -.. code-block:: default +.. code-block:: Python end_time = time.time() prep_time = before_compute_time - start_time @@ -463,9 +483,9 @@ It's useful to know how long different parts of the process take. .. code-block:: none - Preparation time: 1.1760990619659424 seconds. - Computation time: 2.8446145057678223 seconds. - Total execution time: 4.020713567733765 seconds. + Preparation time: 1.0133297443389893 seconds. + Computation time: 4.729570627212524 seconds. + Total execution time: 5.742900371551514 seconds. @@ -473,7 +493,7 @@ It's useful to know how long different parts of the process take. .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 4.193 seconds) + **Total running time of the script:** (0 minutes 5.802 seconds) .. _sphx_glr_download_examples_02_structural_modeling_02_model_1_gempy.py: @@ -482,17 +502,14 @@ It's useful to know how long different parts of the process take. .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 02_model_1_gempy.ipynb <02_model_1_gempy.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 02_model_1_gempy.py <02_model_1_gempy.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 02_model_1_gempy.ipynb <02_model_1_gempy.ipynb>` - .. only:: html diff --git a/_sources/examples/02_structural_modeling/03_model_spremberg_import.rst.txt b/_sources/examples/02_structural_modeling/03_model_spremberg_import.rst.txt new file mode 100644 index 0000000..4f7f06f --- /dev/null +++ b/_sources/examples/02_structural_modeling/03_model_spremberg_import.rst.txt @@ -0,0 +1,489 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/02_structural_modeling/03_model_spremberg_import.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_02_structural_modeling_03_model_spremberg_import.py: + + +Construct Spremberg: Importing borehole data +-------------------------------------------- + +This example demonstrates how to construct a 3D geological model of the Model 1 deposit using GemPy. +It leverages custom APIs to streamline the modeling process. + +.. GENERATED FROM PYTHON SOURCE LINES 9-11 + +Import the necessary libraries for geological modeling and visualization. +sphinx_gallery_thumbnail_number = -1 + +.. GENERATED FROM PYTHON SOURCE LINES 11-24 + +.. code-block:: Python + + import os + import pandas as pd + import pyvista + + import gempy as gp + import gempy_viewer as gpv + from subsurface.core.geological_formats.boreholes.boreholes import BoreholeSet, MergeOptions + from subsurface.core.geological_formats.boreholes.collars import Collars + from subsurface.core.geological_formats.boreholes.survey import Survey + from subsurface.core.reader_helpers.readers_data import GenericReaderFilesHelper + from subsurface.modules.reader.wells.read_borehole_interface import read_lith, read_survey, read_collar + from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points, init_plotter + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 25-26 + +Initialize the reader for the lithological data. Specify the file path and column mappings. + +.. GENERATED FROM PYTHON SOURCE LINES 26-41 + +.. code-block:: Python + + import dotenv + dotenv.load_dotenv() + reader: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_STRATIGRAPHY"), + columns_map={ + 'hole_id' : 'id', + 'depth_from': 'top', + 'depth_to' : 'base', + 'lit_code' : 'component lith' + } + ) + + # Read the lithological data into a DataFrame. + lith: pd.DataFrame = read_lith(reader) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:116: SettingWithCopyWarning: + A value is trying to be set on a copy of a slice from a DataFrame. + Try using .loc[row_indexer,col_indexer] = value instead + + See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy + lith_df['top'] = -np.abs(lith_df['top']) + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:117: SettingWithCopyWarning: + A value is trying to be set on a copy of a slice from a DataFrame. + Try using .loc[row_indexer,col_indexer] = value instead + + See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy + lith_df['base'] = -np.abs(lith_df['base']) + + + + +.. GENERATED FROM PYTHON SOURCE LINES 42-43 + +Initialize the reader for the survey data. Specify the file path and column mappings. + +.. GENERATED FROM PYTHON SOURCE LINES 43-55 + +.. code-block:: Python + + reader: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_SURVEY"), + columns_map={ + 'depth' : 'md', + 'dip' : 'dip', + 'azimuth': 'azi' + }, + ) + + # Read the survey data into a DataFrame. + df = read_survey(reader) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:80: UserWarning: inc and/or azi columns are not present in the file. The boreholes will be straight. + warnings.warn( + + + + +.. GENERATED FROM PYTHON SOURCE LINES 56-57 + +Create a Survey object from the DataFrame and update it with lithological data. + +.. GENERATED FROM PYTHON SOURCE LINES 57-60 + +.. code-block:: Python + + survey: Survey = Survey.from_df(df) + survey.update_survey_with_lith(lith) + + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + ('cell',) are not coordinates with an index xarray dataset must include 'cell' key (KeyError) or xarray 'cell' has no index (ValueError). + + + + +.. GENERATED FROM PYTHON SOURCE LINES 61-62 + +Initialize the reader for the collar data. Specify the file path, header, and column mappings. + +.. GENERATED FROM PYTHON SOURCE LINES 62-78 + +.. code-block:: Python + + reader_collar: GenericReaderFilesHelper = GenericReaderFilesHelper( + file_or_buffer=os.getenv("PATH_TO_SPREMBERG_COLLAR"), + header=0, + usecols=[0, 1, 2, 4], + columns_map={ + "hole_id" : "id", + "X_GK5_incl_inserted": "x", + "Y__incl_inserted" : "y", + "Z_GK" : "z" + } + ) + + # Read the collar data into a DataFrame and create a Collars object. + df_collar = read_collar(reader_collar) + collar = Collars.from_df(df_collar) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 79-80 + +Combine the collar and survey data into a BoreholeSet. + +.. GENERATED FROM PYTHON SOURCE LINES 80-86 + +.. code-block:: Python + + borehole_set = BoreholeSet( + collars=collar, + survey=survey, + merge_option=MergeOptions.INTERSECT + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 87-88 + +Visualize the borehole trajectories and collars using PyVista. + +.. GENERATED FROM PYTHON SOURCE LINES 88-119 + +.. code-block:: Python + + well_mesh = to_pyvista_line( + line_set=borehole_set.combined_trajectory, + active_scalar="lith_ids", + radius=10 + ) + + collars = to_pyvista_points( + borehole_set.collars.collar_loc, + ) + + # Initialize the PyVista plotter. + pyvista_plotter = init_plotter() + + # Define the units limit for thresholding the well mesh. + units_limit = [0, 20] + + # Add the well mesh and collars to the plotter and display. + pyvista_plotter.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit + ) + + pyvista_plotter.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True + ) + + pyvista_plotter.show() + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_001.png + :alt: 03 model spremberg import + :srcset: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_001.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 120-121 + +Create structural elements from the borehole set for different lithological units. + +.. GENERATED FROM PYTHON SOURCE LINES 121-147 + +.. code-block:: Python + + elements: list[gp.data.StructuralElement] = gp.structural_elements_from_borehole_set( + borehole_set=borehole_set, + elements_dict={ + "Buntsandstein" : { + "id" : 53_300, + "color": "#983999" + }, + "Werra-Anhydrit" : { + "id" : 61_730, + "color": "#00923f" + }, + "Kupfershiefer" : { + "id" : 61_760, + "color": "#da251d" + }, + "Zechsteinkonglomerat": { + "id" : 61_770, + "color": "#f8c300" + }, + "Rotliegend" : { + "id" : 62_000, + "color": "#bb825b" + } + } + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 148-149 + +Group the structural elements into a StructuralGroup and create a StructuralFrame. + +.. GENERATED FROM PYTHON SOURCE LINES 149-159 + +.. code-block:: Python + + group = gp.data.StructuralGroup( + name="Stratigraphic Pile", + elements=elements, + structural_relation=gp.data.StackRelationType.ERODE + ) + structural_frame = gp.data.StructuralFrame( + structural_groups=[group], + color_gen=gp.data.ColorsGenerator() + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 160-161 + +Determine the extent of the geological model from the surface points coordinates. + +.. GENERATED FROM PYTHON SOURCE LINES 161-164 + +.. code-block:: Python + + all_surface_points_coords: gp.data.SurfacePointsTable = structural_frame.surface_points_copy + extent_from_data = all_surface_points_coords.xyz.min(axis=0), all_surface_points_coords.xyz.max(axis=0) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 165-166 + +Create a GeoModel with the specified extent, grid resolution, and interpolation options. + +.. GENERATED FROM PYTHON SOURCE LINES 166-181 + +.. code-block:: Python + + geo_model = gp.data.GeoModel( + name="Stratigraphic Pile", + structural_frame=structural_frame, + grid=gp.data.Grid( + extent=[extent_from_data[0][0], extent_from_data[1][0], extent_from_data[0][1], extent_from_data[1][1], extent_from_data[0][2], extent_from_data[1][2]], + resolution=(50, 50, 50) + ), + interpolation_options=gp.data.InterpolationOptions( + range=5, + c_o=10, + mesh_extraction=True, + number_octree_levels=3, + ), + ) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 182-183 + +Visualize the 3D geological model using GemPy's plot_3d function. + +.. GENERATED FROM PYTHON SOURCE LINES 183-193 + +.. code-block:: Python + + gempy_plot = gpv.plot_3d( + model=geo_model, + kwargs_pyvista_bounds={ + 'show_xlabels': False, + 'show_ylabels': False, + }, + show=True, + image=True + ) + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_002.png + :alt: 03 model spremberg import + :srcset: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_002.png + :class: sphx-glr-single-img + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_003.png + :alt: 03 model spremberg import + :srcset: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_003.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 194-195 + +Combine all visual elements and display them together. + +.. GENERATED FROM PYTHON SOURCE LINES 195-223 + +.. code-block:: Python + + sp_mesh: pyvista.PolyData = gempy_plot.surface_points_mesh + + pyvista_plotter = init_plotter() + pyvista_plotter.show_bounds(all_edges=True) + + pyvista_plotter.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit + ) + + pyvista_plotter.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True + ) + + pyvista_plotter.add_point_labels( + points=collar.collar_loc.points, + labels=collar.ids, + point_size=10, + shape_opacity=0.5, + font_size=12, + bold=True + ) + pyvista_plotter.add_actor(gempy_plot.surface_points_actor) + + pyvista_plotter.show() + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_004.png + :alt: 03 model spremberg import + :srcset: /examples/02_structural_modeling/images/sphx_glr_03_model_spremberg_import_004.png + :class: sphx-glr-single-img + + + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 2.784 seconds) + + +.. _sphx_glr_download_examples_02_structural_modeling_03_model_spremberg_import.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: 03_model_spremberg_import.ipynb <03_model_spremberg_import.ipynb>` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: 03_model_spremberg_import.py <03_model_spremberg_import.py>` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/02_structural_modeling/04_model_spremberg_building.rst.txt b/_sources/examples/02_structural_modeling/04_model_spremberg_building.rst.txt new file mode 100644 index 0000000..63ab787 --- /dev/null +++ b/_sources/examples/02_structural_modeling/04_model_spremberg_building.rst.txt @@ -0,0 +1,508 @@ + +.. DO NOT EDIT. +.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. +.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: +.. "examples/02_structural_modeling/04_model_spremberg_building.py" +.. LINE NUMBERS ARE GIVEN BELOW. + +.. only:: html + + .. note:: + :class: sphx-glr-download-link-note + + :ref:`Go to the end ` + to download the full example code + +.. rst-class:: sphx-glr-example-title + +.. _sphx_glr_examples_02_structural_modeling_04_model_spremberg_building.py: + + +Construct Spremberg: Building initial model +-------------------------------------------- + +This example demonstrates... + +.. GENERATED FROM PYTHON SOURCE LINES 8-17 + +.. code-block:: Python + + + # sphinx_gallery_thumbnail_number = -2 + import numpy as np + + import gempy as gp + import gempy_viewer as gpv + from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points + from vector_geology.model_contructor.spremberg import generate_spremberg_model, get_spremberg_borehole_set, add_wells_plot + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 18-48 + +.. code-block:: Python + + elements_to_gempy = { + "Buntsandstein" : { + "id" : 53_300, + "color": "#983999" + }, + "Werra-Anhydrit" : { + "id" : 61_730, + "color": "#00923f" + }, + # "Kupferschiefer" : { + # "id" : 61_760, + # "color": "#da251d" + # }, + "Zechsteinkonglomerat": { + "id" : 61_770, + "color": "#f8c300" + }, + "Rotliegend" : { + "id" : 62_000, + "color": "#bb825b" + } + } + + spremberg_boreholes = get_spremberg_borehole_set() + geo_model: gp.data.GeoModel = generate_spremberg_model( + borehole_set=spremberg_boreholes, + elements_to_gempy=elements_to_gempy, + plot=False + ) + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_001.png + :alt: 04 model spremberg building + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_001.png + :class: sphx-glr-single-img + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_002.png + :alt: 04 model spremberg building + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_002.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:116: SettingWithCopyWarning: + A value is trying to be set on a copy of a slice from a DataFrame. + Try using .loc[row_indexer,col_indexer] = value instead + + See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy + lith_df['top'] = -np.abs(lith_df['top']) + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:117: SettingWithCopyWarning: + A value is trying to be set on a copy of a slice from a DataFrame. + Try using .loc[row_indexer,col_indexer] = value instead + + See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy + lith_df['base'] = -np.abs(lith_df['base']) + /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:80: UserWarning: inc and/or azi columns are not present in the file. The boreholes will be straight. + warnings.warn( + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment. + ('cell',) are not coordinates with an index xarray dataset must include 'cell' key (KeyError) or xarray 'cell' has no index (ValueError). + + + + +.. GENERATED FROM PYTHON SOURCE LINES 49-50 + +Add one orientation to the model + +.. GENERATED FROM PYTHON SOURCE LINES 50-63 + +.. code-block:: Python + + rotliegend: gp.data.StructuralElement = geo_model.structural_frame.get_element_by_name("Rotliegend") + gp.add_orientations( + geo_model=geo_model, + x=[5_460_077.527386775, 5_450_077.527386775], + y=[5_720_030.2446156405, 5_710_030.2446156405], + z=[-600, -600], + elements_names=["Rotliegend", "Rotliegend"], + pole_vector=[ + np.array([.7, 0.7, 0.2]), + np.array([-1, 0, 0.2]) + ], + ) + + + + + + +.. raw:: html + +
+ + + + + +
Structural Groups: + StructuralGroup: + + + +
Name:Stratigraphic Pile
Structural Relation:StackRelationType.ERODE
Elements: + + + +
StructuralElement:
Name:Buntsandstein
+
+ + + +
StructuralElement:
Name:Werra-Anhydrit
+
+ + + +
StructuralElement:
Name:Zechsteinkonglomerat
+
+ + + +
StructuralElement:
Name:Rotliegend
+
+
Fault Relations:
Stratigrap...
Stratigraphic Pile
+ + + + + +
True
False
+
+ +
+
+
+ +.. GENERATED FROM PYTHON SOURCE LINES 64-74 + +.. code-block:: Python + + pivot = [5_478_256.5, 5_698_528.946534388] + point_2 = [5_483_077.527386775, 5_710_030.2446156405] + point_3 = [5_474_977.5974836275, 5_712_059.373443342] + section_dict = { + 'section1': (pivot, point_2, [100, 100]), + 'section2': (pivot, point_3, [100, 100]), + 'section3': (point_2, point_3, [100, 100]) + } + + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 75-78 + +.. code-block:: Python + + gp.set_section_grid(geo_model.grid, section_dict) + gpv.plot_section_traces(geo_model) + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_003.png + :alt: Cell Number: -1 Direction: z + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_003.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Active grids: GridTypes.NONE|SECTIONS|OCTREE + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 79-93 + +.. code-block:: Python + + _ = gpv.plot_3d( + model=geo_model, + ve=10, + image=True, + transformed_data=True, + kwargs_pyvista_bounds={ + 'show_xlabels': False, + 'show_ylabels': False, + }, + kwargs_plot_data={ + 'arrow_size': 0.001000 + } + ) + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_004.png + :alt: 04 model spremberg building + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_004.png + :class: sphx-glr-single-img + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_005.png + :alt: 04 model spremberg building + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_005.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 94-113 + +.. code-block:: Python + + + # * Ignore curvature for now + geo_model.interpolation_options.kernel_options.range = 3 + geo_model.interpolation_options.compute_scalar_gradient = False + geo_model.interpolation_options.evaluation_options.curvature_threshold = 0.4 + geo_model.interpolation_options.evaluation_options.number_octree_levels_surface = 5 + + geo_model.interpolation_options.evaluation_options.error_threshold = 1 + geo_model.interpolation_options.evaluation_options.verbose = True + + + gp.compute_model( + gempy_model=geo_model, + engine_config=gp.data.GemPyEngineConfig( + backend=gp.data.AvailableBackends.PYTORCH, + dtype="float64", + ) + ) + + + + +.. rst-class:: sphx-glr-horizontal + + + * + + .. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_006.png + :alt: Voxel Scalar Values with Refinement Status + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_006.png + :class: sphx-glr-multi-img + + * + + .. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_007.png + :alt: Voxel Scalar Values with Refinement Status + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_007.png + :class: sphx-glr-multi-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Setting Backend To: AvailableBackends.PYTORCH + Chunking done: 17 chunks + Number of voxels marked by stats: 407 of torch.Size([512]). + Number of voxels marked by corners : 245 + Total voxels: 407 + Dense Grid would be 512 voxels + Chunking done: 15 chunks + Number of voxels marked by stats: 1677 of torch.Size([3472]). + Number of voxels marked by corners : 1308 + Total voxels: 1677 + Dense Grid would be 4096 voxels + Chunking done: 8 chunks + Chunking done: 63 chunks + Chunking done: 26 chunks + + +.. raw:: html + +
+ Solutions: 5 Octree Levels, 4 DualContouringMeshes +
+
+
+ +.. GENERATED FROM PYTHON SOURCE LINES 114-121 + +.. code-block:: Python + + gpv.plot_2d( + model=geo_model, + figsize=(15, 15), + ve=10, + section_names=['section1', 'section2', 'section3'] + ) + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_008.png + :alt: section1, section2, section3 + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_008.png + :class: sphx-glr-single-img + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:105: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid + warnings.warn( + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 122-170 + +.. code-block:: Python + + gempy_plot = gpv.plot_3d( + model=geo_model, + show_lith=False, + ve=10, + show=False, + image=False, + transformed_data=False, + kwargs_pyvista_bounds={ + 'show_xlabels': True, + 'show_ylabels': True, + 'show_zlabels': False, + }, + kwargs_plot_data={ + 'arrow_size': 100.001000 + } + ) + + well_mesh = to_pyvista_line( + line_set=spremberg_boreholes.combined_trajectory, + active_scalar="lith_ids", + radius=10 + ) + units_limit = [0, 20] + collars = to_pyvista_points(spremberg_boreholes.collars.collar_loc) + gempy_plot.p.add_mesh( + well_mesh.threshold(units_limit), + cmap="tab20c", + clim=units_limit + ) + + gempy_plot.p.add_mesh( + collars, + point_size=10, + render_points_as_spheres=True + ) + + gempy_plot.p.add_point_labels( + points=spremberg_boreholes.collars.collar_loc.points, + labels=spremberg_boreholes.collars.ids, + point_size=3, + shape_opacity=0.5, + font_size=12, + bold=True + ) + + gempy_plot.p.show() + + + + + +.. image-sg:: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_009.png + :alt: 04 model spremberg building + :srcset: /examples/02_structural_modeling/images/sphx_glr_04_model_spremberg_building_009.png + :class: sphx-glr-single-img + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 171-179 + +LiquidEarth Integration +~~~~~~~~~~~~~~~~~~~~~~~ +Beyond the classical plotting capabilities introduced in GemPy v3, users can now also upload models to LiquidEarth. +`LiquidEarth `_ is a collaborative platform designed for 3D visualization, +developed by many of the main `gempy` maintainers, with a strong focus on collaboration and sharing. +This makes it an excellent tool for sharing your models with others and viewing them across different platforms. +To upload a model to LiquidEarth, you must have an account and a user token. Once your model is uploaded, +you can easily share the link with anyone. + +.. GENERATED FROM PYTHON SOURCE LINES 179-191 + +.. code-block:: Python + + + # # %% + if True: + link = gpv.plot_to_liquid_earth( + geo_model=geo_model, + space_name="Spremberg", + file_name="gempy_model", + user_token=None, # If None, it will try to grab it from the environment + grab_link=True, + ) + + print(f"Generated Link: {link}") + + + + +.. rst-class:: sphx-glr-script-out + + .. code-block:: none + + Generated Link: https://liquidearth.app.link/4a7b5726-6ccd-4453-94d7-a9bbe72152a8 + + + + + +.. rst-class:: sphx-glr-timing + + **Total running time of the script:** (0 minutes 52.865 seconds) + + +.. _sphx_glr_download_examples_02_structural_modeling_04_model_spremberg_building.py: + +.. only:: html + + .. container:: sphx-glr-footer sphx-glr-footer-example + + .. container:: sphx-glr-download sphx-glr-download-jupyter + + :download:`Download Jupyter notebook: 04_model_spremberg_building.ipynb <04_model_spremberg_building.ipynb>` + + .. container:: sphx-glr-download sphx-glr-download-python + + :download:`Download Python source code: 04_model_spremberg_building.py <04_model_spremberg_building.py>` + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/_sources/examples/02_structural_modeling/index.rst.txt b/_sources/examples/02_structural_modeling/index.rst.txt index 305b178..07f5c1a 100644 --- a/_sources/examples/02_structural_modeling/index.rst.txt +++ b/_sources/examples/02_structural_modeling/index.rst.txt @@ -57,6 +57,40 @@ Prepare to enhance your understanding and skills in geological modeling with a f +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/02_structural_modeling/images/thumb/sphx_glr_03_model_spremberg_import_thumb.png + :alt: + + :ref:`sphx_glr_examples_02_structural_modeling_03_model_spremberg_import.py` + +.. raw:: html + +
Construct Spremberg: Importing borehole data
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/02_structural_modeling/images/thumb/sphx_glr_04_model_spremberg_building_thumb.png + :alt: + + :ref:`sphx_glr_examples_02_structural_modeling_04_model_spremberg_building.py` + +.. raw:: html + +
Construct Spremberg: Building initial model
+
+ + .. raw:: html @@ -67,4 +101,6 @@ Prepare to enhance your understanding and skills in geological modeling with a f /examples/02_structural_modeling/01_model_1_gempy_step_by_step /examples/02_structural_modeling/02_model_1_gempy + /examples/02_structural_modeling/03_model_spremberg_import + /examples/02_structural_modeling/04_model_spremberg_building diff --git a/_sources/examples/02_structural_modeling/sg_execution_times.rst.txt b/_sources/examples/02_structural_modeling/sg_execution_times.rst.txt index f1668d6..eef8dc3 100644 --- a/_sources/examples/02_structural_modeling/sg_execution_times.rst.txt +++ b/_sources/examples/02_structural_modeling/sg_execution_times.rst.txt @@ -6,10 +6,41 @@ Computation times ================= -**00:03.922** total execution time for **examples_02_structural_modeling** files: +**00:52.865** total execution time for 4 files **from examples/02_structural_modeling**: -+-------------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_02_structural_modeling_01_model_1_gempy_step_by_step.py` (``01_model_1_gempy_step_by_step.py``) | 00:03.922 | 0.0 MB | -+-------------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_02_structural_modeling_02_model_1_gempy.py` (``02_model_1_gempy.py``) | 00:00.000 | 0.0 MB | -+-------------------------------------------------------------------------------------------------------------------------+-----------+--------+ +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_02_structural_modeling_04_model_spremberg_building.py` (``04_model_spremberg_building.py``) + - 00:52.865 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_01_model_1_gempy_step_by_step.py` (``01_model_1_gempy_step_by_step.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_02_model_1_gempy.py` (``02_model_1_gempy.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_03_model_spremberg_import.py` (``03_model_spremberg_import.py``) + - 00:00.000 + - 0.0 diff --git a/_sources/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst.txt b/_sources/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst.txt index 573ce15..b6a8aa4 100644 --- a/_sources/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst.txt +++ b/_sources/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst.txt @@ -740,86 +740,86 @@ The inversion is executed using the initialized settings. SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv. ***Done using the default solver SolverLU and no solver_opts.*** - Alpha scales: [410030855.8629278, 0.0, 423924847.8682445, 0.0, 221301.76852332294, 0.0] + Alpha scales: [450539987.2319715, 0.0, 450331911.77148, 0.0, 252496.71182171933, 0.0] - SimPEG.SaveOutputEveryIteration will save your inversion progress as: '###-Ireland_FTG-2024-01-26-10-56.txt' - SimPEG.SaveModelEveryIteration will save your models as: './Ireland_FTG/Model Iterations/###-Ireland_FTG-2024-01-26-10-56.npy' + SimPEG.SaveOutputEveryIteration will save your inversion progress as: '###-Ireland_FTG-2024-06-12-11-31.txt' + SimPEG.SaveModelEveryIteration will save your models as: './Ireland_FTG/Model Iterations/###-Ireland_FTG-2024-06-12-11-31.npy' model has any nan: 0 =============================== Projected GNCG =============================== # beta phi_d phi_m f |proj(x-g)-x| LS Comment ----------------------------------------------------------------------------- x0 has any nan: 0 - 0 5.50e-11 1.76e+04 0.00e+00 1.76e+04 2.82e+02 0 - geophys. misfits: 7363.5 (target 7492.5 [True]) | smallness misfit: 53932.6 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [7363.5]; minimum progress targets: [14114.6] - Warming alpha_pgi to favor clustering: 0.0001017520433220537 - mref changed in 46923 places - 1 5.50e-11 7.36e+03 2.93e+12 7.52e+03 2.40e+02 0 - geophys. misfits: 2878.4 (target 7492.5 [True]) | smallness misfit: 56886.0 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [2878.4]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.00026486260428953257 - mref changed in 24033 places - 2 5.50e-11 2.88e+03 2.82e+12 3.03e+03 1.76e+02 0 - geophys. misfits: 1902.3 (target 7492.5 [True]) | smallness misfit: 59150.1 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1902.3]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.0010432238094228118 - mref changed in 13728 places - 3 5.50e-11 1.90e+03 2.90e+12 2.06e+03 1.25e+02 0 Skip BFGS - geophys. misfits: 1377.6 (target 7492.5 [True]) | smallness misfit: 60406.7 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1377.6]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.005673861421188311 - mref changed in 9162 places - 4 5.50e-11 1.38e+03 2.90e+12 1.54e+03 8.08e+01 0 - geophys. misfits: 1370.3 (target 7492.5 [True]) | smallness misfit: 60168.8 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1370.3]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.031023047077501028 - mref changed in 1935 places - 5 5.50e-11 1.37e+03 2.88e+12 1.53e+03 1.12e+02 2 Skip BFGS - geophys. misfits: 1367.2 (target 7492.5 [True]) | smallness misfit: 60140.0 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1367.2]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.1700062887019205 - mref changed in 493 places - 6 5.50e-11 1.37e+03 2.88e+12 1.53e+03 1.15e+02 4 Skip BFGS - geophys. misfits: 1323.8 (target 7492.5 [True]) | smallness misfit: 60296.1 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1323.8]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 0.9622012648565086 - mref changed in 1397 places - 7 5.50e-11 1.32e+03 2.86e+12 1.48e+03 1.00e+02 2 Skip BFGS - geophys. misfits: 1245.7 (target 7492.5 [True]) | smallness misfit: 61068.6 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1245.7]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 5.787288226899011 - mref changed in 5580 places - 8 5.50e-11 1.25e+03 2.92e+12 1.41e+03 6.00e+01 0 - geophys. misfits: 1241.2 (target 7492.5 [True]) | smallness misfit: 61073.9 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1241.2]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 34.93527456181403 - mref changed in 510 places - 9 5.50e-11 1.24e+03 3.02e+12 1.41e+03 6.36e+01 3 Skip BFGS - geophys. misfits: 1234.0 (target 7492.5 [True]) | smallness misfit: 61269.3 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1234.]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 212.1246047516577 - mref changed in 306 places - 10 5.50e-11 1.23e+03 3.66e+12 1.44e+03 6.63e+01 3 - geophys. misfits: 1215.3 (target 7492.5 [True]) | smallness misfit: 68474.0 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1215.3]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 1307.8129600116547 - mref changed in 153 places - 11 5.50e-11 1.22e+03 8.38e+12 1.68e+03 5.77e+01 1 Skip BFGS - geophys. misfits: 1206.7 (target 7492.5 [True]) | smallness misfit: 67958.3 (target: 44885.0 [False]) - Beta cooling evaluation: progress: [1206.7]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 8120.550411338 - mref changed in 11 places - 12 5.50e-11 1.21e+03 4.07e+13 3.44e+03 2.13e+02 0 - geophys. misfits: 1463.9 (target 7492.5 [True]) | smallness misfit: 43152.9 (target: 44885.0 [True]) + 0 5.16e-11 1.76e+04 0.00e+00 1.76e+04 2.82e+02 0 + geophys. misfits: 7371.6 (target 7492.5 [True]) | smallness misfit: 53906.0 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [7371.6]; minimum progress targets: [14114.6] + Warming alpha_pgi to favor clustering: 0.00010163944435366406 + mref changed in 46847 places + 1 5.16e-11 7.37e+03 3.14e+12 7.53e+03 2.40e+02 0 + geophys. misfits: 2838.5 (target 7492.5 [True]) | smallness misfit: 56935.5 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [2838.5]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 0.000268289722030569 + mref changed in 24087 places + 2 5.16e-11 2.84e+03 3.03e+12 2.99e+03 1.75e+02 0 + geophys. misfits: 1905.4 (target 7492.5 [True]) | smallness misfit: 59195.7 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1905.4]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 0.0010549908997251215 + mref changed in 13874 places + 3 5.16e-11 1.91e+03 3.11e+12 2.07e+03 1.25e+02 0 Skip BFGS + geophys. misfits: 1372.4 (target 7492.5 [True]) | smallness misfit: 60354.0 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1372.4]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 0.005759570489988677 + mref changed in 8966 places + 4 5.16e-11 1.37e+03 3.11e+12 1.53e+03 7.93e+01 0 + geophys. misfits: 1272.3 (target 7492.5 [True]) | smallness misfit: 60282.9 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1272.3]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 0.03391664568403566 + mref changed in 911 places + 5 5.16e-11 1.27e+03 3.10e+12 1.43e+03 7.56e+01 3 Skip BFGS + geophys. misfits: 1267.5 (target 7492.5 [True]) | smallness misfit: 60283.2 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1267.5]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 0.20048874090982202 + mref changed in 505 places + 6 5.16e-11 1.27e+03 3.09e+12 1.43e+03 7.91e+01 4 Skip BFGS + geophys. misfits: 1262.7 (target 7492.5 [True]) | smallness misfit: 60177.5 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1262.7]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 1.1896358760296895 + mref changed in 770 places + 7 5.16e-11 1.26e+03 3.09e+12 1.42e+03 8.12e+01 3 Skip BFGS + geophys. misfits: 1256.3 (target 7492.5 [True]) | smallness misfit: 60322.2 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1256.3]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 7.095110291995982 + mref changed in 1257 places + 8 5.16e-11 1.26e+03 3.11e+12 1.42e+03 7.58e+01 2 Skip BFGS + geophys. misfits: 1229.7 (target 7492.5 [True]) | smallness misfit: 60662.4 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1229.7]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 43.22879746069664 + mref changed in 838 places + 9 5.16e-11 1.23e+03 3.23e+12 1.40e+03 5.95e+01 2 + geophys. misfits: 1228.5 (target 7492.5 [True]) | smallness misfit: 61694.0 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1228.5]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 263.6454125573714 + mref changed in 240 places + 10 5.16e-11 1.23e+03 4.05e+12 1.44e+03 4.98e+01 2 Skip BFGS + geophys. misfits: 1221.9 (target 7492.5 [True]) | smallness misfit: 71285.7 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1221.9]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 1616.6169674812083 + mref changed in 256 places + 11 5.16e-11 1.22e+03 1.05e+13 1.77e+03 6.99e+01 0 + geophys. misfits: 1250.7 (target 7492.5 [True]) | smallness misfit: 60283.1 (target: 44885.0 [False]) + Beta cooling evaluation: progress: [1250.7]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 9684.855466686517 + mref changed in 68 places + 12 5.16e-11 1.25e+03 4.23e+13 3.43e+03 2.30e+02 0 + geophys. misfits: 1487.9 (target 7492.5 [True]) | smallness misfit: 33779.6 (target: 44885.0 [True]) All targets have been reached - Beta cooling evaluation: progress: [1463.9]; minimum progress targets: [8991.] - Warming alpha_pgi to favor clustering: 41561.559728045744 - mref changed in 31 places + Beta cooling evaluation: progress: [1487.9]; minimum progress targets: [8991.] + Warming alpha_pgi to favor clustering: 48768.36025676174 + mref changed in 75 places ------------------------- STOP! ------------------------- 1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 1.7644e+03 - 0 : |xc-x_last| = 1.1471e+01 <= tolX*(1+|x0|) = 1.0000e-01 - 0 : |proj(x-g)-x| = 2.0926e+02 <= tolG = 1.0000e-01 - 0 : |proj(x-g)-x| = 2.0926e+02 <= 1e3*eps = 1.0000e-02 + 0 : |xc-x_last| = 1.1970e+01 <= tolX*(1+|x0|) = 1.0000e-01 + 0 : |proj(x-g)-x| = 2.2712e+02 <= tolG = 1.0000e-01 + 0 : |proj(x-g)-x| = 2.2712e+02 <= 1e3*eps = 1.0000e-02 0 : maxIter = 20 <= iter = 13 ------------------------- DONE! ------------------------- @@ -1022,7 +1022,7 @@ The updated GMM, learned through the inversion, is visualized. .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 10 minutes 14.392 seconds) + **Total running time of the script:** ( 10 minutes 3.217 seconds) .. _sphx_glr_download_examples_03_forward_engines_01_gravity_gradiometry_inversion_pgi.py: diff --git a/_sources/examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst.txt b/_sources/examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst.txt index 3e72e17..d4a509b 100644 --- a/_sources/examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst.txt +++ b/_sources/examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst.txt @@ -26,7 +26,7 @@ It utilizes libraries such as GemPy, NumPy, and others to handle and process geo .. GENERATED FROM PYTHON SOURCE LINES 9-25 -.. code-block:: default +.. code-block:: Python import os @@ -57,7 +57,7 @@ Start the timer to measure the execution time of the script .. GENERATED FROM PYTHON SOURCE LINES 27-29 -.. code-block:: default +.. code-block:: Python start_time = time.time() @@ -75,7 +75,7 @@ This step reads configurations from a .env file, crucial for setting up file pat .. GENERATED FROM PYTHON SOURCE LINES 32-35 -.. code-block:: default +.. code-block:: Python config = dotenv_values() path = config.get("PATH_TO_MODEL_1_Subsurface") @@ -94,7 +94,7 @@ These will be used to build the model using GemPy. .. GENERATED FROM PYTHON SOURCE LINES 38-42 -.. code-block:: default +.. code-block:: Python structural_elements = [] global_extent = None @@ -114,7 +114,7 @@ This loop reads and processes each .nc file to extract necessary data for the mo .. GENERATED FROM PYTHON SOURCE LINES 45-52 -.. code-block:: default +.. code-block:: Python for filename in os.listdir(path): base, ext = os.path.splitext(filename) @@ -137,7 +137,7 @@ Here, the model is initialized with the processed data. .. GENERATED FROM PYTHON SOURCE LINES 55-62 -.. code-block:: default +.. code-block:: Python geo_model = initialize_geo_model( structural_elements=structural_elements, @@ -154,7 +154,9 @@ Here, the model is initialized with the processed data. .. code-block:: none - Active grids: ['regular' 'topography'] + /home/leguark/gempy/gempy/core/data/structural_frame.py:188: UserWarning: The basement color was already used in the structural elements.Changing the basement color to #015482. + warnings.warn(f"The basement color was already used in the structural elements." + Active grids: GridTypes.NONE|TOPOGRAPHY|DENSE @@ -166,7 +168,7 @@ It's always good practice to verify the model's initialization. .. GENERATED FROM PYTHON SOURCE LINES 65-67 -.. code-block:: default +.. code-block:: Python print(geo_model) @@ -178,8 +180,39 @@ It's always good practice to verify the model's initialization. .. code-block:: none - {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': , derivative_div_r=, second_derivative=, consume_sq_distance=False)>, 'kernel_solver': , 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, number_octree_levels=6, current_octree_level=0, compute_scalar_gradient=False, mesh_extraction=True, mesh_extraction_masking_options=MeshExtractionMaskingOptions.INTERSECT, mesh_extraction_fancy=True, debug=True, debug_water_tight=False, sigmoid_slope=50000, _number_octree_levels_surface=4, _model_name=None), - 'grid': , + {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': , derivative_div_r=, second_derivative=, consume_sq_distance=False)>, 'kernel_solver': , 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, evaluation_options={'_number_octree_levels': 5, '_number_octree_levels_surface': 4, 'curvature_threshold': -1, 'error_threshold': 1.5, 'min_octree_level': 2, 'mesh_extraction': True, 'mesh_extraction_masking_options': , 'mesh_extraction_fancy': True, 'evaluation_chunk_size': 5000000, 'compute_scalar_gradient': False, 'verbose': False}, temp_interpolation_values=, debug=True, cache_mode=CacheMode.IN_MEMORY_CACHE, cache_model_name=, block_solutions_type=BlockSolutionType.OCTREE, sigmoid_slope=50000, debug_water_tight=False), + 'grid': Grid(_octree_grid=None, + _dense_grid=RegularGrid(resolution=array([20, 10, 20]), + extent=array([ 5.59902830e+05, 5.64955682e+05, 6.44278260e+05, 6.50608735e+05, + -1.75340000e+03, 1.60326604e+02]), + values=array([[ 5.60029151e+05, 6.44594784e+05, -1.70555683e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.60987050e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.51418417e+03], + ..., + [ 5.64829361e+05, 6.50292212e+05, -7.88892213e+01], + [ 5.64829361e+05, 6.50292212e+05, 1.67971089e+01], + [ 5.64829361e+05, 6.50292212e+05, 1.12483439e+02]]), + mask_topo=array([], shape=(0, 3), dtype=bool), + _transform=None), + _custom_grid=None, + _topography=, + _sections=None, + _centered_grid=None, + values=array([[ 5.60029151e+05, 6.44594784e+05, -1.70555683e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.60987050e+03], + [ 5.60029151e+05, 6.44594784e+05, -1.51418417e+03], + ..., + [ 5.64955682e+05, 6.49201963e+05, 1.06993262e+02], + [ 5.64955682e+05, 6.49905349e+05, 8.89864414e+01], + [ 5.64955682e+05, 6.50608735e+05, 7.05702308e+01]]), + length=array([], dtype=float64), + _transform=None, + _octree_levels=-1), + 'input_transform': {'_cached_pivot': None, + '_is_default_transform': False, + 'position': array([-562422.65655014, -647329.31794742, 823.58712106]), + 'rotation': array([0., 0., 0.]), + 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])}, 'meta': GeoModelMeta(name='Tutorial_ch1_1_Basics', creation_date=None, last_modification_date=None, @@ -227,11 +260,7 @@ It's always good practice to verify the model's initialization. fault_relations= [[False, False], [False, False]], - , - 'transform': {'_is_default_transform': False, - 'position': array([-562422.65655014, -647329.31794742, 823.58712106]), - 'rotation': array([0., 0., 0.]), - 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])}} + } @@ -243,7 +272,7 @@ This data is used for geophysical calculations later in the script. .. GENERATED FROM PYTHON SOURCE LINES 70-76 -.. code-block:: default +.. code-block:: Python df = pd.read_csv( filepath_or_buffer=config.get("PATH_TO_MODEL_1_BOUGUER"), @@ -265,7 +294,7 @@ This step ensures we use the relevant subset of the data. .. GENERATED FROM PYTHON SOURCE LINES 79-82 -.. code-block:: default +.. code-block:: Python df = df[df['X'] < 565000] interesting_columns = df[['X', 'Y', 'Bouguer_267_complete']] @@ -284,7 +313,7 @@ Configuring interpolation is crucial for accurate geological modeling. .. GENERATED FROM PYTHON SOURCE LINES 85-91 -.. code-block:: default +.. code-block:: Python interpolation_options = geo_model.interpolation_options interpolation_options.mesh_extraction = True @@ -306,7 +335,7 @@ This visualization helps in understanding the spatial distribution of the data. .. GENERATED FROM PYTHON SOURCE LINES 94-105 -.. code-block:: default +.. code-block:: Python plot2d = gpv.plot_2d(geo_model, show_topography=True, section_names=["topography"], show=False) plot2d.axes[0].scatter( @@ -338,7 +367,7 @@ Monitoring execution time is useful for performance optimization. .. GENERATED FROM PYTHON SOURCE LINES 108-112 -.. code-block:: default +.. code-block:: Python end_time = time.time() execution_time = end_time - start_time @@ -352,7 +381,7 @@ Monitoring execution time is useful for performance optimization. .. code-block:: none - The function executed in 2.534396171569824 seconds. + The function executed in 2.5401320457458496 seconds. @@ -364,7 +393,7 @@ This 3D view provides a comprehensive perspective of the model's structure. .. GENERATED FROM PYTHON SOURCE LINES 115-122 -.. code-block:: default +.. code-block:: Python gempy_vista = gpv.plot_3d( model=geo_model, @@ -397,7 +426,7 @@ Configuring the data correctly is key for accurate gravity calculations. .. GENERATED FROM PYTHON SOURCE LINES 125-128 -.. code-block:: default +.. code-block:: Python device_location = interesting_columns[['X', 'Y']] device_location['Z'] = 0 # Add a Z-coordinate @@ -416,7 +445,7 @@ This grid will be used for gravity gradient calculations. .. GENERATED FROM PYTHON SOURCE LINES 131-138 -.. code-block:: default +.. code-block:: Python gp.set_centered_grid( grid=geo_model.grid, @@ -433,7 +462,7 @@ This grid will be used for gravity gradient calculations. .. code-block:: none - Active grids: ['regular' 'topography' 'centered'] + Active grids: GridTypes.NONE|CENTERED|TOPOGRAPHY|DENSE CenteredGrid(centers=array([[563661.087, 648441.046, 0. ], [563669.585, 648272.032, 0. ], @@ -480,7 +509,7 @@ This is necessary for integrating GemPy with PyTorch. .. GENERATED FROM PYTHON SOURCE LINES 141-143 -.. code-block:: default +.. code-block:: Python BackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH, dtype="float64") @@ -504,7 +533,7 @@ Gravity gradient data is critical for geophysical modeling and inversion. .. GENERATED FROM PYTHON SOURCE LINES 146-148 -.. code-block:: default +.. code-block:: Python gravity_gradient = gp.calculate_gravity_gradient(geo_model.grid.centered_grid) @@ -522,7 +551,7 @@ Densities are a fundamental part of the gravity modeling process. .. GENERATED FROM PYTHON SOURCE LINES 151-154 -.. code-block:: default +.. code-block:: Python densities_tensor = BackendTensor.t.array([2.61, 2.92, 3.1, 2.92, 2.61, 2.61]) densities_tensor.requires_grad = True @@ -541,7 +570,7 @@ Configuring this input is crucial for the forward gravity calculation. .. GENERATED FROM PYTHON SOURCE LINES 157-162 -.. code-block:: default +.. code-block:: Python geo_model.geophysics_input = gp.data.GeophysicsInput( tz=BackendTensor.t.array(gravity_gradient), @@ -562,7 +591,7 @@ This computation integrates the geological model with gravity data. .. GENERATED FROM PYTHON SOURCE LINES 165-175 -.. code-block:: default +.. code-block:: Python sol = gp.compute_model( gempy_model=geo_model, @@ -583,10 +612,7 @@ This computation integrates the geological model with gravity data. .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - /home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten - warnings.warn( - Final Iteration 97, Residual Norm: 1.0748418744916176e-07 - Final Iteration 48, Residual Norm: 6.902783759210787e-08 + Chunking done: 6 chunks @@ -598,7 +624,7 @@ The gradient data can provide insights into the density distribution. .. GENERATED FROM PYTHON SOURCE LINES 178-180 -.. code-block:: default +.. code-block:: Python print(densities_tensor.grad) @@ -610,7 +636,7 @@ The gradient data can provide insights into the density distribution. .. code-block:: none - tensor([7.8962e-03, 1.9249e-01, 1.1377e+00, 8.1251e-01, 1.3353e+01, 1.5283e+02]) + tensor([7.8962e-03, 1.9249e-01, 1.1455e+00, 9.8152e-01, 1.3207e+01, 1.5280e+02]) @@ -622,7 +648,7 @@ These calculations align the model's gravity data with observed values. .. GENERATED FROM PYTHON SOURCE LINES 183-188 -.. code-block:: default +.. code-block:: Python s, c = calculate_scale_shift( a=interesting_columns["Bouguer_267_complete"].values, @@ -643,7 +669,7 @@ Understanding these values is important for interpreting the results. .. GENERATED FROM PYTHON SOURCE LINES 191-194 -.. code-block:: default +.. code-block:: Python print("Scale (s):", s) print("Shift (c):", c) @@ -656,8 +682,8 @@ Understanding these values is important for interpreting the results. .. code-block:: none - Scale (s): 0.649859429120498 - Shift (c): 437.07950910565876 + Scale (s): 0.6781754018106533 + Shift (c): 436.951602077492 @@ -669,7 +695,7 @@ This step adjusts the model's gravity data to match observed values. .. GENERATED FROM PYTHON SOURCE LINES 197-200 -.. code-block:: default +.. code-block:: Python adapted_grav = s * interesting_columns["Bouguer_267_complete"] + c diff = adapted_grav - grav.detach().numpy() @@ -688,7 +714,7 @@ This visualization helps in comparing the model's gravity data with observations .. GENERATED FROM PYTHON SOURCE LINES 203-214 -.. code-block:: default +.. code-block:: Python plot2d = gpv.plot_2d(geo_model, show_topography=True, section_names=["topography"], show=False) plot2d.axes[0].scatter( @@ -714,7 +740,7 @@ This visualization helps in comparing the model's gravity data with observations .. code-block:: none - /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:104: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid + /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:105: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid warnings.warn( @@ -727,7 +753,7 @@ This step ensures a balanced color representation of positive and negative diffe .. GENERATED FROM PYTHON SOURCE LINES 217-220 -.. code-block:: default +.. code-block:: Python max_diff = np.max(np.abs(diff)) # Get the maximum absolute value from diff vmin, vmax = -max_diff, max_diff # Set vmin and vmax @@ -746,7 +772,7 @@ This plot highlights the discrepancies between the model and observed data. .. GENERATED FROM PYTHON SOURCE LINES 223-238 -.. code-block:: default +.. code-block:: Python plot2d = gpv.plot_2d(geo_model, show_topography=True, section_names=["topography"], show=False) sc = plot2d.axes[0].scatter( @@ -776,7 +802,7 @@ This plot highlights the discrepancies between the model and observed data. .. code-block:: none - /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:104: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid + /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:105: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid warnings.warn( @@ -785,7 +811,7 @@ This plot highlights the discrepancies between the model and observed data. .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 7.933 seconds) + **Total running time of the script:** (0 minutes 18.998 seconds) .. _sphx_glr_download_examples_03_forward_engines_02_model_1_gempy_fw_gravity.py: @@ -794,17 +820,14 @@ This plot highlights the discrepancies between the model and observed data. .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 02_model_1_gempy_fw_gravity.ipynb <02_model_1_gempy_fw_gravity.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 02_model_1_gempy_fw_gravity.py <02_model_1_gempy_fw_gravity.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 02_model_1_gempy_fw_gravity.ipynb <02_model_1_gempy_fw_gravity.ipynb>` - .. only:: html diff --git a/_sources/examples/03_forward_engines/03_HSI_To_Petrophysics.rst.txt b/_sources/examples/03_forward_engines/03_HSI_To_Petrophysics.rst.txt index d407cb0..624e308 100644 --- a/_sources/examples/03_forward_engines/03_HSI_To_Petrophysics.rst.txt +++ b/_sources/examples/03_forward_engines/03_HSI_To_Petrophysics.rst.txt @@ -129,7 +129,7 @@ The `hklearn` package, designed to handle hyperspectral data, is used to organiz .. code-block:: none - Removing hull: 0%| | 0/3771 [00:00 - +
- - - + + + - - - - + + + + - - - - + + + +
 train set5-fold CVtest settrain set5-fold CVtest set
Linear0.6860.6620.614Linear0.6860.6620.614
MLP0.8760.8220.695MLP0.8740.8320.759
@@ -293,7 +293,7 @@ Finally, the trained models are scored and evaluated. The `Stack.get_score_table .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 0 minutes 34.561 seconds) + **Total running time of the script:** ( 0 minutes 35.813 seconds) .. _sphx_glr_download_examples_03_forward_engines_03_HSI_To_Petrophysics.py: diff --git a/_sources/examples/03_forward_engines/sg_execution_times.rst.txt b/_sources/examples/03_forward_engines/sg_execution_times.rst.txt index d9c948f..830d15b 100644 --- a/_sources/examples/03_forward_engines/sg_execution_times.rst.txt +++ b/_sources/examples/03_forward_engines/sg_execution_times.rst.txt @@ -6,12 +6,38 @@ Computation times ================= -**10:14.392** total execution time for **examples_03_forward_engines** files: - -+-----------------------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_03_forward_engines_01_gravity_gradiometry_inversion_pgi.py` (``01_gravity_gradiometry_inversion_pgi.py``) | 10:14.392 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_03_forward_engines_02_model_1_gempy_fw_gravity.py` (``02_model_1_gempy_fw_gravity.py``) | 00:00.000 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_03_forward_engines_03_HSI_To_Petrophysics.py` (``03_HSI_To_Petrophysics.py``) | 00:00.000 | 0.0 MB | -+-----------------------------------------------------------------------------------------------------------------------------------+-----------+--------+ +**00:18.998** total execution time for 3 files **from examples/03_forward_engines**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_03_forward_engines_02_model_1_gempy_fw_gravity.py` (``02_model_1_gempy_fw_gravity.py``) + - 00:18.998 + - 0.0 + * - :ref:`sphx_glr_examples_03_forward_engines_01_gravity_gradiometry_inversion_pgi.py` (``01_gravity_gradiometry_inversion_pgi.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_03_forward_engines_03_HSI_To_Petrophysics.py` (``03_HSI_To_Petrophysics.py``) + - 00:00.000 + - 0.0 diff --git a/_sources/examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst.txt b/_sources/examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst.txt index 28732da..0bc4979 100644 --- a/_sources/examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst.txt +++ b/_sources/examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst.txt @@ -26,7 +26,7 @@ Complex probabilistic model .. GENERATED FROM PYTHON SOURCE LINES 8-26 -.. code-block:: default +.. code-block:: Python import os @@ -55,11 +55,30 @@ Complex probabilistic model .. GENERATED FROM PYTHON SOURCE LINES 27-28 +Config + +.. GENERATED FROM PYTHON SOURCE LINES 28-32 + +.. code-block:: Python + + seed = 123456 + torch.manual_seed(seed) + pyro.set_rng_seed(seed) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 33-34 + Set the data path -.. GENERATED FROM PYTHON SOURCE LINES 28-31 +.. GENERATED FROM PYTHON SOURCE LINES 34-37 -.. code-block:: default +.. code-block:: Python data_path = os.path.abspath('../') @@ -71,13 +90,13 @@ Set the data path -.. GENERATED FROM PYTHON SOURCE LINES 32-33 +.. GENERATED FROM PYTHON SOURCE LINES 38-39 Define a function for plotting geological settings with wells -.. GENERATED FROM PYTHON SOURCE LINES 33-59 +.. GENERATED FROM PYTHON SOURCE LINES 39-65 -.. code-block:: default +.. code-block:: Python def plot_geo_setting_well(geo_model): """ @@ -112,23 +131,23 @@ Define a function for plotting geological settings with wells -.. GENERATED FROM PYTHON SOURCE LINES 60-64 +.. GENERATED FROM PYTHON SOURCE LINES 66-70 Creating the Geological Model ----------------------------- Here we create a geological model using GemPy. The model defines the spatial extent, resolution, and geological information derived from orientations and surface points data. -.. GENERATED FROM PYTHON SOURCE LINES 64-77 +.. GENERATED FROM PYTHON SOURCE LINES 70-83 -.. code-block:: default +.. code-block:: Python geo_model = gp.create_geomodel( project_name='Wells', extent=[0, 12000, -500, 500, 0, 4000], resolution=[100, 2, 100], - refinement=1, + # refinement=1, importer_helper=gp.data.ImporterHelper( path_to_orientations=data_path + "/data/2-layers/2-layers_orientations.csv", path_to_surface_points=data_path + "/data/2-layers/2-layers_surface_points.csv" @@ -143,21 +162,21 @@ resolution, and geological information derived from orientations and surface poi -.. GENERATED FROM PYTHON SOURCE LINES 78-82 +.. GENERATED FROM PYTHON SOURCE LINES 84-88 Configuring the Model --------------------- We configure the interpolation options for the geological model. These options determine how the model interpolates between data points. -.. GENERATED FROM PYTHON SOURCE LINES 82-87 +.. GENERATED FROM PYTHON SOURCE LINES 88-93 -.. code-block:: default +.. code-block:: Python geo_model.interpolation_options.uni_degree = 0 geo_model.interpolation_options.mesh_extraction = False - geo_model.interpolation_options.sigmoid_slope = 1100. + geo_model.interpolation_options.sigmoid_slope = -1 # ! Temporary fix to set the hard sigmoid @@ -166,16 +185,16 @@ These options determine how the model interpolates between data points. -.. GENERATED FROM PYTHON SOURCE LINES 88-92 +.. GENERATED FROM PYTHON SOURCE LINES 94-98 Setting up a Custom Grid ------------------------ A custom grid is set for the model, defining specific points in space where geological formations will be evaluated. -.. GENERATED FROM PYTHON SOURCE LINES 92-99 +.. GENERATED FROM PYTHON SOURCE LINES 98-105 -.. code-block:: default +.. code-block:: Python x_loc = 6000 @@ -192,22 +211,22 @@ where geological formations will be evaluated. .. code-block:: none - Active grids: ['regular' 'custom'] + Active grids: GridTypes.NONE|CUSTOM|DENSE - + -.. GENERATED FROM PYTHON SOURCE LINES 100-104 +.. GENERATED FROM PYTHON SOURCE LINES 106-110 Plotting the Initial Geological Setting --------------------------------------- Before running any probabilistic analysis, we first visualize the initial geological setting. This step ensures that our model is correctly set up with the initial data. -.. GENERATED FROM PYTHON SOURCE LINES 104-109 +.. GENERATED FROM PYTHON SOURCE LINES 110-115 -.. code-block:: default +.. code-block:: Python # Plot initial geological settings @@ -226,16 +245,16 @@ This step ensures that our model is correctly set up with the initial data. -.. GENERATED FROM PYTHON SOURCE LINES 110-114 +.. GENERATED FROM PYTHON SOURCE LINES 116-120 Interpolating the Initial Guess ------------------------------- The model interpolates an initial guess for the geological formations. This step is crucial to provide a starting point for further probabilistic analysis. -.. GENERATED FROM PYTHON SOURCE LINES 114-122 +.. GENERATED FROM PYTHON SOURCE LINES 120-128 -.. code-block:: default +.. code-block:: Python gp.compute_model( @@ -259,13 +278,11 @@ This step is crucial to provide a starting point for further probabilistic analy .. code-block:: none Setting Backend To: AvailableBackends.numpy - A size: (5, 5) - CG iterations: 5 -.. GENERATED FROM PYTHON SOURCE LINES 123-128 +.. GENERATED FROM PYTHON SOURCE LINES 129-134 Probabilistic Geomodeling with Pyro ----------------------------------- @@ -273,12 +290,12 @@ In this section, we introduce a probabilistic approach to geological modeling. By using Pyro, a probabilistic programming language, we define a model that integrates geological data with uncertainty quantification. -.. GENERATED FROM PYTHON SOURCE LINES 128-134 +.. GENERATED FROM PYTHON SOURCE LINES 134-140 -.. code-block:: default +.. code-block:: Python - sp_coords_copy = geo_model.interpolation_input.surface_points.sp_coords.copy() + sp_coords_copy = geo_model.interpolation_input_copy.surface_points.sp_coords.copy() # Change the backend to PyTorch for probabilistic modeling BackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH) @@ -296,7 +313,7 @@ geological data with uncertainty quantification. -.. GENERATED FROM PYTHON SOURCE LINES 135-140 +.. GENERATED FROM PYTHON SOURCE LINES 141-146 Defining the Probabilistic Model -------------------------------- @@ -304,9 +321,9 @@ The Pyro model represents the probabilistic aspects of the geological model. It defines a prior distribution for the top layer's location and computes the thickness of the geological layer as an observed variable. -.. GENERATED FROM PYTHON SOURCE LINES 140-174 +.. GENERATED FROM PYTHON SOURCE LINES 146-180 -.. code-block:: default +.. code-block:: Python def model(y_obs_list): @@ -320,7 +337,7 @@ of the geological layer as an observed variable. mu_top = pyro.sample(r'$\mu_{top}$', dist.Normal(prior_mean, torch.tensor(0.02, dtype=torch.float64))) # Update the model with the new top layer's location - interpolation_input = geo_model.interpolation_input + interpolation_input = geo_model.interpolation_input_copy interpolation_input.surface_points.sp_coords = torch.index_put( interpolation_input.surface_points.sp_coords, (torch.tensor([0]), torch.tensor([2])), @@ -349,20 +366,20 @@ of the geological layer as an observed variable. -.. GENERATED FROM PYTHON SOURCE LINES 175-179 +.. GENERATED FROM PYTHON SOURCE LINES 181-185 Running Prior Sampling and Visualization ---------------------------------------- Prior sampling is an essential step in probabilistic modeling. It helps in understanding the distribution of our prior assumptions before observing any data. -.. GENERATED FROM PYTHON SOURCE LINES 181-182 +.. GENERATED FROM PYTHON SOURCE LINES 187-188 Prepare observation data -.. GENERATED FROM PYTHON SOURCE LINES 182-184 +.. GENERATED FROM PYTHON SOURCE LINES 188-190 -.. code-block:: default +.. code-block:: Python y_obs_list = torch.tensor([200, 210, 190]) @@ -373,13 +390,13 @@ Prepare observation data -.. GENERATED FROM PYTHON SOURCE LINES 185-186 +.. GENERATED FROM PYTHON SOURCE LINES 191-192 Run prior sampling and visualization -.. GENERATED FROM PYTHON SOURCE LINES 186-191 +.. GENERATED FROM PYTHON SOURCE LINES 192-197 -.. code-block:: default +.. code-block:: Python prior = Predictive(model, num_samples=50)(y_obs_list) data = az.from_pyro(prior=prior) @@ -390,74 +407,15 @@ Run prior sampling and visualization .. image-sg:: /examples/04_probabilistic_modeling/images/sphx_glr_01_thickness_problem_gempy_003.png - :alt: $\mu_{top}$, $\mu_{top}$, $\mu_{thickness}$, $\mu_{thickness}$, $y_{thickness}$, $y_{thickness}$ + :alt: $\mu_{thickness}$, $\mu_{thickness}$, $\mu_{top}$, $\mu_{top}$, $y_{thickness}$, $y_{thickness}$ :srcset: /examples/04_probabilistic_modeling/images/sphx_glr_01_thickness_problem_gempy_003.png :class: sphx-glr-single-img -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - Final Iteration 5, Residual Norm: 1.4089725943911736e-05 - Final Iteration 5, Residual Norm: 6.317415998961143e-06 - Final Iteration 5, Residual Norm: 1.468542842347646e-07 - Final Iteration 5, Residual Norm: 9.099129314637124e-06 - Final Iteration 5, Residual Norm: 2.667314595389484e-06 - Final Iteration 5, Residual Norm: 1.4855313948945798e-07 - Final Iteration 5, Residual Norm: 5.579229931795512e-05 - Final Iteration 5, Residual Norm: 0.0002460598490319718 - Final Iteration 5, Residual Norm: 4.7170726870053344e-06 - Final Iteration 5, Residual Norm: 2.1329508670549636e-05 - Final Iteration 5, Residual Norm: 0.00036439299934579183 - Final Iteration 5, Residual Norm: 0.00048370251094574413 - Final Iteration 5, Residual Norm: 1.0623705901568265e-06 - Final Iteration 5, Residual Norm: 6.863468575162967e-05 - Final Iteration 5, Residual Norm: 1.0331479933604487e-05 - Final Iteration 5, Residual Norm: 1.049956003777276e-05 - Final Iteration 5, Residual Norm: 0.0003624536197216722 - Final Iteration 5, Residual Norm: 0.0006498274068455044 - Final Iteration 5, Residual Norm: 0.00018471277567577628 - Final Iteration 5, Residual Norm: 0.00040254824513041377 - Final Iteration 5, Residual Norm: 0.0013596079008816946 - Final Iteration 5, Residual Norm: 1.648709638209521e-05 - Final Iteration 5, Residual Norm: 7.735022324916065e-06 - Final Iteration 5, Residual Norm: 0.0001824839154379149 - Final Iteration 5, Residual Norm: 0.0029643142652577897 - Final Iteration 5, Residual Norm: 8.423194596482126e-06 - Final Iteration 5, Residual Norm: 0.0005033355317047751 - Final Iteration 5, Residual Norm: 3.466862162591784e-05 - Final Iteration 5, Residual Norm: 4.100952832656466e-06 - Final Iteration 5, Residual Norm: 5.186807534557172e-06 - Final Iteration 5, Residual Norm: 7.225228101225706e-05 - Final Iteration 5, Residual Norm: 0.00012718195369019127 - Final Iteration 5, Residual Norm: 1.6491035955590957e-05 - Final Iteration 5, Residual Norm: 7.977804546947701e-06 - Final Iteration 5, Residual Norm: 6.816675195364853e-05 - Final Iteration 5, Residual Norm: 2.4168551204555964e-07 - Final Iteration 5, Residual Norm: 3.548664905916464e-08 - Final Iteration 5, Residual Norm: 0.0022503253931455245 - Final Iteration 5, Residual Norm: 0.0036943902745817376 - Final Iteration 5, Residual Norm: 8.690035021310801e-05 - Final Iteration 5, Residual Norm: 7.142135244993335e-08 - Final Iteration 5, Residual Norm: 3.5356345481439774e-06 - Final Iteration 5, Residual Norm: 7.538530566253355e-09 - Final Iteration 5, Residual Norm: 3.4309134085127624e-07 - Final Iteration 5, Residual Norm: 1.948481493782957e-08 - Final Iteration 5, Residual Norm: 0.00014888343414485883 - Final Iteration 5, Residual Norm: 4.704095188284034e-05 - Final Iteration 5, Residual Norm: 0.00011895489197375922 - Final Iteration 5, Residual Norm: 2.789264939712866e-06 - Final Iteration 5, Residual Norm: 1.4900200944495394e-05 - Final Iteration 5, Residual Norm: 3.218010200331566e-06 - Final Iteration 5, Residual Norm: 1.0887753762451048e-06 - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/arviz/utils.py:184: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. - numba_fn = numba.jit(**self.kwargs)(self.function) - -.. GENERATED FROM PYTHON SOURCE LINES 192-197 +.. GENERATED FROM PYTHON SOURCE LINES 198-203 Sampling from the Posterior using MCMC -------------------------------------- @@ -465,13 +423,13 @@ We use Markov Chain Monte Carlo (MCMC) with the NUTS (No-U-Turn Sampler) algorit to sample from the posterior distribution. This gives us an understanding of the distribution of our model parameters after considering the observed data. -.. GENERATED FROM PYTHON SOURCE LINES 199-200 +.. GENERATED FROM PYTHON SOURCE LINES 205-206 Run MCMC using NUTS to sample from the posterior -.. GENERATED FROM PYTHON SOURCE LINES 200-212 +.. GENERATED FROM PYTHON SOURCE LINES 206-218 -.. code-block:: default +.. code-block:: Python # Magic sauce @@ -494,26 +452,26 @@ Run MCMC using NUTS to sample from the posterior .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - Warmup: 0%| | 0/250 [00:00, ?it/s] Warmup: 0%| | 1/250 [00:00, 3.12it/s, step size=3.22e-01, acc. prob=0.869] Warmup: 2%|1 | 4/250 [00:00, 10.90it/s, step size=2.55e-03, acc. prob=0.472] Warmup: 2%|2 | 6/250 [00:01, 4.24it/s, step size=2.14e-03, acc. prob=0.624] Warmup: 3%|3 | 8/250 [00:02, 2.77it/s, step size=3.46e-03, acc. prob=0.717] Warmup: 4%|3 | 9/250 [00:02, 3.16it/s, step size=2.47e-03, acc. prob=0.727] Warmup: 4%|4 | 10/250 [00:03, 2.73it/s, step size=3.36e-03, acc. prob=0.754] Warmup: 4%|4 | 11/250 [00:03, 2.81it/s, step size=4.63e-03, acc. prob=0.776] Warmup: 5%|4 | 12/250 [00:03, 2.87it/s, step size=6.41e-03, acc. prob=0.795] Warmup: 6%|5 | 14/250 [00:04, 3.31it/s, step size=4.38e-03, acc. prob=0.800] Warmup: 6%|6 | 15/250 [00:04, 3.08it/s, step size=6.13e-03, acc. prob=0.814] Warmup: 6%|6 | 16/250 [00:04, 3.41it/s, step size=8.56e-03, acc. prob=0.825] Warmup: 7%|6 | 17/250 [00:04, 4.06it/s, step size=5.01e-03, acc. prob=0.819] Warmup: 7%|7 | 18/250 [00:05, 4.26it/s, step size=6.53e-03, acc. prob=0.828] Warmup: 8%|8 | 20/250 [00:05, 5.91it/s, step size=4.68e-03, acc. prob=0.828] Warmup: 8%|8 | 21/250 [00:05, 5.69it/s, step size=6.44e-03, acc. prob=0.836] Warmup: 9%|8 | 22/250 [00:05, 5.65it/s, step size=5.43e-03, acc. prob=0.836] Warmup: 9%|9 | 23/250 [00:05, 5.48it/s, step size=7.42e-03, acc. prob=0.843] Warmup: 10%|9 | 24/250 [00:06, 5.35it/s, step size=6.77e-03, acc. prob=0.843] Warmup: 10%|# | 25/250 [00:06, 5.31it/s, step size=9.25e-03, acc. prob=0.850] Warmup: 11%|# | 27/250 [00:06, 5.89it/s, step size=6.68e-03, acc. prob=0.848] Warmup: 12%|#1 | 29/250 [00:06, 7.31it/s, step size=1.16e-02, acc. prob=0.858] Warmup: 12%|#2 | 31/250 [00:06, 9.21it/s, step size=8.17e-03, acc. prob=0.856] Warmup: 13%|#3 | 33/250 [00:07, 9.11it/s, step size=1.46e-02, acc. prob=0.864] Warmup: 14%|#4 | 35/250 [00:07, 6.52it/s, step size=1.59e-03, acc. prob=0.842] Warmup: 14%|#4 | 36/250 [00:08, 3.73it/s, step size=2.15e-03, acc. prob=0.846] Warmup: 15%|#4 | 37/250 [00:09, 2.67it/s, step size=2.90e-03, acc. prob=0.850] Warmup: 16%|#5 | 39/250 [00:09, 3.41it/s, step size=1.61e-03, acc. prob=0.846] Warmup: 16%|#6 | 41/250 [00:09, 4.51it/s, step size=4.38e-04, acc. prob=0.835] Warmup: 17%|#6 | 42/250 [00:09, 4.47it/s, step size=4.32e-04, acc. prob=0.836] Warmup: 17%|#7 | 43/250 [00:11, 2.21it/s, step size=5.49e-04, acc. prob=0.840] Warmup: 18%|#7 | 44/250 [00:13, 1.01it/s, step size=5.81e+00, acc. prob=0.843] Warmup: 19%|#8 | 47/250 [00:13, 1.97it/s, step size=9.76e-02, acc. prob=0.796] Warmup: 20%|#9 | 49/250 [00:14, 2.58it/s, step size=4.33e-02, acc. prob=0.781] Warmup: 20%|## | 50/250 [00:14, 2.29it/s, step size=4.33e-02, acc. prob=0.786] Warmup: 20%|## | 51/250 [00:16, 1.26it/s, step size=4.33e-02, acc. prob=1.000] Sample: 21%|## | 52/250 [00:20, 1.45s/it, step size=4.33e-02, acc. prob=1.000] Sample: 21%|##1 | 53/250 [00:21, 1.33s/it, step size=4.33e-02, acc. prob=1.000] Sample: 22%|##1 | 54/250 [00:23, 1.45s/it, step size=4.33e-02, acc. prob=1.000] Sample: 22%|##2 | 55/250 [00:24, 1.39s/it, step size=4.33e-02, acc. prob=1.000] Sample: 22%|##2 | 56/250 [00:25, 1.35s/it, step size=4.33e-02, acc. prob=1.000] Sample: 23%|##2 | 57/250 [00:27, 1.35s/it, step size=4.33e-02, acc. prob=1.000] Sample: 23%|##3 | 58/250 [00:27, 1.08s/it, step size=4.33e-02, acc. prob=1.000] Sample: 24%|##3 | 59/250 [00:29, 1.28s/it, step size=4.33e-02, acc. prob=1.000] Sample: 24%|##4 | 60/250 [00:29, 1.03s/it, step size=4.33e-02, acc. prob=1.000] Sample: 24%|##4 | 61/250 [00:30, 1.07s/it, step size=4.33e-02, acc. prob=1.000] Sample: 25%|##4 | 62/250 [00:31, 1.04s/it, step size=4.33e-02, acc. prob=1.000] Sample: 25%|##5 | 63/250 [00:32, 1.27it/s, step size=4.33e-02, acc. prob=1.000] Sample: 26%|##5 | 64/250 [00:32, 1.23it/s, step size=4.33e-02, acc. prob=1.000] Sample: 26%|##6 | 65/250 [00:33, 1.38it/s, step size=4.33e-02, acc. prob=1.000] Sample: 26%|##6 | 66/250 [00:33, 1.50it/s, step size=4.33e-02, acc. prob=1.000] Sample: 27%|##6 | 67/250 [00:34, 1.40it/s, step size=4.33e-02, acc. prob=0.998] Sample: 27%|##7 | 68/250 [00:36, 1.04s/it, step size=4.33e-02, acc. prob=0.998] Sample: 28%|##7 | 69/250 [00:37, 1.17it/s, step size=4.33e-02, acc. prob=0.998] Sample: 28%|##8 | 70/250 [00:37, 1.41it/s, step size=4.33e-02, acc. prob=0.998] Sample: 28%|##8 | 71/250 [00:39, 1.02s/it, step size=4.33e-02, acc. prob=0.998] Sample: 29%|##8 | 72/250 [00:40, 1.18s/it, step size=4.33e-02, acc. prob=0.997] Sample: 29%|##9 | 73/250 [00:42, 1.34s/it, step size=4.33e-02, acc. prob=0.996] Sample: 30%|##9 | 74/250 [00:42, 1.01it/s, step size=4.33e-02, acc. prob=0.996] Sample: 30%|### | 75/250 [00:43, 1.06s/it, step size=4.33e-02, acc. prob=0.996] Sample: 30%|### | 76/250 [00:44, 1.08it/s, step size=4.33e-02, acc. prob=0.996] Sample: 31%|### | 77/250 [00:45, 1.04s/it, step size=4.33e-02, acc. prob=0.995] Sample: 31%|###1 | 78/250 [00:47, 1.20s/it, step size=4.33e-02, acc. prob=0.995] Sample: 32%|###1 | 79/250 [00:49, 1.51s/it, step size=4.33e-02, acc. prob=0.995] Sample: 32%|###2 | 80/250 [00:49, 1.17s/it, step size=4.33e-02, acc. prob=0.995] Sample: 32%|###2 | 81/250 [00:51, 1.41s/it, step size=4.33e-02, acc. prob=0.995] Sample: 33%|###2 | 82/250 [00:52, 1.29s/it, step size=4.33e-02, acc. prob=0.994] Sample: 33%|###3 | 83/250 [00:54, 1.36s/it, step size=4.33e-02, acc. prob=0.994] Sample: 34%|###3 | 84/250 [00:54, 1.11s/it, step size=4.33e-02, acc. prob=0.994] Sample: 34%|###4 | 85/250 [00:55, 1.15it/s, step size=4.33e-02, acc. prob=0.994] Sample: 34%|###4 | 86/250 [00:55, 1.27it/s, step size=4.33e-02, acc. prob=0.994] Sample: 35%|###5 | 88/250 [00:56, 1.61it/s, step size=4.33e-02, acc. prob=0.994] Sample: 36%|###5 | 89/250 [00:57, 1.60it/s, step size=4.33e-02, acc. prob=0.995] Sample: 36%|###6 | 90/250 [00:58, 1.38it/s, step size=4.33e-02, acc. prob=0.995] Sample: 36%|###6 | 91/250 [00:58, 1.73it/s, step size=4.33e-02, acc. prob=0.995] Sample: 37%|###6 | 92/250 [00:59, 1.27it/s, step size=4.33e-02, acc. prob=0.994] Sample: 37%|###7 | 93/250 [01:01, 1.15s/it, step size=4.33e-02, acc. prob=0.995] Sample: 38%|###7 | 94/250 [01:03, 1.27s/it, step size=4.33e-02, acc. prob=0.994] Sample: 38%|###8 | 95/250 [01:03, 1.01s/it, step size=4.33e-02, acc. prob=0.993] Sample: 38%|###8 | 96/250 [01:05, 1.10s/it, step size=4.33e-02, acc. prob=0.993] Sample: 39%|###8 | 97/250 [01:06, 1.05s/it, step size=4.33e-02, acc. prob=0.993] Sample: 39%|###9 | 98/250 [01:06, 1.11it/s, step size=4.33e-02, acc. prob=0.993] Sample: 40%|###9 | 99/250 [01:08, 1.12s/it, step size=4.33e-02, acc. prob=0.993] Sample: 40%|#### | 100/250 [01:09, 1.17s/it, step size=4.33e-02, acc. prob=0.993] Sample: 40%|#### | 101/250 [01:10, 1.24s/it, step size=4.33e-02, acc. prob=0.993] Sample: 41%|#### | 102/250 [01:11, 1.13s/it, step size=4.33e-02, acc. prob=0.993] Sample: 41%|####1 | 103/250 [01:12, 1.10it/s, step size=4.33e-02, acc. prob=0.992] Sample: 42%|####1 | 104/250 [01:13, 1.14it/s, step size=4.33e-02, acc. prob=0.991] Sample: 42%|####2 | 105/250 [01:14, 1.02s/it, step size=4.33e-02, acc. prob=0.991] Sample: 42%|####2 | 106/250 [01:16, 1.24s/it, step size=4.33e-02, acc. prob=0.991] Sample: 43%|####2 | 107/250 [01:17, 1.37s/it, step size=4.33e-02, acc. prob=0.991] Sample: 43%|####3 | 108/250 [01:19, 1.37s/it, step size=4.33e-02, acc. prob=0.991] Sample: 44%|####3 | 109/250 [01:20, 1.33s/it, step size=4.33e-02, acc. prob=0.991] Sample: 44%|####4 | 110/250 [01:20, 1.01it/s, step size=4.33e-02, acc. prob=0.991] Sample: 44%|####4 | 111/250 [01:21, 1.01it/s, step size=4.33e-02, acc. prob=0.991] Sample: 45%|####4 | 112/250 [01:22, 1.08it/s, step size=4.33e-02, acc. prob=0.991] Sample: 45%|####5 | 113/250 [01:23, 1.05s/it, step size=4.33e-02, acc. prob=0.991] Sample: 46%|####5 | 114/250 [01:26, 1.48s/it, step size=4.33e-02, acc. prob=0.991] Sample: 46%|####6 | 115/250 [01:29, 1.90s/it, step size=4.33e-02, acc. prob=0.991] Sample: 46%|####6 | 116/250 [01:31, 2.02s/it, step size=4.33e-02, acc. prob=0.991] Sample: 47%|####6 | 117/250 [01:32, 1.62s/it, step size=4.33e-02, acc. prob=0.991] Sample: 47%|####7 | 118/250 [01:32, 1.30s/it, step size=4.33e-02, acc. prob=0.991] Sample: 48%|####7 | 119/250 [01:33, 1.07s/it, step size=4.33e-02, acc. prob=0.991] Sample: 48%|####8 | 120/250 [01:33, 1.18it/s, step size=4.33e-02, acc. prob=0.990] Sample: 48%|####8 | 121/250 [01:33, 1.40it/s, step size=4.33e-02, acc. prob=0.990] Sample: 49%|####8 | 122/250 [01:34, 1.27it/s, step size=4.33e-02, acc. prob=0.989] Sample: 49%|####9 | 123/250 [01:35, 1.38it/s, step size=4.33e-02, acc. prob=0.989] Sample: 50%|####9 | 124/250 [01:36, 1.29it/s, step size=4.33e-02, acc. prob=0.989] Sample: 50%|##### | 125/250 [01:37, 1.25it/s, step size=4.33e-02, acc. prob=0.989] Sample: 50%|##### | 126/250 [01:37, 1.54it/s, step size=4.33e-02, acc. prob=0.988] Sample: 51%|##### | 127/250 [01:37, 1.96it/s, step size=4.33e-02, acc. prob=0.988] Sample: 51%|#####1 | 128/250 [01:39, 1.14it/s, step size=4.33e-02, acc. prob=0.988] Sample: 52%|#####1 | 129/250 [01:42, 1.40s/it, step size=4.33e-02, acc. prob=0.989] Sample: 52%|#####2 | 130/250 [01:42, 1.03s/it, step size=4.33e-02, acc. prob=0.986] Sample: 52%|#####2 | 131/250 [01:42, 1.27it/s, step size=4.33e-02, acc. prob=0.985] Sample: 53%|#####2 | 132/250 [01:42, 1.69it/s, step size=4.33e-02, acc. prob=0.983] Sample: 53%|#####3 | 133/250 [01:44, 1.05it/s, step size=4.33e-02, acc. prob=0.983] Sample: 54%|#####3 | 134/250 [01:46, 1.21s/it, step size=4.33e-02, acc. prob=0.983] Sample: 54%|#####4 | 135/250 [01:46, 1.06s/it, step size=4.33e-02, acc. prob=0.983] Sample: 54%|#####4 | 136/250 [01:49, 1.51s/it, step size=4.33e-02, acc. prob=0.983] Sample: 55%|#####4 | 137/250 [01:51, 1.66s/it, step size=4.33e-02, acc. prob=0.983] Sample: 55%|#####5 | 138/250 [01:52, 1.60s/it, step size=4.33e-02, acc. prob=0.983] Sample: 56%|#####5 | 139/250 [01:55, 1.85s/it, step size=4.33e-02, acc. prob=0.983] Sample: 56%|#####6 | 140/250 [01:56, 1.59s/it, step size=4.33e-02, acc. prob=0.984] Sample: 56%|#####6 | 141/250 [01:58, 1.83s/it, step size=4.33e-02, acc. prob=0.984] Sample: 57%|#####6 | 142/250 [02:00, 1.82s/it, step size=4.33e-02, acc. prob=0.984] Sample: 57%|#####7 | 143/250 [02:00, 1.39s/it, step size=4.33e-02, acc. prob=0.984] Sample: 58%|#####7 | 144/250 [02:01, 1.07s/it, step size=4.33e-02, acc. prob=0.984] Sample: 58%|#####8 | 145/250 [02:02, 1.06s/it, step size=4.33e-02, acc. prob=0.984] Sample: 58%|#####8 | 146/250 [02:02, 1.22it/s, step size=4.33e-02, acc. prob=0.984] Sample: 59%|#####8 | 147/250 [02:02, 1.44it/s, step size=4.33e-02, acc. prob=0.985] Sample: 59%|#####9 | 148/250 [02:03, 1.68it/s, step size=4.33e-02, acc. prob=0.985] Sample: 60%|#####9 | 149/250 [02:03, 1.64it/s, step size=4.33e-02, acc. prob=0.985] Sample: 60%|###### | 150/250 [02:05, 1.16it/s, step size=4.33e-02, acc. prob=0.985] Sample: 60%|###### | 151/250 [02:07, 1.12s/it, step size=4.33e-02, acc. prob=0.985] Sample: 61%|###### | 152/250 [02:08, 1.08s/it, step size=4.33e-02, acc. prob=0.985] Sample: 61%|######1 | 153/250 [02:09, 1.16s/it, step size=4.33e-02, acc. prob=0.985] Sample: 62%|######1 | 154/250 [02:10, 1.20s/it, step size=4.33e-02, acc. prob=0.985] Sample: 62%|######2 | 155/250 [02:12, 1.36s/it, step size=4.33e-02, acc. prob=0.985] Sample: 62%|######2 | 156/250 [02:13, 1.17s/it, step size=4.33e-02, acc. prob=0.985] Sample: 63%|######2 | 157/250 [02:14, 1.26s/it, step size=4.33e-02, acc. prob=0.986] Sample: 63%|######3 | 158/250 [02:16, 1.56s/it, step size=4.33e-02, acc. prob=0.986] Sample: 64%|######3 | 159/250 [02:18, 1.45s/it, step size=4.33e-02, acc. prob=0.986] Sample: 64%|######4 | 160/250 [02:19, 1.55s/it, step size=4.33e-02, acc. prob=0.986] Sample: 64%|######4 | 161/250 [02:20, 1.34s/it, step size=4.33e-02, acc. prob=0.986] Sample: 65%|######4 | 162/250 [02:21, 1.14s/it, step size=4.33e-02, acc. prob=0.986] Sample: 65%|######5 | 163/250 [02:22, 1.03s/it, step size=4.33e-02, acc. prob=0.985] Sample: 66%|######5 | 164/250 [02:23, 1.10s/it, step size=4.33e-02, acc. prob=0.985] Sample: 66%|######6 | 165/250 [02:23, 1.07it/s, step size=4.33e-02, acc. prob=0.985] Sample: 66%|######6 | 166/250 [02:24, 1.10it/s, step size=4.33e-02, acc. prob=0.985] Sample: 67%|######6 | 167/250 [02:26, 1.02s/it, step size=4.33e-02, acc. prob=0.985] Sample: 67%|######7 | 168/250 [02:27, 1.26s/it, step size=4.33e-02, acc. prob=0.985] Sample: 68%|######7 | 169/250 [02:28, 1.06s/it, step size=4.33e-02, acc. prob=0.985] Sample: 68%|######8 | 170/250 [02:29, 1.09it/s, step size=4.33e-02, acc. prob=0.985] Sample: 68%|######8 | 171/250 [02:30, 1.19s/it, step size=4.33e-02, acc. prob=0.985] Sample: 69%|######8 | 172/250 [02:31, 1.06s/it, step size=4.33e-02, acc. prob=0.985] Sample: 69%|######9 | 173/250 [02:33, 1.32s/it, step size=4.33e-02, acc. prob=0.985] Sample: 70%|######9 | 174/250 [02:34, 1.32s/it, step size=4.33e-02, acc. prob=0.986] Sample: 70%|####### | 175/250 [02:37, 1.72s/it, step size=4.33e-02, acc. prob=0.986] Sample: 70%|####### | 176/250 [02:39, 1.91s/it, step size=4.33e-02, acc. prob=0.986] Sample: 71%|####### | 177/250 [02:40, 1.53s/it, step size=4.33e-02, acc. prob=0.986] Sample: 71%|#######1 | 178/250 [02:41, 1.23s/it, step size=4.33e-02, acc. prob=0.986] Sample: 72%|#######1 | 179/250 [02:41, 1.09it/s, step size=4.33e-02, acc. prob=0.985] Sample: 72%|#######2 | 180/250 [02:42, 1.05s/it, step size=4.33e-02, acc. prob=0.985] Sample: 72%|#######2 | 181/250 [02:44, 1.20s/it, step size=4.33e-02, acc. prob=0.985] Sample: 73%|#######2 | 182/250 [02:44, 1.05s/it, step size=4.33e-02, acc. prob=0.985] Sample: 73%|#######3 | 183/250 [02:46, 1.30s/it, step size=4.33e-02, acc. prob=0.985] Sample: 74%|#######3 | 184/250 [02:48, 1.27s/it, step size=4.33e-02, acc. prob=0.985] Sample: 74%|#######4 | 185/250 [02:48, 1.15s/it, step size=4.33e-02, acc. prob=0.985] Sample: 74%|#######4 | 186/250 [02:49, 1.06s/it, step size=4.33e-02, acc. prob=0.985] Sample: 75%|#######4 | 187/250 [02:50, 1.11it/s, step size=4.33e-02, acc. prob=0.985] Sample: 75%|#######5 | 188/250 [02:51, 1.08it/s, step size=4.33e-02, acc. prob=0.985] Sample: 76%|#######5 | 189/250 [02:51, 1.29it/s, step size=4.33e-02, acc. prob=0.985] Sample: 76%|#######6 | 190/250 [02:53, 1.06it/s, step size=4.33e-02, acc. prob=0.985] Sample: 76%|#######6 | 191/250 [02:54, 1.04it/s, step size=4.33e-02, acc. prob=0.985] Sample: 77%|#######6 | 192/250 [02:55, 1.17s/it, step size=4.33e-02, acc. prob=0.985] Sample: 77%|#######7 | 193/250 [02:56, 1.18s/it, step size=4.33e-02, acc. prob=0.985] Sample: 78%|#######7 | 194/250 [02:57, 1.11s/it, step size=4.33e-02, acc. prob=0.985] Sample: 78%|#######8 | 195/250 [02:58, 1.10s/it, step size=4.33e-02, acc. prob=0.985] Sample: 78%|#######8 | 196/250 [03:00, 1.11s/it, step size=4.33e-02, acc. prob=0.985] Sample: 79%|#######8 | 197/250 [03:01, 1.23s/it, step size=4.33e-02, acc. prob=0.985] Sample: 79%|#######9 | 198/250 [03:03, 1.31s/it, step size=4.33e-02, acc. prob=0.986] Sample: 80%|#######9 | 199/250 [03:05, 1.70s/it, step size=4.33e-02, acc. prob=0.986] Sample: 80%|######## | 200/250 [03:06, 1.39s/it, step size=4.33e-02, acc. prob=0.986] Sample: 80%|######## | 201/250 [03:06, 1.17s/it, step size=4.33e-02, acc. prob=0.986] Sample: 81%|######## | 202/250 [03:09, 1.70s/it, step size=4.33e-02, acc. prob=0.986] Sample: 81%|########1 | 203/250 [03:11, 1.60s/it, step size=4.33e-02, acc. prob=0.986] Sample: 82%|########1 | 204/250 [03:13, 1.69s/it, step size=4.33e-02, acc. prob=0.986] Sample: 82%|########2 | 205/250 [03:15, 1.76s/it, step size=4.33e-02, acc. prob=0.986] Sample: 82%|########2 | 206/250 [03:16, 1.79s/it, step size=4.33e-02, acc. prob=0.986] Sample: 83%|########2 | 207/250 [03:17, 1.51s/it, step size=4.33e-02, acc. prob=0.986] Sample: 83%|########3 | 208/250 [03:18, 1.40s/it, step size=4.33e-02, acc. prob=0.986] Sample: 84%|########3 | 209/250 [03:19, 1.01s/it, step size=4.33e-02, acc. prob=0.985] Sample: 84%|########4 | 211/250 [03:19, 1.75it/s, step size=4.33e-02, acc. prob=0.977] Sample: 85%|########4 | 212/250 [03:19, 2.15it/s, step size=4.33e-02, acc. prob=0.975] Sample: 85%|########5 | 213/250 [03:21, 1.12it/s, step size=4.33e-02, acc. prob=0.976] Sample: 86%|########5 | 214/250 [03:24, 1.36s/it, step size=4.33e-02, acc. prob=0.976] Sample: 86%|########6 | 215/250 [03:26, 1.63s/it, step size=4.33e-02, acc. prob=0.976] Sample: 86%|########6 | 216/250 [03:28, 1.68s/it, step size=4.33e-02, acc. prob=0.976] Sample: 87%|########6 | 217/250 [03:28, 1.39s/it, step size=4.33e-02, acc. prob=0.976] Sample: 87%|########7 | 218/250 [03:29, 1.23s/it, step size=4.33e-02, acc. prob=0.976] Sample: 88%|########7 | 219/250 [03:30, 1.03s/it, step size=4.33e-02, acc. prob=0.976] Sample: 88%|########8 | 220/250 [03:32, 1.47s/it, step size=4.33e-02, acc. prob=0.976] Sample: 88%|########8 | 221/250 [03:34, 1.52s/it, step size=4.33e-02, acc. prob=0.976] Sample: 89%|########8 | 222/250 [03:35, 1.33s/it, step size=4.33e-02, acc. prob=0.976] Sample: 89%|########9 | 223/250 [03:36, 1.33s/it, step size=4.33e-02, acc. prob=0.976] Sample: 90%|########9 | 224/250 [03:37, 1.29s/it, step size=4.33e-02, acc. prob=0.976] Sample: 90%|######### | 225/250 [03:38, 1.24s/it, step size=4.33e-02, acc. prob=0.976] Sample: 91%|######### | 227/250 [03:39, 1.44it/s, step size=4.33e-02, acc. prob=0.976] Sample: 91%|#########1| 228/250 [03:39, 1.33it/s, step size=4.33e-02, acc. prob=0.977] Sample: 92%|#########1| 229/250 [03:41, 1.16it/s, step size=4.33e-02, acc. prob=0.977] Sample: 92%|#########2| 230/250 [03:42, 1.08it/s, step size=4.33e-02, acc. prob=0.977] Sample: 92%|#########2| 231/250 [03:43, 1.06it/s, step size=4.33e-02, acc. prob=0.977] Sample: 93%|#########2| 232/250 [03:44, 1.09s/it, step size=4.33e-02, acc. prob=0.977] Sample: 93%|#########3| 233/250 [03:46, 1.30s/it, step size=4.33e-02, acc. prob=0.977] Sample: 94%|#########3| 234/250 [03:47, 1.35s/it, step size=4.33e-02, acc. prob=0.977] Sample: 94%|#########3| 235/250 [03:50, 1.75s/it, step size=4.33e-02, acc. prob=0.977] Sample: 94%|#########4| 236/250 [03:52, 1.77s/it, step size=4.33e-02, acc. prob=0.978] Sample: 95%|#########4| 237/250 [03:53, 1.45s/it, step size=4.33e-02, acc. prob=0.977] Sample: 95%|#########5| 238/250 [03:54, 1.42s/it, step size=4.33e-02, acc. prob=0.978] Sample: 96%|#########5| 239/250 [03:56, 1.45s/it, step size=4.33e-02, acc. prob=0.978] Sample: 96%|#########6| 240/250 [03:57, 1.43s/it, step size=4.33e-02, acc. prob=0.978] Sample: 96%|#########6| 241/250 [03:57, 1.09s/it, step size=4.33e-02, acc. prob=0.978] Sample: 97%|#########6| 242/250 [03:59, 1.30s/it, step size=4.33e-02, acc. prob=0.978] Sample: 97%|#########7| 243/250 [04:00, 1.25s/it, step size=4.33e-02, acc. prob=0.978] Sample: 98%|#########7| 244/250 [04:00, 1.03it/s, step size=4.33e-02, acc. prob=0.978] Sample: 98%|#########8| 245/250 [04:01, 1.06it/s, step size=4.33e-02, acc. prob=0.978] Sample: 98%|#########8| 246/250 [04:02, 1.21it/s, step size=4.33e-02, acc. prob=0.978] Sample: 99%|#########8| 247/250 [04:02, 1.44it/s, step size=4.33e-02, acc. prob=0.979] Sample: 99%|#########9| 248/250 [04:04, 1.09it/s, step size=4.33e-02, acc. prob=0.979] Sample: 100%|#########9| 249/250 [04:04, 1.19it/s, step size=4.33e-02, acc. prob=0.979] Sample: 100%|##########| 250/250 [04:06, 1.00it/s, step size=4.33e-02, acc. prob=0.979] Sample: 100%|##########| 250/250 [04:06, 1.02it/s, step size=4.33e-02, acc. prob=0.979] + Warmup: 0%| | 0/250 [00:00, ?it/s] Warmup: 0%| | 1/250 [00:01, 1.16s/it, step size=1.93e-01, acc. prob=0.970] Warmup: 2%|▏ | 5/250 [00:01, 4.75it/s, step size=1.12e-02, acc. prob=0.718] Warmup: 3%|β–Ž | 7/250 [00:01, 5.65it/s, step size=9.70e-03, acc. prob=0.769] Warmup: 4%|β–Ž | 9/250 [00:01, 5.55it/s, step size=6.16e-03, acc. prob=0.783] Warmup: 4%|▍ | 10/250 [00:02, 5.38it/s, step size=2.96e-03, acc. prob=0.772] Warmup: 4%|▍ | 11/250 [00:02, 3.67it/s, step size=4.08e-03, acc. prob=0.793] Warmup: 5%|β–Œ | 13/250 [00:03, 4.24it/s, step size=6.41e-03, acc. prob=0.820] Warmup: 6%|β–Œ | 14/250 [00:03, 4.10it/s, step size=8.27e-03, acc. prob=0.831] Warmup: 6%|β–Œ | 15/250 [00:03, 3.43it/s, step size=1.06e-02, acc. prob=0.840] Warmup: 6%|β–‹ | 16/250 [00:04, 3.72it/s, step size=7.28e-03, acc. prob=0.836] Warmup: 7%|β–‹ | 18/250 [00:04, 4.46it/s, step size=1.09e-02, acc. prob=0.850] Warmup: 8%|β–Š | 19/250 [00:04, 4.81it/s, step size=1.50e-02, acc. prob=0.858] Warmup: 8%|β–Š | 21/250 [00:05, 2.94it/s, step size=3.33e-03, acc. prob=0.837] Warmup: 9%|β–‰ | 22/250 [00:05, 2.85it/s, step size=4.14e-03, acc. prob=0.842] Warmup: 9%|β–‰ | 23/250 [00:06, 3.01it/s, step size=4.21e-03, acc. prob=0.845] Warmup: 10%|β–ˆ | 25/250 [00:06, 3.85it/s, step size=6.50e-03, acc. prob=0.854] Warmup: 10%|β–ˆ | 26/250 [00:06, 4.00it/s, step size=2.82e-03, acc. prob=0.844] Warmup: 11%|β–ˆ | 27/250 [00:07, 3.90it/s, step size=1.21e-03, acc. prob=0.835] Warmup: 11%|β–ˆ | 28/250 [00:07, 2.71it/s, step size=1.28e-03, acc. prob=0.837] Warmup: 12%|β–ˆβ– | 29/250 [00:09, 1.56it/s, step size=1.45e-03, acc. prob=0.840] Warmup: 12%|β–ˆβ– | 30/250 [00:10, 1.29it/s, step size=1.83e-03, acc. prob=0.845] Warmup: 12%|β–ˆβ– | 31/250 [00:11, 1.23it/s, step size=2.49e-03, acc. prob=0.850] Warmup: 13%|β–ˆβ–Ž | 32/250 [00:12, 1.20it/s, step size=3.38e-03, acc. prob=0.855] Warmup: 13%|β–ˆβ–Ž | 33/250 [00:12, 1.38it/s, step size=3.21e-03, acc. prob=0.855] Warmup: 14%|β–ˆβ–Ž | 34/250 [00:13, 1.48it/s, step size=3.82e-03, acc. prob=0.858] Warmup: 14%|β–ˆβ– | 35/250 [00:13, 1.81it/s, step size=3.74e-03, acc. prob=0.859] Warmup: 14%|β–ˆβ– | 36/250 [00:14, 1.49it/s, step size=3.88e-03, acc. prob=0.860] Warmup: 15%|β–ˆβ– | 37/250 [00:14, 1.95it/s, step size=5.13e-03, acc. prob=0.863] Warmup: 15%|β–ˆβ–Œ | 38/250 [00:14, 2.27it/s, step size=6.00e-03, acc. prob=0.866] Warmup: 16%|β–ˆβ–Œ | 39/250 [00:14, 2.70it/s, step size=7.95e-03, acc. prob=0.869] Warmup: 16%|β–ˆβ–‹ | 41/250 [00:15, 4.14it/s, step size=1.04e-02, acc. prob=0.873] Warmup: 17%|β–ˆβ–‹ | 42/250 [00:15, 4.52it/s, step size=1.36e-02, acc. prob=0.876] Warmup: 18%|β–ˆβ–Š | 44/250 [00:15, 3.62it/s, step size=1.97e+00, acc. prob=0.871] Warmup: 18%|β–ˆβ–Š | 46/250 [00:16, 5.10it/s, step size=2.99e+00, acc. prob=0.855] Warmup: 19%|β–ˆβ–‰ | 48/250 [00:16, 6.74it/s, step size=2.72e-01, acc. prob=0.843] Warmup: 20%|β–ˆβ–ˆ | 50/250 [00:16, 4.90it/s, step size=6.43e-01, acc. prob=0.844] Warmup: 20%|β–ˆβ–ˆ | 51/250 [00:16, 5.18it/s, step size=6.43e-01, acc. prob=1.000] Sample: 21%|β–ˆβ–ˆ | 53/250 [00:17, 6.85it/s, step size=6.43e-01, acc. prob=0.962] Sample: 22%|β–ˆβ–ˆβ– | 55/250 [00:17, 7.38it/s, step size=6.43e-01, acc. prob=0.955] Sample: 23%|β–ˆβ–ˆβ–Ž | 57/250 [00:17, 7.21it/s, step size=6.43e-01, acc. prob=0.943] Sample: 23%|β–ˆβ–ˆβ–Ž | 58/250 [00:17, 6.61it/s, step size=6.43e-01, acc. prob=0.933] Sample: 24%|β–ˆβ–ˆβ– | 60/250 [00:17, 8.43it/s, step size=6.43e-01, acc. prob=0.941] Sample: 25%|β–ˆβ–ˆβ– | 62/250 [00:18, 7.22it/s, step size=6.43e-01, acc. prob=0.914] Sample: 25%|β–ˆβ–ˆβ–Œ | 63/250 [00:18, 7.11it/s, step size=6.43e-01, acc. prob=0.917] Sample: 26%|β–ˆβ–ˆβ–Œ | 65/250 [00:18, 7.07it/s, step size=6.43e-01, acc. prob=0.918] Sample: 27%|β–ˆβ–ˆβ–‹ | 67/250 [00:18, 7.52it/s, step size=6.43e-01, acc. prob=0.927] Sample: 27%|β–ˆβ–ˆβ–‹ | 68/250 [00:19, 6.72it/s, step size=6.43e-01, acc. prob=0.927] Sample: 28%|β–ˆβ–ˆβ–Š | 69/250 [00:19, 6.19it/s, step size=6.43e-01, acc. prob=0.931] Sample: 28%|β–ˆβ–ˆβ–Š | 70/250 [00:19, 6.31it/s, step size=6.43e-01, acc. prob=0.928] Sample: 29%|β–ˆβ–ˆβ–‰ | 72/250 [00:19, 7.73it/s, step size=6.43e-01, acc. prob=0.931] Sample: 29%|β–ˆβ–ˆβ–‰ | 73/250 [00:19, 7.45it/s, step size=6.43e-01, acc. prob=0.933] Sample: 30%|β–ˆβ–ˆβ–‰ | 74/250 [00:20, 6.62it/s, step size=6.43e-01, acc. prob=0.935] Sample: 30%|β–ˆβ–ˆβ–ˆ | 75/250 [00:20, 5.93it/s, step size=6.43e-01, acc. prob=0.936] Sample: 30%|β–ˆβ–ˆβ–ˆ | 76/250 [00:20, 5.56it/s, step size=6.43e-01, acc. prob=0.935] Sample: 31%|β–ˆβ–ˆβ–ˆ | 78/250 [00:20, 5.97it/s, step size=6.43e-01, acc. prob=0.939] Sample: 32%|β–ˆβ–ˆβ–ˆβ– | 79/250 [00:20, 6.13it/s, step size=6.43e-01, acc. prob=0.932] Sample: 32%|β–ˆβ–ˆβ–ˆβ– | 81/250 [00:21, 7.45it/s, step size=6.43e-01, acc. prob=0.935] Sample: 33%|β–ˆβ–ˆβ–ˆβ–Ž | 83/250 [00:21, 8.53it/s, step size=6.43e-01, acc. prob=0.936] Sample: 34%|β–ˆβ–ˆβ–ˆβ–Ž | 84/250 [00:21, 7.29it/s, step size=6.43e-01, acc. prob=0.930] Sample: 34%|β–ˆβ–ˆβ–ˆβ– | 85/250 [00:21, 7.22it/s, step size=6.43e-01, acc. prob=0.921] Sample: 34%|β–ˆβ–ˆβ–ˆβ– | 86/250 [00:21, 6.37it/s, step size=6.43e-01, acc. prob=0.923] Sample: 35%|β–ˆβ–ˆβ–ˆβ– | 87/250 [00:22, 5.84it/s, step size=6.43e-01, acc. prob=0.921] Sample: 35%|β–ˆβ–ˆβ–ˆβ–Œ | 88/250 [00:22, 5.55it/s, step size=6.43e-01, acc. prob=0.922] Sample: 36%|β–ˆβ–ˆβ–ˆβ–Œ | 90/250 [00:22, 6.05it/s, step size=6.43e-01, acc. prob=0.922] Sample: 36%|β–ˆβ–ˆβ–ˆβ–‹ | 91/250 [00:22, 6.20it/s, step size=6.43e-01, acc. prob=0.924] Sample: 37%|β–ˆβ–ˆβ–ˆβ–‹ | 92/250 [00:22, 5.76it/s, step size=6.43e-01, acc. prob=0.925] Sample: 38%|β–ˆβ–ˆβ–ˆβ–Š | 94/250 [00:23, 7.95it/s, step size=6.43e-01, acc. prob=0.928] Sample: 38%|β–ˆβ–ˆβ–ˆβ–Š | 95/250 [00:23, 7.68it/s, step size=6.43e-01, acc. prob=0.925] Sample: 39%|β–ˆβ–ˆβ–ˆβ–‰ | 97/250 [00:23, 8.79it/s, step size=6.43e-01, acc. prob=0.925] Sample: 39%|β–ˆβ–ˆβ–ˆβ–‰ | 98/250 [00:23, 8.95it/s, step size=6.43e-01, acc. prob=0.927] Sample: 40%|β–ˆβ–ˆβ–ˆβ–‰ | 99/250 [00:23, 8.17it/s, step size=6.43e-01, acc. prob=0.928] Sample: 40%|β–ˆβ–ˆβ–ˆβ–ˆ | 100/250 [00:23, 6.82it/s, step size=6.43e-01, acc. prob=0.925] Sample: 41%|β–ˆβ–ˆβ–ˆβ–ˆ | 102/250 [00:24, 7.43it/s, step size=6.43e-01, acc. prob=0.924] Sample: 41%|β–ˆβ–ˆβ–ˆβ–ˆ | 103/250 [00:24, 6.72it/s, step size=6.43e-01, acc. prob=0.925] Sample: 42%|β–ˆβ–ˆβ–ˆβ–ˆβ– | 104/250 [00:24, 6.05it/s, step size=6.43e-01, acc. prob=0.926] Sample: 42%|β–ˆβ–ˆβ–ˆβ–ˆβ– | 105/250 [00:24, 6.25it/s, step size=6.43e-01, acc. prob=0.925] Sample: 42%|β–ˆβ–ˆβ–ˆβ–ˆβ– | 106/250 [00:24, 6.40it/s, step size=6.43e-01, acc. prob=0.922] Sample: 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 107/250 [00:24, 5.84it/s, step size=6.43e-01, acc. prob=0.921] Sample: 43%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 108/250 [00:25, 5.45it/s, step size=6.43e-01, acc. prob=0.920] Sample: 44%|β–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 109/250 [00:25, 5.86it/s, step size=6.43e-01, acc. prob=0.917] Sample: 44%|β–ˆβ–ˆβ–ˆβ–ˆβ– | 111/250 [00:25, 6.71it/s, step size=6.43e-01, acc. prob=0.920] Sample: 45%|β–ˆβ–ˆβ–ˆβ–ˆβ– | 112/250 [00:25, 6.11it/s, step size=6.43e-01, acc. prob=0.920] Sample: 46%|β–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 114/250 [00:25, 8.32it/s, step size=6.43e-01, acc. prob=0.923] Sample: 47%|β–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 117/250 [00:26, 9.51it/s, step size=6.43e-01, acc. prob=0.926] Sample: 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š | 119/250 [00:26, 7.74it/s, step size=6.43e-01, acc. prob=0.926] Sample: 48%|β–ˆβ–ˆβ–ˆβ–ˆβ–Š | 120/250 [00:26, 7.51it/s, step size=6.43e-01, acc. prob=0.926] Sample: 49%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 122/250 [00:26, 7.21it/s, step size=6.43e-01, acc. prob=0.925] Sample: 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 124/250 [00:27, 7.50it/s, step size=6.43e-01, acc. prob=0.925] Sample: 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 125/250 [00:27, 7.40it/s, step size=6.43e-01, acc. prob=0.926] Sample: 50%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 126/250 [00:27, 6.65it/s, step size=6.43e-01, acc. prob=0.926] Sample: 51%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 127/250 [00:27, 6.71it/s, step size=6.43e-01, acc. prob=0.926] Sample: 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 129/250 [00:27, 8.07it/s, step size=6.43e-01, acc. prob=0.926] Sample: 52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 131/250 [00:28, 9.08it/s, step size=6.43e-01, acc. prob=0.924] Sample: 53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 132/250 [00:28, 8.50it/s, step size=6.43e-01, acc. prob=0.924] Sample: 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 134/250 [00:28, 8.47it/s, step size=6.43e-01, acc. prob=0.923] Sample: 54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 136/250 [00:28, 9.16it/s, step size=6.43e-01, acc. prob=0.919] Sample: 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 137/250 [00:28, 8.55it/s, step size=6.43e-01, acc. prob=0.918] Sample: 55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 138/250 [00:28, 7.31it/s, step size=6.43e-01, acc. prob=0.918] Sample: 56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 140/250 [00:29, 8.46it/s, step size=6.43e-01, acc. prob=0.920] Sample: 57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 142/250 [00:29, 8.48it/s, step size=6.43e-01, acc. prob=0.920] Sample: 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 144/250 [00:29, 9.31it/s, step size=6.43e-01, acc. prob=0.919] Sample: 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 145/250 [00:29, 7.90it/s, step size=6.43e-01, acc. prob=0.919] Sample: 58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 146/250 [00:29, 6.83it/s, step size=6.43e-01, acc. prob=0.920] Sample: 59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 147/250 [00:30, 6.80it/s, step size=6.43e-01, acc. prob=0.918] Sample: 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 149/250 [00:30, 8.95it/s, step size=6.43e-01, acc. prob=0.917] Sample: 60%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 151/250 [00:30, 9.68it/s, step size=6.43e-01, acc. prob=0.915] Sample: 61%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 153/250 [00:30, 10.29it/s, step size=6.43e-01, acc. prob=0.916] Sample: 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 155/250 [00:30, 8.71it/s, step size=6.43e-01, acc. prob=0.916] Sample: 62%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 156/250 [00:31, 7.73it/s, step size=6.43e-01, acc. prob=0.916] Sample: 63%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 158/250 [00:31, 8.59it/s, step size=6.43e-01, acc. prob=0.917] Sample: 64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 160/250 [00:31, 7.94it/s, step size=6.43e-01, acc. prob=0.916] Sample: 65%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 162/250 [00:31, 8.76it/s, step size=6.43e-01, acc. prob=0.916] Sample: 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 164/250 [00:32, 8.05it/s, step size=6.43e-01, acc. prob=0.917] Sample: 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 165/250 [00:32, 7.15it/s, step size=6.43e-01, acc. prob=0.915] Sample: 66%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 166/250 [00:32, 6.52it/s, step size=6.43e-01, acc. prob=0.916] Sample: 67%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 168/250 [00:32, 7.74it/s, step size=6.43e-01, acc. prob=0.916] Sample: 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 170/250 [00:32, 8.64it/s, step size=6.43e-01, acc. prob=0.918] Sample: 68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 171/250 [00:33, 7.71it/s, step size=6.43e-01, acc. prob=0.917] Sample: 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 172/250 [00:33, 6.96it/s, step size=6.43e-01, acc. prob=0.918] Sample: 69%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 173/250 [00:33, 6.99it/s, step size=6.43e-01, acc. prob=0.917] Sample: 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 175/250 [00:33, 7.78it/s, step size=6.43e-01, acc. prob=0.918] Sample: 70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 176/250 [00:33, 7.55it/s, step size=6.43e-01, acc. prob=0.916] Sample: 71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 178/250 [00:33, 8.71it/s, step size=6.43e-01, acc. prob=0.918] Sample: 72%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 180/250 [00:34, 8.65it/s, step size=6.43e-01, acc. prob=0.918] Sample: 73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 182/250 [00:34, 10.54it/s, step size=6.43e-01, acc. prob=0.919] Sample: 74%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 184/250 [00:34, 8.42it/s, step size=6.43e-01, acc. prob=0.919] Sample: 75%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 187/250 [00:34, 10.41it/s, step size=6.43e-01, acc. prob=0.920] Sample: 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 189/250 [00:35, 8.58it/s, step size=6.43e-01, acc. prob=0.918] Sample: 76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 191/250 [00:35, 8.71it/s, step size=6.43e-01, acc. prob=0.919] Sample: 77%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 193/250 [00:35, 9.39it/s, step size=6.43e-01, acc. prob=0.918] Sample: 78%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 195/250 [00:35, 10.03it/s, step size=6.43e-01, acc. prob=0.917] Sample: 79%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 197/250 [00:35, 10.50it/s, step size=6.43e-01, acc. prob=0.916] Sample: 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 199/250 [00:35, 11.90it/s, step size=6.43e-01, acc. prob=0.915] Sample: 80%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 201/250 [00:36, 8.37it/s, step size=6.43e-01, acc. prob=0.916] Sample: 81%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 203/250 [00:36, 9.14it/s, step size=6.43e-01, acc. prob=0.916] Sample: 82%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 205/250 [00:36, 7.74it/s, step size=6.43e-01, acc. prob=0.917] Sample: 83%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 207/250 [00:37, 8.61it/s, step size=6.43e-01, acc. prob=0.918] Sample: 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž | 209/250 [00:37, 7.52it/s, step size=6.43e-01, acc. prob=0.918] Sample: 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 210/250 [00:37, 7.37it/s, step size=6.43e-01, acc. prob=0.918] Sample: 84%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 211/250 [00:37, 7.27it/s, step size=6.43e-01, acc. prob=0.918] Sample: 85%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ– | 212/250 [00:37, 6.60it/s, step size=6.43e-01, acc. prob=0.918] Sample: 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ | 214/250 [00:38, 7.25it/s, step size=6.43e-01, acc. prob=0.918] Sample: 86%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 216/250 [00:38, 8.44it/s, step size=6.43e-01, acc. prob=0.919] Sample: 87%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹ | 218/250 [00:38, 7.70it/s, step size=6.43e-01, acc. prob=0.919] Sample: 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 219/250 [00:38, 6.87it/s, step size=6.43e-01, acc. prob=0.920] Sample: 88%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š | 220/250 [00:38, 6.39it/s, step size=6.43e-01, acc. prob=0.920] Sample: 89%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 222/250 [00:39, 7.70it/s, step size=6.43e-01, acc. prob=0.921] Sample: 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰ | 224/250 [00:39, 7.41it/s, step size=6.43e-01, acc. prob=0.921] Sample: 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 225/250 [00:39, 6.79it/s, step size=6.43e-01, acc. prob=0.920] Sample: 90%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 226/250 [00:39, 6.78it/s, step size=6.43e-01, acc. prob=0.919] Sample: 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 227/250 [00:39, 6.75it/s, step size=6.43e-01, acc. prob=0.919] Sample: 91%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ | 228/250 [00:40, 6.90it/s, step size=6.43e-01, acc. prob=0.919] Sample: 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 230/250 [00:40, 8.20it/s, step size=6.43e-01, acc. prob=0.919] Sample: 92%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 231/250 [00:40, 7.90it/s, step size=6.43e-01, acc. prob=0.918] Sample: 93%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 232/250 [00:40, 6.83it/s, step size=6.43e-01, acc. prob=0.918] Sample: 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž| 234/250 [00:40, 7.52it/s, step size=6.43e-01, acc. prob=0.918] Sample: 94%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 236/250 [00:41, 8.02it/s, step size=6.43e-01, acc. prob=0.918] Sample: 95%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–| 237/250 [00:41, 7.12it/s, step size=6.43e-01, acc. prob=0.919] Sample: 96%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 241/250 [00:41, 11.39it/s, step size=6.43e-01, acc. prob=0.920] Sample: 97%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‹| 243/250 [00:41, 10.62it/s, step size=6.43e-01, acc. prob=0.920] Sample: 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 245/250 [00:41, 9.19it/s, step size=6.43e-01, acc. prob=0.920] Sample: 98%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š| 246/250 [00:42, 7.98it/s, step size=6.43e-01, acc. prob=0.921] Sample: 99%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 247/250 [00:42, 7.21it/s, step size=6.43e-01, acc. prob=0.919] Sample: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰| 249/250 [00:42, 7.77it/s, step size=6.43e-01, acc. prob=0.920] Sample: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 250/250 [00:42, 5.86it/s, step size=6.43e-01, acc. prob=0.920] -.. GENERATED FROM PYTHON SOURCE LINES 213-217 +.. GENERATED FROM PYTHON SOURCE LINES 219-223 Posterior Predictive Checks --------------------------- After obtaining the posterior samples, we perform posterior predictive checks. This step is crucial to evaluate the performance and validity of our probabilistic model. -.. GENERATED FROM PYTHON SOURCE LINES 219-220 +.. GENERATED FROM PYTHON SOURCE LINES 225-226 Sample from posterior predictive and visualize -.. GENERATED FROM PYTHON SOURCE LINES 220-227 +.. GENERATED FROM PYTHON SOURCE LINES 226-233 -.. code-block:: default +.. code-block:: Python posterior_samples = mcmc.get_samples() posterior_predictive = Predictive(model, posterior_samples)(y_obs_list) @@ -535,13 +493,13 @@ Sample from posterior predictive and visualize .. code-block:: none - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/arviz/data/io_pyro.py:157: UserWarning: Could not get vectorized trace, log_likelihood group will be omitted. Check your model vectorization or set log_likelihood=False + /home/leguark/.virtualenvs/gempy_dependencies/lib/python3.10/site-packages/arviz/data/io_pyro.py:158: UserWarning: Could not get vectorized trace, log_likelihood group will be omitted. Check your model vectorization or set log_likelihood=False warnings.warn( -.. GENERATED FROM PYTHON SOURCE LINES 228-233 +.. GENERATED FROM PYTHON SOURCE LINES 234-239 Density Plot of Posterior Predictive ------------------------------------ @@ -549,13 +507,13 @@ A density plot provides a visual representation of the distribution of the posterior predictive checks. It helps in comparing the prior and posterior distributions and in assessing the impact of our observed data on the model. -.. GENERATED FROM PYTHON SOURCE LINES 235-236 +.. GENERATED FROM PYTHON SOURCE LINES 241-242 Plot density of posterior predictive and prior predictive -.. GENERATED FROM PYTHON SOURCE LINES 236-246 +.. GENERATED FROM PYTHON SOURCE LINES 242-252 -.. code-block:: default +.. code-block:: Python az.plot_density( data=[data.posterior_predictive, data.prior_predictive], @@ -582,7 +540,7 @@ Plot density of posterior predictive and prior predictive .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 4 minutes 11.687 seconds) + **Total running time of the script:** (0 minutes 47.845 seconds) .. _sphx_glr_download_examples_04_probabilistic_modeling_01_thickness_problem_gempy.py: @@ -591,17 +549,14 @@ Plot density of posterior predictive and prior predictive .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 01_thickness_problem_gempy.ipynb <01_thickness_problem_gempy.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 01_thickness_problem_gempy.py <01_thickness_problem_gempy.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 01_thickness_problem_gempy.ipynb <01_thickness_problem_gempy.ipynb>` - .. only:: html diff --git a/_sources/examples/04_probabilistic_modeling/02_model_1_bayesian.rst.txt b/_sources/examples/04_probabilistic_modeling/02_model_1_bayesian.rst.txt index eaf6482..7136a9b 100644 --- a/_sources/examples/04_probabilistic_modeling/02_model_1_bayesian.rst.txt +++ b/_sources/examples/04_probabilistic_modeling/02_model_1_bayesian.rst.txt @@ -25,53 +25,65 @@ This example demonstrates a probabilistic inversion of a geological model using .. GENERATED FROM PYTHON SOURCE LINES 8-32 -.. code-block:: default +.. code-block:: Python - import time import os + import time + + import arviz as az import numpy as np - import xarray as xr - import pandas as pd - import torch import pyro import pyro.distributions as dist - import gempy as gp - import gempy_viewer as gpv - from matplotlib import pyplot as plt + import torch + import xarray as xr from dotenv import dotenv_values + from matplotlib import pyplot as plt from pyro.infer import MCMC, NUTS, Predictive - import arviz as az + import gempy as gp + import gempy_engine + import gempy_viewer as gpv + from gempy_engine.core.backend_tensor import BackendTensor from gempy_probability.plot_posterior import default_red, default_blue from vector_geology.bayesian_helpers import calculate_scale_shift, gaussian_kernel from vector_geology.model_1_builder import initialize_geo_model, setup_geophysics from vector_geology.omf_to_gempy import process_file - from vector_geology.utils import extend_box - import gempy_engine - from gempy_engine.core.backend_tensor import BackendTensor -.. rst-class:: sphx-glr-script-out - .. code-block:: none - /home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible. - warnings.warn("Welly or Striplog not installed. No well reader possible.") +.. GENERATED FROM PYTHON SOURCE LINES 33-34 + +Config +.. GENERATED FROM PYTHON SOURCE LINES 34-38 -.. GENERATED FROM PYTHON SOURCE LINES 33-34 +.. code-block:: Python + + seed = 123456 + torch.manual_seed(seed) + pyro.set_rng_seed(seed) + + + + + + + + +.. GENERATED FROM PYTHON SOURCE LINES 39-40 Start the timer for benchmarking purposes -.. GENERATED FROM PYTHON SOURCE LINES 34-36 +.. GENERATED FROM PYTHON SOURCE LINES 40-42 -.. code-block:: default +.. code-block:: Python start_time = time.time() @@ -82,13 +94,13 @@ Start the timer for benchmarking purposes -.. GENERATED FROM PYTHON SOURCE LINES 37-38 +.. GENERATED FROM PYTHON SOURCE LINES 43-44 Load necessary configuration and paths from environment variables -.. GENERATED FROM PYTHON SOURCE LINES 38-41 +.. GENERATED FROM PYTHON SOURCE LINES 44-47 -.. code-block:: default +.. code-block:: Python config = dotenv_values() path = config.get("PATH_TO_MODEL_1_Subsurface") @@ -100,13 +112,13 @@ Load necessary configuration and paths from environment variables -.. GENERATED FROM PYTHON SOURCE LINES 42-43 +.. GENERATED FROM PYTHON SOURCE LINES 48-49 Initialize lists to store structural elements for the geological model -.. GENERATED FROM PYTHON SOURCE LINES 43-47 +.. GENERATED FROM PYTHON SOURCE LINES 49-53 -.. code-block:: default +.. code-block:: Python structural_elements = [] global_extent = None @@ -119,13 +131,13 @@ Initialize lists to store structural elements for the geological model -.. GENERATED FROM PYTHON SOURCE LINES 48-49 +.. GENERATED FROM PYTHON SOURCE LINES 54-55 Process each .nc file in the specified directory for model construction -.. GENERATED FROM PYTHON SOURCE LINES 49-55 +.. GENERATED FROM PYTHON SOURCE LINES 55-61 -.. code-block:: default +.. code-block:: Python for filename in os.listdir(path): base, ext = os.path.splitext(filename) @@ -140,13 +152,13 @@ Process each .nc file in the specified directory for model construction -.. GENERATED FROM PYTHON SOURCE LINES 56-57 +.. GENERATED FROM PYTHON SOURCE LINES 62-63 Configure GemPy for geological modeling with PyTorch backend -.. GENERATED FROM PYTHON SOURCE LINES 57-65 +.. GENERATED FROM PYTHON SOURCE LINES 63-71 -.. code-block:: default +.. code-block:: Python BackendTensor.change_backend_gempy(engine_backend=gp.data.AvailableBackends.PYTORCH, dtype="float64") geo_model = initialize_geo_model( @@ -165,18 +177,20 @@ Configure GemPy for geological modeling with PyTorch backend .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - Active grids: ['regular' 'topography'] + /home/leguark/gempy/gempy/core/data/structural_frame.py:206: UserWarning: The basement color was already used in the structural elements.Changing the basement color to #015482. + warnings.warn(f"The basement color was already used in the structural elements." + Active grids: GridTypes.NONE|TOPOGRAPHY|DENSE -.. GENERATED FROM PYTHON SOURCE LINES 66-67 +.. GENERATED FROM PYTHON SOURCE LINES 72-73 Setup geophysics configuration for the model -.. GENERATED FROM PYTHON SOURCE LINES 67-72 +.. GENERATED FROM PYTHON SOURCE LINES 73-78 -.. code-block:: default +.. code-block:: Python geophysics_input = setup_geophysics( env_path="PATH_TO_MODEL_1_BOUGUER", @@ -191,18 +205,18 @@ Setup geophysics configuration for the model .. code-block:: none - Active grids: ['regular' 'topography' 'centered'] + Active grids: GridTypes.NONE|CENTERED|TOPOGRAPHY|DENSE -.. GENERATED FROM PYTHON SOURCE LINES 73-74 +.. GENERATED FROM PYTHON SOURCE LINES 79-80 Adjust interpolation options for geological modeling -.. GENERATED FROM PYTHON SOURCE LINES 74-79 +.. GENERATED FROM PYTHON SOURCE LINES 80-85 -.. code-block:: default +.. code-block:: Python interpolation_options = geo_model.interpolation_options interpolation_options.kernel_options.range = .7 @@ -216,13 +230,13 @@ Adjust interpolation options for geological modeling -.. GENERATED FROM PYTHON SOURCE LINES 80-81 +.. GENERATED FROM PYTHON SOURCE LINES 86-87 Compute the geological model -.. GENERATED FROM PYTHON SOURCE LINES 81-89 +.. GENERATED FROM PYTHON SOURCE LINES 87-95 -.. code-block:: default +.. code-block:: Python sol = gp.compute_model( gempy_model=geo_model, @@ -241,19 +255,27 @@ Compute the geological model .. code-block:: none Setting Backend To: AvailableBackends.PYTORCH - /home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten - warnings.warn( + Condition number: 146830.09028250765. + Chunking done: 13 chunks + Condition number: 276736.9518433538. + Chunking done: 51 chunks + Chunking done: 6 chunks + Chunking done: 7 chunks + Chunking done: 28 chunks + Chunking done: 6 chunks + Chunking done: 25 chunks + Chunking done: 9 chunks -.. GENERATED FROM PYTHON SOURCE LINES 90-91 +.. GENERATED FROM PYTHON SOURCE LINES 96-97 Visualize the computed geological model in 3D -.. GENERATED FROM PYTHON SOURCE LINES 91-98 +.. GENERATED FROM PYTHON SOURCE LINES 97-104 -.. code-block:: default +.. code-block:: Python gempy_vista = gpv.plot_3d( model=geo_model, @@ -279,13 +301,13 @@ Visualize the computed geological model in 3D -.. GENERATED FROM PYTHON SOURCE LINES 99-100 +.. GENERATED FROM PYTHON SOURCE LINES 105-106 Calculate and adapt the observed gravity data for model comparison -.. GENERATED FROM PYTHON SOURCE LINES 100-107 +.. GENERATED FROM PYTHON SOURCE LINES 106-113 -.. code-block:: default +.. code-block:: Python grav = sol.gravity s, c = calculate_scale_shift( @@ -301,13 +323,13 @@ Calculate and adapt the observed gravity data for model comparison -.. GENERATED FROM PYTHON SOURCE LINES 108-109 +.. GENERATED FROM PYTHON SOURCE LINES 114-115 Plot the 2D gravity data for visualization -.. GENERATED FROM PYTHON SOURCE LINES 109-121 +.. GENERATED FROM PYTHON SOURCE LINES 115-127 -.. code-block:: default +.. code-block:: Python plot2d = gpv.plot_2d(geo_model, show_topography=True, section_names=["topography"], show=False) sc = plot2d.axes[0].scatter( @@ -334,19 +356,19 @@ Plot the 2D gravity data for visualization .. code-block:: none - /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:104: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid + /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:105: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid warnings.warn( -.. GENERATED FROM PYTHON SOURCE LINES 122-123 +.. GENERATED FROM PYTHON SOURCE LINES 128-129 Define hyperparameters for the Bayesian geological model -.. GENERATED FROM PYTHON SOURCE LINES 123-127 +.. GENERATED FROM PYTHON SOURCE LINES 129-133 -.. code-block:: default +.. code-block:: Python length_scale_prior = torch.tensor(1_000.0) variance_prior = torch.tensor(25.0 ** 2) @@ -359,13 +381,13 @@ Define hyperparameters for the Bayesian geological model -.. GENERATED FROM PYTHON SOURCE LINES 128-129 +.. GENERATED FROM PYTHON SOURCE LINES 134-135 Configure the Pyro model for geological data -.. GENERATED FROM PYTHON SOURCE LINES 129-135 +.. GENERATED FROM PYTHON SOURCE LINES 135-141 -.. code-block:: default +.. code-block:: Python prior_tensor = BackendTensor.t.array([2.61, 2.92, 3.1, 2.92, 2.61, 2.61]).to(torch.float64) geo_model.geophysics_input = gp.data.GeophysicsInput( @@ -380,13 +402,13 @@ Configure the Pyro model for geological data -.. GENERATED FROM PYTHON SOURCE LINES 136-137 +.. GENERATED FROM PYTHON SOURCE LINES 142-143 Define the Pyro probabilistic model for inversion -.. GENERATED FROM PYTHON SOURCE LINES 137-165 +.. GENERATED FROM PYTHON SOURCE LINES 143-171 -.. code-block:: default +.. code-block:: Python def model(y_obs_list, interpolation_input): """ @@ -423,106 +445,80 @@ Define the Pyro probabilistic model for inversion -.. GENERATED FROM PYTHON SOURCE LINES 166-167 +.. GENERATED FROM PYTHON SOURCE LINES 172-173 Prepare observed data for Pyro model and optimize mesh settings -.. GENERATED FROM PYTHON SOURCE LINES 167-173 +.. GENERATED FROM PYTHON SOURCE LINES 173-179 -.. code-block:: default +.. code-block:: Python y_obs_list = torch.tensor(adapted_observed_grav.values).view(1, 17) interpolation_options.mesh_extraction = False interpolation_options.number_octree_levels = 1 - geo_model.grid.set_inactive("topography") - geo_model.grid.set_inactive("regular") + geo_model.grid.active_grids ^= gp.data.Grid.GridTypes.TOPOGRAPHY + geo_model.grid.active_grids ^= gp.data.Grid.GridTypes.DENSE -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - array([False, False, False, False, True]) - - -.. GENERATED FROM PYTHON SOURCE LINES 174-175 +.. GENERATED FROM PYTHON SOURCE LINES 180-181 Perform prior sampling and visualize the results -.. GENERATED FROM PYTHON SOURCE LINES 175-181 +.. GENERATED FROM PYTHON SOURCE LINES 181-188 -.. code-block:: default +.. code-block:: Python + raise NotImplementedError("From this point we need to optimize the code again.") if True: - prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input) + prior = Predictive(model, num_samples=50)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) data = az.from_pyro(prior=prior) az.plot_trace(data.prior) plt.show() - -.. image-sg:: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_004.png - :alt: $\mu_{density}$, $\mu_{density}$, $\mu_{gravity}$, $\mu_{gravity}$, obs, obs - :srcset: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_004.png - :class: sphx-glr-single-img - - .. rst-class:: sphx-glr-script-out - .. code-block:: none +.. code-block:: pytb - Final Iteration 584, Residual Norm: 1.0496041889313497e-07 - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/arviz/utils.py:184: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. - numba_fn = numba.jit(**self.kwargs)(self.function) - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/arviz/stats/density_utils.py:487: UserWarning: Your data appears to have a single value or no finite values - warnings.warn("Your data appears to have a single value or no finite values") + Traceback (most recent call last): + File "/home/leguark/vector-geology/examples/04_probabilistic_modeling/02_model_1_bayesian.py", line 181, in + raise NotImplementedError("From this point we need to optimize the code again.") + NotImplementedError: From this point we need to optimize the code again. -.. GENERATED FROM PYTHON SOURCE LINES 182-183 +.. GENERATED FROM PYTHON SOURCE LINES 189-190 Run Markov Chain Monte Carlo (MCMC) using the NUTS algorithm for probabilistic inversion -.. GENERATED FROM PYTHON SOURCE LINES 183-188 +.. GENERATED FROM PYTHON SOURCE LINES 190-195 -.. code-block:: default +.. code-block:: Python pyro.primitives.enable_validation(is_validate=True) nuts_kernel = NUTS(model) mcmc = MCMC(nuts_kernel, num_samples=1000, warmup_steps=300) - mcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input) - + mcmc.run(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - Warmup: 0%| | 0/1300 [00:00, ?it/s] Warmup: 0%| | 1/1300 [00:01, 1.30s/it, step size=1.80e+00, acc. prob=1.000] Warmup: 0%| | 3/1300 [00:01, 2.52it/s, step size=3.00e-02, acc. prob=0.333] Warmup: 0%| | 5/1300 [00:01, 3.64it/s, step size=6.34e-02, acc. prob=0.600] Warmup: 1%| | 7/1300 [00:02, 4.44it/s, step size=1.93e-01, acc. prob=0.714] Warmup: 1%| | 9/1300 [00:02, 5.84it/s, step size=2.83e-02, acc. prob=0.667] Warmup: 1%| | 11/1300 [00:02, 4.49it/s, step size=7.55e-02, acc. prob=0.719] Warmup: 1%|1 | 13/1300 [00:03, 5.72it/s, step size=2.70e-01, acc. prob=0.762] Warmup: 1%|1 | 15/1300 [00:03, 5.91it/s, step size=6.36e-02, acc. prob=0.736] Warmup: 1%|1 | 16/1300 [00:03, 5.48it/s, step size=1.20e-01, acc. prob=0.752] Warmup: 1%|1 | 18/1300 [00:04, 4.32it/s, step size=2.59e-02, acc. prob=0.729] Warmup: 1%|1 | 19/1300 [00:04, 3.37it/s, step size=4.84e-02, acc. prob=0.743] Warmup: 2%|1 | 20/1300 [00:05, 3.51it/s, step size=5.86e-02, acc. prob=0.749] Warmup: 2%|1 | 21/1300 [00:05, 3.65it/s, step size=7.19e-02, acc. prob=0.754] Warmup: 2%|1 | 22/1300 [00:05, 3.78it/s, step size=1.32e-01, acc. prob=0.765] Warmup: 2%|1 | 24/1300 [00:06, 3.48it/s, step size=2.31e-02, acc. prob=0.742] Warmup: 2%|1 | 25/1300 [00:07, 2.02it/s, step size=4.19e-02, acc. prob=0.752] Warmup: 2%|2 | 27/1300 [00:07, 2.77it/s, step size=8.37e-02, acc. prob=0.764] Warmup: 2%|2 | 29/1300 [00:07, 3.86it/s, step size=1.30e-01, acc. prob=0.772] Warmup: 2%|2 | 31/1300 [00:07, 5.06it/s, step size=3.99e-01, acc. prob=0.786] Warmup: 3%|2 | 33/1300 [00:08, 4.22it/s, step size=8.10e-02, acc. prob=0.769] Warmup: 3%|2 | 34/1300 [00:08, 4.22it/s, step size=1.41e-01, acc. prob=0.776] Warmup: 3%|2 | 36/1300 [00:09, 5.48it/s, step size=1.69e-01, acc. prob=0.779] Warmup: 3%|2 | 38/1300 [00:09, 4.39it/s, step size=3.70e-02, acc. prob=0.764] Warmup: 3%|3 | 39/1300 [00:10, 3.44it/s, step size=6.20e-02, acc. prob=0.770] Warmup: 3%|3 | 40/1300 [00:10, 2.87it/s, step size=1.05e-01, acc. prob=0.776] Warmup: 3%|3 | 42/1300 [00:10, 4.07it/s, step size=5.32e-02, acc. prob=0.770] Warmup: 3%|3 | 43/1300 [00:11, 4.10it/s, step size=3.82e-02, acc. prob=0.767] Warmup: 3%|3 | 45/1300 [00:11, 5.49it/s, step size=9.17e-02, acc. prob=0.776] Warmup: 4%|3 | 47/1300 [00:11, 6.81it/s, step size=2.12e-02, acc. prob=0.764] Warmup: 4%|3 | 48/1300 [00:11, 6.03it/s, step size=3.30e-02, acc. prob=0.768] Warmup: 4%|3 | 49/1300 [00:12, 3.95it/s, step size=5.35e-02, acc. prob=0.773] Warmup: 4%|3 | 50/1300 [00:12, 4.01it/s, step size=7.12e-02, acc. prob=0.776] Warmup: 4%|3 | 51/1300 [00:12, 4.05it/s, step size=1.06e-01, acc. prob=0.779] Warmup: 4%|4 | 53/1300 [00:12, 5.68it/s, step size=2.74e-02, acc. prob=0.769] Warmup: 4%|4 | 54/1300 [00:13, 4.39it/s, step size=4.37e-02, acc. prob=0.773] Warmup: 4%|4 | 55/1300 [00:13, 3.70it/s, step size=7.04e-02, acc. prob=0.777] Warmup: 4%|4 | 57/1300 [00:13, 5.21it/s, step size=7.57e-02, acc. prob=0.778] Warmup: 4%|4 | 58/1300 [00:14, 4.94it/s, step size=9.16e-02, acc. prob=0.780] Warmup: 5%|4 | 60/1300 [00:14, 6.51it/s, step size=1.22e-01, acc. prob=0.782] Warmup: 5%|4 | 62/1300 [00:14, 7.87it/s, step size=4.05e-02, acc. prob=0.775] Warmup: 5%|4 | 63/1300 [00:14, 5.49it/s, step size=6.37e-02, acc. prob=0.778] Warmup: 5%|4 | 64/1300 [00:15, 5.12it/s, step size=9.98e-02, acc. prob=0.782] Warmup: 5%|5 | 66/1300 [00:15, 4.09it/s, step size=3.34e-02, acc. prob=0.774] Warmup: 5%|5 | 67/1300 [00:16, 3.60it/s, step size=5.00e-02, acc. prob=0.777] Warmup: 5%|5 | 68/1300 [00:16, 3.72it/s, step size=5.22e-02, acc. prob=0.778] Warmup: 5%|5 | 70/1300 [00:16, 4.45it/s, step size=1.24e-01, acc. prob=0.784] Warmup: 6%|5 | 72/1300 [00:17, 4.35it/s, step size=3.51e-02, acc. prob=0.776] Warmup: 6%|5 | 73/1300 [00:17, 4.31it/s, step size=4.52e-02, acc. prob=0.778] Warmup: 6%|5 | 74/1300 [00:17, 3.70it/s, step size=5.72e-02, acc. prob=0.780] Warmup: 6%|5 | 75/1300 [00:18, 3.81it/s, step size=6.17e-02, acc. prob=0.780] Warmup: 6%|5 | 76/1300 [00:18, 3.91it/s, step size=6.78e-02, acc. prob=0.781] Warmup: 6%|5 | 77/1300 [00:18, 3.96it/s, step size=9.45e-02, acc. prob=0.783] Warmup: 6%|6 | 79/1300 [00:18, 5.66it/s, step size=7.05e-02, acc. prob=0.782] Warmup: 6%|6 | 81/1300 [00:18, 5.87it/s, step size=1.60e-01, acc. prob=0.787] Warmup: 6%|6 | 83/1300 [00:19, 7.24it/s, step size=3.73e-02, acc. prob=0.778] Warmup: 6%|6 | 84/1300 [00:19, 4.46it/s, step size=5.41e-02, acc. prob=0.781] Warmup: 7%|6 | 85/1300 [00:19, 4.38it/s, step size=8.07e-02, acc. prob=0.783] Warmup: 7%|6 | 86/1300 [00:20, 4.31it/s, step size=5.34e-02, acc. prob=0.781] Warmup: 7%|6 | 88/1300 [00:20, 5.92it/s, step size=1.13e-01, acc. prob=0.786] Warmup: 7%|6 | 89/1300 [00:20, 5.39it/s, step size=1.63e-01, acc. prob=0.788] Warmup: 7%|6 | 90/1300 [00:20, 5.04it/s, step size=4.70e-02, acc. prob=0.781] Warmup: 7%|7 | 91/1300 [00:21, 4.79it/s, step size=4.63e-02, acc. prob=0.781] Warmup: 7%|7 | 93/1300 [00:21, 6.50it/s, step size=1.01e-01, acc. prob=0.786] Warmup: 7%|7 | 94/1300 [00:21, 5.76it/s, step size=1.48e-01, acc. prob=0.788] Warmup: 7%|7 | 95/1300 [00:21, 5.29it/s, step size=6.70e-02, acc. prob=0.783] Warmup: 7%|7 | 96/1300 [00:21, 4.96it/s, step size=9.82e-02, acc. prob=0.786] Warmup: 7%|7 | 97/1300 [00:22, 4.74it/s, step size=1.36e-01, acc. prob=0.788] Warmup: 8%|7 | 99/1300 [00:23, 2.63it/s, step size=9.23e-01, acc. prob=0.783] Warmup: 8%|7 | 101/1300 [00:23, 3.79it/s, step size=2.19e+00, acc. prob=0.777] Warmup: 8%|7 | 103/1300 [00:24, 2.51it/s, step size=2.95e-01, acc. prob=0.772] Warmup: 8%|8 | 104/1300 [00:25, 2.17it/s, step size=4.49e-01, acc. prob=0.774] Warmup: 8%|8 | 105/1300 [00:26, 2.07it/s, step size=7.63e-01, acc. prob=0.776] Warmup: 8%|8 | 106/1300 [00:26, 2.36it/s, step size=1.25e+00, acc. prob=0.778] Warmup: 8%|8 | 107/1300 [00:26, 2.65it/s, step size=1.29e+00, acc. prob=0.778] Warmup: 8%|8 | 109/1300 [00:26, 3.50it/s, step size=6.02e-01, acc. prob=0.777] Warmup: 8%|8 | 110/1300 [00:27, 3.19it/s, step size=1.12e+00, acc. prob=0.779] Warmup: 9%|8 | 111/1300 [00:27, 3.38it/s, step size=2.12e+00, acc. prob=0.781] Warmup: 9%|8 | 113/1300 [00:28, 2.68it/s, step size=4.46e-01, acc. prob=0.776] Warmup: 9%|8 | 115/1300 [00:29, 2.83it/s, step size=9.43e-01, acc. prob=0.779] Warmup: 9%|9 | 117/1300 [00:29, 3.86it/s, step size=1.58e-01, acc. prob=0.774] Warmup: 9%|9 | 118/1300 [00:30, 2.25it/s, step size=2.95e-01, acc. prob=0.776] Warmup: 9%|9 | 119/1300 [00:31, 1.64it/s, step size=5.37e-01, acc. prob=0.778] Warmup: 9%|9 | 121/1300 [00:32, 2.29it/s, step size=1.77e+00, acc. prob=0.781] Warmup: 9%|9 | 123/1300 [00:32, 3.23it/s, step size=3.23e-01, acc. prob=0.777] Warmup: 10%|9 | 124/1300 [00:33, 2.04it/s, step size=5.89e-01, acc. prob=0.779] Warmup: 10%|9 | 125/1300 [00:33, 1.97it/s, step size=1.06e+00, acc. prob=0.780] Warmup: 10%|9 | 126/1300 [00:34, 2.26it/s, step size=1.59e+00, acc. prob=0.782] Warmup: 10%|9 | 128/1300 [00:34, 3.40it/s, step size=2.83e-01, acc. prob=0.777] Warmup: 10%|9 | 129/1300 [00:34, 3.14it/s, step size=5.03e-01, acc. prob=0.779] Warmup: 10%|# | 130/1300 [00:34, 3.34it/s, step size=8.68e-01, acc. prob=0.780] Warmup: 10%|# | 131/1300 [00:35, 3.52it/s, step size=3.95e-01, acc. prob=0.778] Warmup: 10%|# | 132/1300 [00:35, 3.67it/s, step size=6.92e-01, acc. prob=0.780] Warmup: 10%|# | 133/1300 [00:35, 3.79it/s, step size=1.20e+00, acc. prob=0.782] Warmup: 10%|# | 134/1300 [00:35, 3.89it/s, step size=1.63e+00, acc. prob=0.783] Warmup: 10%|# | 136/1300 [00:36, 5.60it/s, step size=3.54e-01, acc. prob=0.778] Warmup: 11%|# | 137/1300 [00:36, 3.69it/s, step size=6.06e-01, acc. prob=0.780] Warmup: 11%|# | 139/1300 [00:36, 4.43it/s, step size=9.53e-01, acc. prob=0.781] Warmup: 11%|# | 141/1300 [00:37, 4.95it/s, step size=2.15e+00, acc. prob=0.784] Warmup: 11%|#1 | 143/1300 [00:37, 6.25it/s, step size=2.05e+00, acc. prob=0.784] Warmup: 11%|#1 | 145/1300 [00:37, 6.26it/s, step size=6.89e-01, acc. prob=0.781] Warmup: 11%|#1 | 146/1300 [00:38, 5.70it/s, step size=8.77e-01, acc. prob=0.782] Warmup: 11%|#1 | 148/1300 [00:38, 5.90it/s, step size=1.11e+00, acc. prob=0.783] Warmup: 11%|#1 | 149/1300 [00:39, 3.78it/s, step size=9.01e-01, acc. prob=0.784] Warmup: 12%|#1 | 150/1300 [00:39, 3.04it/s, step size=1.29e+01, acc. prob=0.785] Warmup: 12%|#1 | 151/1300 [00:39, 3.46it/s, step size=2.18e+00, acc. prob=0.780] Warmup: 12%|#1 | 153/1300 [00:39, 4.92it/s, step size=8.43e-01, acc. prob=0.779] Warmup: 12%|#1 | 155/1300 [00:40, 6.31it/s, step size=6.84e-01, acc. prob=0.779] Warmup: 12%|#2 | 157/1300 [00:40, 6.30it/s, step size=1.67e+00, acc. prob=0.781] Warmup: 12%|#2 | 158/1300 [00:40, 5.70it/s, step size=1.67e+00, acc. prob=0.782] Warmup: 12%|#2 | 159/1300 [00:40, 5.29it/s, step size=3.10e+00, acc. prob=0.783] Warmup: 12%|#2 | 161/1300 [00:41, 5.61it/s, step size=1.43e+00, acc. prob=0.782] Warmup: 12%|#2 | 162/1300 [00:41, 5.21it/s, step size=1.53e+00, acc. prob=0.782] Warmup: 13%|#2 | 163/1300 [00:41, 4.92it/s, step size=2.22e+00, acc. prob=0.783] Warmup: 13%|#2 | 165/1300 [00:41, 6.51it/s, step size=2.03e+00, acc. prob=0.783] Warmup: 13%|#2 | 167/1300 [00:41, 7.89it/s, step size=6.96e+00, acc. prob=0.785] Warmup: 13%|#3 | 169/1300 [00:42, 7.23it/s, step size=1.03e+00, acc. prob=0.782] Warmup: 13%|#3 | 170/1300 [00:42, 4.50it/s, step size=1.18e+00, acc. prob=0.782] Warmup: 13%|#3 | 171/1300 [00:43, 4.42it/s, step size=1.97e+00, acc. prob=0.783] Warmup: 13%|#3 | 173/1300 [00:43, 5.00it/s, step size=3.90e+00, acc. prob=0.785] Warmup: 13%|#3 | 175/1300 [00:44, 4.12it/s, step size=7.13e-01, acc. prob=0.781] Warmup: 14%|#3 | 176/1300 [00:44, 3.65it/s, step size=9.43e-01, acc. prob=0.782] Warmup: 14%|#3 | 177/1300 [00:44, 3.76it/s, step size=1.42e+00, acc. prob=0.783] Warmup: 14%|#3 | 178/1300 [00:44, 3.85it/s, step size=6.75e-01, acc. prob=0.781] Warmup: 14%|#3 | 179/1300 [00:45, 3.93it/s, step size=1.19e+00, acc. prob=0.783] Warmup: 14%|#3 | 181/1300 [00:45, 5.55it/s, step size=5.67e-01, acc. prob=0.781] Warmup: 14%|#4 | 182/1300 [00:45, 5.15it/s, step size=9.62e-01, acc. prob=0.782] Warmup: 14%|#4 | 184/1300 [00:45, 5.53it/s, step size=2.85e+00, acc. prob=0.785] Warmup: 14%|#4 | 186/1300 [00:46, 5.78it/s, step size=6.14e-01, acc. prob=0.782] Warmup: 14%|#4 | 188/1300 [00:46, 5.93it/s, step size=1.71e+00, acc. prob=0.784] Warmup: 15%|#4 | 190/1300 [00:47, 4.08it/s, step size=5.41e-01, acc. prob=0.782] Warmup: 15%|#4 | 191/1300 [00:47, 4.08it/s, step size=9.02e-01, acc. prob=0.783] Warmup: 15%|#4 | 192/1300 [00:47, 4.11it/s, step size=1.17e+00, acc. prob=0.783] Warmup: 15%|#4 | 193/1300 [00:48, 4.11it/s, step size=1.47e+00, acc. prob=0.784] Warmup: 15%|#4 | 194/1300 [00:48, 4.13it/s, step size=2.42e+00, acc. prob=0.785] Warmup: 15%|#5 | 196/1300 [00:48, 4.81it/s, step size=1.24e+00, acc. prob=0.784] Warmup: 15%|#5 | 197/1300 [00:48, 4.65it/s, step size=1.85e+00, acc. prob=0.785] Warmup: 15%|#5 | 198/1300 [00:49, 4.53it/s, step size=1.16e+00, acc. prob=0.784] Warmup: 15%|#5 | 199/1300 [00:49, 4.43it/s, step size=1.84e+00, acc. prob=0.785] Warmup: 15%|#5 | 201/1300 [00:49, 5.03it/s, step size=9.44e-01, acc. prob=0.783] Warmup: 16%|#5 | 202/1300 [00:49, 4.80it/s, step size=1.40e+00, acc. prob=0.784] Warmup: 16%|#5 | 203/1300 [00:50, 4.61it/s, step size=2.16e+00, acc. prob=0.785] Warmup: 16%|#5 | 204/1300 [00:50, 4.50it/s, step size=3.43e+00, acc. prob=0.786] Warmup: 16%|#5 | 206/1300 [00:51, 3.78it/s, step size=8.66e-01, acc. prob=0.783] Warmup: 16%|#5 | 207/1300 [00:51, 3.85it/s, step size=1.38e+00, acc. prob=0.784] Warmup: 16%|#6 | 208/1300 [00:51, 3.93it/s, step size=1.94e+00, acc. prob=0.785] Warmup: 16%|#6 | 210/1300 [00:51, 4.64it/s, step size=2.47e+00, acc. prob=0.786] Warmup: 16%|#6 | 211/1300 [00:52, 4.51it/s, step size=1.21e+00, acc. prob=0.784] Warmup: 16%|#6 | 213/1300 [00:52, 6.02it/s, step size=2.95e+00, acc. prob=0.786] Warmup: 17%|#6 | 215/1300 [00:52, 7.43it/s, step size=7.40e-01, acc. prob=0.784] Warmup: 17%|#6 | 216/1300 [00:52, 4.49it/s, step size=1.10e+00, acc. prob=0.784] Warmup: 17%|#6 | 217/1300 [00:53, 4.41it/s, step size=1.48e+00, acc. prob=0.785] Warmup: 17%|#6 | 219/1300 [00:53, 4.99it/s, step size=1.01e+00, acc. prob=0.784] Warmup: 17%|#6 | 220/1300 [00:53, 4.78it/s, step size=1.55e+00, acc. prob=0.785] Warmup: 17%|#7 | 221/1300 [00:53, 4.63it/s, step size=1.74e+00, acc. prob=0.786] Warmup: 17%|#7 | 223/1300 [00:54, 4.44it/s, step size=5.12e-01, acc. prob=0.783] Warmup: 17%|#7 | 224/1300 [00:54, 4.37it/s, step size=7.80e-01, acc. prob=0.784] Warmup: 17%|#7 | 225/1300 [00:55, 3.70it/s, step size=1.17e+00, acc. prob=0.785] Warmup: 17%|#7 | 226/1300 [00:55, 3.81it/s, step size=1.49e+00, acc. prob=0.786] Warmup: 17%|#7 | 227/1300 [00:55, 3.91it/s, step size=1.51e+00, acc. prob=0.786] Warmup: 18%|#7 | 229/1300 [00:56, 3.55it/s, step size=1.47e+00, acc. prob=0.786] Warmup: 18%|#7 | 231/1300 [00:56, 4.88it/s, step size=9.00e-01, acc. prob=0.785] Warmup: 18%|#7 | 232/1300 [00:56, 4.70it/s, step size=1.34e+00, acc. prob=0.786] Warmup: 18%|#7 | 233/1300 [00:56, 4.56it/s, step size=1.88e+00, acc. prob=0.786] Warmup: 18%|#8 | 235/1300 [00:57, 5.11it/s, step size=2.50e+00, acc. prob=0.787] Warmup: 18%|#8 | 237/1300 [00:57, 6.51it/s, step size=2.27e+00, acc. prob=0.787] Warmup: 18%|#8 | 239/1300 [00:57, 6.41it/s, step size=8.49e-01, acc. prob=0.785] Warmup: 18%|#8 | 240/1300 [00:57, 5.76it/s, step size=1.25e+00, acc. prob=0.786] Warmup: 19%|#8 | 241/1300 [00:58, 5.31it/s, step size=1.80e+00, acc. prob=0.787] Warmup: 19%|#8 | 243/1300 [00:58, 5.66it/s, step size=1.23e+00, acc. prob=0.786] Warmup: 19%|#8 | 245/1300 [00:58, 5.86it/s, step size=1.78e+00, acc. prob=0.787] Warmup: 19%|#9 | 247/1300 [00:58, 7.15it/s, step size=2.29e+00, acc. prob=0.787] Warmup: 19%|#9 | 249/1300 [00:59, 4.22it/s, step size=3.84e+00, acc. prob=0.784] Warmup: 19%|#9 | 251/1300 [00:59, 5.35it/s, step size=8.84e-01, acc. prob=0.778] Warmup: 19%|#9 | 252/1300 [01:00, 5.07it/s, step size=8.10e-01, acc. prob=0.778] Warmup: 19%|#9 | 253/1300 [01:00, 4.86it/s, step size=1.01e+00, acc. prob=0.779] Warmup: 20%|#9 | 254/1300 [01:00, 4.68it/s, step size=1.53e+00, acc. prob=0.780] Warmup: 20%|#9 | 255/1300 [01:00, 4.55it/s, step size=1.05e+00, acc. prob=0.780] Warmup: 20%|#9 | 256/1300 [01:01, 4.44it/s, step size=1.48e+00, acc. prob=0.780] Warmup: 20%|#9 | 258/1300 [01:01, 5.09it/s, step size=1.85e+00, acc. prob=0.781] Warmup: 20%|## | 260/1300 [01:02, 3.28it/s, step size=5.08e-01, acc. prob=0.779] Warmup: 20%|## | 261/1300 [01:03, 2.79it/s, step size=9.60e-01, acc. prob=0.780] Warmup: 20%|## | 262/1300 [01:03, 3.03it/s, step size=1.65e+00, acc. prob=0.781] Warmup: 20%|## | 264/1300 [01:03, 4.36it/s, step size=3.56e+00, acc. prob=0.782] Warmup: 20%|## | 266/1300 [01:04, 3.78it/s, step size=1.72e+00, acc. prob=0.781] Warmup: 21%|## | 268/1300 [01:04, 4.97it/s, step size=4.18e+00, acc. prob=0.782] Warmup: 21%|## | 269/1300 [01:04, 4.80it/s, step size=3.92e-01, acc. prob=0.779] Warmup: 21%|## | 270/1300 [01:05, 3.50it/s, step size=7.18e-01, acc. prob=0.780] Warmup: 21%|## | 271/1300 [01:05, 3.20it/s, step size=1.20e+00, acc. prob=0.781] Warmup: 21%|## | 272/1300 [01:05, 3.39it/s, step size=1.23e+00, acc. prob=0.781] Warmup: 21%|##1 | 273/1300 [01:05, 3.57it/s, step size=2.26e+00, acc. prob=0.782] Warmup: 21%|##1 | 275/1300 [01:06, 3.37it/s, step size=6.80e-01, acc. prob=0.780] Warmup: 21%|##1 | 276/1300 [01:07, 2.78it/s, step size=1.15e+00, acc. prob=0.781] Warmup: 21%|##1 | 277/1300 [01:07, 3.04it/s, step size=1.99e+00, acc. prob=0.782] Warmup: 21%|##1 | 278/1300 [01:07, 3.28it/s, step size=3.42e+00, acc. prob=0.782] Warmup: 22%|##1 | 280/1300 [01:08, 2.89it/s, step size=6.97e-01, acc. prob=0.780] Warmup: 22%|##1 | 281/1300 [01:08, 3.11it/s, step size=1.23e+00, acc. prob=0.781] Warmup: 22%|##1 | 282/1300 [01:08, 3.32it/s, step size=1.48e+00, acc. prob=0.782] Warmup: 22%|##1 | 283/1300 [01:09, 3.49it/s, step size=2.58e+00, acc. prob=0.782] Warmup: 22%|##1 | 285/1300 [01:09, 3.34it/s, step size=5.56e-01, acc. prob=0.780] Warmup: 22%|##2 | 286/1300 [01:10, 2.77it/s, step size=9.55e-01, acc. prob=0.781] Warmup: 22%|##2 | 287/1300 [01:10, 3.03it/s, step size=1.56e+00, acc. prob=0.782] Warmup: 22%|##2 | 288/1300 [01:10, 3.27it/s, step size=2.67e+00, acc. prob=0.783] Warmup: 22%|##2 | 290/1300 [01:10, 4.79it/s, step size=6.51e-01, acc. prob=0.781] Warmup: 22%|##2 | 292/1300 [01:11, 4.00it/s, step size=1.63e+00, acc. prob=0.782] Warmup: 23%|##2 | 293/1300 [01:11, 4.04it/s, step size=2.72e+00, acc. prob=0.783] Warmup: 23%|##2 | 295/1300 [01:12, 4.69it/s, step size=2.31e+00, acc. prob=0.783] Warmup: 23%|##2 | 297/1300 [01:12, 6.01it/s, step size=5.71e-01, acc. prob=0.781] Warmup: 23%|##2 | 298/1300 [01:12, 4.67it/s, step size=9.37e-01, acc. prob=0.781] Warmup: 23%|##3 | 299/1300 [01:12, 4.56it/s, step size=1.16e+00, acc. prob=0.781] Warmup: 23%|##3 | 300/1300 [01:13, 4.46it/s, step size=1.16e+00, acc. prob=0.782] Warmup: 23%|##3 | 301/1300 [01:13, 4.40it/s, step size=1.16e+00, acc. prob=1.000] Sample: 23%|##3 | 303/1300 [01:13, 5.03it/s, step size=1.16e+00, acc. prob=0.951] Sample: 23%|##3 | 304/1300 [01:14, 4.13it/s, step size=1.16e+00, acc. prob=0.960] Sample: 23%|##3 | 305/1300 [01:14, 4.13it/s, step size=1.16e+00, acc. prob=0.968] Sample: 24%|##3 | 306/1300 [01:14, 4.13it/s, step size=1.16e+00, acc. prob=0.972] Sample: 24%|##3 | 307/1300 [01:14, 4.15it/s, step size=1.16e+00, acc. prob=0.974] Sample: 24%|##3 | 308/1300 [01:15, 4.15it/s, step size=1.16e+00, acc. prob=0.970] Sample: 24%|##3 | 309/1300 [01:15, 4.17it/s, step size=1.16e+00, acc. prob=0.955] Sample: 24%|##3 | 311/1300 [01:15, 4.92it/s, step size=1.16e+00, acc. prob=0.946] Sample: 24%|##4 | 312/1300 [01:15, 4.70it/s, step size=1.16e+00, acc. prob=0.943] Sample: 24%|##4 | 313/1300 [01:16, 4.50it/s, step size=1.16e+00, acc. prob=0.948] Sample: 24%|##4 | 314/1300 [01:16, 4.39it/s, step size=1.16e+00, acc. prob=0.951] Sample: 24%|##4 | 315/1300 [01:16, 4.32it/s, step size=1.16e+00, acc. prob=0.943] Sample: 24%|##4 | 316/1300 [01:16, 4.28it/s, step size=1.16e+00, acc. prob=0.929] Sample: 24%|##4 | 318/1300 [01:16, 6.07it/s, step size=1.16e+00, acc. prob=0.929] Sample: 25%|##4 | 319/1300 [01:17, 5.43it/s, step size=1.16e+00, acc. prob=0.933] Sample: 25%|##4 | 320/1300 [01:17, 5.02it/s, step size=1.16e+00, acc. prob=0.923] Sample: 25%|##4 | 321/1300 [01:17, 4.74it/s, step size=1.16e+00, acc. prob=0.922] Sample: 25%|##4 | 323/1300 [01:17, 6.47it/s, step size=1.16e+00, acc. prob=0.928] Sample: 25%|##4 | 324/1300 [01:18, 5.72it/s, step size=1.16e+00, acc. prob=0.931] Sample: 25%|##5 | 325/1300 [01:18, 5.24it/s, step size=1.16e+00, acc. prob=0.932] Sample: 25%|##5 | 326/1300 [01:18, 4.85it/s, step size=1.16e+00, acc. prob=0.934] Sample: 25%|##5 | 327/1300 [01:18, 4.65it/s, step size=1.16e+00, acc. prob=0.929] Sample: 25%|##5 | 328/1300 [01:19, 4.49it/s, step size=1.16e+00, acc. prob=0.931] Sample: 25%|##5 | 330/1300 [01:19, 6.28it/s, step size=1.16e+00, acc. prob=0.936] Sample: 26%|##5 | 332/1300 [01:19, 6.26it/s, step size=1.16e+00, acc. prob=0.929] Sample: 26%|##5 | 333/1300 [01:19, 5.66it/s, step size=1.16e+00, acc. prob=0.931] Sample: 26%|##5 | 334/1300 [01:20, 5.22it/s, step size=1.16e+00, acc. prob=0.923] Sample: 26%|##5 | 335/1300 [01:20, 4.92it/s, step size=1.16e+00, acc. prob=0.924] Sample: 26%|##5 | 336/1300 [01:20, 4.70it/s, step size=1.16e+00, acc. prob=0.923] Sample: 26%|##6 | 338/1300 [01:20, 5.24it/s, step size=1.16e+00, acc. prob=0.926] Sample: 26%|##6 | 339/1300 [01:21, 4.96it/s, step size=1.16e+00, acc. prob=0.928] Sample: 26%|##6 | 340/1300 [01:21, 4.75it/s, step size=1.16e+00, acc. prob=0.929] Sample: 26%|##6 | 341/1300 [01:21, 4.57it/s, step size=1.16e+00, acc. prob=0.931] Sample: 26%|##6 | 342/1300 [01:21, 4.47it/s, step size=1.16e+00, acc. prob=0.930] Sample: 26%|##6 | 344/1300 [01:22, 5.11it/s, step size=1.16e+00, acc. prob=0.929] Sample: 27%|##6 | 346/1300 [01:22, 5.52it/s, step size=1.16e+00, acc. prob=0.927] Sample: 27%|##6 | 347/1300 [01:22, 5.17it/s, step size=1.16e+00, acc. prob=0.928] Sample: 27%|##6 | 348/1300 [01:22, 4.88it/s, step size=1.16e+00, acc. prob=0.928] Sample: 27%|##6 | 349/1300 [01:23, 4.67it/s, step size=1.16e+00, acc. prob=0.929] Sample: 27%|##6 | 350/1300 [01:23, 4.55it/s, step size=1.16e+00, acc. prob=0.930] Sample: 27%|##7 | 352/1300 [01:23, 5.15it/s, step size=1.16e+00, acc. prob=0.929] Sample: 27%|##7 | 353/1300 [01:23, 4.86it/s, step size=1.16e+00, acc. prob=0.930] Sample: 27%|##7 | 354/1300 [01:24, 4.58it/s, step size=1.16e+00, acc. prob=0.931] Sample: 27%|##7 | 355/1300 [01:24, 4.47it/s, step size=1.16e+00, acc. prob=0.932] Sample: 27%|##7 | 356/1300 [01:24, 4.35it/s, step size=1.16e+00, acc. prob=0.933] Sample: 27%|##7 | 357/1300 [01:24, 4.31it/s, step size=1.16e+00, acc. prob=0.934] Sample: 28%|##7 | 358/1300 [01:25, 4.27it/s, step size=1.16e+00, acc. prob=0.931] Sample: 28%|##7 | 359/1300 [01:25, 4.22it/s, step size=1.16e+00, acc. prob=0.932] Sample: 28%|##7 | 360/1300 [01:25, 4.21it/s, step size=1.16e+00, acc. prob=0.933] Sample: 28%|##7 | 362/1300 [01:25, 6.04it/s, step size=1.16e+00, acc. prob=0.934] Sample: 28%|##7 | 363/1300 [01:26, 5.42it/s, step size=1.16e+00, acc. prob=0.933] Sample: 28%|##8 | 365/1300 [01:26, 7.06it/s, step size=1.16e+00, acc. prob=0.933] Sample: 28%|##8 | 367/1300 [01:26, 8.45it/s, step size=1.16e+00, acc. prob=0.933] Sample: 28%|##8 | 369/1300 [01:26, 9.54it/s, step size=1.16e+00, acc. prob=0.934] Sample: 29%|##8 | 371/1300 [01:27, 6.61it/s, step size=1.16e+00, acc. prob=0.936] Sample: 29%|##8 | 372/1300 [01:27, 5.95it/s, step size=1.16e+00, acc. prob=0.936] Sample: 29%|##8 | 373/1300 [01:27, 5.44it/s, step size=1.16e+00, acc. prob=0.937] Sample: 29%|##8 | 374/1300 [01:27, 5.07it/s, step size=1.16e+00, acc. prob=0.934] Sample: 29%|##8 | 375/1300 [01:27, 4.79it/s, step size=1.16e+00, acc. prob=0.935] Sample: 29%|##9 | 377/1300 [01:28, 5.29it/s, step size=1.16e+00, acc. prob=0.936] Sample: 29%|##9 | 378/1300 [01:28, 4.98it/s, step size=1.16e+00, acc. prob=0.935] Sample: 29%|##9 | 379/1300 [01:28, 4.74it/s, step size=1.16e+00, acc. prob=0.936] Sample: 29%|##9 | 381/1300 [01:29, 5.28it/s, step size=1.16e+00, acc. prob=0.937] Sample: 29%|##9 | 382/1300 [01:29, 5.01it/s, step size=1.16e+00, acc. prob=0.935] Sample: 29%|##9 | 383/1300 [01:29, 4.79it/s, step size=1.16e+00, acc. prob=0.933] Sample: 30%|##9 | 384/1300 [01:29, 4.63it/s, step size=1.16e+00, acc. prob=0.933] Sample: 30%|##9 | 385/1300 [01:30, 4.49it/s, step size=1.16e+00, acc. prob=0.932] Sample: 30%|##9 | 386/1300 [01:30, 4.40it/s, step size=1.16e+00, acc. prob=0.933] Sample: 30%|##9 | 388/1300 [01:30, 6.16it/s, step size=1.16e+00, acc. prob=0.934] Sample: 30%|##9 | 389/1300 [01:30, 5.53it/s, step size=1.16e+00, acc. prob=0.935] Sample: 30%|### | 390/1300 [01:30, 5.12it/s, step size=1.16e+00, acc. prob=0.934] Sample: 30%|### | 392/1300 [01:31, 5.52it/s, step size=1.16e+00, acc. prob=0.934] Sample: 30%|### | 393/1300 [01:31, 5.12it/s, step size=1.16e+00, acc. prob=0.934] Sample: 30%|### | 394/1300 [01:31, 4.85it/s, step size=1.16e+00, acc. prob=0.935] Sample: 30%|### | 395/1300 [01:31, 4.66it/s, step size=1.16e+00, acc. prob=0.932] Sample: 30%|### | 396/1300 [01:32, 4.52it/s, step size=1.16e+00, acc. prob=0.933] Sample: 31%|### | 397/1300 [01:32, 4.41it/s, step size=1.16e+00, acc. prob=0.933] Sample: 31%|### | 398/1300 [01:32, 4.36it/s, step size=1.16e+00, acc. prob=0.934] Sample: 31%|### | 399/1300 [01:32, 4.29it/s, step size=1.16e+00, acc. prob=0.934] Sample: 31%|### | 400/1300 [01:33, 4.25it/s, step size=1.16e+00, acc. prob=0.934] Sample: 31%|### | 401/1300 [01:33, 4.24it/s, step size=1.16e+00, acc. prob=0.935] Sample: 31%|### | 402/1300 [01:33, 4.21it/s, step size=1.16e+00, acc. prob=0.936] Sample: 31%|###1 | 403/1300 [01:33, 4.20it/s, step size=1.16e+00, acc. prob=0.935] Sample: 31%|###1 | 404/1300 [01:34, 4.18it/s, step size=1.16e+00, acc. prob=0.936] Sample: 31%|###1 | 405/1300 [01:34, 4.16it/s, step size=1.16e+00, acc. prob=0.936] Sample: 31%|###1 | 407/1300 [01:34, 4.93it/s, step size=1.16e+00, acc. prob=0.937] Sample: 31%|###1 | 408/1300 [01:34, 4.71it/s, step size=1.16e+00, acc. prob=0.938] Sample: 31%|###1 | 409/1300 [01:35, 4.54it/s, step size=1.16e+00, acc. prob=0.938] Sample: 32%|###1 | 410/1300 [01:35, 4.44it/s, step size=1.16e+00, acc. prob=0.938] Sample: 32%|###1 | 411/1300 [01:35, 4.35it/s, step size=1.16e+00, acc. prob=0.938] Sample: 32%|###1 | 413/1300 [01:35, 6.13it/s, step size=1.16e+00, acc. prob=0.939] Sample: 32%|###1 | 414/1300 [01:36, 5.49it/s, step size=1.16e+00, acc. prob=0.939] Sample: 32%|###1 | 415/1300 [01:36, 5.11it/s, step size=1.16e+00, acc. prob=0.938] Sample: 32%|###2 | 416/1300 [01:36, 4.82it/s, step size=1.16e+00, acc. prob=0.938] Sample: 32%|###2 | 418/1300 [01:36, 6.53it/s, step size=1.16e+00, acc. prob=0.939] Sample: 32%|###2 | 419/1300 [01:36, 5.75it/s, step size=1.16e+00, acc. prob=0.939] Sample: 32%|###2 | 421/1300 [01:37, 5.96it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###2 | 423/1300 [01:37, 6.05it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###2 | 424/1300 [01:37, 5.52it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###2 | 426/1300 [01:38, 5.76it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###2 | 428/1300 [01:38, 7.09it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###3 | 430/1300 [01:38, 6.77it/s, step size=1.16e+00, acc. prob=0.938] Sample: 33%|###3 | 432/1300 [01:38, 7.94it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###3 | 433/1300 [01:39, 6.81it/s, step size=1.16e+00, acc. prob=0.939] Sample: 33%|###3 | 434/1300 [01:39, 6.03it/s, step size=1.16e+00, acc. prob=0.937] Sample: 33%|###3 | 435/1300 [01:39, 5.46it/s, step size=1.16e+00, acc. prob=0.937] Sample: 34%|###3 | 436/1300 [01:39, 5.06it/s, step size=1.16e+00, acc. prob=0.937] Sample: 34%|###3 | 437/1300 [01:39, 4.79it/s, step size=1.16e+00, acc. prob=0.938] Sample: 34%|###3 | 439/1300 [01:40, 5.33it/s, step size=1.16e+00, acc. prob=0.936] Sample: 34%|###3 | 440/1300 [01:40, 5.01it/s, step size=1.16e+00, acc. prob=0.937] Sample: 34%|###3 | 441/1300 [01:40, 4.75it/s, step size=1.16e+00, acc. prob=0.937] Sample: 34%|###4 | 442/1300 [01:41, 4.58it/s, step size=1.16e+00, acc. prob=0.937] Sample: 34%|###4 | 443/1300 [01:41, 4.45it/s, step size=1.16e+00, acc. prob=0.935] Sample: 34%|###4 | 444/1300 [01:41, 4.34it/s, step size=1.16e+00, acc. prob=0.936] Sample: 34%|###4 | 445/1300 [01:41, 4.30it/s, step size=1.16e+00, acc. prob=0.936] Sample: 34%|###4 | 446/1300 [01:41, 4.28it/s, step size=1.16e+00, acc. prob=0.936] Sample: 34%|###4 | 447/1300 [01:42, 4.24it/s, step size=1.16e+00, acc. prob=0.935] Sample: 34%|###4 | 448/1300 [01:42, 4.22it/s, step size=1.16e+00, acc. prob=0.935] Sample: 35%|###4 | 449/1300 [01:42, 4.21it/s, step size=1.16e+00, acc. prob=0.936] Sample: 35%|###4 | 450/1300 [01:42, 4.17it/s, step size=1.16e+00, acc. prob=0.936] Sample: 35%|###4 | 451/1300 [01:43, 4.14it/s, step size=1.16e+00, acc. prob=0.936] Sample: 35%|###4 | 452/1300 [01:43, 4.15it/s, step size=1.16e+00, acc. prob=0.935] Sample: 35%|###4 | 453/1300 [01:43, 4.16it/s, step size=1.16e+00, acc. prob=0.934] Sample: 35%|###4 | 454/1300 [01:43, 4.09it/s, step size=1.16e+00, acc. prob=0.934] Sample: 35%|###5 | 456/1300 [01:44, 4.85it/s, step size=1.16e+00, acc. prob=0.934] Sample: 35%|###5 | 457/1300 [01:44, 4.69it/s, step size=1.16e+00, acc. prob=0.935] Sample: 35%|###5 | 458/1300 [01:44, 4.54it/s, step size=1.16e+00, acc. prob=0.935] Sample: 35%|###5 | 459/1300 [01:44, 4.44it/s, step size=1.16e+00, acc. prob=0.935] Sample: 35%|###5 | 460/1300 [01:45, 4.35it/s, step size=1.16e+00, acc. prob=0.935] Sample: 36%|###5 | 462/1300 [01:45, 5.03it/s, step size=1.16e+00, acc. prob=0.935] Sample: 36%|###5 | 463/1300 [01:45, 4.80it/s, step size=1.16e+00, acc. prob=0.935] Sample: 36%|###5 | 464/1300 [01:46, 4.59it/s, step size=1.16e+00, acc. prob=0.936] Sample: 36%|###5 | 465/1300 [01:46, 4.47it/s, step size=1.16e+00, acc. prob=0.936] Sample: 36%|###5 | 466/1300 [01:46, 4.37it/s, step size=1.16e+00, acc. prob=0.936] Sample: 36%|###6 | 468/1300 [01:46, 5.01it/s, step size=1.16e+00, acc. prob=0.936] Sample: 36%|###6 | 469/1300 [01:47, 4.75it/s, step size=1.16e+00, acc. prob=0.936] Sample: 36%|###6 | 470/1300 [01:47, 4.59it/s, step size=1.16e+00, acc. prob=0.937] Sample: 36%|###6 | 471/1300 [01:47, 4.48it/s, step size=1.16e+00, acc. prob=0.937] Sample: 36%|###6 | 472/1300 [01:47, 4.39it/s, step size=1.16e+00, acc. prob=0.937] Sample: 36%|###6 | 473/1300 [01:48, 4.32it/s, step size=1.16e+00, acc. prob=0.935] Sample: 37%|###6 | 475/1300 [01:48, 5.02it/s, step size=1.16e+00, acc. prob=0.936] Sample: 37%|###6 | 477/1300 [01:48, 5.42it/s, step size=1.16e+00, acc. prob=0.935] Sample: 37%|###6 | 479/1300 [01:48, 5.67it/s, step size=1.16e+00, acc. prob=0.935] Sample: 37%|###6 | 480/1300 [01:49, 5.29it/s, step size=1.16e+00, acc. prob=0.936] Sample: 37%|###7 | 481/1300 [01:49, 4.99it/s, step size=1.16e+00, acc. prob=0.935] Sample: 37%|###7 | 483/1300 [01:49, 5.43it/s, step size=1.16e+00, acc. prob=0.936] Sample: 37%|###7 | 485/1300 [01:50, 5.71it/s, step size=1.16e+00, acc. prob=0.936] Sample: 37%|###7 | 486/1300 [01:50, 5.30it/s, step size=1.16e+00, acc. prob=0.936] Sample: 37%|###7 | 487/1300 [01:50, 5.01it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###7 | 489/1300 [01:50, 6.57it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###7 | 490/1300 [01:50, 5.86it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###7 | 492/1300 [01:51, 6.01it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###8 | 494/1300 [01:51, 7.36it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###8 | 495/1300 [01:51, 6.39it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###8 | 496/1300 [01:51, 5.70it/s, step size=1.16e+00, acc. prob=0.937] Sample: 38%|###8 | 497/1300 [01:52, 5.23it/s, step size=1.16e+00, acc. prob=0.936] Sample: 38%|###8 | 498/1300 [01:52, 4.92it/s, step size=1.16e+00, acc. prob=0.936] Sample: 38%|###8 | 499/1300 [01:52, 4.69it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###8 | 501/1300 [01:52, 5.27it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###8 | 502/1300 [01:53, 4.95it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###8 | 504/1300 [01:53, 6.54it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###8 | 505/1300 [01:53, 5.81it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###9 | 507/1300 [01:53, 6.01it/s, step size=1.16e+00, acc. prob=0.937] Sample: 39%|###9 | 509/1300 [01:54, 7.36it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###9 | 510/1300 [01:54, 6.39it/s, step size=1.16e+00, acc. prob=0.937] Sample: 39%|###9 | 511/1300 [01:54, 5.67it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###9 | 512/1300 [01:54, 5.22it/s, step size=1.16e+00, acc. prob=0.936] Sample: 39%|###9 | 513/1300 [01:55, 4.86it/s, step size=1.16e+00, acc. prob=0.936] Sample: 40%|###9 | 514/1300 [01:55, 4.67it/s, step size=1.16e+00, acc. prob=0.936] Sample: 40%|###9 | 516/1300 [01:55, 5.23it/s, step size=1.16e+00, acc. prob=0.935] Sample: 40%|###9 | 518/1300 [01:55, 6.71it/s, step size=1.16e+00, acc. prob=0.935] Sample: 40%|###9 | 519/1300 [01:56, 5.95it/s, step size=1.16e+00, acc. prob=0.935] Sample: 40%|#### | 521/1300 [01:56, 7.43it/s, step size=1.16e+00, acc. prob=0.935] Sample: 40%|#### | 523/1300 [01:56, 6.95it/s, step size=1.16e+00, acc. prob=0.933] Sample: 40%|#### | 524/1300 [01:56, 6.11it/s, step size=1.16e+00, acc. prob=0.934] Sample: 40%|#### | 526/1300 [01:56, 7.49it/s, step size=1.16e+00, acc. prob=0.934] Sample: 41%|#### | 527/1300 [01:57, 6.41it/s, step size=1.16e+00, acc. prob=0.933] Sample: 41%|#### | 529/1300 [01:57, 6.34it/s, step size=1.16e+00, acc. prob=0.932] Sample: 41%|#### | 531/1300 [01:57, 6.29it/s, step size=1.16e+00, acc. prob=0.932] Sample: 41%|#### | 532/1300 [01:58, 4.91it/s, step size=1.16e+00, acc. prob=0.933] Sample: 41%|####1 | 533/1300 [01:58, 4.72it/s, step size=1.16e+00, acc. prob=0.932] Sample: 41%|####1 | 535/1300 [01:58, 5.22it/s, step size=1.16e+00, acc. prob=0.932] Sample: 41%|####1 | 536/1300 [01:58, 4.95it/s, step size=1.16e+00, acc. prob=0.932] Sample: 41%|####1 | 537/1300 [01:59, 4.75it/s, step size=1.16e+00, acc. prob=0.933] Sample: 41%|####1 | 538/1300 [01:59, 4.59it/s, step size=1.16e+00, acc. prob=0.933] Sample: 41%|####1 | 539/1300 [01:59, 4.45it/s, step size=1.16e+00, acc. prob=0.933] Sample: 42%|####1 | 540/1300 [01:59, 4.37it/s, step size=1.16e+00, acc. prob=0.933] Sample: 42%|####1 | 541/1300 [02:00, 4.32it/s, step size=1.16e+00, acc. prob=0.933] Sample: 42%|####1 | 542/1300 [02:00, 4.27it/s, step size=1.16e+00, acc. prob=0.933] Sample: 42%|####1 | 543/1300 [02:00, 4.25it/s, step size=1.16e+00, acc. prob=0.931] Sample: 42%|####1 | 544/1300 [02:00, 4.20it/s, step size=1.16e+00, acc. prob=0.932] Sample: 42%|####1 | 545/1300 [02:01, 4.17it/s, step size=1.16e+00, acc. prob=0.932] Sample: 42%|####2 | 547/1300 [02:01, 5.99it/s, step size=1.16e+00, acc. prob=0.932] Sample: 42%|####2 | 548/1300 [02:01, 5.39it/s, step size=1.16e+00, acc. prob=0.931] Sample: 42%|####2 | 550/1300 [02:01, 7.01it/s, step size=1.16e+00, acc. prob=0.932] Sample: 42%|####2 | 552/1300 [02:01, 8.35it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####2 | 553/1300 [02:02, 6.81it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####2 | 555/1300 [02:02, 8.20it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####2 | 556/1300 [02:02, 6.78it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####2 | 557/1300 [02:02, 5.91it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####3 | 559/1300 [02:03, 6.03it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####3 | 561/1300 [02:03, 6.14it/s, step size=1.16e+00, acc. prob=0.931] Sample: 43%|####3 | 563/1300 [02:03, 6.18it/s, step size=1.16e+00, acc. prob=0.931] Sample: 43%|####3 | 564/1300 [02:03, 5.62it/s, step size=1.16e+00, acc. prob=0.932] Sample: 43%|####3 | 565/1300 [02:04, 5.18it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####3 | 566/1300 [02:04, 4.90it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####3 | 567/1300 [02:04, 4.69it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####3 | 568/1300 [02:04, 4.51it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####3 | 569/1300 [02:05, 4.38it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####3 | 571/1300 [02:05, 5.05it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####4 | 573/1300 [02:05, 5.44it/s, step size=1.16e+00, acc. prob=0.931] Sample: 44%|####4 | 575/1300 [02:06, 5.71it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####4 | 577/1300 [02:06, 5.87it/s, step size=1.16e+00, acc. prob=0.932] Sample: 44%|####4 | 578/1300 [02:06, 5.42it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####4 | 579/1300 [02:06, 5.10it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####4 | 580/1300 [02:07, 4.80it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####4 | 582/1300 [02:07, 5.26it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####4 | 583/1300 [02:07, 4.98it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####4 | 584/1300 [02:08, 4.75it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 585/1300 [02:08, 4.59it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 586/1300 [02:08, 4.48it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 587/1300 [02:08, 4.38it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 588/1300 [02:08, 4.31it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 590/1300 [02:09, 6.09it/s, step size=1.16e+00, acc. prob=0.932] Sample: 45%|####5 | 591/1300 [02:09, 5.49it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####5 | 593/1300 [02:09, 5.77it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####5 | 594/1300 [02:09, 5.32it/s, step size=1.16e+00, acc. prob=0.933] Sample: 46%|####5 | 595/1300 [02:10, 4.95it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####5 | 597/1300 [02:10, 6.60it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####6 | 599/1300 [02:10, 8.01it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####6 | 601/1300 [02:10, 9.14it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####6 | 602/1300 [02:10, 7.40it/s, step size=1.16e+00, acc. prob=0.932] Sample: 46%|####6 | 604/1300 [02:11, 6.93it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####6 | 605/1300 [02:11, 6.13it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####6 | 607/1300 [02:11, 6.19it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####6 | 608/1300 [02:11, 5.65it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####6 | 609/1300 [02:12, 5.18it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####6 | 610/1300 [02:12, 4.88it/s, step size=1.16e+00, acc. prob=0.931] Sample: 47%|####6 | 611/1300 [02:12, 4.67it/s, step size=1.16e+00, acc. prob=0.931] Sample: 47%|####7 | 612/1300 [02:12, 4.53it/s, step size=1.16e+00, acc. prob=0.931] Sample: 47%|####7 | 613/1300 [02:13, 4.42it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####7 | 614/1300 [02:13, 4.33it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####7 | 615/1300 [02:13, 4.30it/s, step size=1.16e+00, acc. prob=0.932] Sample: 47%|####7 | 617/1300 [02:13, 6.11it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####7 | 619/1300 [02:14, 5.95it/s, step size=1.16e+00, acc. prob=0.931] Sample: 48%|####7 | 620/1300 [02:14, 5.20it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####7 | 622/1300 [02:14, 5.50it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####8 | 624/1300 [02:15, 5.71it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####8 | 625/1300 [02:15, 5.32it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####8 | 626/1300 [02:15, 5.00it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####8 | 628/1300 [02:15, 5.44it/s, step size=1.16e+00, acc. prob=0.932] Sample: 48%|####8 | 629/1300 [02:16, 5.07it/s, step size=1.16e+00, acc. prob=0.932] Sample: 49%|####8 | 631/1300 [02:16, 5.48it/s, step size=1.16e+00, acc. prob=0.933] Sample: 49%|####8 | 632/1300 [02:16, 5.12it/s, step size=1.16e+00, acc. prob=0.933] Sample: 49%|####8 | 634/1300 [02:17, 5.49it/s, step size=1.16e+00, acc. prob=0.933] Sample: 49%|####8 | 636/1300 [02:17, 6.83it/s, step size=1.16e+00, acc. prob=0.932] Sample: 49%|####9 | 637/1300 [02:17, 6.05it/s, step size=1.16e+00, acc. prob=0.932] Sample: 49%|####9 | 638/1300 [02:17, 5.48it/s, step size=1.16e+00, acc. prob=0.933] Sample: 49%|####9 | 639/1300 [02:17, 5.09it/s, step size=1.16e+00, acc. prob=0.932] Sample: 49%|####9 | 640/1300 [02:18, 4.81it/s, step size=1.16e+00, acc. prob=0.932] Sample: 49%|####9 | 642/1300 [02:18, 6.50it/s, step size=1.16e+00, acc. prob=0.933] Sample: 49%|####9 | 643/1300 [02:18, 5.73it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 644/1300 [02:18, 5.21it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 645/1300 [02:19, 4.90it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 646/1300 [02:19, 4.67it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 647/1300 [02:19, 4.51it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 648/1300 [02:19, 4.39it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|####9 | 649/1300 [02:20, 4.33it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|##### | 650/1300 [02:20, 4.29it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|##### | 651/1300 [02:20, 4.26it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|##### | 652/1300 [02:20, 4.22it/s, step size=1.16e+00, acc. prob=0.932] Sample: 50%|##### | 654/1300 [02:21, 4.97it/s, step size=1.16e+00, acc. prob=0.933] Sample: 50%|##### | 656/1300 [02:21, 5.40it/s, step size=1.16e+00, acc. prob=0.933] Sample: 51%|##### | 658/1300 [02:21, 6.78it/s, step size=1.16e+00, acc. prob=0.933] Sample: 51%|##### | 659/1300 [02:21, 6.01it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|##### | 661/1300 [02:21, 7.44it/s, step size=1.16e+00, acc. prob=0.933] Sample: 51%|##### | 662/1300 [02:22, 6.40it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 663/1300 [02:22, 5.74it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 664/1300 [02:22, 5.24it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 665/1300 [02:22, 4.91it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 667/1300 [02:23, 5.41it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 668/1300 [02:23, 5.06it/s, step size=1.16e+00, acc. prob=0.932] Sample: 51%|#####1 | 669/1300 [02:23, 4.81it/s, step size=1.16e+00, acc. prob=0.932] Sample: 52%|#####1 | 670/1300 [02:23, 4.61it/s, step size=1.16e+00, acc. prob=0.932] Sample: 52%|#####1 | 672/1300 [02:24, 5.19it/s, step size=1.16e+00, acc. prob=0.933] Sample: 52%|#####1 | 674/1300 [02:24, 5.49it/s, step size=1.16e+00, acc. prob=0.933] Sample: 52%|#####2 | 676/1300 [02:24, 5.75it/s, step size=1.16e+00, acc. prob=0.933] Sample: 52%|#####2 | 677/1300 [02:25, 5.32it/s, step size=1.16e+00, acc. prob=0.933] Sample: 52%|#####2 | 679/1300 [02:25, 5.66it/s, step size=1.16e+00, acc. prob=0.933] Sample: 52%|#####2 | 680/1300 [02:25, 5.27it/s, step size=1.16e+00, acc. prob=0.932] Sample: 52%|#####2 | 681/1300 [02:25, 4.98it/s, step size=1.16e+00, acc. prob=0.931] Sample: 52%|#####2 | 682/1300 [02:26, 4.75it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####2 | 683/1300 [02:26, 4.61it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####2 | 684/1300 [02:26, 4.46it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####2 | 685/1300 [02:26, 4.36it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####2 | 686/1300 [02:27, 4.28it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####2 | 687/1300 [02:27, 4.25it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 689/1300 [02:27, 4.97it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 690/1300 [02:27, 4.76it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 691/1300 [02:28, 4.57it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 692/1300 [02:28, 4.46it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 693/1300 [02:28, 4.38it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 694/1300 [02:28, 4.30it/s, step size=1.16e+00, acc. prob=0.932] Sample: 53%|#####3 | 695/1300 [02:29, 4.26it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####3 | 696/1300 [02:29, 4.25it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####3 | 697/1300 [02:29, 4.23it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####3 | 698/1300 [02:29, 4.21it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####3 | 699/1300 [02:30, 4.19it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####3 | 701/1300 [02:30, 4.92it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####4 | 702/1300 [02:30, 4.69it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####4 | 703/1300 [02:30, 4.52it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####4 | 704/1300 [02:31, 4.39it/s, step size=1.16e+00, acc. prob=0.932] Sample: 54%|#####4 | 705/1300 [02:31, 4.33it/s, step size=1.16e+00, acc. prob=0.931] Sample: 54%|#####4 | 706/1300 [02:31, 4.28it/s, step size=1.16e+00, acc. prob=0.931] Sample: 54%|#####4 | 707/1300 [02:31, 4.24it/s, step size=1.16e+00, acc. prob=0.931] Sample: 54%|#####4 | 708/1300 [02:32, 4.18it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####4 | 709/1300 [02:32, 4.17it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####4 | 711/1300 [02:32, 4.81it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####4 | 712/1300 [02:32, 4.57it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####4 | 713/1300 [02:33, 4.45it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####4 | 714/1300 [02:33, 4.34it/s, step size=1.16e+00, acc. prob=0.929] Sample: 55%|#####5 | 715/1300 [02:33, 4.19it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####5 | 716/1300 [02:33, 4.11it/s, step size=1.16e+00, acc. prob=0.929] Sample: 55%|#####5 | 717/1300 [02:34, 4.07it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####5 | 718/1300 [02:34, 3.97it/s, step size=1.16e+00, acc. prob=0.929] Sample: 55%|#####5 | 719/1300 [02:34, 3.94it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####5 | 720/1300 [02:35, 3.71it/s, step size=1.16e+00, acc. prob=0.930] Sample: 55%|#####5 | 721/1300 [02:35, 3.79it/s, step size=1.16e+00, acc. prob=0.930] Sample: 56%|#####5 | 722/1300 [02:35, 3.88it/s, step size=1.16e+00, acc. prob=0.930] Sample: 56%|#####5 | 723/1300 [02:35, 3.90it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####5 | 724/1300 [02:36, 3.96it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####5 | 725/1300 [02:36, 3.92it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####5 | 726/1300 [02:36, 3.94it/s, step size=1.16e+00, acc. prob=0.930] Sample: 56%|#####5 | 727/1300 [02:36, 4.01it/s, step size=1.16e+00, acc. prob=0.930] Sample: 56%|#####6 | 728/1300 [02:37, 4.00it/s, step size=1.16e+00, acc. prob=0.930] Sample: 56%|#####6 | 729/1300 [02:37, 3.99it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####6 | 730/1300 [02:37, 4.04it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####6 | 731/1300 [02:37, 4.07it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####6 | 733/1300 [02:38, 4.80it/s, step size=1.16e+00, acc. prob=0.929] Sample: 56%|#####6 | 734/1300 [02:38, 4.60it/s, step size=1.16e+00, acc. prob=0.929] Sample: 57%|#####6 | 735/1300 [02:38, 4.47it/s, step size=1.16e+00, acc. prob=0.929] Sample: 57%|#####6 | 737/1300 [02:38, 5.06it/s, step size=1.16e+00, acc. prob=0.929] Sample: 57%|#####6 | 738/1300 [02:39, 4.82it/s, step size=1.16e+00, acc. prob=0.929] Sample: 57%|#####6 | 739/1300 [02:39, 4.64it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####6 | 740/1300 [02:39, 4.50it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####6 | 741/1300 [02:39, 4.41it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####7 | 742/1300 [02:40, 4.33it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####7 | 743/1300 [02:40, 4.25it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####7 | 744/1300 [02:40, 4.24it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####7 | 745/1300 [02:40, 4.22it/s, step size=1.16e+00, acc. prob=0.928] Sample: 57%|#####7 | 746/1300 [02:41, 4.22it/s, step size=1.16e+00, acc. prob=0.929] Sample: 58%|#####7 | 748/1300 [02:41, 6.04it/s, step size=1.16e+00, acc. prob=0.928] Sample: 58%|#####7 | 750/1300 [02:41, 7.55it/s, step size=1.16e+00, acc. prob=0.928] Sample: 58%|#####7 | 751/1300 [02:41, 6.40it/s, step size=1.16e+00, acc. prob=0.928] Sample: 58%|#####7 | 752/1300 [02:41, 5.66it/s, step size=1.16e+00, acc. prob=0.928] Sample: 58%|#####7 | 753/1300 [02:42, 5.15it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 754/1300 [02:42, 4.08it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 755/1300 [02:42, 4.09it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 756/1300 [02:43, 4.10it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 758/1300 [02:43, 4.84it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 759/1300 [02:43, 4.64it/s, step size=1.16e+00, acc. prob=0.927] Sample: 58%|#####8 | 760/1300 [02:43, 4.49it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####8 | 761/1300 [02:44, 4.34it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####8 | 762/1300 [02:44, 4.26it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####8 | 764/1300 [02:44, 5.99it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####8 | 765/1300 [02:44, 5.39it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####8 | 766/1300 [02:44, 4.99it/s, step size=1.16e+00, acc. prob=0.926] Sample: 59%|#####8 | 767/1300 [02:45, 4.71it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####9 | 768/1300 [02:45, 4.51it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####9 | 769/1300 [02:45, 4.33it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####9 | 770/1300 [02:45, 4.27it/s, step size=1.16e+00, acc. prob=0.927] Sample: 59%|#####9 | 771/1300 [02:46, 4.21it/s, step size=1.16e+00, acc. prob=0.926] Sample: 59%|#####9 | 773/1300 [02:46, 4.94it/s, step size=1.16e+00, acc. prob=0.926] Sample: 60%|#####9 | 775/1300 [02:46, 5.32it/s, step size=1.16e+00, acc. prob=0.926] Sample: 60%|#####9 | 776/1300 [02:47, 4.98it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|#####9 | 777/1300 [02:47, 4.76it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|#####9 | 779/1300 [02:47, 6.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 60%|###### | 781/1300 [02:47, 7.73it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|###### | 782/1300 [02:47, 6.49it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|###### | 783/1300 [02:48, 5.77it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|###### | 784/1300 [02:48, 5.28it/s, step size=1.16e+00, acc. prob=0.925] Sample: 60%|###### | 786/1300 [02:48, 6.93it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|###### | 787/1300 [02:48, 5.93it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|###### | 789/1300 [02:49, 5.95it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|###### | 790/1300 [02:49, 5.44it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|###### | 792/1300 [02:49, 6.92it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|######1 | 793/1300 [02:49, 6.03it/s, step size=1.16e+00, acc. prob=0.926] Sample: 61%|######1 | 795/1300 [02:49, 7.36it/s, step size=1.16e+00, acc. prob=0.926] Sample: 61%|######1 | 796/1300 [02:50, 6.19it/s, step size=1.16e+00, acc. prob=0.925] Sample: 61%|######1 | 798/1300 [02:50, 6.15it/s, step size=1.16e+00, acc. prob=0.926] Sample: 61%|######1 | 799/1300 [02:50, 5.49it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 800/1300 [02:51, 5.08it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 801/1300 [02:51, 4.73it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 802/1300 [02:51, 4.57it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 803/1300 [02:51, 4.42it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 804/1300 [02:52, 4.29it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######1 | 805/1300 [02:52, 4.10it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######2 | 807/1300 [02:52, 4.75it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######2 | 808/1300 [02:52, 4.53it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######2 | 809/1300 [02:53, 4.44it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######2 | 810/1300 [02:53, 4.31it/s, step size=1.16e+00, acc. prob=0.926] Sample: 62%|######2 | 812/1300 [02:53, 4.94it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######2 | 813/1300 [02:53, 4.70it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######2 | 815/1300 [02:54, 6.27it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######2 | 817/1300 [02:54, 7.68it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 819/1300 [02:54, 7.03it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 820/1300 [02:54, 6.18it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 821/1300 [02:55, 5.54it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 823/1300 [02:55, 5.78it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 824/1300 [02:55, 5.33it/s, step size=1.16e+00, acc. prob=0.926] Sample: 63%|######3 | 825/1300 [02:55, 5.00it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######3 | 827/1300 [02:56, 5.38it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######3 | 828/1300 [02:56, 5.03it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######3 | 829/1300 [02:56, 4.79it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######3 | 830/1300 [02:56, 4.61it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######4 | 832/1300 [02:57, 5.14it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######4 | 833/1300 [02:57, 4.83it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######4 | 835/1300 [02:57, 6.37it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######4 | 836/1300 [02:57, 5.69it/s, step size=1.16e+00, acc. prob=0.927] Sample: 64%|######4 | 838/1300 [02:58, 5.88it/s, step size=1.16e+00, acc. prob=0.927] Sample: 65%|######4 | 839/1300 [02:58, 5.35it/s, step size=1.16e+00, acc. prob=0.927] Sample: 65%|######4 | 841/1300 [02:58, 6.78it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######4 | 842/1300 [02:58, 5.97it/s, step size=1.16e+00, acc. prob=0.927] Sample: 65%|######4 | 843/1300 [02:59, 5.40it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######4 | 844/1300 [02:59, 4.99it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######5 | 845/1300 [02:59, 4.74it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######5 | 846/1300 [02:59, 4.54it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######5 | 848/1300 [03:00, 6.28it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######5 | 849/1300 [03:00, 5.57it/s, step size=1.16e+00, acc. prob=0.928] Sample: 65%|######5 | 850/1300 [03:00, 5.05it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 852/1300 [03:00, 5.46it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 853/1300 [03:01, 5.10it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 854/1300 [03:01, 4.79it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 855/1300 [03:01, 4.59it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 856/1300 [03:01, 4.43it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######5 | 857/1300 [03:02, 4.38it/s, step size=1.16e+00, acc. prob=0.929] Sample: 66%|######6 | 858/1300 [03:02, 4.31it/s, step size=1.16e+00, acc. prob=0.929] Sample: 66%|######6 | 859/1300 [03:02, 4.25it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######6 | 861/1300 [03:02, 4.93it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######6 | 862/1300 [03:03, 4.68it/s, step size=1.16e+00, acc. prob=0.928] Sample: 66%|######6 | 863/1300 [03:03, 4.48it/s, step size=1.16e+00, acc. prob=0.927] Sample: 66%|######6 | 864/1300 [03:03, 4.38it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######6 | 865/1300 [03:03, 4.30it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######6 | 867/1300 [03:04, 4.99it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######6 | 868/1300 [03:04, 4.78it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######6 | 869/1300 [03:04, 4.60it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######7 | 871/1300 [03:04, 5.16it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######7 | 872/1300 [03:05, 4.89it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######7 | 873/1300 [03:05, 4.67it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######7 | 875/1300 [03:05, 5.16it/s, step size=1.16e+00, acc. prob=0.927] Sample: 67%|######7 | 876/1300 [03:06, 4.85it/s, step size=1.16e+00, acc. prob=0.928] Sample: 67%|######7 | 877/1300 [03:06, 4.64it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######7 | 878/1300 [03:06, 4.48it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######7 | 879/1300 [03:06, 4.35it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######7 | 880/1300 [03:07, 4.27it/s, step size=1.16e+00, acc. prob=0.927] Sample: 68%|######7 | 882/1300 [03:07, 5.95it/s, step size=1.16e+00, acc. prob=0.927] Sample: 68%|######8 | 884/1300 [03:07, 5.86it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######8 | 885/1300 [03:07, 5.37it/s, step size=1.16e+00, acc. prob=0.927] Sample: 68%|######8 | 886/1300 [03:08, 4.96it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######8 | 888/1300 [03:08, 6.45it/s, step size=1.16e+00, acc. prob=0.927] Sample: 68%|######8 | 889/1300 [03:08, 5.67it/s, step size=1.16e+00, acc. prob=0.928] Sample: 68%|######8 | 890/1300 [03:08, 5.10it/s, step size=1.16e+00, acc. prob=0.927] Sample: 69%|######8 | 892/1300 [03:09, 5.42it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######8 | 893/1300 [03:09, 5.00it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######8 | 894/1300 [03:09, 4.70it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######8 | 896/1300 [03:09, 5.20it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######9 | 898/1300 [03:10, 6.64it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######9 | 900/1300 [03:10, 7.93it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######9 | 902/1300 [03:10, 7.24it/s, step size=1.16e+00, acc. prob=0.928] Sample: 69%|######9 | 903/1300 [03:10, 6.35it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|######9 | 904/1300 [03:11, 5.69it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|######9 | 906/1300 [03:11, 5.86it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|######9 | 907/1300 [03:11, 5.39it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|######9 | 909/1300 [03:11, 5.68it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|####### | 910/1300 [03:12, 5.27it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|####### | 912/1300 [03:12, 5.60it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|####### | 914/1300 [03:12, 5.81it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|####### | 915/1300 [03:13, 5.38it/s, step size=1.16e+00, acc. prob=0.928] Sample: 70%|####### | 916/1300 [03:13, 5.05it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|####### | 917/1300 [03:13, 4.83it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|####### | 918/1300 [03:13, 4.64it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|####### | 920/1300 [03:14, 5.23it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|####### | 922/1300 [03:14, 5.60it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 923/1300 [03:14, 5.23it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 924/1300 [03:14, 4.94it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 925/1300 [03:15, 4.74it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 926/1300 [03:15, 4.57it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 927/1300 [03:15, 4.47it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 928/1300 [03:15, 4.37it/s, step size=1.16e+00, acc. prob=0.928] Sample: 71%|#######1 | 929/1300 [03:16, 4.32it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 930/1300 [03:16, 4.28it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 931/1300 [03:16, 4.25it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 932/1300 [03:16, 4.21it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 933/1300 [03:17, 4.21it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 934/1300 [03:17, 4.18it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######1 | 935/1300 [03:17, 4.17it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######2 | 936/1300 [03:17, 4.20it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######2 | 938/1300 [03:18, 4.95it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######2 | 939/1300 [03:18, 4.74it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######2 | 941/1300 [03:18, 5.28it/s, step size=1.16e+00, acc. prob=0.928] Sample: 72%|#######2 | 942/1300 [03:18, 4.98it/s, step size=1.16e+00, acc. prob=0.928] Sample: 73%|#######2 | 943/1300 [03:19, 4.75it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######2 | 945/1300 [03:19, 5.23it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######2 | 947/1300 [03:19, 6.65it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######2 | 948/1300 [03:19, 5.89it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######3 | 949/1300 [03:20, 5.39it/s, step size=1.16e+00, acc. prob=0.928] Sample: 73%|#######3 | 950/1300 [03:20, 5.03it/s, step size=1.16e+00, acc. prob=0.928] Sample: 73%|#######3 | 951/1300 [03:20, 4.78it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######3 | 953/1300 [03:20, 5.33it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######3 | 954/1300 [03:21, 4.99it/s, step size=1.16e+00, acc. prob=0.927] Sample: 73%|#######3 | 955/1300 [03:21, 4.73it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######3 | 956/1300 [03:21, 4.52it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######3 | 958/1300 [03:21, 6.17it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######3 | 959/1300 [03:21, 5.48it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######3 | 960/1300 [03:22, 5.04it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######3 | 961/1300 [03:22, 4.72it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######4 | 962/1300 [03:22, 4.49it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######4 | 963/1300 [03:22, 4.38it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######4 | 965/1300 [03:23, 4.95it/s, step size=1.16e+00, acc. prob=0.926] Sample: 74%|#######4 | 966/1300 [03:23, 4.68it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######4 | 967/1300 [03:23, 4.51it/s, step size=1.16e+00, acc. prob=0.927] Sample: 74%|#######4 | 968/1300 [03:24, 4.40it/s, step size=1.16e+00, acc. prob=0.927] Sample: 75%|#######4 | 970/1300 [03:24, 5.05it/s, step size=1.16e+00, acc. prob=0.927] Sample: 75%|#######4 | 971/1300 [03:24, 4.78it/s, step size=1.16e+00, acc. prob=0.926] Sample: 75%|#######4 | 973/1300 [03:24, 6.34it/s, step size=1.16e+00, acc. prob=0.926] Sample: 75%|#######5 | 975/1300 [03:24, 7.72it/s, step size=1.16e+00, acc. prob=0.925] Sample: 75%|#######5 | 976/1300 [03:25, 6.51it/s, step size=1.16e+00, acc. prob=0.925] Sample: 75%|#######5 | 978/1300 [03:25, 6.36it/s, step size=1.16e+00, acc. prob=0.925] Sample: 75%|#######5 | 979/1300 [03:25, 5.70it/s, step size=1.16e+00, acc. prob=0.925] Sample: 75%|#######5 | 980/1300 [03:26, 5.24it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######5 | 982/1300 [03:26, 5.56it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######5 | 984/1300 [03:26, 5.79it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######5 | 985/1300 [03:27, 4.63it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######5 | 987/1300 [03:27, 5.98it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######6 | 989/1300 [03:27, 6.07it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######6 | 991/1300 [03:27, 6.11it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######6 | 992/1300 [03:28, 5.61it/s, step size=1.16e+00, acc. prob=0.925] Sample: 76%|#######6 | 994/1300 [03:28, 6.93it/s, step size=1.16e+00, acc. prob=0.924] Sample: 77%|#######6 | 995/1300 [03:28, 6.08it/s, step size=1.16e+00, acc. prob=0.924] Sample: 77%|#######6 | 996/1300 [03:28, 5.50it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######6 | 997/1300 [03:28, 5.08it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######6 | 998/1300 [03:29, 4.80it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######6 | 1000/1300 [03:29, 6.49it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######7 | 1001/1300 [03:29, 5.75it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######7 | 1003/1300 [03:29, 5.88it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######7 | 1005/1300 [03:30, 7.26it/s, step size=1.16e+00, acc. prob=0.925] Sample: 77%|#######7 | 1007/1300 [03:30, 6.78it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######7 | 1009/1300 [03:30, 6.54it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######7 | 1011/1300 [03:30, 7.60it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######7 | 1013/1300 [03:31, 7.10it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######8 | 1015/1300 [03:31, 6.78it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######8 | 1016/1300 [03:31, 6.04it/s, step size=1.16e+00, acc. prob=0.925] Sample: 78%|#######8 | 1018/1300 [03:32, 6.09it/s, step size=1.16e+00, acc. prob=0.926] Sample: 78%|#######8 | 1019/1300 [03:32, 5.58it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######8 | 1021/1300 [03:32, 6.96it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######8 | 1022/1300 [03:32, 6.10it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######8 | 1023/1300 [03:33, 5.53it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######8 | 1025/1300 [03:33, 7.05it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######8 | 1026/1300 [03:33, 6.14it/s, step size=1.16e+00, acc. prob=0.925] Sample: 79%|#######9 | 1027/1300 [03:33, 5.52it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######9 | 1028/1300 [03:33, 5.08it/s, step size=1.16e+00, acc. prob=0.925] Sample: 79%|#######9 | 1029/1300 [03:34, 4.77it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######9 | 1030/1300 [03:34, 4.59it/s, step size=1.16e+00, acc. prob=0.925] Sample: 79%|#######9 | 1032/1300 [03:34, 6.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 79%|#######9 | 1033/1300 [03:34, 5.62it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|#######9 | 1034/1300 [03:35, 5.16it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|#######9 | 1036/1300 [03:35, 5.54it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|#######9 | 1037/1300 [03:35, 5.12it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|#######9 | 1038/1300 [03:35, 4.84it/s, step size=1.16e+00, acc. prob=0.925] Sample: 80%|######## | 1040/1300 [03:36, 5.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|######## | 1041/1300 [03:36, 5.00it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|######## | 1042/1300 [03:36, 4.75it/s, step size=1.16e+00, acc. prob=0.926] Sample: 80%|######## | 1044/1300 [03:36, 5.28it/s, step size=1.16e+00, acc. prob=0.925] Sample: 80%|######## | 1045/1300 [03:37, 4.96it/s, step size=1.16e+00, acc. prob=0.925] Sample: 81%|######## | 1047/1300 [03:37, 5.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|######## | 1048/1300 [03:37, 5.03it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|######## | 1049/1300 [03:38, 4.76it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|######## | 1050/1300 [03:38, 4.58it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|######## | 1051/1300 [03:38, 4.47it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|######## | 1052/1300 [03:38, 4.38it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|########1 | 1053/1300 [03:39, 4.29it/s, step size=1.16e+00, acc. prob=0.926] Sample: 81%|########1 | 1054/1300 [03:39, 4.25it/s, step size=1.16e+00, acc. prob=0.925] Sample: 81%|########1 | 1055/1300 [03:39, 4.20it/s, step size=1.16e+00, acc. prob=0.925] Sample: 81%|########1 | 1057/1300 [03:39, 6.01it/s, step size=1.16e+00, acc. prob=0.925] Sample: 81%|########1 | 1059/1300 [03:39, 7.55it/s, step size=1.16e+00, acc. prob=0.925] Sample: 82%|########1 | 1060/1300 [03:40, 6.35it/s, step size=1.16e+00, acc. prob=0.925] Sample: 82%|########1 | 1061/1300 [03:40, 5.64it/s, step size=1.16e+00, acc. prob=0.925] Sample: 82%|########1 | 1063/1300 [03:40, 5.89it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########1 | 1064/1300 [03:40, 5.39it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########1 | 1065/1300 [03:41, 5.02it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########2 | 1067/1300 [03:41, 5.47it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########2 | 1069/1300 [03:41, 5.74it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########2 | 1070/1300 [03:41, 5.32it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########2 | 1071/1300 [03:42, 5.02it/s, step size=1.16e+00, acc. prob=0.926] Sample: 82%|########2 | 1072/1300 [03:42, 4.79it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1073/1300 [03:42, 4.59it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1074/1300 [03:42, 4.45it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1075/1300 [03:43, 4.36it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1076/1300 [03:43, 4.30it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1077/1300 [03:43, 4.26it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########2 | 1079/1300 [03:43, 6.08it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########3 | 1081/1300 [03:43, 7.58it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########3 | 1083/1300 [03:44, 7.04it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########3 | 1084/1300 [03:44, 6.13it/s, step size=1.16e+00, acc. prob=0.925] Sample: 83%|########3 | 1085/1300 [03:44, 5.53it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########3 | 1086/1300 [03:45, 5.13it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########3 | 1087/1300 [03:45, 4.83it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########3 | 1088/1300 [03:45, 4.66it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########3 | 1090/1300 [03:45, 6.39it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########3 | 1091/1300 [03:45, 5.67it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########4 | 1092/1300 [03:46, 5.19it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########4 | 1094/1300 [03:46, 5.60it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########4 | 1095/1300 [03:46, 5.16it/s, step size=1.16e+00, acc. prob=0.925] Sample: 84%|########4 | 1097/1300 [03:47, 5.54it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1099/1300 [03:47, 5.76it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1100/1300 [03:47, 5.32it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1101/1300 [03:47, 4.99it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1102/1300 [03:48, 4.76it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1103/1300 [03:48, 4.60it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########4 | 1104/1300 [03:48, 4.49it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########5 | 1106/1300 [03:48, 6.21it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########5 | 1107/1300 [03:48, 5.54it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########5 | 1109/1300 [03:49, 7.14it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########5 | 1110/1300 [03:49, 6.16it/s, step size=1.16e+00, acc. prob=0.925] Sample: 85%|########5 | 1111/1300 [03:49, 5.47it/s, step size=1.16e+00, acc. prob=0.925] Sample: 86%|########5 | 1112/1300 [03:49, 5.02it/s, step size=1.16e+00, acc. prob=0.925] Sample: 86%|########5 | 1113/1300 [03:50, 4.77it/s, step size=1.16e+00, acc. prob=0.925] Sample: 86%|########5 | 1114/1300 [03:50, 4.55it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########5 | 1116/1300 [03:50, 6.30it/s, step size=1.16e+00, acc. prob=0.925] Sample: 86%|########5 | 1117/1300 [03:50, 5.59it/s, step size=1.16e+00, acc. prob=0.925] Sample: 86%|########6 | 1118/1300 [03:51, 5.12it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########6 | 1119/1300 [03:51, 4.80it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########6 | 1121/1300 [03:51, 5.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########6 | 1122/1300 [03:51, 5.00it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########6 | 1123/1300 [03:52, 4.74it/s, step size=1.16e+00, acc. prob=0.926] Sample: 86%|########6 | 1124/1300 [03:52, 4.57it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########6 | 1125/1300 [03:52, 4.45it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########6 | 1126/1300 [03:52, 4.36it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########6 | 1128/1300 [03:52, 6.16it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########6 | 1130/1300 [03:53, 7.69it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########7 | 1131/1300 [03:53, 6.47it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########7 | 1132/1300 [03:53, 5.71it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########7 | 1134/1300 [03:53, 7.32it/s, step size=1.16e+00, acc. prob=0.925] Sample: 87%|########7 | 1135/1300 [03:53, 6.24it/s, step size=1.16e+00, acc. prob=0.925] Sample: 87%|########7 | 1136/1300 [03:54, 5.56it/s, step size=1.16e+00, acc. prob=0.926] Sample: 87%|########7 | 1137/1300 [03:54, 5.13it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########7 | 1138/1300 [03:54, 4.80it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########7 | 1140/1300 [03:54, 6.54it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########7 | 1142/1300 [03:55, 6.43it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########7 | 1143/1300 [03:55, 5.74it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########8 | 1144/1300 [03:55, 5.24it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########8 | 1145/1300 [03:55, 4.91it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########8 | 1146/1300 [03:56, 4.68it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########8 | 1147/1300 [03:56, 4.53it/s, step size=1.16e+00, acc. prob=0.926] Sample: 88%|########8 | 1148/1300 [03:56, 4.44it/s, step size=1.16e+00, acc. prob=0.925] Sample: 88%|########8 | 1150/1300 [03:56, 6.21it/s, step size=1.16e+00, acc. prob=0.925] Sample: 89%|########8 | 1152/1300 [03:56, 7.72it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########8 | 1153/1300 [03:57, 6.53it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########8 | 1154/1300 [03:57, 5.74it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########8 | 1155/1300 [03:57, 5.21it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########8 | 1156/1300 [03:57, 4.90it/s, step size=1.16e+00, acc. prob=0.925] Sample: 89%|########9 | 1157/1300 [03:58, 4.68it/s, step size=1.16e+00, acc. prob=0.925] Sample: 89%|########9 | 1158/1300 [03:58, 4.53it/s, step size=1.16e+00, acc. prob=0.925] Sample: 89%|########9 | 1159/1300 [03:58, 4.40it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########9 | 1161/1300 [03:58, 6.20it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########9 | 1162/1300 [03:59, 5.53it/s, step size=1.16e+00, acc. prob=0.926] Sample: 89%|########9 | 1163/1300 [03:59, 5.09it/s, step size=1.16e+00, acc. prob=0.925] Sample: 90%|########9 | 1164/1300 [03:59, 4.82it/s, step size=1.16e+00, acc. prob=0.925] Sample: 90%|########9 | 1166/1300 [03:59, 5.34it/s, step size=1.16e+00, acc. prob=0.925] Sample: 90%|########9 | 1168/1300 [04:00, 6.80it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1170/1300 [04:00, 6.58it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1171/1300 [04:00, 5.90it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1172/1300 [04:00, 5.38it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1173/1300 [04:01, 5.03it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1174/1300 [04:01, 4.80it/s, step size=1.16e+00, acc. prob=0.926] Sample: 90%|######### | 1176/1300 [04:01, 5.35it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|######### | 1178/1300 [04:01, 6.81it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|######### | 1180/1300 [04:01, 8.10it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|######### | 1182/1300 [04:02, 9.14it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|#########1| 1184/1300 [04:02, 9.99it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|#########1| 1186/1300 [04:02, 10.62it/s, step size=1.16e+00, acc. prob=0.926] Sample: 91%|#########1| 1188/1300 [04:02, 11.10it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########1| 1190/1300 [04:02, 8.90it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########1| 1192/1300 [04:03, 7.88it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########1| 1193/1300 [04:03, 6.79it/s, step size=1.16e+00, acc. prob=0.925] Sample: 92%|#########1| 1195/1300 [04:03, 6.57it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########2| 1196/1300 [04:04, 5.86it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########2| 1197/1300 [04:04, 5.39it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########2| 1198/1300 [04:04, 5.06it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########2| 1199/1300 [04:04, 4.80it/s, step size=1.16e+00, acc. prob=0.926] Sample: 92%|#########2| 1201/1300 [04:04, 6.50it/s, step size=1.16e+00, acc. prob=0.925] Sample: 92%|#########2| 1202/1300 [04:05, 5.78it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########2| 1204/1300 [04:05, 7.33it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########2| 1205/1300 [04:05, 6.25it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########2| 1207/1300 [04:05, 6.18it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########3| 1209/1300 [04:06, 7.49it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########3| 1211/1300 [04:06, 7.01it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########3| 1213/1300 [04:06, 8.18it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########3| 1214/1300 [04:06, 6.88it/s, step size=1.16e+00, acc. prob=0.925] Sample: 93%|#########3| 1215/1300 [04:06, 6.05it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########3| 1217/1300 [04:07, 6.07it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########3| 1218/1300 [04:07, 5.52it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########3| 1219/1300 [04:07, 5.14it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########3| 1220/1300 [04:08, 4.86it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########3| 1221/1300 [04:08, 4.65it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########4| 1223/1300 [04:08, 6.39it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########4| 1224/1300 [04:08, 5.66it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########4| 1225/1300 [04:08, 5.16it/s, step size=1.16e+00, acc. prob=0.925] Sample: 94%|#########4| 1227/1300 [04:09, 5.59it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########4| 1229/1300 [04:09, 7.04it/s, step size=1.16e+00, acc. prob=0.926] Sample: 95%|#########4| 1230/1300 [04:09, 6.13it/s, step size=1.16e+00, acc. prob=0.926] Sample: 95%|#########4| 1231/1300 [04:09, 5.50it/s, step size=1.16e+00, acc. prob=0.926] Sample: 95%|#########4| 1232/1300 [04:10, 5.11it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########4| 1233/1300 [04:10, 4.82it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########4| 1234/1300 [04:10, 4.64it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########5| 1235/1300 [04:10, 3.80it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########5| 1236/1300 [04:11, 3.89it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########5| 1238/1300 [04:11, 4.69it/s, step size=1.16e+00, acc. prob=0.925] Sample: 95%|#########5| 1240/1300 [04:11, 6.17it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########5| 1242/1300 [04:12, 6.21it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########5| 1243/1300 [04:12, 5.64it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########5| 1244/1300 [04:12, 5.24it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########5| 1246/1300 [04:12, 6.75it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########5| 1247/1300 [04:12, 5.97it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1248/1300 [04:13, 5.34it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1249/1300 [04:13, 5.00it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1250/1300 [04:13, 4.78it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1251/1300 [04:13, 4.58it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1252/1300 [04:14, 4.45it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1253/1300 [04:14, 4.35it/s, step size=1.16e+00, acc. prob=0.925] Sample: 96%|#########6| 1254/1300 [04:14, 4.27it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########6| 1255/1300 [04:14, 4.17it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########6| 1256/1300 [04:15, 4.17it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########6| 1257/1300 [04:15, 4.16it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########6| 1258/1300 [04:15, 4.17it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########6| 1260/1300 [04:15, 6.02it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1261/1300 [04:15, 5.43it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1262/1300 [04:16, 5.02it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1263/1300 [04:16, 4.75it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1264/1300 [04:16, 4.57it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1265/1300 [04:16, 4.45it/s, step size=1.16e+00, acc. prob=0.925] Sample: 97%|#########7| 1266/1300 [04:17, 4.34it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########7| 1268/1300 [04:17, 6.13it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########7| 1270/1300 [04:17, 7.63it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########7| 1271/1300 [04:17, 6.44it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########7| 1272/1300 [04:17, 5.67it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1274/1300 [04:18, 5.88it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1275/1300 [04:18, 5.37it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1276/1300 [04:18, 5.00it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1277/1300 [04:19, 4.65it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1278/1300 [04:19, 4.51it/s, step size=1.16e+00, acc. prob=0.925] Sample: 98%|#########8| 1280/1300 [04:19, 6.24it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########8| 1281/1300 [04:19, 5.59it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########8| 1283/1300 [04:19, 7.17it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########8| 1284/1300 [04:20, 6.19it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########8| 1286/1300 [04:20, 7.69it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########9| 1287/1300 [04:20, 6.48it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########9| 1288/1300 [04:20, 5.71it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########9| 1289/1300 [04:20, 5.21it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########9| 1291/1300 [04:21, 5.60it/s, step size=1.16e+00, acc. prob=0.925] Sample: 99%|#########9| 1293/1300 [04:21, 5.82it/s, step size=1.16e+00, acc. prob=0.925] Sample: 100%|#########9| 1294/1300 [04:21, 5.36it/s, step size=1.16e+00, acc. prob=0.925] Sample: 100%|#########9| 1296/1300 [04:22, 6.80it/s, step size=1.16e+00, acc. prob=0.925] Sample: 100%|#########9| 1297/1300 [04:22, 5.98it/s, step size=1.16e+00, acc. prob=0.925] Sample: 100%|#########9| 1299/1300 [04:22, 6.10it/s, step size=1.16e+00, acc. prob=0.925] Sample: 100%|##########| 1300/1300 [04:22, 4.95it/s, step size=1.16e+00, acc. prob=0.925] - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 189-190 +.. GENERATED FROM PYTHON SOURCE LINES 196-197 Analyze posterior samples and predictives, and visualize the results -.. GENERATED FROM PYTHON SOURCE LINES 190-200 +.. GENERATED FROM PYTHON SOURCE LINES 197-207 -.. code-block:: default +.. code-block:: Python posterior_samples = mcmc.get_samples(50) - posterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input) + posterior_predictive = Predictive(model, posterior_samples)(y_obs_list, interpolation_input=geo_model.interpolation_input_copy) data = az.from_pyro( posterior=mcmc, prior=prior, @@ -532,34 +528,14 @@ Analyze posterior samples and predictives, and visualize the results plt.show() - - -.. image-sg:: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_005.png - :alt: $\mu_{density}$, $\mu_{density}$ - :srcset: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_005.png - :class: sphx-glr-single-img - - -.. rst-class:: sphx-glr-script-out - - .. code-block:: none - - /home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/arviz/data/io_pyro.py:157: UserWarning: Could not get vectorized trace, log_likelihood group will be omitted. Check your model vectorization or set log_likelihood=False - warnings.warn( - posterior predictive shape not compatible with number of chains and draws.This can mean that some draws or even whole chains are not represented. - posterior predictive shape not compatible with number of chains and draws.This can mean that some draws or even whole chains are not represented. - - - - -.. GENERATED FROM PYTHON SOURCE LINES 201-203 +.. GENERATED FROM PYTHON SOURCE LINES 208-210 Create density plots for posterior and prior distributions These plots provide insights into the parameter distributions and their changes. -.. GENERATED FROM PYTHON SOURCE LINES 203-212 +.. GENERATED FROM PYTHON SOURCE LINES 210-219 -.. code-block:: default +.. code-block:: Python az.plot_density( data=[data, data.prior], @@ -571,20 +547,9 @@ These plots provide insights into the parameter distributions and their changes. plt.show() +.. GENERATED FROM PYTHON SOURCE LINES 220-230 - -.. image-sg:: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_006.png - :alt: $\mu_{density}$ - :srcset: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_006.png - :class: sphx-glr-single-img - - - - - -.. GENERATED FROM PYTHON SOURCE LINES 213-223 - -.. code-block:: default +.. code-block:: Python az.plot_density( data=[data.posterior_predictive, data.prior_predictive], @@ -598,20 +563,9 @@ These plots provide insights into the parameter distributions and their changes. # sphinx_gallery_thumbnail_number = -1 - -.. image-sg:: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_007.png - :alt: $\mu_{gravity}$ 0, $\mu_{gravity}$ 1, $\mu_{gravity}$ 2, $\mu_{gravity}$ 3, $\mu_{gravity}$ 4, $\mu_{gravity}$ 5, $\mu_{gravity}$ 6, $\mu_{gravity}$ 7, $\mu_{gravity}$ 8, $\mu_{gravity}$ 9, $\mu_{gravity}$ 10, $\mu_{gravity}$ 11, $\mu_{gravity}$ 12, $\mu_{gravity}$ 13, $\mu_{gravity}$ 14, $\mu_{gravity}$ 15, $\mu_{gravity}$ 16 - :srcset: /examples/04_probabilistic_modeling/images/sphx_glr_02_model_1_bayesian_007.png - :class: sphx-glr-single-img - - - - - - .. rst-class:: sphx-glr-timing - **Total running time of the script:** ( 4 minutes 46.444 seconds) + **Total running time of the script:** (0 minutes 16.294 seconds) .. _sphx_glr_download_examples_04_probabilistic_modeling_02_model_1_bayesian.py: @@ -620,17 +574,14 @@ These plots provide insights into the parameter distributions and their changes. .. container:: sphx-glr-footer sphx-glr-footer-example + .. container:: sphx-glr-download sphx-glr-download-jupyter - + :download:`Download Jupyter notebook: 02_model_1_bayesian.ipynb <02_model_1_bayesian.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 02_model_1_bayesian.py <02_model_1_bayesian.py>` - .. container:: sphx-glr-download sphx-glr-download-jupyter - - :download:`Download Jupyter notebook: 02_model_1_bayesian.ipynb <02_model_1_bayesian.ipynb>` - .. only:: html diff --git a/_sources/examples/04_probabilistic_modeling/sg_execution_times.rst.txt b/_sources/examples/04_probabilistic_modeling/sg_execution_times.rst.txt index 009eb10..459c76d 100644 --- a/_sources/examples/04_probabilistic_modeling/sg_execution_times.rst.txt +++ b/_sources/examples/04_probabilistic_modeling/sg_execution_times.rst.txt @@ -6,10 +6,35 @@ Computation times ================= -**04:46.444** total execution time for **examples_04_probabilistic_modeling** files: +**00:16.294** total execution time for 2 files **from examples/04_probabilistic_modeling**: -+----------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_04_probabilistic_modeling_02_model_1_bayesian.py` (``02_model_1_bayesian.py``) | 04:46.444 | 0.0 MB | -+----------------------------------------------------------------------------------------------------------------------+-----------+--------+ -| :ref:`sphx_glr_examples_04_probabilistic_modeling_01_thickness_problem_gempy.py` (``01_thickness_problem_gempy.py``) | 00:00.000 | 0.0 MB | -+----------------------------------------------------------------------------------------------------------------------+-----------+--------+ +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_04_probabilistic_modeling_02_model_1_bayesian.py` (``02_model_1_bayesian.py``) + - 00:16.294 + - 0.0 + * - :ref:`sphx_glr_examples_04_probabilistic_modeling_01_thickness_problem_gempy.py` (``01_thickness_problem_gempy.py``) + - 00:00.000 + - 0.0 diff --git a/_sources/examples/index.rst.txt b/_sources/examples/index.rst.txt index 1974e91..25394ca 100644 --- a/_sources/examples/index.rst.txt +++ b/_sources/examples/index.rst.txt @@ -176,6 +176,40 @@ Prepare to enhance your understanding and skills in geological modeling with a f +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/02_structural_modeling/images/thumb/sphx_glr_03_model_spremberg_import_thumb.png + :alt: + + :ref:`sphx_glr_examples_02_structural_modeling_03_model_spremberg_import.py` + +.. raw:: html + +
Construct Spremberg: Importing borehole data
+
+ + +.. raw:: html + +
+ +.. only:: html + + .. image:: /examples/02_structural_modeling/images/thumb/sphx_glr_04_model_spremberg_building_thumb.png + :alt: + + :ref:`sphx_glr_examples_02_structural_modeling_04_model_spremberg_building.py` + +.. raw:: html + +
Construct Spremberg: Building initial model
+
+ + .. raw:: html diff --git a/_sources/examples/sg_execution_times.rst.txt b/_sources/examples/sg_execution_times.rst.txt new file mode 100644 index 0000000..f7a0c03 --- /dev/null +++ b/_sources/examples/sg_execution_times.rst.txt @@ -0,0 +1,37 @@ + +:orphan: + +.. _sphx_glr_examples_sg_execution_times: + + +Computation times +================= +**00:00.000** total execution time for 0 files **from examples**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - N/A + - N/A + - N/A diff --git a/_sources/sg_execution_times.rst.txt b/_sources/sg_execution_times.rst.txt new file mode 100644 index 0000000..8d999e2 --- /dev/null +++ b/_sources/sg_execution_times.rst.txt @@ -0,0 +1,73 @@ + +:orphan: + +.. _sphx_glr_sg_execution_times: + + +Computation times +================= +**01:09.159** total execution time for 13 files **from all galleries**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_examples_02_structural_modeling_04_model_spremberg_building.py` (``../../examples/02_structural_modeling/04_model_spremberg_building.py``) + - 00:52.865 + - 0.0 + * - :ref:`sphx_glr_examples_04_probabilistic_modeling_02_model_1_bayesian.py` (``../../examples/04_probabilistic_modeling/02_model_1_bayesian.py``) + - 00:16.294 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_01_read_OMF_sites.py` (``../../examples/01_readers/01_read_OMF_sites.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_02_model_1_OMF_to_subsurface.py` (``../../examples/01_readers/02_model_1_OMF_to_subsurface.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_03_model_2_OMF_to_subsurface.py` (``../../examples/01_readers/03_model_2_OMF_to_subsurface.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_01_readers_04_model_1_read_gravity.py` (``../../examples/01_readers/04_model_1_read_gravity.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_01_model_1_gempy_step_by_step.py` (``../../examples/02_structural_modeling/01_model_1_gempy_step_by_step.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_02_model_1_gempy.py` (``../../examples/02_structural_modeling/02_model_1_gempy.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_02_structural_modeling_03_model_spremberg_import.py` (``../../examples/02_structural_modeling/03_model_spremberg_import.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_03_forward_engines_01_gravity_gradiometry_inversion_pgi.py` (``../../examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_03_forward_engines_02_model_1_gempy_fw_gravity.py` (``../../examples/03_forward_engines/02_model_1_gempy_fw_gravity.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_03_forward_engines_03_HSI_To_Petrophysics.py` (``../../examples/03_forward_engines/03_HSI_To_Petrophysics.py``) + - 00:00.000 + - 0.0 + * - :ref:`sphx_glr_examples_04_probabilistic_modeling_01_thickness_problem_gempy.py` (``../../examples/04_probabilistic_modeling/01_thickness_problem_gempy.py``) + - 00:00.000 + - 0.0 diff --git a/_static/basic.css b/_static/basic.css index cfc60b8..30fee9d 100644 --- a/_static/basic.css +++ b/_static/basic.css @@ -237,6 +237,10 @@ a.headerlink { visibility: hidden; } +a:visited { + color: #551A8B; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, diff --git a/_static/documentation_options.js b/_static/documentation_options.js index ee75c45..c88b5c9 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,6 +1,5 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.1.dev16+g525c9e2', +const DOCUMENTATION_OPTIONS = { + VERSION: '0.3.dev0+gf79ba49.d20240612', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/_static/pygments.css b/_static/pygments.css index 7a18115..8054382 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ diff --git a/_static/searchtools.js b/_static/searchtools.js index 97d56a7..7918c3f 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -57,12 +57,12 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, searchTerms) => { +const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; const [docName, title, anchor, descr, score, _filename] = item; @@ -75,20 +75,24 @@ const _displayItem = (item, searchTerms) => { if (dirname.match(/\/index\/$/)) dirname = dirname.substring(0, dirname.length - 6); else if (dirname === "index/") dirname = ""; - requestUrl = docUrlRoot + dirname; + requestUrl = contentRoot + dirname; linkUrl = requestUrl; } else { // normal html builders - requestUrl = docUrlRoot + docName + docFileSuffix; + requestUrl = contentRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; linkEl.innerHTML = title; - if (descr) + if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) @@ -97,6 +101,9 @@ const _displayItem = (item, searchTerms) => { listItem.appendChild( Search.makeSearchSummary(data, searchTerms) ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); }); Search.output.appendChild(listItem); }; @@ -115,14 +122,15 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - searchTerms + searchTerms, + highlightTerms, ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), searchTerms); + _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( - () => _displayNextItem(results, resultCount, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), 5 ); } @@ -360,7 +368,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, searchTerms); + _displayNextItem(results, results.length, searchTerms, highlightTerms); }, /** diff --git a/_static/sg_gallery-dataframe.css b/_static/sg_gallery-dataframe.css index 25be730..fac74c4 100644 --- a/_static/sg_gallery-dataframe.css +++ b/_static/sg_gallery-dataframe.css @@ -19,6 +19,7 @@ table.dataframe { color: var(--sg-text-color); font-size: 12px; table-layout: fixed; + width: auto; } table.dataframe thead { border-bottom: 1px solid var(--sg-text-color); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js index aae669d..8a96c69 100644 --- a/_static/sphinx_highlight.js +++ b/_static/sphinx_highlight.js @@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => { } span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); parent.insertBefore( span, parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), + rest, node.nextSibling ) ); node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); if (isInSVG) { const rect = document.createElementNS( @@ -140,5 +145,10 @@ const SphinxHighlight = { }, }; -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/contributing.html b/contributing.html index 5d857ad..61cf708 100644 --- a/contributing.html +++ b/contributing.html @@ -1,23 +1,23 @@ - + - Contributing — Vector Geology 0.1.dev16+g525c9e2 documentation - + Contributing — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -41,29 +41,29 @@
-

ContributingΒΆ

+

ContributingΒΆ

We welcome and encourage everyone to contribute to vector-geology! Contributions can be questions, bug reports, feature requests, and new code. Here is how to get started.

-

IssuesΒΆ

+

IssuesΒΆ

-

QuestionsΒΆ

+

QuestionsΒΆ

For questions about vector-geology (e.g., its applications, functionality, and usage), please search the existing issues for related questions. If your question has not already been asked, then make a new issue.

-

Reporting BugsΒΆ

+

Reporting BugsΒΆ

Please report bugs on the issue page and label the issue as a bug. The template asks essential questions for you to answer so that we can understand, reproduce, and fix the bug. Be verbose! Whenever possible, provide tracebacks and/or error messages, screenshots, and sample code or other files.

-

Feature RequestsΒΆ

+

Feature RequestsΒΆ

We encourage users to submit ideas for improvements to the vector-geology project. For this please create an issue on the `issue page with the Feature Request template and label. Please make sure to use a descriptive title and to provide ample background information to help us implement that functionality in the future.

-

Contributing New CodeΒΆ

+

Contributing New CodeΒΆ

Any code contributions are welcome, whether fixing a typo or bug, adding new post-processing/plotting functionality, improving core functionality, or anything that you think should be in the repository.

Contributions should address an open issue (either a bug or a feature request). If you have found a new bug or have an idea or a new feature, then please open the issue for discussion and link to that issue in your pull request.

-

Python Code GuidelinesΒΆ

+

Python Code GuidelinesΒΆ

We aim to follow particular Python coding guidelines to improve the sustainability and positive impact of this community project:

  • Follow The Zen of Python, most importantly β€œreadability counts” when writing Python code.

  • @@ -95,7 +95,7 @@

    Python Code Guidelines

-

LicensingΒΆ

+

LicensingΒΆ

All contributed code will be licensed under a EUPL-1.2 license. If you did not write the code yourself, it is your responsibility to ensure that the existing license is compatible and included in the contributed files. In general, we discourage contributing third-party code.

@@ -161,7 +161,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/01_read_OMF_sites.html b/examples/01_readers/01_read_OMF_sites.html index fddf634..dae7f36 100644 --- a/examples/01_readers/01_read_OMF_sites.html +++ b/examples/01_readers/01_read_OMF_sites.html @@ -1,23 +1,23 @@ - + - Reading OMF Project Into Python — Vector Geology 0.1.dev16+g525c9e2 documentation - + Reading OMF Project Into Python — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -46,56 +46,53 @@ to download the full example code

-

Reading OMF Project Into PythonΒΆ

+

Reading OMF Project Into PythonΒΆ

This tutorial demonstrates how to read an OMF (Open Mining Format) project file in Python, visualize it using PyVista, and convert it to a format suitable for further analysis with Subsurface.

-

Required LibrariesΒΆ

+

Required LibrariesΒΆ

First, we import the necessary libraries for handling and visualizing OMF files.

-
import omfvista
+
import omfvista
 import pyvista
 import subsurface
 from subsurface import TriSurf
-from subsurface.visualization import to_pyvista_mesh, pv_plot
-from subsurface.writer import base_structs_to_binary_file
 from dotenv import dotenv_values
-
-
-
/home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible.
-  warnings.warn("Welly or Striplog not installed. No well reader possible.")
+
+from subsurface.modules.visualization import to_pyvista_mesh, pv_plot
+from subsurface.modules.writer import base_structs_to_binary_file
 
-

Load OMF ProjectΒΆ

+

Load OMF ProjectΒΆ

Here, we define a function to load an OMF project using a path specified in a .env file.

-
def load_omf():
+
def load_omf():
     config = dotenv_values()
     path = config.get('PATH_TO_MODEL_2')
-    omf_project = omfvista.load_project(path)
-    return omf_project
+    omf_project = omfvista.load_project(path)
+    return omf_project
 
-omf_project = load_omf()
+omf_project = load_omf()
 
-

Visualize OMF with PyVistaΒΆ

+

Visualize OMF with PyVistaΒΆ

Utilize PyVista for an interactive visualization of the OMF project.

-
omf_project.plot(multi_colors=True, show_edges=True, notebook=False)
+
omf_project.plot(multi_colors=True, show_edges=True, notebook=False)
 
01 read OMF sites
-

Convert OMF to Unstructured Single BlockΒΆ

+

Convert OMF to Unstructured Single BlockΒΆ

Convert the loaded OMF project into an unstructured single block for further processing.

-
block_name = omf_project.get_block_name(4)
-polydata_obj: pyvista.PolyData = omf_project[block_name]
-unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
-cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
+
block_name = omf_project.get_block_name(4)
+polydata_obj: pyvista.PolyData = omf_project[block_name]
+unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
+cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
 
 unstruct: subsurface.UnstructuredData = subsurface.UnstructuredData.from_array(
-    vertex=unstruct_pyvista.points,
-    cells=cells_pyvista,
+    vertex=unstruct_pyvista.points,
+    cells=cells_pyvista,
 )
 
 # Optional: Export to Liquid Earth if required
@@ -106,24 +103,24 @@ 

Convert OMF to Unstructured Single Block -

Visualize Unstructured DataΒΆ

+

Visualize Unstructured DataΒΆ

Finally, visualize the converted unstructured data using Subsurface and PyVista.

-
ts = TriSurf(mesh=unstruct)
-subsurface_mesh = to_pyvista_mesh(ts)
-pv_plot([subsurface_mesh], image_2d=False)
+
ts = TriSurf(mesh=unstruct)
+subsurface_mesh = to_pyvista_mesh(ts)
+pv_plot([subsurface_mesh], image_2d=False)
 
-01 read OMF sites
<pyvista.plotting.plotting.Plotter object at 0x7fd53b397f70>
+01 read OMF sites
<pyvista.plotting.plotter.Plotter object at 0x7f2ef690bb80>
 
-

Total running time of the script: ( 0 minutes 2.341 seconds)

+

Total running time of the script: (0 minutes 2.693 seconds)

Gallery generated by Sphinx-Gallery

@@ -198,7 +195,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/02_model_1_OMF_to_subsurface.html b/examples/01_readers/02_model_1_OMF_to_subsurface.html index a70a890..82253f8 100644 --- a/examples/01_readers/02_model_1_OMF_to_subsurface.html +++ b/examples/01_readers/02_model_1_OMF_to_subsurface.html @@ -1,23 +1,23 @@ - + - Reading Model 1 OMF Project into Subsurface — Vector Geology 0.1.dev16+g525c9e2 documentation - + Reading Model 1 OMF Project into Subsurface — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -46,62 +46,62 @@ to download the full example code

-

Reading Model 1 OMF Project into SubsurfaceΒΆ

+

Reading Model 1 OMF Project into SubsurfaceΒΆ

This tutorial demonstrates how to read an OMF (Open Mining Format) project file and convert it into a Subsurface format for enhanced analysis and visualization.

-

Importing Required LibrariesΒΆ

+

Importing Required LibrariesΒΆ

Begin by importing the necessary libraries for this tutorial.

-
import pandas as pd
+
import pandas as pd
 import pyvista
 import xarray
 
 import subsurface
 from subsurface import TriSurf, LineSet
-from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter
+from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter
 from vector_geology.utils import load_omf
 
-

Loading the OMF ProjectΒΆ

+

Loading the OMF ProjectΒΆ

Load the OMF project file using a custom function.

-
omf = load_omf("PATH_TO_MODEL_1")
+
omf = load_omf("PATH_TO_MODEL_1")
 
-

Visualizing the OMF Project with PyVistaΒΆ

+

Visualizing the OMF Project with PyVistaΒΆ

Next, we use PyVista for an initial visualization of the OMF project.

-
# Replace `False` with a condition or toggle to enable plotting.
+
# Replace `False` with a condition or toggle to enable plotting.
 if False:
-    omf.plot(multi_colors=True, show_edges=True, notebook=False)
+    omf.plot(multi_colors=True, show_edges=True, notebook=False)
 
-

Visualizing Unstructured Data with Subsurface and PyVistaΒΆ

+

Visualizing Unstructured Data with Subsurface and PyVistaΒΆ

Use Subsurface and PyVista to visualize the unstructured data.

-
meshes_far = []
+
meshes_far = []
 
 meshes = []
 lines_1 = []
 lines_far = []
 
-dataset: xarray.Dataset = None
+dataset: xarray.Dataset = None
 
-for e in range(omf.n_blocks):
-    block_name = omf.get_block_name(e)
+for e in range(omf.n_blocks):
+    block_name = omf.get_block_name(e)
     print(block_name)
-    polydata_obj: pyvista.PolyData = omf[block_name]
+    polydata_obj: pyvista.PolyData = omf[block_name]
     # Check if the polydata is a mesh and if is not continue
-    print(polydata_obj.get_cell(0).type)
-    unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
+    print(polydata_obj.get_cell(0).type)
+    unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
 
-    grid = unstruct_pyvista
-    cell_data = {name: grid.cell_data[name] for name in grid.cell_data}
-    match polydata_obj.get_cell(0).type:
-        case pyvista.CellType.TRIANGLE:
-            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
+    grid = unstruct_pyvista
+    cell_data = {name: grid.cell_data[name] for name in grid.cell_data}
+    match polydata_obj.get_cell(0).type:
+        case pyvista.CellType.TRIANGLE:
+            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
             new_cell_data = {
                 **{
                     "Formation_Major_": e,
@@ -109,39 +109,39 @@ 

Visualizing Unstructured Data with Subsurface and PyVista**cell_data } unstruct: subsurface.UnstructuredData = subsurface.UnstructuredData.from_array( - vertex=unstruct_pyvista.points, - cells=cells_pyvista, - cells_attr=pd.DataFrame(new_cell_data) + vertex=unstruct_pyvista.points, + cells=cells_pyvista, + cells_attr=pd.DataFrame(new_cell_data) ) - ts = TriSurf(mesh=unstruct) - s = to_pyvista_mesh(ts) + ts = TriSurf(mesh=unstruct) + s = to_pyvista_mesh(ts) if e == 5: - meshes_far.append(s) # * This mesh is far from the rest. I am still unsure what is meant to represent. + meshes_far.append(s) # * This mesh is far from the rest. I am still unsure what is meant to represent. else: if False: to_netcdf( base_data=unstruct, path=f"./{block_name}.nc", ) - meshes.append(s) + meshes.append(s) - case pyvista.CellType.LINE: + case pyvista.CellType.LINE: if e > 11: continue continue # To ignore wells for now - cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:] + cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:] unstruct: subsurface.UnstructuredData = subsurface.UnstructuredData.from_array( - vertex=unstruct_pyvista.points, - cells=cells_pyvista, - cells_attr=pd.DataFrame(cell_data) + vertex=unstruct_pyvista.points, + cells=cells_pyvista, + cells_attr=pd.DataFrame(cell_data) ) line = LineSet(data=unstruct) - s = to_pyvista_line(line, radius=100, as_tube=True, spline=False) + s = to_pyvista_line(line, radius=100, as_tube=True, spline=False) if e <= 10: - lines_1.append(s) + lines_1.append(s) elif e <= 11: - lines_far.append(s) + lines_far.append(s) if False: # Replace with condition for exporting to Liquid Earth base_structs_to_binary_file("leapfrog1", unstruct) @@ -183,41 +183,41 @@

Visualizing Unstructured Data with Subsurface and PyVista -

Visualize Unstructured Data:ΒΆ

+

Visualize Unstructured Data:ΒΆ

Use Subsurface and PyVista to visualize the unstructured data.

-
plotter = init_plotter()
+
plotter = init_plotter()
 if plot_model_area := True:
-    for mesh in meshes[:1]:
-        plotter.add_mesh(mesh, cmap="magma", opacity=1)
+    for mesh in meshes[:1]:
+        plotter.add_mesh(mesh, cmap="magma", opacity=1)
 
     for line in lines_far:
-        plotter.add_mesh(line, cmap="viridis", opacity=1)
+        plotter.add_mesh(line, cmap="viridis", opacity=1)
 else:
     # * This seems to go together
-    for mesh in meshes_far:
-        plotter.add_mesh(mesh, cmap="magma", opacity=0.7)
+    for mesh in meshes_far:
+        plotter.add_mesh(mesh, cmap="magma", opacity=0.7)
 
     for line in lines_1:
-        plotter.add_mesh(line, cmap="viridis", opacity=1)
+        plotter.add_mesh(line, cmap="viridis", opacity=1)
 
-plotter.show()
+plotter.show()
 
02 model 1 OMF to subsurface
-

ConclusionsΒΆ

+

ConclusionsΒΆ

It seems that there are two areas in the OMF but the second one does not match the Legacy report. On the second area, wells do not have lithological data so there is not much we can do with it. For now we will use the interpreted meshes to reconstruct the gempy model Lithology data and gravity seems to be confidential so how much we can share in this documentation will be limited.

-

Total running time of the script: ( 0 minutes 8.682 seconds)

+

Total running time of the script: (0 minutes 6.341 seconds)

Gallery generated by Sphinx-Gallery

@@ -293,7 +293,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/03_model_2_OMF_to_subsurface.html b/examples/01_readers/03_model_2_OMF_to_subsurface.html index 46af976..8a3bb45 100644 --- a/examples/01_readers/03_model_2_OMF_to_subsurface.html +++ b/examples/01_readers/03_model_2_OMF_to_subsurface.html @@ -1,23 +1,23 @@ - + - Reading OMF project and exporting it to Subsurface: Example 1 — Vector Geology 0.1.dev16+g525c9e2 documentation - + Reading OMF project and exporting it to Subsurface: Example 1 — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -46,128 +46,112 @@ to download the full example code

-

Reading OMF project and exporting it to Subsurface: Example 1ΒΆ

+

Reading OMF project and exporting it to Subsurface: Example 1ΒΆ

This tutorial demonstrates how to read an OMF project file and export it for use with Subsurface.

-

Import Required LibrariesΒΆ

+

Import Required LibrariesΒΆ

Import the necessary libraries for reading an OMF file and processing it.

-
import omfvista
+
import omfvista
 import pandas as pd
 import pyvista
 from dotenv import dotenv_values
 import subsurface
 from subsurface import TriSurf, LineSet
-from subsurface.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter
+from subsurface.modules.visualization import to_pyvista_mesh, to_pyvista_line, init_plotter
 
-

Load OMF ProjectΒΆ

+

Load OMF ProjectΒΆ

Load the OMF project using a fixture.

-
def load_omf():
+
def load_omf():
     config = dotenv_values()
     path = config.get('PATH_TO_MODEL_2')
-    omf_project = omfvista.load_project(path)
-    return omf_project
+    omf_project = omfvista.load_project(path)
+    return omf_project
 
-omf_project = load_omf()
+omf_project = load_omf()
 
-

Visualize OMF Project with PyVista (Optional)ΒΆ

+

Visualize OMF Project with PyVista (Optional)ΒΆ

Optionally, visualize the OMF project using PyVista. This step can be skipped or modified as needed.

-
if False:  # Change to True to enable visualization
-    omf_project.plot(multi_colors=True, show_edges=True, notebook=False)
+
if False:  # Change to True to enable visualization
+    omf_project.plot(multi_colors=True, show_edges=True, notebook=False)
 
-

Convert OMF to Unstructured Single BlockΒΆ

+

Convert OMF to Unstructured Single BlockΒΆ

Convert the loaded OMF project into an unstructured single block for further analysis.

-
meshes = []
+
meshes = []
 lines = []
 
-for block_index in range(omf_project.n_blocks):
-    block_name = omf_project.get_block_name(block_index)
-    polydata_obj: pyvista.PolyData = omf_project[block_name]
+for block_index in range(omf_project.n_blocks):
+    block_name = omf_project.get_block_name(block_index)
+    polydata_obj: pyvista.PolyData = omf_project[block_name]
 
     # Skip if the polydata is not a mesh
-    if not isinstance(polydata_obj, pyvista.PolyData):
+    if not isinstance(polydata_obj, pyvista.PolyData):
         continue
 
-    unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
-    cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data}
+    unstruct_pyvista: pyvista.UnstructuredGrid = polydata_obj.cast_to_unstructured_grid()
+    cell_data = {name: unstruct_pyvista.cell_data[name] for name in unstruct_pyvista.cell_data}
 
     # Process based on cell type
-    match polydata_obj.cell_type(0):
-        case pyvista.CellType.TRIANGLE:
+    match polydata_obj.get_cell(0).type:
+        case pyvista.CellType.TRIANGLE:
             # Process triangle mesh
-            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
+            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 4)[:, 1:]
             new_cell_data = {"Formation_Major_": block_index, **cell_data}
             unstruct = subsurface.UnstructuredData.from_array(
-                vertex=unstruct_pyvista.points,
-                cells=cells_pyvista,
-                cells_attr=pd.DataFrame(new_cell_data)
+                vertex=unstruct_pyvista.points,
+                cells=cells_pyvista,
+                cells_attr=pd.DataFrame(new_cell_data)
             )
-            ts = TriSurf(mesh=unstruct)
+            ts = TriSurf(mesh=unstruct)
             meshes.append(to_pyvista_mesh(ts))
 
-        case pyvista.CellType.LINE:
+        case pyvista.CellType.LINE:
             # Process line data
             if "Formation_Major" not in cell_data.keys():
                 continue
-            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:]
+            cells_pyvista = unstruct_pyvista.cells.reshape(-1, 3)[:, 1:]
             unstruct = subsurface.UnstructuredData.from_array(
-                vertex=unstruct_pyvista.points,
-                cells=cells_pyvista,
-                cells_attr=pd.DataFrame(cell_data)
+                vertex=unstruct_pyvista.points,
+                cells=cells_pyvista,
+                cells_attr=pd.DataFrame(cell_data)
             )
-            line = LineSet(data=unstruct)
-            lines.append(to_pyvista_line(line, radius=100, as_tube=True, spline=False))
+            line = LineSet(data=unstruct)
+            lines.append(to_pyvista_line(line, radius=100, as_tube=True, spline=False))
 
 # Export to desired format here if necessary
 
-
/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-/home/leguark/.virtualenvs/gempy-geotop-pilot/lib/python3.10/site-packages/pyvista/core/dataset.py:2697: PyVistaDeprecationWarning: `cell_type` is deprecated. Use `get_cell(i).type` instead
-  warnings.warn(
-
-
-

Visualize Unstructured DataΒΆ

+

Visualize Unstructured DataΒΆ

Visualize the unstructured data using Subsurface and PyVista.

-
plotter = init_plotter()
+
plotter = init_plotter()
 
-for mesh in meshes:
-    plotter.add_mesh(mesh, cmap="magma", opacity=0.7)
+for mesh in meshes:
+    plotter.add_mesh(mesh, cmap="magma", opacity=0.7)
 
-for line in lines:
-    plotter.add_mesh(line, cmap="viridis", opacity=1)
+for line in lines:
+    plotter.add_mesh(line, cmap="viridis", opacity=1)
 
-plotter.show()
+plotter.show()
 
-03 model 2 OMF to subsurface

Total running time of the script: ( 0 minutes 1.332 seconds)

+03 model 2 OMF to subsurface

Total running time of the script: (0 minutes 1.242 seconds)

Gallery generated by Sphinx-Gallery

@@ -242,7 +226,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/04_model_1_read_gravity.html b/examples/01_readers/04_model_1_read_gravity.html index e428f0d..cff3e47 100644 --- a/examples/01_readers/04_model_1_read_gravity.html +++ b/examples/01_readers/04_model_1_read_gravity.html @@ -1,23 +1,23 @@ - + - Gravity Data Visualization — Vector Geology 0.1.dev16+g525c9e2 documentation - + Gravity Data Visualization — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -46,7 +46,7 @@ to download the full example code

-

Gravity Data VisualizationΒΆ

+

Gravity Data VisualizationΒΆ

This example illustrates how to read gravity data from the Stonepark project and visualize it. The data is converted for subsurface analysis.

import numpy as np
@@ -61,34 +61,34 @@
 path = config.get("PATH_TO_MODEL_1_BOUGUER")
 
 # Read the data into a pandas DataFrame
-df = pd.read_csv(path, sep=',', header=0)
+df = pd.read_csv(path, sep=',', header=0)
 
 # Selecting the columns of interest
-interesting_columns = df[['X', 'Y', 'Bouguer_267_complete']]
+interesting_columns = df[['X', 'Y', 'Bouguer_267_complete']]
 
 # Define the extent of the observation area
-omf_extent = np.array([559902.8297554839, 564955.6824703198 * 1.01, 644278.2600910577,
+omf_extent = np.array([559902.8297554839, 564955.6824703198 * 1.01, 644278.2600910577,
                        650608.7353560531, -1753.4, 160.3266042185512])
 

Plot the gravity data

-
plt.figure(figsize=(10, 10))
-plt.scatter(df['X'], df['Y'], c=df['Bouguer_267_complete'], cmap='viridis')
-plt.title('Gravity Data Plot for Stonepark Project')
-plt.xlabel('X Coordinate')
-plt.ylabel('Y Coordinate')
-plt.colorbar(label='Bouguer Anomaly')
+
plt.figure(figsize=(10, 10))
+plt.scatter(df['X'], df['Y'], c=df['Bouguer_267_complete'], cmap='viridis')
+plt.title('Gravity Data Plot for Stonepark Project')
+plt.xlabel('X Coordinate')
+plt.ylabel('Y Coordinate')
+plt.colorbar(label='Bouguer Anomaly')
 
 # Set the extent of the plot
-plt.xlim(omf_extent[0], omf_extent[1])
-plt.ylim(omf_extent[2], omf_extent[3])
+plt.xlim(omf_extent[0], omf_extent[1])
+plt.ylim(omf_extent[2], omf_extent[3])
 
 # Optional: Hide axis labels for a cleaner look
-plt.gca().axes.xaxis.set_ticklabels([])
-plt.gca().axes.yaxis.set_ticklabels([])
+plt.gca().axes.xaxis.set_ticklabels([])
+plt.gca().axes.yaxis.set_ticklabels([])
 
 # Display the plot
-plt.show()
+plt.show()
 
Gravity Data Plot for Stonepark Project

Total running time of the script: ( 0 minutes 0.071 seconds)

@@ -165,7 +165,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/index.html b/examples/01_readers/index.html index 76beb1e..eebdc74 100644 --- a/examples/01_readers/index.html +++ b/examples/01_readers/index.html @@ -1,23 +1,23 @@ - + - Readers and Parsers — Vector Geology 0.1.dev16+g525c9e2 documentation - + Readers and Parsers — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -41,7 +41,7 @@
-

Readers and ParsersΒΆ

+

Readers and ParsersΒΆ

Effective data analysis in geophysics begins with efficient data handling. This section is dedicated to demonstrating the use of specialized libraries to read and parse various data formats commonly encountered in the Vector Geology project. Here’s what you can expect:

  • Format Recognition: Learn how to identify and handle different data formats used in geophysical and remote sensing research.

  • @@ -126,7 +126,7 @@

    Quick search

    ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/01_readers/sg_execution_times.html b/examples/01_readers/sg_execution_times.html index 32f50fb..9e72425 100644 --- a/examples/01_readers/sg_execution_times.html +++ b/examples/01_readers/sg_execution_times.html @@ -1,23 +1,23 @@ - + - Computation times — Vector Geology 0.1.dev16+g525c9e2 documentation - + Computation times — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -39,28 +39,47 @@
    -

    Computation timesΒΆ

    -

    00:12.426 total execution time for examples_01_readers files:

    - +

    Computation timesΒΆ

    +

    00:01.242 total execution time for 4 files from examples/01_readers:

    +
    + + + + +
    + + + + + + - - - + + + - - - + + + - - - + + + - - - + + +

    Example

    Time

    Mem (MB)

    Reading Model 1 OMF Project into Subsurface (02_model_1_OMF_to_subsurface.py)

    00:08.682

    0.0 MB

    Reading OMF project and exporting it to Subsurface: Example 1 (03_model_2_OMF_to_subsurface.py)

    00:01.242

    0.0

    Reading OMF Project Into Python (01_read_OMF_sites.py)

    00:02.341

    0.0 MB

    Reading OMF Project Into Python (01_read_OMF_sites.py)

    00:00.000

    0.0

    Reading OMF project and exporting it to Subsurface: Example 1 (03_model_2_OMF_to_subsurface.py)

    00:01.332

    0.0 MB

    Reading Model 1 OMF Project into Subsurface (02_model_1_OMF_to_subsurface.py)

    00:00.000

    0.0

    Gravity Data Visualization (04_model_1_read_gravity.py)

    00:00.071

    0.0 MB

    Gravity Data Visualization (04_model_1_read_gravity.py)

    00:00.000

    0.0

    +
@@ -119,7 +138,7 @@

Quick search

©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/02_structural_modeling/01_model_1_gempy_step_by_step.html b/examples/02_structural_modeling/01_model_1_gempy_step_by_step.html index 36171c5..4a8d304 100644 --- a/examples/02_structural_modeling/01_model_1_gempy_step_by_step.html +++ b/examples/02_structural_modeling/01_model_1_gempy_step_by_step.html @@ -1,23 +1,23 @@ - + - Constructing Structural Geological Model — Vector Geology 0.1.dev16+g525c9e2 documentation - + Constructing Structural Geological Model — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -46,13 +46,12 @@ to download the full example code

-

Constructing Structural Geological ModelΒΆ

+

Constructing Structural Geological ModelΒΆ

This example illustrates how to construct a 3D geological model of a deposit using GemPy.

-
# Import necessary libraries
+
# Import necessary libraries
 import time
 import numpy as np
 import os
-import xarray as xr
 from dotenv import dotenv_values
 from vector_geology.omf_to_gempy import process_file
 import gempy as gp
@@ -64,13 +63,9 @@
 start_time = time.time()
 
-
/home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible.
-  warnings.warn("Welly or Striplog not installed. No well reader possible.")
-
-

Load the data necessary for model construction. This involves processing data from nc files and organizing it for use in the geological model.

-
config = dotenv_values()
+
config = dotenv_values()
 path = config.get("PATH_TO_MODEL_1_Subsurface")
 structural_elements = []
 global_extent = None
@@ -85,10 +80,10 @@
 
-

Setting Up GemPy ModelΒΆ

+

Setting Up GemPy ModelΒΆ

Configure the GemPy model object, including defining structural groups and configuring their properties. This is a crucial step in setting up the structural framework of the geological model.

-
# Define structural groups and their relationships
+
# Define structural groups and their relationships
 structural_group_red = gp.data.StructuralGroup(
     name="Red",
     elements=[structural_elements[i] for i in [0, 4, 8]],
@@ -121,36 +116,36 @@ 

Setting Up GemPy Modelgeo_model: gp.data.GeoModel = gp.create_geomodel( project_name='Tutorial_ch1_1_Basics', extent=global_extent, - resolution=[20, 10, 20], - refinement=6, + refinement=5, structural_frame=structural_frame )

Incorporate topography into the model using a dataset in nc format. This adds realism to the model by including surface variations.

-
import xarray as xr
+
import xarray as xr
 
-dataset: xr.Dataset = xr.open_dataset(os.path.join(path, "Topography.nc"))
+dataset: xr.Dataset = xr.open_dataset(os.path.join(path, "Topography.nc"))
 gp.set_topography_from_arrays(
     grid=geo_model.grid,
-    xyz_vertices=dataset.vertex.values
+    xyz_vertices=dataset.vertex.values
 )
 
-
Active grids: ['regular' 'topography']
+
Active grids: GridTypes.NONE|TOPOGRAPHY|OCTREE
 
-<gempy.core.data.grid_modules.topography.Topography object at 0x7f1609c83e20>
+<gempy.core.data.grid_modules.topography.Topography object at 0x7f2eaa335ff0>
 
-

Optimizing NuggetsΒΆ

+

Optimizing NuggetsΒΆ

Nuggets add a small random noise to the data to account for discrepancies in complex geometries. Here, we optimize the nugget value to balance between overfitting and underfitting the data.

-
TRIGGER_OPTIMIZE_NUGGETS = False
+
TRIGGER_OPTIMIZE_NUGGETS = False
 APPLY_OPTIMIZED_NUGGETS = True
 if TRIGGER_OPTIMIZE_NUGGETS:
+    geo_model.interpolation_options.cache_mode = gp.data.InterpolationOptions.CacheMode.NO_CACHE
 
     # Optimization process for different structural groups
     geo_model.interpolation_options.kernel_options.range = 0.7
@@ -178,27 +173,27 @@ 

Optimizing Nuggetsif APPLY_OPTIMIZED_NUGGETS: # Apply optimized nuggets to the model - loaded_nuggets_red = np.load("../temp/nuggets_Red.npy") - loaded_nuggets_green = np.load("../temp/nuggets_Green.npy") - loaded_nuggets_blue = np.load("../temp/nuggets_Blue.npy") + loaded_nuggets_red = np.load("../temp/nuggets_Red.npy") + loaded_nuggets_green = np.load("../temp/nuggets_Green.npy") + loaded_nuggets_blue = np.load("../temp/nuggets_Blue.npy") gp.modify_surface_points( geo_model, slice=None, elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Red').elements], - nugget=loaded_nuggets_red + nugget=loaded_nuggets_red ) if True: # Conditional application of nuggets gp.modify_surface_points( geo_model, slice=None, elements_names=[element.name for element in geo_model.structural_frame.get_group_by_name('Blue').elements], - nugget=loaded_nuggets_blue + nugget=loaded_nuggets_blue )

Compute the geological model. This involves setting interpolation options and executing the computation to generate the 3D geological structure.

-
geo_model.interpolation_options.mesh_extraction = True
+
geo_model.interpolation_options.mesh_extraction = True
 geo_model.interpolation_options.kernel_options.range = .7
 geo_model.interpolation_options.kernel_options.c_o = 3
 geo_model.interpolation_options.kernel_options.compute_condition_number = True
@@ -224,24 +219,24 @@ 

Optimizing Nuggets
Setting Backend To: AvailableBackends.PYTORCH
-/home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten
-  warnings.warn(
+Condition number: 146830.09028250765.
+Condition number: 276736.9518433538.
 

-Solutions: 6 Octree Levels, 5 DualContouringMeshes +Solutions: 5 Octree Levels, 5 DualContouringMeshes


Visualize the constructed geological model in both 2D and 3D formats to assess the structure and layout.

-
@@ -303,6 +298,8 @@

Navigation

  • Setting Up GemPy Model
  • Optimizing Nuggets
  • Construct Model 1 with Helper Functions
  • +
  • Construct Spremberg: Importing borehole data
  • +
  • Construct Spremberg: Building initial model
  • GeoPhysics and Inversion
  • @@ -333,7 +330,7 @@

    Quick search

    ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/02_structural_modeling/02_model_1_gempy.html b/examples/02_structural_modeling/02_model_1_gempy.html index 95bf216..10ab9f6 100644 --- a/examples/02_structural_modeling/02_model_1_gempy.html +++ b/examples/02_structural_modeling/02_model_1_gempy.html @@ -1,28 +1,28 @@ - + - Construct Model 1 with Helper Functions — Vector Geology 0.1.dev16+g525c9e2 documentation - + Construct Model 1 with Helper Functions — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + - + @@ -46,10 +46,10 @@ to download the full example code

    -

    Construct Model 1 with Helper FunctionsΒΆ

    +

    Construct Model 1 with Helper FunctionsΒΆ

    This example demonstrates how to construct a 3D geological model of the Model 1 deposit using GemPy. It leverages custom APIs to streamline the modeling process.

    -
    import time
    +
    import time
     import os
     import xarray as xr
     from dotenv import dotenv_values
    @@ -60,30 +60,26 @@
     from vector_geology.omf_to_gempy import process_file
     
    -
    /home/leguark/subsurface/subsurface/reader/__init__.py:14: UserWarning: Welly or Striplog not installed. No well reader possible.
    -  warnings.warn("Welly or Striplog not installed. No well reader possible.")
    -
    -

    Start the timer to measure execution time

    -
    start_time = time.time()
    +
    start_time = time.time()
     

    Load environment variables and path configurations This step is crucial for setting up the directory paths for the model data.

    -
    config = dotenv_values()
    +
    config = dotenv_values()
     path = config.get("PATH_TO_MODEL_1_Subsurface")
     

    Initialize lists to store data Here we prepare the containers for the structural elements and the global extent.

    -
    structural_elements = []
    +
    structural_elements = []
     global_extent = None
     color_gen = gp.data.ColorsGenerator()
     

    Process each .nc file in the specified directory This loop reads the necessary data from each .nc file for modeling.

    -
    for filename in os.listdir(path):
    +
    for filename in os.listdir(path):
         base, ext = os.path.splitext(filename)
         if ext == '.nc':
             structural_element, global_extent = process_file(os.path.join(path, filename), global_extent, color_gen)
    @@ -92,24 +88,57 @@
     

    Initialize the GemPy model We use the data processed above to initialize the geological model with GemPy.

    -
    geo_model = initialize_geo_model(
    +
    geo_model = initialize_geo_model(
         structural_elements=structural_elements,
         extent=global_extent,
    -    topography=(xr.open_dataset(os.path.join(path, "Topography.nc"))),
    +    topography=(xr.open_dataset(os.path.join(path, "Topography.nc"))),
         load_nuggets=True
     )
     
    -
    Active grids: ['regular' 'topography']
    +
    /home/leguark/gempy/gempy/core/data/structural_frame.py:188: UserWarning: The basement color was already used in the structural elements.Changing the basement color to #015482.
    +  warnings.warn(f"The basement color was already used in the structural elements."
    +Active grids: GridTypes.NONE|TOPOGRAPHY|DENSE
     

    Display the initialized model It’s helpful to print the model to verify its initialization.

    -
    print(geo_model)
    +
    print(geo_model)
     
    -
    {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': <AvailableKernelFunctions.cubic: KernelFunction(base_function=<function cubic_function at 0x7fa8cbe9bd90>, derivative_div_r=<function cubic_function_p_div_r at 0x7fa8cbe9be20>, second_derivative=<function cubic_function_a at 0x7fa8cbe9beb0>, consume_sq_distance=False)>, 'kernel_solver': <Solvers.DEFAULT: 1>, 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, number_octree_levels=6, current_octree_level=0, compute_scalar_gradient=False, mesh_extraction=True, mesh_extraction_masking_options=MeshExtractionMaskingOptions.INTERSECT, mesh_extraction_fancy=True, debug=True, debug_water_tight=False, sigmoid_slope=50000, _number_octree_levels_surface=4, _model_name=None),
    - 'grid': <gempy.core.data.grid.Grid object at 0x7fa8762c0eb0>,
    +
    {'_interpolation_options': InterpolationOptions(kernel_options={'range': 5, 'c_o': 10, 'uni_degree': 1, 'i_res': 4, 'gi_res': 2, 'number_dimensions': 3, 'kernel_function': <AvailableKernelFunctions.cubic: KernelFunction(base_function=<function cubic_function at 0x7fea8a6cd480>, derivative_div_r=<function cubic_function_p_div_r at 0x7fea8a6cd510>, second_derivative=<function cubic_function_a at 0x7fea8a6cd5a0>, consume_sq_distance=False)>, 'kernel_solver': <Solvers.DEFAULT: 1>, 'compute_condition_number': False, 'optimizing_condition_number': False, 'condition_number': None}, evaluation_options={'_number_octree_levels': 5, '_number_octree_levels_surface': 4, 'curvature_threshold': -1, 'error_threshold': 1.5, 'min_octree_level': 2, 'mesh_extraction': True, 'mesh_extraction_masking_options': <MeshExtractionMaskingOptions.INTERSECT: 3>, 'mesh_extraction_fancy': True, 'evaluation_chunk_size': 5000000, 'compute_scalar_gradient': False, 'verbose': False}, temp_interpolation_values=<gempy_engine.core.data.options.temp_interpolation_values.TempInterpolationValues object at 0x7fea2d6872e0>, debug=True, cache_mode=CacheMode.IN_MEMORY_CACHE, cache_model_name=, block_solutions_type=BlockSolutionType.OCTREE, sigmoid_slope=50000, debug_water_tight=False),
    + 'grid': Grid(_octree_grid=None,
    +              _dense_grid=RegularGrid(resolution=array([20, 10, 20]),
    +                                      extent=array([ 5.59902830e+05,  5.64955682e+05,  6.44278260e+05,  6.50608735e+05,
    +       -1.75340000e+03,  1.60326604e+02]),
    +                                      values=array([[ 5.60029151e+05,  6.44594784e+05, -1.70555683e+03],
    +       [ 5.60029151e+05,  6.44594784e+05, -1.60987050e+03],
    +       [ 5.60029151e+05,  6.44594784e+05, -1.51418417e+03],
    +       ...,
    +       [ 5.64829361e+05,  6.50292212e+05, -7.88892213e+01],
    +       [ 5.64829361e+05,  6.50292212e+05,  1.67971089e+01],
    +       [ 5.64829361e+05,  6.50292212e+05,  1.12483439e+02]]),
    +                                      mask_topo=array([], shape=(0, 3), dtype=bool),
    +                                      _transform=None),
    +              _custom_grid=None,
    +              _topography=<gempy.core.data.grid_modules.topography.Topography object at 0x7fea789b5600>,
    +              _sections=None,
    +              _centered_grid=None,
    +              values=array([[ 5.60029151e+05,  6.44594784e+05, -1.70555683e+03],
    +       [ 5.60029151e+05,  6.44594784e+05, -1.60987050e+03],
    +       [ 5.60029151e+05,  6.44594784e+05, -1.51418417e+03],
    +       ...,
    +       [ 5.64955682e+05,  6.49201963e+05,  1.06993262e+02],
    +       [ 5.64955682e+05,  6.49905349e+05,  8.89864414e+01],
    +       [ 5.64955682e+05,  6.50608735e+05,  7.05702308e+01]]),
    +              length=array([], dtype=float64),
    +              _transform=None,
    +              _octree_levels=-1),
    + 'input_transform': {'_cached_pivot': None,
    + '_is_default_transform': False,
    + 'position': array([-562422.65655014, -647329.31794742,     823.58712106]),
    + 'rotation': array([0., 0., 0.]),
    + 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])},
      'meta': GeoModelMeta(name='Tutorial_ch1_1_Basics',
                           creation_date=None,
                           last_modification_date=None,
    @@ -157,16 +186,12 @@
             fault_relations=
     [[False, False],
      [False, False]],
    -,
    - 'transform': {'_is_default_transform': False,
    - 'position': array([-562422.65655014, -647329.31794742,     823.58712106]),
    - 'rotation': array([0., 0., 0.]),
    - 'scale': array([8.55363115e-05, 8.55363115e-05, 8.55363115e-05])}}
    +}
     

    Modify the interpolation options This step configures the model’s interpolation settings for better accuracy.

    -
    interpolation_options = geo_model.interpolation_options
    +
    interpolation_options = geo_model.interpolation_options
     interpolation_options.mesh_extraction = True
     interpolation_options.kernel_options.range = 0.7
     interpolation_options.kernel_options.c_o = 3
    @@ -175,10 +200,10 @@
     

    Modify surface points Adjustments to the surface points can influence the resulting geological features.

    -
    gp.modify_surface_points(
    +
    gp.modify_surface_points(
         geo_model,
         slice=0,
    -    X=geo_model.surface_points.data[0][0] + 130,
    +    X=geo_model.surface_points_copy.data[0][0] + 130,
     )
     
    @@ -240,7 +265,7 @@

    Compute the model This is where the model computation happens, utilizing the GemPy engine.

    -
    before_compute_time = time.time()
    +
    before_compute_time = time.time()
     gp.compute_model(
         geo_model,
         engine_config=gp.data.GemPyEngineConfig(
    @@ -251,27 +276,25 @@
     
    Setting Backend To: AvailableBackends.PYTORCH
    -/home/leguark/gempy/gempy/core/data/geo_model.py:183: UserWarning: You are using refinement and passing a regular grid. The resolution of the regular grid will be overwritten
    -  warnings.warn(
    -Final Iteration 230, Residual Norm: 3.6824900462306687e-08
    -Final Iteration 102, Residual Norm: 8.902938475330302e-07
    +Condition number: 146825.828125.
    +Condition number: 276737.5.
     
    -Solutions: 6 Octree Levels, 5 DualContouringMeshes +Solutions: 5 Octree Levels, 5 DualContouringMeshes


    Plot 2D model visualization Visualizing the model in 2D helps in understanding the geological layers.

    -
    gpv.plot_2d(geo_model, show_scalar=False)
    +
    gpv.plot_2d(geo_model, show_scalar=False)
     
    -Cell Number: mid Direction: y
    <gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7fa87752c970>
    +Cell Number: mid Direction: y
    <gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7fea2d483790>
     

    3D visualization with gempy_viewer A 3D view provides a comprehensive look at the model’s structure.

    -
    gempy_vista = gpv.plot_3d(
    +
    gempy_vista = gpv.plot_3d(
         model=geo_model,
         show=True,
         kwargs_plot_structured_grid={'opacity': 0.8}
    @@ -280,7 +303,7 @@
     
    02 model 1 gempy

    Calculate and print execution times It’s useful to know how long different parts of the process take.

    -
    end_time = time.time()
    +
    end_time = time.time()
     prep_time = before_compute_time - start_time
     compute_time = end_time - before_compute_time
     execution_time = end_time - start_time
    @@ -292,19 +315,19 @@
     # sphinx_gallery_thumbnail_number = -2
     
    -
    Preparation time: 1.1760990619659424 seconds.
    -Computation time: 2.8446145057678223 seconds.
    -Total execution time: 4.020713567733765 seconds.
    +
    Preparation time: 1.0133297443389893 seconds.
    +Computation time: 4.729570627212524 seconds.
    +Total execution time: 5.742900371551514 seconds.
     
    -

    Total running time of the script: ( 0 minutes 4.193 seconds)

    +

    Total running time of the script: (0 minutes 5.802 seconds)

    Gallery generated by Sphinx-Gallery

    @@ -341,6 +364,8 @@

    Navigation

  • Setting Up GemPy Model
  • Optimizing Nuggets
  • Construct Model 1 with Helper Functions
  • +
  • Construct Spremberg: Importing borehole data
  • +
  • Construct Spremberg: Building initial model
  • GeoPhysics and Inversion
  • @@ -371,7 +396,7 @@

    Quick search

    ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/02_structural_modeling/03_model_spremberg_import.html b/examples/02_structural_modeling/03_model_spremberg_import.html new file mode 100644 index 0000000..4297b44 --- /dev/null +++ b/examples/02_structural_modeling/03_model_spremberg_import.html @@ -0,0 +1,380 @@ + + + + + + + + Construct Spremberg: Importing borehole data — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + + +
    +

    Construct Spremberg: Importing borehole dataΒΆ

    +

    This example demonstrates how to construct a 3D geological model of the Model 1 deposit using GemPy. +It leverages custom APIs to streamline the modeling process.

    +

    Import the necessary libraries for geological modeling and visualization. +sphinx_gallery_thumbnail_number = -1

    +
    import os
    +import pandas as pd
    +import pyvista
    +
    +import gempy as gp
    +import gempy_viewer as gpv
    +from subsurface.core.geological_formats.boreholes.boreholes import BoreholeSet, MergeOptions
    +from subsurface.core.geological_formats.boreholes.collars import Collars
    +from subsurface.core.geological_formats.boreholes.survey import Survey
    +from subsurface.core.reader_helpers.readers_data import GenericReaderFilesHelper
    +from subsurface.modules.reader.wells.read_borehole_interface import read_lith, read_survey, read_collar
    +from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points, init_plotter
    +
    +
    +

    Initialize the reader for the lithological data. Specify the file path and column mappings.

    +
    import dotenv
    +dotenv.load_dotenv()
    +reader: GenericReaderFilesHelper = GenericReaderFilesHelper(
    +    file_or_buffer=os.getenv("PATH_TO_SPREMBERG_STRATIGRAPHY"),
    +    columns_map={
    +            'hole_id'   : 'id',
    +            'depth_from': 'top',
    +            'depth_to'  : 'base',
    +            'lit_code'  : 'component lith'
    +    }
    +)
    +
    +# Read the lithological data into a DataFrame.
    +lith: pd.DataFrame = read_lith(reader)
    +
    +
    +
    /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:116: SettingWithCopyWarning:
    +A value is trying to be set on a copy of a slice from a DataFrame.
    +Try using .loc[row_indexer,col_indexer] = value instead
    +
    +See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    +  lith_df['top'] = -np.abs(lith_df['top'])
    +/home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:117: SettingWithCopyWarning:
    +A value is trying to be set on a copy of a slice from a DataFrame.
    +Try using .loc[row_indexer,col_indexer] = value instead
    +
    +See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    +  lith_df['base'] = -np.abs(lith_df['base'])
    +
    +
    +

    Initialize the reader for the survey data. Specify the file path and column mappings.

    +
    reader: GenericReaderFilesHelper = GenericReaderFilesHelper(
    +    file_or_buffer=os.getenv("PATH_TO_SPREMBERG_SURVEY"),
    +    columns_map={
    +            'depth'  : 'md',
    +            'dip'    : 'dip',
    +            'azimuth': 'azi'
    +    },
    +)
    +
    +# Read the survey data into a DataFrame.
    +df = read_survey(reader)
    +
    +
    +
    /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:80: UserWarning: inc and/or azi columns are not present in the file. The boreholes will be straight.
    +  warnings.warn(
    +
    +
    +

    Create a Survey object from the DataFrame and update it with lithological data.

    +
    survey: Survey = Survey.from_df(df)
    +survey.update_survey_with_lith(lith)
    +
    +
    +
    Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +('cell',) are not coordinates with an index xarray dataset must include 'cell' key (KeyError) or xarray 'cell' has no index (ValueError).
    +
    +
    +

    Initialize the reader for the collar data. Specify the file path, header, and column mappings.

    +
    reader_collar: GenericReaderFilesHelper = GenericReaderFilesHelper(
    +    file_or_buffer=os.getenv("PATH_TO_SPREMBERG_COLLAR"),
    +    header=0,
    +    usecols=[0, 1, 2, 4],
    +    columns_map={
    +            "hole_id"            : "id",
    +            "X_GK5_incl_inserted": "x",
    +            "Y__incl_inserted"   : "y",
    +            "Z_GK"               : "z"
    +    }
    +)
    +
    +# Read the collar data into a DataFrame and create a Collars object.
    +df_collar = read_collar(reader_collar)
    +collar = Collars.from_df(df_collar)
    +
    +
    +

    Combine the collar and survey data into a BoreholeSet.

    +
    borehole_set = BoreholeSet(
    +    collars=collar,
    +    survey=survey,
    +    merge_option=MergeOptions.INTERSECT
    +)
    +
    +
    +

    Visualize the borehole trajectories and collars using PyVista.

    +
    well_mesh = to_pyvista_line(
    +    line_set=borehole_set.combined_trajectory,
    +    active_scalar="lith_ids",
    +    radius=10
    +)
    +
    +collars = to_pyvista_points(
    +    borehole_set.collars.collar_loc,
    +)
    +
    +# Initialize the PyVista plotter.
    +pyvista_plotter = init_plotter()
    +
    +# Define the units limit for thresholding the well mesh.
    +units_limit = [0, 20]
    +
    +# Add the well mesh and collars to the plotter and display.
    +pyvista_plotter.add_mesh(
    +    well_mesh.threshold(units_limit),
    +    cmap="tab20c",
    +    clim=units_limit
    +)
    +
    +pyvista_plotter.add_mesh(
    +    collars,
    +    point_size=10,
    +    render_points_as_spheres=True
    +)
    +
    +pyvista_plotter.show()
    +
    +
    +03 model spremberg import

    Create structural elements from the borehole set for different lithological units.

    +
    elements: list[gp.data.StructuralElement] = gp.structural_elements_from_borehole_set(
    +    borehole_set=borehole_set,
    +    elements_dict={
    +            "Buntsandstein"       : {
    +                    "id"   : 53_300,
    +                    "color": "#983999"
    +            },
    +            "Werra-Anhydrit"      : {
    +                    "id"   : 61_730,
    +                    "color": "#00923f"
    +            },
    +            "Kupfershiefer"       : {
    +                    "id"   : 61_760,
    +                    "color": "#da251d"
    +            },
    +            "Zechsteinkonglomerat": {
    +                    "id"   : 61_770,
    +                    "color": "#f8c300"
    +            },
    +            "Rotliegend"          : {
    +                    "id"   : 62_000,
    +                    "color": "#bb825b"
    +            }
    +    }
    +)
    +
    +
    +

    Group the structural elements into a StructuralGroup and create a StructuralFrame.

    +
    group = gp.data.StructuralGroup(
    +    name="Stratigraphic Pile",
    +    elements=elements,
    +    structural_relation=gp.data.StackRelationType.ERODE
    +)
    +structural_frame = gp.data.StructuralFrame(
    +    structural_groups=[group],
    +    color_gen=gp.data.ColorsGenerator()
    +)
    +
    +
    +

    Determine the extent of the geological model from the surface points coordinates.

    +
    all_surface_points_coords: gp.data.SurfacePointsTable = structural_frame.surface_points_copy
    +extent_from_data = all_surface_points_coords.xyz.min(axis=0), all_surface_points_coords.xyz.max(axis=0)
    +
    +
    +

    Create a GeoModel with the specified extent, grid resolution, and interpolation options.

    +
    geo_model = gp.data.GeoModel(
    +    name="Stratigraphic Pile",
    +    structural_frame=structural_frame,
    +    grid=gp.data.Grid(
    +        extent=[extent_from_data[0][0], extent_from_data[1][0], extent_from_data[0][1], extent_from_data[1][1], extent_from_data[0][2], extent_from_data[1][2]],
    +        resolution=(50, 50, 50)
    +    ),
    +    interpolation_options=gp.data.InterpolationOptions(
    +        range=5,
    +        c_o=10,
    +        mesh_extraction=True,
    +        number_octree_levels=3,
    +    ),
    +)
    +
    +
    +

    Visualize the 3D geological model using GemPy’s plot_3d function.

    +
    gempy_plot = gpv.plot_3d(
    +    model=geo_model,
    +    kwargs_pyvista_bounds={
    +            'show_xlabels': False,
    +            'show_ylabels': False,
    +    },
    +    show=True,
    +    image=True
    +)
    +
    +
    +03 model spremberg import03 model spremberg import

    Combine all visual elements and display them together.

    +
    sp_mesh: pyvista.PolyData = gempy_plot.surface_points_mesh
    +
    +pyvista_plotter = init_plotter()
    +pyvista_plotter.show_bounds(all_edges=True)
    +
    +pyvista_plotter.add_mesh(
    +    well_mesh.threshold(units_limit),
    +    cmap="tab20c",
    +    clim=units_limit
    +)
    +
    +pyvista_plotter.add_mesh(
    +    collars,
    +    point_size=10,
    +    render_points_as_spheres=True
    +)
    +
    +pyvista_plotter.add_point_labels(
    +    points=collar.collar_loc.points,
    +    labels=collar.ids,
    +    point_size=10,
    +    shape_opacity=0.5,
    +    font_size=12,
    +    bold=True
    +)
    +pyvista_plotter.add_actor(gempy_plot.surface_points_actor)
    +
    +pyvista_plotter.show()
    +
    +
    +03 model spremberg import

    Total running time of the script: (0 minutes 2.784 seconds)

    + +

    Gallery generated by Sphinx-Gallery

    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/examples/02_structural_modeling/04_model_spremberg_building.html b/examples/02_structural_modeling/04_model_spremberg_building.html new file mode 100644 index 0000000..af4048b --- /dev/null +++ b/examples/02_structural_modeling/04_model_spremberg_building.html @@ -0,0 +1,425 @@ + + + + + + + + Construct Spremberg: Building initial model — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    + + +
    +

    Construct Spremberg: Building initial modelΒΆ

    +

    This example demonstrates…

    +
    # sphinx_gallery_thumbnail_number = -2
    +import numpy as np
    +
    +import gempy as gp
    +import gempy_viewer as gpv
    +from subsurface.modules.visualization import to_pyvista_line, to_pyvista_points
    +from vector_geology.model_contructor.spremberg import generate_spremberg_model, get_spremberg_borehole_set, add_wells_plot
    +
    +
    +
    elements_to_gempy = {
    +        "Buntsandstein"       : {
    +                "id"   : 53_300,
    +                "color": "#983999"
    +        },
    +        "Werra-Anhydrit"      : {
    +                "id"   : 61_730,
    +                "color": "#00923f"
    +        },
    +        # "Kupferschiefer"      : {
    +        #         "id"   : 61_760,
    +        #         "color": "#da251d"
    +        # },
    +        "Zechsteinkonglomerat": {
    +                "id"   : 61_770,
    +                "color": "#f8c300"
    +        },
    +        "Rotliegend"          : {
    +                "id"   : 62_000,
    +                "color": "#bb825b"
    +        }
    +}
    +
    +spremberg_boreholes = get_spremberg_borehole_set()
    +geo_model: gp.data.GeoModel = generate_spremberg_model(
    +    borehole_set=spremberg_boreholes,
    +    elements_to_gempy=elements_to_gempy,
    +    plot=False
    +)
    +
    +
    +04 model spremberg building04 model spremberg building
    /home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:116: SettingWithCopyWarning:
    +A value is trying to be set on a copy of a slice from a DataFrame.
    +Try using .loc[row_indexer,col_indexer] = value instead
    +
    +See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    +  lith_df['top'] = -np.abs(lith_df['top'])
    +/home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:117: SettingWithCopyWarning:
    +A value is trying to be set on a copy of a slice from a DataFrame.
    +Try using .loc[row_indexer,col_indexer] = value instead
    +
    +See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    +  lith_df['base'] = -np.abs(lith_df['base'])
    +/home/leguark/subsurface/subsurface/modules/reader/wells/read_borehole_interface.py:80: UserWarning: inc and/or azi columns are not present in the file. The boreholes will be straight.
    +  warnings.warn(
    +Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +Well ID 6E_58 not found in survey trajectory. Skipping lithology assignment.
    +('cell',) are not coordinates with an index xarray dataset must include 'cell' key (KeyError) or xarray 'cell' has no index (ValueError).
    +
    +
    +

    Add one orientation to the model

    +
    rotliegend: gp.data.StructuralElement = geo_model.structural_frame.get_element_by_name("Rotliegend")
    +gp.add_orientations(
    +    geo_model=geo_model,
    +    x=[5_460_077.527386775, 5_450_077.527386775],
    +    y=[5_720_030.2446156405, 5_710_030.2446156405],
    +    z=[-600, -600],
    +    elements_names=["Rotliegend", "Rotliegend"],
    +    pole_vector=[
    +            np.array([.7, 0.7, 0.2]),
    +            np.array([-1, 0, 0.2])
    +    ],
    +)
    +
    +
    +
    + + + + + +
    Structural Groups: + StructuralGroup: + + + +
    Name:Stratigraphic Pile
    Structural Relation:StackRelationType.ERODE
    Elements: + + + +
    StructuralElement:
    Name:Buntsandstein
    +
    + + + +
    StructuralElement:
    Name:Werra-Anhydrit
    +
    + + + +
    StructuralElement:
    Name:Zechsteinkonglomerat
    +
    + + + +
    StructuralElement:
    Name:Rotliegend
    +
    +
    Fault Relations:
    Stratigrap...
    Stratigraphic Pile
    + + + + + +
    True
    False
    +
    + +
    +
    +
    pivot = [5_478_256.5, 5_698_528.946534388]
    +point_2 = [5_483_077.527386775, 5_710_030.2446156405]
    +point_3 = [5_474_977.5974836275, 5_712_059.373443342]
    +section_dict = {
    +        'section1': (pivot, point_2, [100, 100]),
    +        'section2': (pivot, point_3, [100, 100]),
    +        'section3': (point_2, point_3, [100, 100])
    +}
    +
    +
    +
    gp.set_section_grid(geo_model.grid, section_dict)
    +gpv.plot_section_traces(geo_model)
    +
    +
    +Cell Number: -1 Direction: z
    Active grids: GridTypes.NONE|SECTIONS|OCTREE
    +
    +<function plot_section_traces at 0x7f14ae14f760>
    +
    +
    +
    _ = gpv.plot_3d(
    +    model=geo_model,
    +    ve=10,
    +    image=True,
    +    transformed_data=True,
    +    kwargs_pyvista_bounds={
    +            'show_xlabels': False,
    +            'show_ylabels': False,
    +    },
    +    kwargs_plot_data={
    +            'arrow_size': 0.001000
    +    }
    +)
    +
    +
    +04 model spremberg building04 model spremberg building
    # * Ignore curvature for now
    +geo_model.interpolation_options.kernel_options.range = 3
    +geo_model.interpolation_options.compute_scalar_gradient = False
    +geo_model.interpolation_options.evaluation_options.curvature_threshold = 0.4
    +geo_model.interpolation_options.evaluation_options.number_octree_levels_surface = 5
    +
    +geo_model.interpolation_options.evaluation_options.error_threshold = 1
    +geo_model.interpolation_options.evaluation_options.verbose = True
    +
    +
    +gp.compute_model(
    +    gempy_model=geo_model,
    +    engine_config=gp.data.GemPyEngineConfig(
    +        backend=gp.data.AvailableBackends.PYTORCH,
    +        dtype="float64",
    +    )
    +)
    +
    +
    +
      +
    • Voxel Scalar Values with Refinement Status
    • +
    • Voxel Scalar Values with Refinement Status
    • +
    +
    Setting Backend To: AvailableBackends.PYTORCH
    +Chunking done: 17 chunks
    +Number of voxels marked by stats: 407 of torch.Size([512]).
    + Number of voxels marked by corners : 245
    +Total voxels: 407
    +Dense Grid would be 512 voxels
    +Chunking done: 15 chunks
    +Number of voxels marked by stats: 1677 of torch.Size([3472]).
    + Number of voxels marked by corners : 1308
    +Total voxels: 1677
    +Dense Grid would be 4096 voxels
    +Chunking done: 8 chunks
    +Chunking done: 63 chunks
    +Chunking done: 26 chunks
    +
    +
    +
    +Solutions: 5 Octree Levels, 4 DualContouringMeshes +
    +
    +
    gpv.plot_2d(
    +    model=geo_model,
    +    figsize=(15, 15),
    +    ve=10,
    +    section_names=['section1', 'section2', 'section3']
    +)
    +
    +
    +section1, section2, section3
    /home/leguark/gempy_viewer/gempy_viewer/API/_plot_2d_sections_api.py:105: UserWarning: Section contacts not implemented yet. We need to pass scalar field for the sections grid
    +  warnings.warn(
    +
    +<gempy_viewer.modules.plot_2d.visualization_2d.Plot2D object at 0x7f14501aab60>
    +
    +
    +
    gempy_plot = gpv.plot_3d(
    +    model=geo_model,
    +    show_lith=False,
    +    ve=10,
    +    show=False,
    +    image=False,
    +    transformed_data=False,
    +    kwargs_pyvista_bounds={
    +            'show_xlabels': True,
    +            'show_ylabels': True,
    +            'show_zlabels': False,
    +    },
    +    kwargs_plot_data={
    +            'arrow_size': 100.001000
    +    }
    +)
    +
    +well_mesh = to_pyvista_line(
    +    line_set=spremberg_boreholes.combined_trajectory,
    +    active_scalar="lith_ids",
    +    radius=10
    +)
    +units_limit = [0, 20]
    +collars = to_pyvista_points(spremberg_boreholes.collars.collar_loc)
    +gempy_plot.p.add_mesh(
    +    well_mesh.threshold(units_limit),
    +    cmap="tab20c",
    +    clim=units_limit
    +)
    +
    +gempy_plot.p.add_mesh(
    +    collars,
    +    point_size=10,
    +    render_points_as_spheres=True
    +)
    +
    +gempy_plot.p.add_point_labels(
    +    points=spremberg_boreholes.collars.collar_loc.points,
    +    labels=spremberg_boreholes.collars.ids,
    +    point_size=3,
    +    shape_opacity=0.5,
    +    font_size=12,
    +    bold=True
    +)
    +
    +gempy_plot.p.show()
    +
    +
    +04 model spremberg building
    +

    LiquidEarth IntegrationΒΆ

    +

    Beyond the classical plotting capabilities introduced in GemPy v3, users can now also upload models to LiquidEarth. +LiquidEarth is a collaborative platform designed for 3D visualization, +developed by many of the main gempy maintainers, with a strong focus on collaboration and sharing. +This makes it an excellent tool for sharing your models with others and viewing them across different platforms. +To upload a model to LiquidEarth, you must have an account and a user token. Once your model is uploaded, +you can easily share the link with anyone.

    +
    # # %%
    +if True:
    +    link = gpv.plot_to_liquid_earth(
    +        geo_model=geo_model,
    +        space_name="Spremberg",
    +        file_name="gempy_model",
    +        user_token=None,  # If None, it will try to grab it from the environment
    +        grab_link=True,
    +    )
    +
    +    print(f"Generated Link: {link}")
    +
    +
    +
    Generated Link: https://liquidearth.app.link/4a7b5726-6ccd-4453-94d7-a9bbe72152a8
    +
    +
    +

    Total running time of the script: (0 minutes 52.865 seconds)

    + +

    Gallery generated by Sphinx-Gallery

    +
    +
    + + +
    + +
    +
    + +
    +
    + + + + + + + \ No newline at end of file diff --git a/examples/02_structural_modeling/index.html b/examples/02_structural_modeling/index.html index 4d9c573..9e18998 100644 --- a/examples/02_structural_modeling/index.html +++ b/examples/02_structural_modeling/index.html @@ -1,23 +1,23 @@ - + - Structural Modeling — Vector Geology 0.1.dev16+g525c9e2 documentation - + Structural Modeling — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -41,7 +41,7 @@
    -

    Structural ModelingΒΆ

    +

    Structural ModelingΒΆ

    Delve into the world of 3D subsurface modeling with our Structural Modeling tutorials. In this section, we focus on harnessing the capabilities of gempy, a powerful tool developed by a partner within the Vector consortium. Here’s what these tutorials offer:

    • 3D Subsurface Modeling: Learn the intricacies of constructing detailed 3D geological models. We guide you through the process of transforming raw geophysical data into a comprehensive three-dimensional representation of the subsurface.

    • @@ -55,6 +55,12 @@

    Construct Model 1 with Helper Functions

    Construct Model 1 with Helper Functions
    +
    +

    Construct Spremberg: Importing borehole data

    +
    Construct Spremberg: Importing borehole data
    +
    +

    Construct Spremberg: Building initial model

    +
    Construct Spremberg: Building initial model
    @@ -91,6 +97,8 @@

    Navigation

  • Setting Up GemPy Model
  • Optimizing Nuggets
  • Construct Model 1 with Helper Functions
  • +
  • Construct Spremberg: Importing borehole data
  • +
  • Construct Spremberg: Building initial model
  • GeoPhysics and Inversion
  • @@ -121,7 +129,7 @@

    Quick search

    ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/02_structural_modeling/sg_execution_times.html b/examples/02_structural_modeling/sg_execution_times.html index 2c1ddc7..69ee75a 100644 --- a/examples/02_structural_modeling/sg_execution_times.html +++ b/examples/02_structural_modeling/sg_execution_times.html @@ -1,23 +1,23 @@ - + - Computation times — Vector Geology 0.1.dev16+g525c9e2 documentation - + Computation times — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -39,20 +39,47 @@
    -

    Computation timesΒΆ

    -

    00:03.922 total execution time for examples_02_structural_modeling files:

    - +

    Computation timesΒΆ

    +

    00:52.865 total execution time for 4 files from examples/02_structural_modeling:

    +
    + + + + +
    + + + + + + + + + + - - + + - + + + + +

    Example

    Time

    Mem (MB)

    Construct Spremberg: Building initial model (04_model_spremberg_building.py)

    00:52.865

    0.0

    Constructing Structural Geological Model (01_model_1_gempy_step_by_step.py)

    00:03.922

    0.0 MB

    00:00.000

    0.0

    Construct Model 1 with Helper Functions (02_model_1_gempy.py)

    00:00.000

    0.0 MB

    0.0

    Construct Spremberg: Importing borehole data (03_model_spremberg_import.py)

    00:00.000

    0.0

    +
    @@ -111,7 +138,7 @@

    Quick search

    ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.html b/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.html index e5a5ef5..040396e 100644 --- a/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.html +++ b/examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.html @@ -1,23 +1,23 @@ - + - Inversion of Full Tensor Gravity Gradiometry Data — Vector Geology 0.1.dev16+g525c9e2 documentation - + Inversion of Full Tensor Gravity Gradiometry Data — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -47,7 +47,7 @@ to download the full example code

    -

    Inversion of Full Tensor Gravity Gradiometry DataΒΆ

    +

    Inversion of Full Tensor Gravity Gradiometry DataΒΆ

    This example illustrates the inversion of sub-surface density models from Full-Tensor Gravity Gradiometry (FTG-G) data, measured over the Irish Midlands, using Petrophysically and Geologically guided Inversion (PGI). The key steps include:

      @@ -82,17 +82,17 @@ from vector_geology import SimpegHelper as SH # Plot beautification -formatter = mpl.ticker.ScalarFormatter(useMathText=True) -formatter.set_scientific(True) -formatter.set_powerlimits((0, 0)) +formatter = mpl.ticker.ScalarFormatter(useMathText=True) +formatter.set_scientific(True) +formatter.set_powerlimits((0, 0)) -mpl.rc("axes", titlesize=14, labelsize=12) -mpl.rc("xtick", labelsize=12) -mpl.rc("ytick", labelsize=12) +mpl.rc("axes", titlesize=14, labelsize=12) +mpl.rc("xtick", labelsize=12) +mpl.rc("ytick", labelsize=12)
      -

      Step 1: Create Directories for Storing Model Iterations and OutputsΒΆ

      +

      Step 1: Create Directories for Storing Model Iterations and OutputsΒΆ

      PGI is an iterative process, and it’s useful to save the model at every iteration. This helps in preventing overfitting and in adjusting the stopping criteria based on the model iterations.

      name = "Ireland_FTG"
      @@ -110,7 +110,7 @@ 

      Step 1: Create Directories for Storing Model Iterations and Outputs

      -

      Step 2: Load the FTG-G DataΒΆ

      +

      Step 2: Load the FTG-G DataΒΆ

      Full Tensor Gradiometry data, a 2-Tensor, contains five independent components due to its symmetric and traceless nature. These components are used for the inversion.

      \[\begin{split}G = \left[\begin{array}{cc} @@ -120,34 +120,34 @@

      Step 2: Load the FTG-G Data
      config = dotenv_values()
       file_path = config.get("PATH_TO_GRADIOMETRY")
      -FTG_Data = pd.read_csv(file_path, delimiter=",").to_numpy()
      +FTG_Data = pd.read_csv(file_path, delimiter=",").to_numpy()
       

      -

      Step 3: Resample Data onto a Regular GridΒΆ

      +

      Step 3: Resample Data onto a Regular GridΒΆ

      Resampling the data onto a regular grid aids in mesh generation and visualization. The SimpegHelper.pf_rs() function resamples potential field data onto a new regular grid.

      inc = 150  # New sampling interval (ground units)
      -grav_new, nx_new, ny_new = SH.pf_rs(
      -    FTG_Data,
      +grav_new, nx_new, ny_new = SH.pf_rs(
      +    FTG_Data,
           inc,
           bounds=[156000, 168000, 143000, 148500]
       )
       
       # NOTE: This step is necessary for real data since the convention followed by
       # the SimPEG forward operator is the opposite of the general convention
      -grav_vec = grav_new[:, 3:] * np.array([-1.0, -1.0, 1.0, 1.0, -1.0])[None, :]  # Adjusting sign convention
      -inv_topo = grav_new[:, [0, 1, 2]]  # Extracting topography
      +grav_vec = grav_new[:, 3:] * np.array([-1.0, -1.0, 1.0, 1.0, -1.0])[None, :]  # Adjusting sign convention
      +inv_topo = grav_new[:, [0, 1, 2]]  # Extracting topography
       
      -

      Step 4: Visualize the DataΒΆ

      +

      Step 4: Visualize the DataΒΆ

      The SimpegHelper.plot_2D_data() function is used to visualize the datasets with matplotlib.

      SH.plot_2D_data(
      -    data=np.c_[grav_new[:, [0, 1, 2]], grav_vec[:, 0]],
      -    clim=[np.nanmin(grav_vec[:, 0]), np.nanmax(grav_vec[:, 0])],
      +    data=np.c_[grav_new[:, [0, 1, 2]], grav_vec[:, 0]],
      +    clim=[np.nanmin(grav_vec[:, 0]), np.nanmax(grav_vec[:, 0])],
           cmap="jet",
           which_data="FTG",
           comp="xx",
      @@ -155,8 +155,8 @@ 

      Step 4: Visualize the Dataname=name ) SH.plot_2D_data( - data=np.c_[grav_new[:, [0, 1, 2]], inv_topo[:, -1]], - clim=[np.nanmin(inv_topo[:, -1]), np.nanmax(inv_topo[:, -1])], + data=np.c_[grav_new[:, [0, 1, 2]], inv_topo[:, -1]], + clim=[np.nanmin(inv_topo[:, -1]), np.nanmax(inv_topo[:, -1])], cmap="terrain", which_data="Topo", comp="xx", @@ -171,7 +171,7 @@

      Step 4: Visualize the Data -

      Step 5: Create a TensorMesh Object for InversionΒΆ

      +

      Step 5: Create a TensorMesh Object for InversionΒΆ

      A 3D TensorMesh is created using the discretize.TensorMesh utility to invert the gravity gradiometry data. The mesh is designed to have a constant cell size in the core region and expanding/contracting cells in the padding region.

      @@ -183,20 +183,20 @@

      Step 5: Create a TensorMesh Object for Inversionnz_core, nz_pad = 10, 18 # Number of cells in core and padding fact = 1.1 # Factor for expanding/contracting cells -inv_hx = dx * np.ones(nx_new) -inv_hy = dy * np.ones(ny_new) +inv_hx = dx * np.ones(nx_new) +inv_hy = dy * np.ones(ny_new) inv_hz = [(dz, nz_pad, -fact), (dz, nz_core), (dz, nz_pad, fact)] # Create the inverse tensor mesh inv_mesh = ds.TensorMesh( - h=[inv_hx, inv_hy, inv_hz], - x0=[np.min(inv_topo[:, 0]), np.min(inv_topo[:, 1]), "C"]) + h=[inv_hx, inv_hy, inv_hz], + x0=[np.min(inv_topo[:, 0]), np.min(inv_topo[:, 1]), "C"]) # Drape the topography over the mesh -actv = active_from_xyz(inv_mesh, inv_topo) -ndv = np.nan -actvMap = maps.InjectActiveCells(inv_mesh, actv, ndv) -nactv = int(actv.sum()) +actv = active_from_xyz(inv_mesh, inv_topo) +ndv = np.nan +actvMap = maps.InjectActiveCells(inv_mesh, actv, ndv) +nactv = int(actv.sum()) # Print mesh details print(inv_mesh) @@ -214,33 +214,33 @@

      Step 5: Create a TensorMesh Object for Inversion -

      Step 6: Visualize the MeshΒΆ

      +

      Step 6: Visualize the MeshΒΆ

      A slice of the Tensor Mesh object is visualized using the discretize.TensorMesh.plot_slice() utility.

      Create a background model.

      -
      bg = np.ones(nactv)
      -mod = actvMap * bg
      +
      bg = np.ones(nactv)
      +mod = actvMap * bg
       
       # Plot the mesh slice.
      -fig = plt.figure(figsize=(6, 6))
      -ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
      -cplot = inv_mesh.plot_slice(mod, grid=True, ax=ax, normal="Y", ind=22)
      -ax.set_title('Tensor Mesh Slice')
      -ax.set_xlabel('x (m)')
      -ax.set_ylabel('z (m)')
      -ax.set_xlim([158000, 159000])
      -ax.set_ylim([-500, 100])
      -ax.ticklabel_format(axis="both")
      -ax.set_aspect('equal')
      -plt.savefig(
      +fig = plt.figure(figsize=(6, 6))
      +ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
      +cplot = inv_mesh.plot_slice(mod, grid=True, ax=ax, normal="Y", ind=22)
      +ax.set_title('Tensor Mesh Slice')
      +ax.set_xlabel('x (m)')
      +ax.set_ylabel('z (m)')
      +ax.set_xlim([158000, 159000])
      +ax.set_ylim([-500, 100])
      +ax.ticklabel_format(axis="both")
      +ax.set_aspect('equal')
      +plt.savefig(
           path_to_output + "/" + name + "_TreeMeshSlice.pdf",
           bbox_inches="tight"
       )
      -plt.show()
      +plt.show()
       
      Tensor Mesh Slice
      -

      Step 7: Set up the Gravity Inverse ProblemΒΆ

      +

      Step 7: Set up the Gravity Inverse ProblemΒΆ

      The gravity inverse problem is set up using SimPEG’s pf.gravity module to generate a forward model based on the mesh and receiver locations.

      Create wires for the density model

      @@ -256,11 +256,11 @@

      Step 7: Set up the Gravity Inverse Problemgravity_components = ["gxx", "gyy", "gxz", "gyz", "gxy"] # Receiver locations (25 meters above the topography) -gravity_receiver_locations = inv_topo + 120. +gravity_receiver_locations = inv_topo + 120. # Create a gravity receiver list gravity_receivers = pf.gravity.receivers.Point( - locations=gravity_receiver_locations, + locations=gravity_receiver_locations, components=gravity_components ) gravity_receiver_list = [gravity_receivers] @@ -278,13 +278,13 @@

      Step 7: Set up the Gravity Inverse Probleminv_mesh, survey=gravity_survey, rhoMap=wires.density, - ind_active=actv + ind_active=actv ) # Create a gravity data object, with the relative errors and a standard noise floor gravity_data = data.Data( survey=gravity_survey, - dobs=grav_vec.flatten(), + dobs=grav_vec.flatten(), noise_floor=5, relative_error=0.1 ) @@ -298,7 +298,7 @@

      Step 7: Set up the Gravity Inverse Problem -

      Step 8: Setting up the Gaussian Mixture Model (GMM) PriorΒΆ

      +

      Step 8: Setting up the Gaussian Mixture Model (GMM) PriorΒΆ

      In PGI, the petrophysical data is used as a constraint in the form of a Gaussian Mixture Model (GMM). A GMM is a multimodal probabilistic distribution which is just a weighted sum of multiple gaussian distributions. Given the number of rock units (\(n\)), the petrophysical distribution can be displayed as an $n$-modal GMM. If you have no petrophysical information available, you can initialize the GMM as below. @@ -311,7 +311,7 @@

      Step 8: Setting up the Gaussian Mixture Model (GMM) Priorgmmref = utils.WeightedGaussianMixture( n_components=num_rock_units, mesh=inv_mesh, - actv=actv, + actv=actv, covariance_type="full", ) @@ -320,11 +320,11 @@

      Step 8: Setting up the Gaussian Mixture Model (GMM) Prior# Initialize the GMM fit with random samples, mesh size, # and number of physical properties -gmmref.fit(np.random.randn(nactv, num_physical_props)) +gmmref.fit(np.random.randn(nactv, num_physical_props)) # Set the mean values of physical property contrasts for each rock unit # One value (density) for each rock unit -gmmref.means_ = np.c_[ +gmmref.means_ = np.c_[ [-0.4], [-0.2], [0.0], @@ -339,7 +339,7 @@

      Step 8: Setting up the Gaussian Mixture Model (GMM) Prior# NOTE: Since we don't have petrophysical information for this example, # we keep the covariances # same for every unit. The GMM will update # itself during the inversion. -gmmref.covariances_ = np.array( +gmmref.covariances_ = np.array( [ [[density_variance]], [[density_variance]], @@ -354,26 +354,26 @@

      Step 8: Setting up the Gaussian Mixture Model (GMM) Prior# Set the weights for each rock unit # NOTE: This determines the size of each peak of the n-modal GMM -gmmref.weights_ = np.ones((nactv, 1)) * np.c_[0.125, 0.125, 0.5, 0.125, 0.125] +gmmref.weights_ = np.ones((nactv, 1)) * np.c_[0.125, 0.125, 0.5, 0.125, 0.125]

      -

      Plot the 1D-GMMΒΆ

      +

      Plot the 1D-GMMΒΆ

      The initial density distribution is visualized.

      -
      fig = plt.figure(figsize=(6, 6))
      -ax = gmmref.plot_pdf(flag2d=False, plotting_precision=1000, padding=0.2)
      -ax[0].set_xlabel(r"Density Contrast (g/cc)")
      -ax[0].set_ylabel(r"Probability Density Values")
      -ax[0].get_legend().remove()
      -ax[0].set_title(r"Initial DelRho Distribution")
      -ax[0].ticklabel_format(axis="both", style="scientific", scilimits=(0, 0))
      -ax[0].set_aspect(1 / 20)
      -plt.savefig(
      +
      fig = plt.figure(figsize=(6, 6))
      +ax = gmmref.plot_pdf(flag2d=False, plotting_precision=1000, padding=0.2)
      +ax[0].set_xlabel(r"Density Contrast (g/cc)")
      +ax[0].set_ylabel(r"Probability Density Values")
      +ax[0].get_legend().remove()
      +ax[0].set_title(r"Initial DelRho Distribution")
      +ax[0].ticklabel_format(axis="both", style="scientific", scilimits=(0, 0))
      +ax[0].set_aspect(1 / 20)
      +plt.savefig(
           path_to_output + "/" + name + "_Init_GMM.pdf",
           bbox_inches="tight"
       )
      -plt.show()
      +plt.show()
       
        @@ -382,7 +382,7 @@

        Plot the 1D-GMM -

        Step 9: Setting the Hyper-parameters and the Sensitivity WeightsΒΆ

        +

        Step 9: Setting the Hyper-parameters and the Sensitivity WeightsΒΆ

        Every PGI is a set of three Maximum-A-Posteriori (MAP) problems, being solved iteratively. The solver tries to minimize the L2 error of an objective function containing both the FTG Data and the petrophysical GMM. In this section we tune the necessary hyper-parameters, as well as initialise @@ -392,15 +392,15 @@

        Step 9: Setting the Hyper-parameters and the Sensitivity Weights
        initial_model = np.r_[background_density * np.ones(actvMap.nP)]
        +
        initial_model = np.r_[background_density * np.ones(actvMap.nP)]
         

        Sensitivity weighting Compute the sensitivity weights for each cell based on the gravity problem’s sensitivity matrix (G) This is done by computing the square root of the sum of the squared elements of G for each cell, and then normalizing by the cell volumes and the maximum weight value.

        -
        sensitivity_weights_gravity = np.sum(gravity_problem.G ** 2.0, axis=0) ** 0.5 / (inv_mesh.cell_volumes[actv])
        -sensitivity_weights_gravity = sensitivity_weights_gravity / np.nanmax(sensitivity_weights_gravity)
        +
        sensitivity_weights_gravity = np.sum(gravity_problem.G ** 2.0, axis=0) ** 0.5 / (inv_mesh.cell_volumes[actv])
        +sensitivity_weights_gravity = sensitivity_weights_gravity / np.nanmax(sensitivity_weights_gravity)
         
         # Regularization multipliers
         smallness_multiplier = 1e-4
        @@ -414,7 +414,7 @@ 

        Step 9: Setting the Hyper-parameters and the Sensitivity Weightsmesh=inv_mesh, wiresmap=wires, maplist=[identity_map], - active_cells=actv, + active_cells=actv, alpha_pgi=smallness_multiplier, alpha_x=smoothness_x_multiplier, alpha_y=smoothness_y_multiplier, @@ -424,13 +424,13 @@

        Step 9: Setting the Hyper-parameters and the Sensitivity Weightsalpha_xx=0.0, alpha_yy=0.0, alpha_zz=0.0, - weights_list=[sensitivity_weights_gravity] + weights_list=[sensitivity_weights_gravity] )

      -

      Step 10: Initialize the DirectivesΒΆ

      +

      Step 10: Initialize the DirectivesΒΆ

      Directives are set, including instructions on the bounds, update factors, and other hyperparameters for the inversion solver.

      Estimate smoothness multipliers

      alphas_directive = directives.AlphasSmoothEstimate_ByEig(verbose=True)
      @@ -477,12 +477,12 @@ 

      Step 10: Initialize the Directives) # Optimization options for the inversion -lower_bound = np.r_[-1.0 * np.ones(actvMap.nP)] -upper_bound = np.r_[1.0 * np.ones(actvMap.nP)] +lower_bound = np.r_[-1.0 * np.ones(actvMap.nP)] +upper_bound = np.r_[1.0 * np.ones(actvMap.nP)] optimizer = optimization.ProjectedGNCG( maxIter=20, - lower=lower_bound, - upper=upper_bound, + lower=lower_bound, + upper=upper_bound, maxIterLS=20, maxIterCG=100, tolCG=1e-4, @@ -508,9 +508,9 @@

      Step 10: Initialize the Directives -

      Step 11: Run the Inversion!ΒΆ

      +

      Step 11: Run the Inversion!ΒΆ

      The inversion is executed using the initialized settings.

      -
      inverted_model = inversion_algo.run(initial_model)
      +
      inverted_model = inversion_algo.run(initial_model)
       
      SimPEG.InvProblem will set Regularization.reference_model to m0.
      @@ -519,93 +519,93 @@ 

      Step 11: Run the Inversion! -

      Step 12: Visualize the 3D ModelΒΆ

      +

      Step 12: Visualize the 3D ModelΒΆ

      The inverted 3D model is visualized using slices in different orientations.

      set = 1
       save_plots = True
      @@ -618,16 +618,16 @@ 

      Step 12: Visualize the 3D Modelind_plot = [ind_plot_x, ind_plot_y, ind_plot_z] # Extract the results -inverted_density_model = density_map * inverted_model -quasi_geology_model = actvMap * regularization_term.objfcts[0].compute_quasi_geology_model() +inverted_density_model = density_map * inverted_model +quasi_geology_model = actvMap * regularization_term.objfcts[0].compute_quasi_geology_model() # Plot Density Contrast Model (Z) normal = "Z" -model_to_plot = inverted_density_model +model_to_plot = inverted_density_model SH.plot_model_slice( mesh=inv_mesh, - ind_active=actv, - model=model_to_plot, + ind_active=actv, + model=model_to_plot, normal= normal, ind_plot_arr=ind_plot, clim=[-1.0, 1.0], @@ -642,13 +642,13 @@

      Step 12: Visualize the 3D Model# Plot Inverted Model Slices (Y) normal = "X" -model_to_plot = inverted_density_model -SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [-1.0, 1.0], set, sec_loc=True, gdlines=True, which_prop="Den", cmap="Spectral", save_plt=save_plots, path_to_output=path_to_output, name=name) +model_to_plot = inverted_density_model +SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [-1.0, 1.0], set, sec_loc=True, gdlines=True, which_prop="Den", cmap="Spectral", save_plt=save_plots, path_to_output=path_to_output, name=name) # Plot Inverted Model Slices (X) normal = "Y" -model_to_plot = inverted_density_model -SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [-1.0, 1.0], set, sec_loc=True, gdlines=True, which_prop="Den", cmap="Spectral", save_plt=save_plots, path_to_output=path_to_output, name=name) +model_to_plot = inverted_density_model +SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [-1.0, 1.0], set, sec_loc=True, gdlines=True, which_prop="Den", cmap="Spectral", save_plt=save_plots, path_to_output=path_to_output, name=name)

        @@ -658,22 +658,22 @@

        Step 12: Visualize the 3D Model -

        Step 13: Visualize the Quasi-Geological ModelΒΆ

        +

        Step 13: Visualize the Quasi-Geological ModelΒΆ

        The quasi-geological model (as given by Li et al., 2019) is visualized, showing different rock units classified by the GMM.

        Plot Density Contrast Model (Z)

        normal = "Z"
        -model_to_plot = quasi_geology_model
        -SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
        +model_to_plot = quasi_geology_model
        +SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
         
         # Plot Inverted Model Slices (Y)
         normal = "X"
        -model_to_plot = quasi_geology_model
        -SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
        +model_to_plot = quasi_geology_model
        +SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
         
         # Plot Inverted Model Slices (X)
         normal = "Y"
        -model_to_plot = quasi_geology_model
        -SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
        +model_to_plot = quasi_geology_model
        +SH.plot_model_slice(inv_mesh, actv, model_to_plot, normal, ind_plot, [0, 4], set, sec_loc=True, gdlines=True, which_prop="QGM", cmap="jet", save_plt=save_plots, path_to_output=path_to_output, name=name)
         
          @@ -683,26 +683,26 @@

          Step 13: Visualize the Quasi-Geological Model -

          Step 14: Plot the Updated 1D-GMMΒΆ

          +

          Step 14: Plot the Updated 1D-GMMΒΆ

          The updated GMM, learned through the inversion, is visualized.

          # Plot the learned GMM
          -fig = plt.figure(figsize=(6, 6))
          -ax = regularization_term.objfcts[0].gmm.plot_pdf(flag2d=False, plotting_precision=500, padding=0.4)
          -ax[0].hist(inverted_density_model[actv], density=True, bins=1000)
          -ax[0].set_xlabel(r"Density contrast (g/cc)")
          -ax[0].set_ylabel(r"Probability Density Values")
          -ax[0].get_legend().remove()
          -ax[0].set_title(r"Learned DelRho Distribution")
          -ax[0].ticklabel_format(axis="both", style="scientific", scilimits=(0, 0))
          -plt.savefig(path_to_output + "/" + name + "_Learned_GMM.pdf", bbox_inches="tight")
          -plt.show()
          +fig = plt.figure(figsize=(6, 6))
          +ax = regularization_term.objfcts[0].gmm.plot_pdf(flag2d=False, plotting_precision=500, padding=0.4)
          +ax[0].hist(inverted_density_model[actv], density=True, bins=1000)
          +ax[0].set_xlabel(r"Density contrast (g/cc)")
          +ax[0].set_ylabel(r"Probability Density Values")
          +ax[0].get_legend().remove()
          +ax[0].set_title(r"Learned DelRho Distribution")
          +ax[0].ticklabel_format(axis="both", style="scientific", scilimits=(0, 0))
          +plt.savefig(path_to_output + "/" + name + "_Learned_GMM.pdf", bbox_inches="tight")
          +plt.show()
           
          • 01 gravity gradiometry inversion pgi
          • Learned DelRho Distribution
          -

          Total running time of the script: ( 10 minutes 14.392 seconds)

          +

          Total running time of the script: ( 10 minutes 3.217 seconds)

          -

          Predicting P-Wave Velocity from Hyperspectral DataΒΆ

          +

          Predicting P-Wave Velocity from Hyperspectral DataΒΆ

          This example demonstrates the prediction of P-Wave velocities from hyperspectral data using machine learning techniques. Hyperspectral data provides detailed information on rock mineralogy, which influences its petrophysical properties. This script aims to explore and quantify the relationship between spectral features and various petrophysical properties, specifically focusing on P-Wave velocity.

          -

          Importing Necessary LibrariesΒΆ

          +

          Importing Necessary LibrariesΒΆ

          First, we import the required Python packages. We use dotenv to manage environment variables, numpy and sklearn for numerical operations and machine learning, and custom packages hklearn and hycore for handling hyperspectral data and machine learning workflows.

          from dotenv import dotenv_values
           import numpy as np
          @@ -66,7 +66,7 @@ 

          Importing Necessary Libraries -

          Loading Data with hycore.ShedΒΆ

          +

          Loading Data with hycore.ShedΒΆ

          The hycore package, which organizes hyperspectral data in a structure called Shed, is used here. A Shed makes it convenient to categorize and store hyperspectral data. We use HyLibraries (a data structure within hylite for storing spectral libraries) within a Shed to store the hyperspectral data. The corresponding P-Wave velocity measurements are stored as numpy arrays.

          # Load the train and test sheds
           config = dotenv_values()
          @@ -80,17 +80,17 @@ 

          Loading Data with hycore.Shedtrain_fx50 = train_shed.results.FX50Lib train_fenix = train_shed.results.FENIXLib train_lwir = train_shed.results.LWIRLib -train_vp = train_shed.results.Vp +train_vp = train_shed.results.Vp test_fx50 = test_shed.results.FX50Lib test_fenix = test_shed.results.FENIXLib test_lwir = test_shed.results.LWIRLib -test_vp = test_shed.results.Vp +test_vp = test_shed.results.Vp

          -

          Creating a hklearn.Stack ObjectΒΆ

          +

          Creating a hklearn.Stack ObjectΒΆ

          The hklearn package, designed to handle hyperspectral data, is used to organize spectral libraries into a structure called Stack. A Stack can manage multiple spectral libraries and integrate data from multiple sensors. We perform hull corrections on the spectra to enhance features of interest.

          # Create Stack objects and apply hull correction to the spectra
           hsi_train = hklearn.Stack(
          @@ -109,7 +109,7 @@ 

          Creating a hklearn.Stack Object
          Removing hull:   0%|          | 0/3771 [00:00<?, ?it/s]
          -Removing hull:   0%|          | 1/3771 [00:01<1:12:24,  1.15s/it]
          +Removing hull:   0%|          | 1/3771 [00:01<1:12:51,  1.16s/it]
           
           
           Removing hull:   0%|          | 0/3771 [00:00<?, ?it/s]
          @@ -129,29 +129,29 @@ 

          Creating a hklearn.Stack Object -

          Scaling the Dependent Variable (Y)ΒΆ

          +

          Scaling the Dependent Variable (Y)ΒΆ

          The P-Wave velocities are scaled to facilitate the convergence of the loss function during model training. We use the StandardScaler from scikit-learn for this purpose.

          # Scale Y Variable (P-Wave velocity)
           y_scaler = sklearn.preprocessing.StandardScaler()
          -_ = y_scaler.fit(train_vp[:, None])
          +_ = y_scaler.fit(train_vp[:, None])
           

          -

          Transforming the Independent Variable (X)ΒΆ

          +

          Transforming the Independent Variable (X)ΒΆ

          Hyperspectral data often contains a large number of bands, many of which might be redundant. We apply Principal Component Analysis (PCA) to extract the most significant components. A two-step PCA is performed to ensure that there isn’t any inter-sensor correlation. The Stack object stores the PCA, which is also applied to the test set.

          # Apply PCA to the X variable (spectral data)
           PCA_X = hsi_train.fit_pca(n_components=10, normalise=True)
           hsi_test.set_transform(PCA_X)
           
           # Set the Y-Variable (P-Wave velocity)
          -hsi_train.set_y(train_vp[:, None, None])
          -hsi_test.set_y(test_vp[:, None, None])
          +hsi_train.set_y(train_vp[:, None, None])
          +hsi_test.set_y(test_vp[:, None, None])
           
          -

          Initializing and Training ModelsΒΆ

          +

          Initializing and Training ModelsΒΆ

          Different machine learning models are initialized and trained. In this example, we use a simple linear regression (LinearRegression) and a Multilayer Perceptron (MLPRegressor) from scikit-learn. A dictionary with the parameters for optimization is also initialized.

          -

          Scoring and Evaluating ModelsΒΆ

          +

          Scoring and Evaluating ModelsΒΆ

          Finally, the trained models are scored and evaluated. The Stack.get_score_table() method is used to display a table with the training, cross-validation, and test scores of the best-performing model.


          -

          Total running time of the script: ( 0 minutes 34.561 seconds)

          +

          Total running time of the script: ( 0 minutes 35.813 seconds)

          -

          Structural ModelingΒΆ

          +

          Structural ModelingΒΆ

          Delve into the world of 3D subsurface modeling with our Structural Modeling tutorials. In this section, we focus on harnessing the capabilities of gempy, a powerful tool developed by a partner within the Vector consortium. Here’s what these tutorials offer:

          • 3D Subsurface Modeling: Learn the intricacies of constructing detailed 3D geological models. We guide you through the process of transforming raw geophysical data into a comprehensive three-dimensional representation of the subsurface.

          • @@ -93,9 +93,15 @@

            Structural Modeling

            Construct Model 1 with Helper Functions

            Construct Model 1 with Helper Functions
            +

      +

      Construct Spremberg: Importing borehole data

      +
      Construct Spremberg: Importing borehole data
      +
      +

      Construct Spremberg: Building initial model

      +
      Construct Spremberg: Building initial model
      -

      GeoPhysics and InversionΒΆ

      +

      GeoPhysics and InversionΒΆ

      Our tutorials are crafted to guide you through the process of applying geophysical forward modeling and inversion techniques, using advanced tools like gempy and simpeg. Here’s what you can expect:

      • Geophysical Forward Modeling: Learn how to transform structural models into geophysical models. These tutorials will show you how to use gempy to simulate geophysical responses based on your structural models. Whether you are a beginner or looking to refine your modeling skills, these guides offer comprehensive insights.

      • @@ -118,7 +124,7 @@

        GeoPhysics and InversionPredicting P-Wave Velocity from Hyperspectral Data

      -

      Probabilistic ModelingΒΆ

      +

      Probabilistic ModelingΒΆ

      In the dynamic and often uncertain realm of subsurface exploration, probabilistic modeling emerges as a key tool. This section delves into the application of Bayesian Statistics and probabilistic approaches to address the inherent uncertainties in subsurface data. Here’s what you’ll learn:

      • Embracing Uncertainty: Gain an understanding of how to quantify and incorporate uncertainty in geological models. We focus on aleatoric uncertainty, which represents the inherent variability in subsurface data.

      • @@ -200,7 +206,7 @@

        Quick search

        ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/examples/sg_execution_times.html b/examples/sg_execution_times.html new file mode 100644 index 0000000..23e8d32 --- /dev/null +++ b/examples/sg_execution_times.html @@ -0,0 +1,141 @@ + + + + + + + + Computation times — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        + +
        +

        Computation timesΒΆ

        +

        00:00.000 total execution time for 0 files from examples:

        +
        + + + + + + + + + + + + + + + + + +

        Example

        Time

        Mem (MB)

        N/A

        N/A

        N/A

        +
        +
        + + +
        + +
        +
        + +
        +
        + + + + + + + \ No newline at end of file diff --git a/external/external_examples.html b/external/external_examples.html index d5bcd2a..693fc48 100644 --- a/external/external_examples.html +++ b/external/external_examples.html @@ -1,23 +1,23 @@ - + - Bayesian Inference Theory — Vector Geology 0.1.dev16+g525c9e2 documentation - + Bayesian Inference Theory — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -41,7 +41,7 @@
        -

        Bayesian Inference TheoryΒΆ

        +

        Bayesian Inference TheoryΒΆ

        Here you will find a collection of examples that demonstrate the basics of Bayesian inference theory and how to apply it to geology using Pyro.

        @@ -133,7 +133,7 @@

        Quick search

        ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/genindex.html b/genindex.html index 30f3adf..50bb4e9 100644 --- a/genindex.html +++ b/genindex.html @@ -1,22 +1,22 @@ - + - Index — Vector Geology 0.1.dev16+g525c9e2 documentation - + Index — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -100,7 +100,7 @@

        Quick search

        ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13
        diff --git a/index.html b/index.html index d6c7a35..1b84701 100644 --- a/index.html +++ b/index.html @@ -1,23 +1,23 @@ - + - vector-geology Documentation — Vector Geology 0.1.dev16+g525c9e2 documentation - + vector-geology Documentation — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -40,13 +40,13 @@
        -

        vector-geology DocumentationΒΆ

        +

        vector-geology DocumentationΒΆ

        Release:
        -

        0.1.dev16+g525c9e2

        +

        0.3.dev0+gf79ba49.d20240612

        Date:
        -

        26 January 2024

        +

        13 June 2024

        Source:

        github.com/vector-raw-materials/vector-geology

        @@ -54,13 +54,13 @@

        -

        Vector Geology RepositoryΒΆ

        +

        Vector Geology RepositoryΒΆ

        -

        OverviewΒΆ

        +

        OverviewΒΆ

        Welcome to the Vector Geology repository, a collaborative platform integrating a suite of geophysical and remote sensing data processing tools developed by the Vector consortium . This repository serves as the central hub for accessing, understanding, and utilizing a range of software packages designed for geological exploration and research.

        -

        Key FeaturesΒΆ

        +

        Key FeaturesΒΆ

        • Integrated Toolsets: Collection of diverse code packages developed and maintained by Vector consortium members, offering a wide range of functionalities for geophysical data processing.

        • Comprehensive Tutorials: Step-by-step guides demonstrating typical workflows, from data input to advanced inversion techniques.

        • @@ -69,9 +69,9 @@

          Key Features -

          Getting StartedΒΆ

          +

          Getting StartedΒΆ

          -

          PrerequisitesΒΆ

          +

          PrerequisitesΒΆ

          • Basic understanding of geophysical exploration techniques and remote sensing data.

          • Familiarity with programming languages and tools used in the repository (e.g., Python).

          • @@ -82,7 +82,7 @@

            Prerequisites -

            Explore Our GuidesΒΆ

            +

            Explore Our GuidesΒΆ

            Galleries

              @@ -102,7 +102,7 @@

              Explore Our Guides -

              Vector Geology ExamplesΒΆ

              +

              Vector Geology ExamplesΒΆ

              Welcome to the Vector Geology Examples section. This space is dedicated to showcasing the diverse capabilities of the Vector platform. Here, we illustrate not only what you can achieve with Vector but also guide you on how to implement these techniques effectively. Our examples are categorized into distinct areas:

              @@ -121,7 +121,7 @@

              Vector Geology Examples

        -

        Readers and ParsersΒΆ

        +

        Readers and ParsersΒΆ

        Effective data analysis in geophysics begins with efficient data handling. This section is dedicated to demonstrating the use of specialized libraries to read and parse various data formats commonly encountered in the Vector Geology project. Here’s what you can expect:

        • Format Recognition: Learn how to identify and handle different data formats used in geophysical and remote sensing research.

        • @@ -142,7 +142,7 @@

          Readers and ParsersGravity Data Visualization

      -

      Structural ModelingΒΆ

      +

      Structural ModelingΒΆ

      Delve into the world of 3D subsurface modeling with our Structural Modeling tutorials. In this section, we focus on harnessing the capabilities of gempy, a powerful tool developed by a partner within the Vector consortium. Here’s what these tutorials offer:

      -

      GeoPhysics and InversionΒΆ

      +

      GeoPhysics and InversionΒΆ

      Our tutorials are crafted to guide you through the process of applying geophysical forward modeling and inversion techniques, using advanced tools like gempy and simpeg. Here’s what you can expect:

      • Geophysical Forward Modeling: Learn how to transform structural models into geophysical models. These tutorials will show you how to use gempy to simulate geophysical responses based on your structural models. Whether you are a beginner or looking to refine your modeling skills, these guides offer comprehensive insights.

      • @@ -181,7 +187,7 @@

        GeoPhysics and InversionPredicting P-Wave Velocity from Hyperspectral Data

      -

      Probabilistic ModelingΒΆ

      +

      Probabilistic ModelingΒΆ

      In the dynamic and often uncertain realm of subsurface exploration, probabilistic modeling emerges as a key tool. This section delves into the application of Bayesian Statistics and probabilistic approaches to address the inherent uncertainties in subsurface data. Here’s what you’ll learn:

      • Embracing Uncertainty: Gain an understanding of how to quantify and incorporate uncertainty in geological models. We focus on aleatoric uncertainty, which represents the inherent variability in subsurface data.

      • @@ -200,7 +206,7 @@

        Probabilistic ModelingGallery generated by Sphinx-Gallery

      -

      Bayesian Inference TheoryΒΆ

      +

      Bayesian Inference TheoryΒΆ

      Here you will find a collection of examples that demonstrate the basics of Bayesian inference theory and how to apply it to geology using Pyro.

      @@ -235,7 +241,7 @@

      Probabilistic Modeling

      -

      RequirementsΒΆ

      +

      RequirementsΒΆ

      The requirements for the core functionality of the package are:

      .
       numpy
      @@ -245,7 +251,7 @@ 

      Requirements -

      Optional requirementsΒΆ

      +

      Optional requirementsΒΆ

      There are many optional requirements, depending on the data format you want to read/write. Currently, the requirements_opt.txt reads like:

      git+https://github.com/terranigma-solutions/subsurface.git#egg=subsurface
      @@ -261,7 +267,7 @@ 

      Optional requirements

      -

      AcknowledgementsΒΆ

      +

      AcknowledgementsΒΆ

      This project has received funding from the European Unionβ€˜s Horizon Europe research and innovation programme under grant agreement No 101058483

      Funded by the European Union. Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or Horizon Europe research and innovation programme

      EU logo @@ -326,7 +332,7 @@

      Quick search

      ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/maintenance.html b/maintenance.html index 94459de..84ab245 100644 --- a/maintenance.html +++ b/maintenance.html @@ -1,23 +1,23 @@ - + - Maintenance — Vector Geology 0.1.dev16+g525c9e2 documentation - + Maintenance — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -40,9 +40,9 @@
      -

      MaintenanceΒΆ

      +

      MaintenanceΒΆ

      -

      Making a releaseΒΆ

      +

      Making a releaseΒΆ

      1. Add release notes to CHANGELOG.rst.

      2. Create a release on GitHub, add the above release notes to it.

      3. @@ -59,7 +59,7 @@

        Making a release -

        Type of commitsΒΆ

        +

        Type of commitsΒΆ

        • ENH: Enhancement, new functionality

        • BUG: Bug fix

        • @@ -132,7 +132,7 @@

          Quick search

          ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/manual.html b/manual.html index a1e441a..07ad121 100644 --- a/manual.html +++ b/manual.html @@ -1,23 +1,23 @@ - + - Manual — Vector Geology 0.1.dev16+g525c9e2 documentation - + Manual — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -39,7 +39,7 @@
          -

          ManualΒΆ

          +

          ManualΒΆ

          Todo

          Add a basic user manual

          @@ -102,7 +102,7 @@

          Quick search

          ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13 | diff --git a/objects.inv b/objects.inv index 0f39624..e100ee5 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/search.html b/search.html index bd9f599..5c6cdea 100644 --- a/search.html +++ b/search.html @@ -1,23 +1,23 @@ - + - Search — Vector Geology 0.1.dev16+g525c9e2 documentation - + Search — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + - + - + - + @@ -119,7 +119,7 @@

          Navigation

          ©2023-2024, Vector Geology Team. | - Powered by Sphinx 7.1.1 + Powered by Sphinx 7.2.6 & Alabaster 0.7.13
          diff --git a/searchindex.js b/searchindex.js index f10ed48..33fbad2 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["contributing", "examples/01_readers/01_read_OMF_sites", "examples/01_readers/02_model_1_OMF_to_subsurface", "examples/01_readers/03_model_2_OMF_to_subsurface", "examples/01_readers/04_model_1_read_gravity", "examples/01_readers/index", "examples/01_readers/sg_execution_times", "examples/02_structural_modeling/01_model_1_gempy_step_by_step", "examples/02_structural_modeling/02_model_1_gempy", "examples/02_structural_modeling/index", "examples/02_structural_modeling/sg_execution_times", "examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi", "examples/03_forward_engines/02_model_1_gempy_fw_gravity", "examples/03_forward_engines/03_HSI_To_Petrophysics", "examples/03_forward_engines/04_FTG_PGI", "examples/03_forward_engines/index", "examples/03_forward_engines/sg_execution_times", "examples/04_probabilistic_modeling/01_thickness_problem_gempy", "examples/04_probabilistic_modeling/02_model_1_bayesian", "examples/04_probabilistic_modeling/index", "examples/04_probabilistic_modeling/sg_execution_times", "examples/index", "external/external_examples", "index", "maintenance", "manual"], "filenames": ["contributing.rst", "examples/01_readers/01_read_OMF_sites.rst", "examples/01_readers/02_model_1_OMF_to_subsurface.rst", "examples/01_readers/03_model_2_OMF_to_subsurface.rst", "examples/01_readers/04_model_1_read_gravity.rst", "examples/01_readers/index.rst", "examples/01_readers/sg_execution_times.rst", "examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst", "examples/02_structural_modeling/02_model_1_gempy.rst", "examples/02_structural_modeling/index.rst", "examples/02_structural_modeling/sg_execution_times.rst", "examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst", "examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst", "examples/03_forward_engines/03_HSI_To_Petrophysics.rst", "examples/03_forward_engines/04_FTG_PGI.rst", "examples/03_forward_engines/index.rst", "examples/03_forward_engines/sg_execution_times.rst", "examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst", "examples/04_probabilistic_modeling/02_model_1_bayesian.rst", "examples/04_probabilistic_modeling/index.rst", "examples/04_probabilistic_modeling/sg_execution_times.rst", "examples/index.rst", "external/external_examples.rst", "index.rst", "maintenance.rst", "manual.rst"], "titles": ["Contributing", "Reading OMF Project Into Python", "Reading Model 1 OMF Project into Subsurface", "Reading OMF project and exporting it to Subsurface: Example 1", "Gravity Data Visualization", "Readers and Parsers", "Computation times", "Constructing Structural Geological Model", "Construct Model 1 with Helper Functions", "Structural Modeling", "Computation times", "Inversion of Full Tensor Gravity Gradiometry Data", "Model 1 Forward Gravity", "Predicting P-Wave Velocity from Hyperspectral Data", "Inversion of Full Tensor Gravity Gradiometry Data", "GeoPhysics and Inversion", "Computation times", "2.2 - Including GemPy", "Probabilistic Inversion Example: Geological Model", "Probabilistic Modeling", "Computation times", "Vector Geology Examples", "Bayesian Inference Theory", "vector-geology Documentation", "Maintenance", "Manual"], "terms": {"we": [0, 1, 2, 5, 7, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23], "welcom": [0, 21, 23], "encourag": [0, 21, 23], "everyon": 0, "vector": [0, 5, 9, 17, 18], "geologi": [0, 5, 9, 22], "can": [0, 2, 3, 5, 8, 11, 12, 13, 14, 15, 18, 19, 21, 23], "here": [0, 1, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 17, 19, 21, 22, 23], "i": [0, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 17, 18, 21, 23, 24], "how": [0, 1, 2, 3, 4, 5, 7, 8, 9, 15, 17, 19, 21, 22, 23], "get": [0, 1, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "start": [0, 7, 8, 12, 17, 18, 21], "For": [0, 2], "about": [0, 15, 21, 23], "e": [0, 2, 11, 14, 23], "g": [0, 23], "its": [0, 8, 11, 13, 14], "applic": [0, 7, 9, 15, 19, 21, 23], "function": [0, 1, 2, 7, 9, 10, 11, 12, 13, 14, 17, 18, 21, 23, 24], "usag": 0, "pleas": [0, 11, 13, 14], "search": 0, "exist": [0, 11, 14, 21, 23], "relat": [0, 8], "If": [0, 11, 14, 21, 23, 24], "your": [0, 9, 11, 14, 15, 17, 18, 19, 21, 23], "ha": [0, 11, 14, 23], "alreadi": 0, "been": [0, 11, 14], "ask": 0, "make": [0, 9, 13, 21, 23], "page": 0, "label": [0, 4, 12, 18], "The": [0, 4, 7, 8, 11, 12, 13, 14, 17, 18, 23], "templat": 0, "essenti": [0, 17], "you": [0, 5, 7, 8, 9, 11, 12, 14, 15, 18, 19, 21, 22, 23, 24], "answer": 0, "so": [0, 2, 12, 21, 23], "understand": [0, 5, 8, 9, 12, 15, 17, 19, 21, 23], "reproduc": 0, "fix": [0, 11, 14, 24], "Be": 0, "verbos": [0, 11, 14], "whenev": 0, "possibl": [0, 1, 7, 8, 18], "provid": [0, 7, 8, 12, 13, 17, 18, 21, 23], "traceback": 0, "error": [0, 11, 14], "messag": 0, "screenshot": 0, "sampl": [0, 11, 14, 18], "other": [0, 11, 12, 14], "file": [0, 1, 2, 3, 4, 6, 7, 8, 10, 12, 16, 18, 20, 24], "user": [0, 21, 23, 25], "submit": 0, "idea": 0, "improv": [0, 21, 23, 24], "project": [0, 4, 5, 6, 11, 14, 21, 23], "thi": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 21, 23], "creat": [0, 7, 9, 18, 21, 23, 24], "an": [0, 1, 2, 3, 11, 14, 17, 19, 21, 23, 24], "sure": 0, "us": [0, 1, 2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15, 18, 19, 21, 22, 23, 24], "descript": 0, "titl": [0, 4], "ampl": 0, "background": [0, 11, 14], "inform": [0, 11, 12, 13, 14, 15, 17, 21, 23], "help": [0, 8, 11, 12, 14, 17], "u": [0, 17], "implement": [0, 12, 15, 18, 21, 23], "futur": 0, "ani": [0, 11, 13, 14, 17], "ar": [0, 2, 7, 8, 9, 11, 12, 13, 14, 15, 18, 21, 23], "whether": [0, 9, 15, 21, 23], "typo": 0, "ad": [0, 24], "post": [0, 5, 21, 23], "process": [0, 1, 3, 5, 7, 8, 9, 11, 12, 14, 15, 18, 19, 21, 23, 24], "plot": [0, 1, 2, 3, 4, 8, 12, 18], "core": [0, 3, 7, 8, 11, 12, 14, 17, 18, 23], "anyth": 0, "think": 0, "should": [0, 24], "repositori": [0, 21], "address": [0, 19, 21, 23], "open": [0, 1, 2], "either": 0, "have": [0, 2, 11, 14, 15, 18, 21, 23, 24], "found": 0, "discuss": 0, "link": 0, "pull": 0, "aim": [0, 13, 21, 23], "follow": [0, 11, 14], "particular": 0, "sustain": 0, "posit": [0, 8, 12], "impact": [0, 17], "commun": 0, "zen": 0, "most": [0, 13, 21, 23], "importantli": 0, "readabl": 0, "count": 0, "when": [0, 17, 18, 24], "write": [0, 23], "adher": 0, "style": [0, 11, 13, 14], "guid": [0, 9, 11, 14, 15, 19, 21], "pep8": 0, "thorough": 0, "effect": [0, 5, 9, 21, 23], "document": [0, 2, 11, 14, 21, 24], "docstr": 0, "each": [0, 8, 11, 12, 13, 14, 18, 21, 23], "modul": [0, 7, 8, 11, 14], "class": [0, 11, 14], "method": [0, 5, 11, 13, 14, 15, 18, 19, 21, 23], "all": [0, 11, 14], "pep": 0, "257": 0, "high": 0, "level": [0, 7, 8, 9, 21, 23], "googl": 0, "syntax": 0, "exampl": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 19, 20, 22], "def": [0, 1, 3, 17, 18], "func": 0, "arg1": 0, "int": [0, 11, 14], "arg2": 0, "float": 0, "A": [0, 8, 11, 13, 14, 17, 21, 23], "concis": 0, "one": [0, 2], "line": [0, 2, 3, 17], "summari": 0, "addit": [0, 4, 24], "necessari": [0, 1, 2, 3, 4, 7, 8, 11, 12, 14, 18], "long": [0, 8], "develop": [0, 9, 21, 23], "arg": 0, "first": [0, 1, 13, 17], "argument": [0, 17, 18], "second": [0, 1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "hang": 0, "indent": 0, "multi": 0, "return": [0, 1, 3], "valu": [0, 7, 11, 12, 14, 17, 18], "": [0, 2, 5, 8, 9, 11, 12, 13, 14, 15, 17, 18, 19, 21, 23], "42": [0, 17, 18], "explain": 0, "what": [0, 2, 5, 9, 15, 19, 21, 23], "add": [0, 7, 11, 12, 14, 17, 24, 25], "inlin": 0, "comment": [0, 11, 14], "why": 0, "seem": [0, 2], "need": [0, 3, 9, 11, 12, 14, 18, 21, 23], "consid": [0, 17], "more": [0, 11, 13, 14, 19, 21, 22, 23], "8": [0, 2, 7, 8, 12, 17, 18], "test": [0, 13, 24], "everi": [0, 11, 14, 21, 23], "untest": 0, "dead": 0, "under": [0, 23], "eupl": 0, "1": [0, 1, 4, 5, 6, 7, 9, 10, 13, 15, 16, 17, 18, 21, 23], "2": [0, 1, 4, 7, 8, 12, 13, 18, 19, 20, 21, 23], "did": 0, "yourself": 0, "respons": [0, 15, 21, 23], "ensur": [0, 12, 13, 17, 21, 23], "compat": [0, 18], "includ": [0, 7, 11, 14, 19, 20, 21, 23], "In": [0, 9, 11, 13, 14, 17, 19, 21, 23], "gener": [0, 1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 21, 23], "discourag": 0, "third": 0, "parti": 0, "go": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "end": [1, 2, 3, 4, 7, 8, 9, 11, 12, 13, 14, 17, 18, 21, 23], "download": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "full": [1, 2, 3, 4, 7, 8, 12, 13, 15, 16, 17, 18, 21, 23], "code": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 23, 24], "tutori": [1, 2, 3, 9, 15, 19, 21, 23], "demonstr": [1, 2, 3, 5, 8, 12, 13, 15, 18, 21, 22, 23], "mine": [1, 2], "format": [1, 2, 3, 5, 7, 17, 21, 23], "suitabl": [1, 21, 23], "further": [1, 3, 12, 17], "analysi": [1, 2, 3, 4, 5, 12, 13, 17, 21, 23], "subsurfac": [1, 4, 5, 6, 7, 8, 9, 15, 18, 19, 21, 23], "import": [1, 4, 7, 8, 11, 12, 14, 17, 18, 24], "handl": [1, 5, 12, 13, 19, 21, 23], "omfvista": [1, 3, 23], "from": [1, 2, 3, 4, 7, 8, 9, 11, 12, 14, 15, 16, 18, 21, 23, 24], "trisurf": [1, 2, 3], "to_pyvista_mesh": [1, 2, 3], "pv_plot": 1, "writer": 1, "base_structs_to_binary_fil": [1, 2], "dotenv": [1, 3, 4, 7, 8, 11, 12, 13, 14, 18, 23], "dotenv_valu": [1, 3, 4, 7, 8, 11, 12, 13, 14, 18], "home": [1, 3, 7, 8, 12, 17, 18], "leguark": [1, 3, 7, 8, 12, 17, 18], "reader": [1, 7, 8, 18], "__init__": [1, 7, 8, 18], "py": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20], "14": [1, 7, 8, 16, 17, 18], "userwarn": [1, 7, 8, 12, 17, 18], "welli": [1, 7, 8, 18], "striplog": [1, 7, 8, 18], "instal": [1, 7, 8, 18], "No": [1, 7, 8, 17, 18, 23], "well": [1, 2, 7, 8, 11, 14, 17, 18], "warn": [1, 3, 7, 8, 12, 17, 18], "defin": [1, 4, 7, 11, 12, 13, 14, 18], "path": [1, 2, 3, 4, 7, 8, 11, 12, 14, 17, 18], "specifi": [1, 8, 11, 14, 18], "env": [1, 12], "load_omf": [1, 2, 3], "config": [1, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "path_to_model_2": [1, 3], "omf_project": [1, 3], "load_project": [1, 3], "util": [1, 2, 8, 11, 12, 14, 17, 18, 21, 23], "interact": 1, "multi_color": [1, 2, 3], "true": [1, 2, 3, 7, 8, 11, 12, 13, 14, 17, 18], "show_edg": [1, 2, 3], "notebook": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "fals": [1, 2, 3, 7, 8, 11, 12, 13, 14, 17, 18], "block_nam": [1, 2, 3], "get_block_nam": [1, 2, 3], "4": [1, 2, 3, 4, 7, 8, 12, 13, 17, 18], "polydata_obj": [1, 2, 3], "polydata": [1, 2, 3], "unstruct_pyvista": [1, 2, 3], "unstructuredgrid": [1, 2, 3], "cast_to_unstructured_grid": [1, 2, 3], "cells_pyvista": [1, 2, 3], "cell": [1, 2, 3, 11, 14], "reshap": [1, 2, 3], "unstruct": [1, 2, 3], "unstructureddata": [1, 2, 3], "from_arrai": [1, 2, 3], "vertex": [1, 2, 3, 7], "point": [1, 2, 3, 8, 11, 14, 17, 21, 23], "option": [1, 4, 7, 8, 11, 12, 14, 17, 18], "export": [1, 2, 5, 6, 21, 23], "liquid": [1, 2], "earth": [1, 2], "to_liquid_earth": 1, "replac": [1, 2], "actual": 1, "condit": [1, 2, 7], "leapfrog1": [1, 2], "final": [1, 8, 12, 13, 17, 18], "t": [1, 2, 3, 11, 12, 13, 14, 18], "mesh": [1, 2, 3, 18], "subsurface_mesh": 1, "image_2d": 1, "plotter": [1, 2, 3], "object": [1, 7, 8, 12, 17, 18], "0x7fd53b397f70": 1, "total": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20], "run": [1, 2, 3, 4, 7, 8, 12, 13, 14, 18, 24], "time": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "script": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 24], "0": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 23], "minut": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 24], "341": [1, 6, 18], "sourc": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 23], "01_read_omf_sit": [1, 6], "jupyt": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "ipynb": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18], "galleri": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 21], "sphinx": [1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 17, 18, 21, 23], "convert": [2, 4, 5, 21, 23], "enhanc": [2, 9, 13, 19, 21, 23, 24], "begin": [2, 5, 11, 14, 21, 23], "panda": [2, 3, 4, 11, 12, 14, 18], "pd": [2, 3, 4, 11, 12, 14, 18], "xarrai": [2, 5, 7, 8, 12, 18, 21, 23], "lineset": [2, 3], "to_pyvista_lin": [2, 3], "init_plott": [2, 3], "vector_geologi": [2, 7, 8, 11, 12, 13, 14, 18], "custom": [2, 8, 13], "path_to_model_1": 2, "next": 2, "initi": [2, 8, 12, 18], "toggl": 2, "enabl": [2, 3], "meshes_far": 2, "lines_1": 2, "lines_far": 2, "dataset": [2, 3, 5, 7, 11, 14, 21, 23], "none": [2, 7, 8, 11, 12, 13, 14, 18], "rang": [2, 3, 5, 7, 8, 9, 12, 13, 18, 21, 23], "n_block": [2, 3], "print": [2, 7, 8, 11, 12, 14], "check": [2, 11, 14, 18], "continu": [2, 3], "get_cel": [2, 3], "type": [2, 3], "grid": [2, 7, 8, 12, 18], "cell_data": [2, 3], "name": [2, 3, 7, 8, 11, 12, 13, 14, 18], "match": [2, 3, 12], "case": [2, 3, 21, 23], "celltyp": [2, 3], "triangl": [2, 3], "new_cell_data": [2, 3], "formation_major_": [2, 3], "cells_attr": [2, 3], "datafram": [2, 3, 4], "5": [2, 7, 8, 12, 13, 17, 18], "append": [2, 3, 7, 8, 12, 18], "far": [2, 12], "rest": 2, "am": 2, "still": [2, 23], "unsur": 2, "meant": 2, "repres": [2, 17, 18, 19, 21, 23], "els": 2, "to_netcdf": 2, "base_data": 2, "f": [2, 7, 8, 11, 12, 14], "nc": [2, 7, 8, 11, 12, 14, 18], "11": [2, 12, 14, 17, 18], "To": [2, 7, 8, 12, 17, 18], "ignor": 2, "now": [2, 15, 21, 23], "3": [2, 3, 4, 7, 8, 12, 17, 18], "radiu": [2, 3, 12], "100": [2, 3, 11, 12, 13, 14, 17, 18], "as_tub": [2, 3], "spline": [2, 3], "10": [2, 3, 4, 7, 8, 12, 13, 16, 17, 18], "elif": 2, "stonepark_dia": 2, "stonepark_ob": 2, "stonepark_or": 2, "stonepark_limerick_seism": 2, "stonepark_hbl": 2, "stonepark_waulsortian_region": 2, "stonepark_abl": 2, "stonepark_kkr": 2, "stonepark_w": 2, "collar": 2, "topographi": [2, 7, 8, 11, 12, 14, 18], "dhd_stonepark_breccia": 2, "stonepark_topographi": 2, "dhd_stonepark_assai": 2, "dhd_stonepark_litho": 2, "stonepark_lgr": 2, "plot_model_area": 2, "add_mesh": [2, 3], "cmap": [2, 3, 4, 11, 12, 14, 18], "magma": [2, 3], "opac": [2, 3, 7, 8, 12, 18], "viridi": [2, 3, 4, 12, 18], "togeth": 2, "7": [2, 3, 7, 8, 12, 17, 18], "show": [2, 3, 4, 7, 8, 11, 12, 14, 15, 17, 18, 21, 23], "It": [2, 8, 12, 17], "two": [2, 13, 15, 21, 23, 24], "area": [2, 4, 11, 14, 15, 21, 23], "doe": 2, "legaci": 2, "report": 2, "On": 2, "do": [2, 11, 14, 23], "litholog": 2, "much": 2, "interpret": [2, 9, 12, 19, 21, 23], "reconstruct": 2, "gempi": [2, 3, 8, 9, 12, 15, 18, 19, 20, 21, 23], "lithologi": 2, "graviti": [2, 5, 6, 15, 16, 18, 21, 23], "confidenti": 2, "share": 2, "limit": 2, "682": [2, 6, 18], "python": [2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 17, 18, 21, 23], "02_model_1_omf_to_subsurfac": [2, 6], "fixtur": 3, "step": [3, 5, 7, 8, 12, 13, 17, 18, 21, 23], "skip": [3, 11, 14], "modifi": [3, 8], "chang": [3, 11, 12, 14, 17, 18, 23], "block_index": 3, "isinst": 3, "base": [3, 7, 8, 11, 12, 14, 15, 18, 21, 23], "cell_typ": 3, "formation_major": 3, "kei": [3, 11, 12, 14, 19, 21], "desir": 3, "virtualenv": [3, 17, 18], "geotop": [3, 17, 18], "pilot": [3, 17, 18], "lib": [3, 17, 18], "python3": [3, 17, 18], "site": [3, 17, 18], "packag": [3, 13, 15, 17, 18, 21, 23], "2697": 3, "pyvistadeprecationwarn": 3, "deprec": [3, 17, 18], "instead": 3, "332": [3, 6, 18], "03_model_2_omf_to_subsurfac": [3, 6], "illustr": [4, 7, 11, 14, 21, 23], "read": [4, 5, 6, 8, 12, 21, 23], "stonepark": 4, "numpi": [4, 7, 11, 12, 13, 14, 17, 18, 23], "np": [4, 7, 11, 12, 13, 14, 17, 18], "matplotlib": [4, 11, 12, 14, 17, 18, 23], "pyplot": [4, 11, 12, 14, 17, 18], "plt": [4, 11, 12, 14, 17, 18], "librari": [4, 5, 7, 12, 21, 23], "load": [4, 7, 8, 12, 18], "environ": [4, 8, 12, 13, 18], "variabl": [4, 8, 17, 18, 19, 21, 23], "path_to_model_1_bougu": [4, 12, 18], "df": [4, 12], "read_csv": [4, 11, 12, 14], "sep": [4, 12], "header": [4, 12], "select": 4, "column": 4, "interest": [4, 11, 13, 14], "interesting_column": [4, 12], "x": [4, 8, 11, 12, 14, 17, 18], "y": [4, 11, 12, 14, 18], "bouguer_267_complet": [4, 12, 18], "extent": [4, 7, 8, 11, 12, 14, 17, 18], "observ": [4, 12, 15, 17, 18, 19, 21, 23], "omf_ext": 4, "arrai": [4, 8, 11, 12, 13, 14, 17, 18], "559902": 4, "8297554839": 4, "564955": 4, "6824703198": 4, "01": [4, 6, 11, 12, 13, 14, 17, 18], "644278": 4, "2600910577": 4, "650608": 4, "7353560531": 4, "1753": 4, "160": [4, 17], "3266042185512": 4, "figur": [4, 11, 14], "figsiz": [4, 11, 14], "scatter": [4, 12, 17, 18], "c": [4, 11, 12, 14, 17, 18], "xlabel": 4, "coordin": [4, 12], "ylabel": 4, "colorbar": [4, 12, 18], "bouguer": [4, 12, 15, 21, 23], "anomali": 4, "set": [4, 8, 12, 13, 18, 21, 23], "xlim": 4, "ylim": 4, "hide": 4, "axi": [4, 11, 14], "cleaner": 4, "look": [4, 8, 9, 15, 21, 23], "gca": 4, "ax": [4, 11, 12, 14, 17, 18], "xaxi": 4, "set_ticklabel": 4, "yaxi": 4, "displai": [4, 8, 11, 12, 13, 14], "071": [4, 6], "04_model_1_read_grav": [4, 6], "data": [5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 21, 23], "geophys": [5, 9, 11, 12, 14, 18, 19], "effici": [5, 21, 23], "section": [5, 9, 11, 12, 14, 17, 18, 19, 21, 23], "dedic": [5, 21, 23], "special": [5, 21, 23], "pars": [5, 21, 23], "variou": [5, 13, 21, 23], "commonli": [5, 21, 23], "encount": [5, 21, 23], "expect": [5, 15, 21, 23], "recognit": [5, 21, 23], "learn": [5, 9, 11, 13, 14, 15, 19, 21, 23], "identifi": [5, 21, 23], "differ": [5, 7, 8, 11, 12, 13, 14, 21, 23], "remot": [5, 21, 23], "sens": [5, 21, 23], "research": [5, 9, 21, 23], "integr": [5, 12, 13, 17, 19, 21, 23], "leverag": [5, 8, 21, 23], "specif": [5, 13, 17, 21, 23], "cover": [5, 21, 23], "tool": [5, 9, 15, 19, 21, 23], "emphas": [5, 21, 23], "flexibl": [5, 21, 23], "eas": [5, 21, 23], "convers": [5, 21, 23], "discov": [5, 9, 19, 21, 23], "raw": [5, 9, 21, 23], "structur": [5, 8, 10, 12, 13, 15, 18, 19], "power": [5, 9, 15, 19, 21, 23], "multidimension": [5, 21, 23], "crucial": [5, 7, 8, 9, 12, 17, 21, 23], "streamlin": [5, 8, 21, 23], "activ": [5, 7, 8, 12, 17, 18, 21, 23], "practic": [9, 12, 21, 23], "offer": [9, 15, 19, 21, 23], "hand": [], "re": [21, 23], "deal": [], "standard": [11, 14], "complex": [7, 9, 19, 21, 23], "design": [9, 11, 13, 14, 21, 23], "insight": [7, 9, 12, 15, 18, 21, 23], "our": [9, 15, 17, 21], "focu": [9, 19, 21, 23], "equip": [9, 21, 23], "skill": [9, 15, 21, 23], "transform": [7, 8, 9, 12, 15, 21, 23], "readi": [], "advanc": [15, 21, 22, 23], "visual": [5, 6, 7, 8, 12, 18, 21, 23], "By": [9, 17, 21, 23], "ll": [15, 19, 21, 23], "solid": [], "foundat": [], "stage": [], "task": [], "omf": [5, 6, 21, 23], "Into": [5, 6, 21, 23], "model": [5, 6, 10, 15, 16, 20], "00": [6, 10, 11, 12, 13, 14, 16, 17, 18, 20], "12": [6, 13, 17, 18], "426": [6, 18], "execut": [6, 7, 8, 10, 11, 12, 14, 16, 20], "examples_01_read": 6, "08": [6, 8, 12, 17, 18], "mb": [6, 10, 16, 20], "02": [6, 11, 12, 14, 17, 18], "3d": [7, 8, 9, 12, 18, 21, 23], "deposit": [7, 8], "o": [7, 8, 11, 12, 14, 17, 18], "xr": [7, 8, 12, 18], "omf_to_gempi": [7, 8, 12, 18], "process_fil": [7, 8, 12, 18], "gp": [7, 8, 12, 17, 18], "gempy_view": [7, 8, 12, 17, 18], "gpv": [7, 8, 12, 17, 18], "model_building_funct": 7, "optimize_nuggets_for_group": 7, "gempy_engin": [7, 12, 17, 18], "kernel_class": 7, "kernel_funct": [7, 8, 12], "availablekernelfunct": [7, 8, 12], "timer": [7, 8, 12, 18], "start_tim": [7, 8, 12, 18], "store": [8, 13, 18], "easier": [], "path_to_model_1_subsurfac": [7, 8, 12, 18], "structural_el": [7, 8, 12, 18], "global_ext": [7, 8, 12, 18], "color_gen": [7, 8, 12, 18], "colorsgener": [7, 8, 12, 18], "filenam": [7, 8, 12, 18], "listdir": [7, 8, 12, 18], "ext": [7, 8, 12, 18], "splitext": [7, 8, 12, 18], "join": [7, 8, 12, 18], "group": [7, 8, 17, 18], "also": [9, 13, 21, 23, 24], "configur": [7, 8, 12, 18], "properti": [7, 11, 13, 14], "structural_group_r": 7, "structuralgroup": [7, 8, 12], "red": [7, 8, 12], "element": [7, 8, 11, 12, 14, 18], "structural_rel": [7, 8, 12], "stackrelationtyp": [7, 8, 12], "erod": [7, 8, 12], "probabl": [11, 14], "decim": [], "extra": [], "notch": [], "structural_group_green": 7, "green": 7, "blue": [7, 8, 12], "cov": [], "structural_group_blu": 7, "structural_group_intrus": 7, "intrus": 7, "combin": 7, "frame": 7, "structural_group": [7, 8, 12], "structural_fram": [7, 8, 12], "structuralfram": [7, 8, 12], "geomodel": 7, "geo_model": [7, 8, 12, 17, 18], "create_geomodel": [7, 17], "project_nam": [7, 17], "tutorial_ch1_1_bas": [7, 8, 12], "resolut": [7, 8, 12, 17, 18], "20": [7, 11, 14, 17, 18], "refin": [7, 8, 9, 12, 15, 17, 18, 21, 23], "6": [7, 8, 12, 17, 18], "number": [11, 13, 14, 18], "octre": [7, 8], "open_dataset": [7, 8, 12, 18], "set_topography_from_arrai": 7, "xyz_vertic": 7, "regular": [7, 8, 12, 17, 18], "grid_modul": [7, 17], "0x7fd4ee17b280": [], "geometri": 7, "often": [13, 19, 21, 23], "fit": [11, 13, 14], "perfectli": [], "order": [], "account": 7, "allow": [19, 21, 23], "small": [7, 11, 14], "random": [7, 11, 14], "nois": [7, 11, 14], "done": [11, 14], "diagon": [], "covari": [11, 14], "matrix": [11, 14], "respect": [], "measur": [7, 8, 11, 12, 13, 14, 19, 21, 23], "invert": [11, 14], "higher": [], "wors": [], "mean": [11, 14, 18], "increas": [], "too": [], "low": [], "overfit": [7, 11, 14], "decreas": [], "minim": [11, 14], "trigger_optimize_nugget": 7, "apply_optimized_nugget": 7, "interpolation_opt": [7, 8, 12, 17, 18], "kernel_opt": [7, 8, 12, 18], "c_o": [7, 8, 12, 18], "plot_evalu": 7, "plot_result": 7, "loaded_nuggets_r": 7, "temp": 7, "nuggets_r": 7, "npy": [7, 11, 14], "loaded_nuggets_green": 7, "nuggets_green": 7, "loaded_nuggets_blu": 7, "nuggets_blu": 7, "modify_surface_point": [7, 8], "slice": [7, 8, 11, 14], "elements_nam": 7, "get_group_by_nam": 7, "ob": [17, 18], "involv": 7, "interpol": [7, 8, 12, 18], "mesh_extract": [7, 8, 12, 17, 18], "compute_condition_numb": [7, 8, 12, 18], "cubic": [7, 8, 12], "updat": [7, 17, 24], "color": [7, 8, 12, 17, 18], "get_element_by_nam": 7, "kkr": [7, 8, 12], "a46283": [7, 8, 12], "lgr": [7, 8, 12], "6394a4": [7, 8, 12], "wal": [7, 8, 12], "72a473": [7, 8, 12], "abl": [7, 8, 12], "1d3943": [7, 8, 12], "basement_color": 7, "8b4220": 7, "update_transform": 7, "compute_model": [7, 8, 12, 17, 18], "engine_config": [7, 8, 12, 17, 18], "gempyengineconfig": [7, 8, 12, 17, 18], "backend": [7, 8, 12, 17, 18], "availablebackend": [7, 8, 12, 17, 18], "pytorch": [7, 8, 12, 17, 18], "dtype": [7, 8, 12, 17, 18], "float64": [7, 12, 17, 18], "recent": [], "call": 13, "last": [], "02_structural_model": [], "01_model_1_gempy_step_by_step": [7, 10], "199": [17, 18], "api": [8, 12, 18], "compute_api": [], "48": [12, 17, 18], "gempy_model": [12, 17, 18], "solut": [7, 8, 17, 18, 23], "model_api": [], "31": [11, 17, 18], "output": 12, "list": [8, 11, 14, 18], "octreelevel": [], "interpolate_n_octree_level": [], "interp_singl": [], "interp_featur": [], "next_octre": [], "interpolate_on_octre": [], "interpolation_input": [17, 18], "data_descriptor": [17, 18], "_octree_gener": [], "28": [17, 18], "output_0_cent": [], "interpoutput": [], "interpolate_all_field": [], "temp_interpolation_input": [], "data_shap": [], "center": [12, 18], "_multi_scalar_field_manag": [], "29": [17, 18], "all_scalar_fields_output": [], "scalarfieldoutput": [], "_interpolate_stack": [], "85": [17, 18], "interpolate_featur": [], "_interp_single_featur": [], "39": [14, 17, 18], "weight": [], "exported_field": [], "interpolate_scalar_field": [], "solver_input": [], "stack_numb": [], "_interp_scalar_field": [], "52": [17, 18], "_solve_and_store_weight": [], "weights_kei": [], "weights_hash": [], "69": [17, 18], "_solve_interpol": [], "81": [11, 14, 17, 18], "solver_interfac": [], "kernel_reduct": [], "solver": [8, 11, 12, 13, 14], "63": [17, 18], "x0": [11, 14], "backendtensor": [12, 17, 18], "backend_tensor": [12, 17, 18], "179": [17, 18], "_arrai": [], "torch": [17, 18], "tensor": [12, 15, 16, 17, 18, 21, 23], "array_lik": [], "runtimeerror": [], "could": [17, 18], "infer": [17, 18], "nonetyp": [], "both": [7, 11, 14, 19, 21, 23], "2d": [7, 8, 12, 17, 18], "plot_2d": [7, 8, 12, 17, 18], "show_scalar": [7, 8], "gempy_vista": [7, 8, 12, 18], "plot_3d": [7, 8, 12, 18], "kwargs_plot_structured_grid": [7, 8, 12, 18], "end_tim": [7, 8, 12], "execution_tim": [7, 8, 12], "sphinx_gallery_thumbnail_numb": [7, 8, 12, 17, 18], "281": 18, "geolog": [8, 9, 10, 12, 15, 19, 20, 21, 23], "02_model_1_gempi": [8, 10], "66": [17, 18], "model_1_build": [8, 12, 18], "initialize_geo_model": [8, 12, 18], "directori": [8, 18], "load_nugget": [8, 12, 18], "surfac": [7, 8, 11, 14, 17], "surface_point": [8, 17], "130": [8, 17, 18], "comput": [7, 8, 11, 12, 14, 17, 18], "before_compute_tim": 8, "float32": 8, "calcul": [8, 12, 18], "prep_tim": 8, "compute_tim": 8, "prepar": [8, 9, 12, 17, 18, 21, 23], "933": [12, 18], "delv": [9, 19, 21, 23], "world": [9, 15, 21, 23], "har": [9, 21, 23], "capabl": [9, 21, 23], "partner": [9, 21, 23], "within": [9, 13, 21, 23, 24], "consortium": [9, 21, 23], "intricaci": [9, 21, 23], "construct": [9, 10, 12, 18, 21, 23], "detail": [9, 11, 13, 14, 15, 17, 18, 21, 23], "through": [9, 11, 14, 15, 19, 21, 23], "comprehens": [8, 9, 12, 15, 19, 21, 23], "three": [9, 11, 14, 21, 23], "dimension": [9, 21, 23], "represent": [9, 12, 17, 21, 23], "new": [9, 11, 14, 17, 21, 23, 24], "cater": [9, 21, 23], "expertis": [9, 21, 23], "domain": [], "segment": [], "critic": 12, "role": [], "subsequ": 24, "analys": [], "delin": [], "layer": [8, 17], "experi": [], "work": 24, "real": [9, 11, 14, 21, 23], "appli": [7, 13, 15, 19, 21, 22, 23], "techniqu": [13, 15, 19, 21, 23], "best": 13, "goal": [9, 21, 23], "empow": [9, 21, 23], "knowledg": [9, 19, 21, 23], "just": [9, 11, 14, 21, 23], "extract": [9, 11, 12, 13, 14, 21, 23], "meaning": [9, 15, 21, 23], "them": [9, 21, 23], "These": [9, 11, 12, 14, 15, 17, 18, 19, 21, 23], "bridg": [9, 21, 23], "gap": [9, 21, 23], "between": [7, 9, 12, 13, 17, 21, 23], "decis": [9, 21, 23], "field": [9, 11, 12, 14, 18, 21, 23], "helper": [9, 10, 21, 23], "214": 17, "examples_02_structural_model": 10, "03_forward_engin": [], "02_model_1_gempy_fw_grav": [12, 16], "128": [17, 18], "sol": [12, 18], "bayesian_help": [12, 18], "calculate_scale_shift": [12, 18], "extend_box": [12, 18], "track": 7, "accumulated_roi": [], "file_path": [11, 12, 14], "setup": [11, 12, 14, 18], "csv": [12, 17], "filepath_or_buff": 12, "filter": 12, "565000": 12, "up": [8, 12, 24], "plot2d": [7, 8, 12, 18], "show_topographi": [12, 17, 18], "section_nam": [12, 18], "zorder": [12, 17, 18], "10000": [12, 18], "fig": [11, 12, 14, 17], "imag": [12, 18], "device_loc": [12, 17], "z": [11, 12, 14, 17], "stack": [], "set_centered_grid": 12, "15": [11, 12, 13, 14, 17, 18], "5000": 12, "change_backend_gempi": [12, 17, 18], "engine_backend": [12, 17, 18], "gradient": 12, "gravity_gradi": 12, "calculate_gravity_gradi": 12, "centered_grid": 12, "densiti": [11, 12, 14, 18], "densities_tensor": 12, "61": [12, 17, 18], "92": [12, 13, 17, 18], "requires_grad": 12, "input": [11, 12, 14, 18, 21, 23], "geophysics_input": [12, 17, 18], "geophysicsinput": [12, 18], "tz": [12, 18], "grav": [11, 12, 14, 18], "backward": 12, "grad": 12, "scale": [8, 11, 12, 14], "shift": 12, "b": [12, 18], "detach": [12, 17, 18], "adapt": [12, 13, 18, 23], "adapted_grav": 12, "diff": 12, "symmetr": [11, 12, 14], "vmin": 12, "vmax": 12, "max_diff": 12, "max": [11, 12, 14], "ab": 12, "maximum": [11, 12, 14], "absolut": 12, "sc": [12, 18], "bwr": 12, "mgal": [12, 18], "002": [], "embark": [], "journei": [21, 23], "realm": [19, 21, 23], "simul": [11, 14, 15, 21, 23], "craft": [15, 21, 23], "like": [15, 21, 23], "simpeg": [11, 14, 15, 21, 23], "beginn": [15, 21, 23], "classic": [15, 21, 23], "dive": [15, 21, 23], "turn": [15, 17, 21, 23], "current": [15, 17, 18, 21, 23], "As": [13, 15, 21, 23], "explor": [13, 15, 19, 21], "principl": [15, 21, 23], "gradiometri": [15, 16, 21, 23], "deriv": [11, 14, 15, 17, 21, 23], "pack": [], "theori": [], "theoret": [], "conduct": [], "sophist": [], "grasp": [21, 23], "deeper": [], "03": [10, 11, 12, 14, 17, 18], "examples_03_forward_engin": 16, "forward": [11, 14, 15, 16, 21, 23], "distribut": [11, 12, 14, 17, 18], "dist": [17, 18], "nut": [17, 18], "autoguid": 17, "init_to_mean": 17, "arviz": [17, 18], "az": [17, 18], "gempy_prob": [17, 18], "plot_posterior": [17, 18], "default_r": [17, 18], "default_blu": [17, 18], "data_path": 17, "abspath": 17, "plot_geo_setting_wel": 17, "along": 17, "locat": [11, 14, 17], "devic": 17, "6e3": 17, "3700": 17, "well_1": 17, "41e3": 17, "well_2": 17, "p2d": 17, "legend": 17, "marker": 17, "3e3": 17, "400": [17, 18], "71a4b3": 17, "9e3": 17, "da8886": 17, "vertic": 17, "vline": 17, "5e3": 17, "linewidth": 17, "grai": 17, "spatial": [11, 12, 14, 17], "orient": [11, 14, 17], "12000": 17, "500": [11, 14, 17], "4000": 17, "importer_help": 17, "importerhelp": 17, "path_to_orient": 17, "layers_orient": 17, "path_to_surface_point": 17, "layers_surface_point": 17, "determin": [11, 14, 17], "uni_degre": [8, 12, 17], "sigmoid_slop": [8, 12, 17], "1100": [17, 18], "space": [17, 21, 23], "where": [8, 11, 14, 17, 24], "evalu": [11, 14, 17], "x_loc": 17, "6000": 17, "y_loc": 17, "z_loc": 17, "linspac": [13, 17], "xyz_coord": 17, "set_custom_grid": 17, "grid_typ": 17, "customgrid": 17, "0x7fd4e3c53be0": 17, "befor": 17, "correctli": [12, 17], "size": [11, 14, 17, 18], "cg": 17, "iter": [8, 12, 17, 18], "introduc": [11, 14, 17], "approach": [17, 19, 21, 23], "program": [17, 19, 21, 23], "languag": [17, 23], "uncertainti": [17, 19, 21, 23], "quantif": 17, "sp_coords_copi": 17, "sp_coord": 17, "copi": 17, "aspect": [17, 18], "top": 17, "thick": 17, "y_obs_list": [17, 18], "prior_mean": [17, 18], "mu_top": 17, "r": [11, 14, 17, 18], "mu_": [17, 18], "normal": [11, 14, 17, 18], "index_put": [17, 18], "input_data_descriptor": [17, 18], "simulated_wel": 17, "octrees_output": 17, "last_output_cent": 17, "custom_grid_valu": 17, "sum": [11, 14, 17], "determinist": [17, 18], "y_thick": 17, "y_": 17, "50": [13, 17, 18], "assumpt": 17, "200": 17, "210": [17, 18], "190": [17, 18], "num_sampl": [17, 18], "from_pyro": [17, 18], "plot_trac": [17, 18], "residu": [8, 12, 17, 18], "norm": [8, 12, 17, 18], "4089725943911736e": 17, "05": [8, 12, 17, 18], "317415998961143e": 17, "06": [17, 18], "468542842347646e": 17, "07": [8, 12, 17, 18], "9": [17, 18], "099129314637124e": 17, "667314595389484e": 17, "4855313948945798e": 17, "579229931795512e": 17, "0002460598490319718": 17, "7170726870053344e": 17, "1329508670549636e": 17, "00036439299934579183": 17, "00048370251094574413": 17, "0623705901568265e": 17, "863468575162967e": 17, "0331479933604487e": 17, "049956003777276e": 17, "0003624536197216722": 17, "0006498274068455044": 17, "00018471277567577628": 17, "00040254824513041377": 17, "0013596079008816946": 17, "648709638209521e": 17, "735022324916065e": 17, "0001824839154379149": 17, "0029643142652577897": 17, "423194596482126e": 17, "0005033355317047751": 17, "466862162591784e": 17, "100952832656466e": 17, "186807534557172e": 17, "225228101225706e": 17, "00012718195369019127": 17, "6491035955590957e": 17, "977804546947701e": 17, "816675195364853e": 17, "4168551204555964e": 17, "548664905916464e": 17, "0022503253931455245": 17, "0036943902745817376": 17, "690035021310801e": 17, "142135244993335e": 17, "5356345481439774e": 17, "538530566253355e": 17, "09": [17, 18], "4309134085127624e": 17, "948481493782957e": 17, "00014888343414485883": 17, "704095188284034e": 17, "00011895489197375922": 17, "789264939712866e": 17, "4900200944495394e": 17, "218010200331566e": 17, "0887753762451048e": 17, "184": [17, 18], "numbadeprecationwarn": [17, 18], "nopython": [17, 18], "keyword": [17, 18], "wa": [17, 18], "suppli": [17, 18], "numba": [17, 18], "jit": [17, 18], "decor": [17, 18], "implicit": [17, 18], "default": [8, 11, 12, 14, 17, 18, 24], "59": [11, 14, 17, 18], "see": [11, 14, 17, 18], "http": [14, 17, 18, 23], "readthedoc": [14, 17, 18], "io": [14, 17, 18], "en": [14, 17, 18], "stabl": [11, 14, 17, 18], "refer": [11, 14, 17, 18], "html": [14, 17, 18], "mode": [17, 18], "fall": [17, 18], "back": [17, 18], "behaviour": [17, 18], "numba_fn": [17, 18], "self": [17, 18], "kwarg": [17, 18], "markov": [17, 18], "chain": [17, 18], "mont": [17, 18], "carlo": [17, 18], "sampler": 17, "algorithm": [17, 18], "give": 17, "paramet": [13, 17, 18], "after": [17, 24], "magic": 17, "sauc": 17, "default_pykeop": 17, "_change_backend": 17, "pykeops_en": 17, "primit": [17, 18], "enable_valid": [17, 18], "is_valid": [17, 18], "nuts_kernel": [17, 18], "step_siz": 17, "0085": 17, "adapt_step_s": 17, "target_accept_prob": 17, "max_tree_depth": 17, "init_strategi": 17, "warmup_step": [17, 18], "warmup": [17, 18], "250": 17, "12it": [17, 18], "22e": [11, 14, 17, 18], "acc": [17, 18], "prob": [17, 18], "869": [17, 18], "90it": [17, 18], "55e": [14, 17, 18], "472": [17, 18], "24it": [17, 18], "14e": [14, 17, 18], "624": [17, 18], "77it": [17, 18], "46e": [17, 18], "717": [17, 18], "16it": [17, 18], "47e": [17, 18], "727": [17, 18], "73it": [17, 18], "36e": [11, 17, 18], "754": [17, 18], "81it": [17, 18], "63e": [11, 17, 18], "776": [12, 17, 18], "87it": [17, 18], "41e": [11, 14, 17, 18], "795": [17, 18], "04": [11, 14, 17, 18, 20], "31it": [17, 18], "38e": [11, 17, 18], "800": [17, 18], "08it": [17, 18], "13e": [11, 14, 17, 18], "814": 17, "16": [11, 12, 13, 14, 17, 18], "41it": [17, 18], "56e": [17, 18], "825": [17, 18], "17": [17, 18], "06it": [13, 17, 18], "01e": [14, 17, 18], "819": [17, 18], "18": [11, 13, 14, 17, 18], "26it": [17, 18], "53e": [11, 14, 17, 18], "828": [17, 18], "91it": [17, 18], "68e": [11, 14, 17, 18], "21": [17, 18], "69it": [17, 18], "44e": [11, 14, 17, 18], "836": [17, 18], "22": [11, 13, 14, 17, 18], "65it": [17, 18], "43e": [14, 17, 18], "23": [17, 18], "48it": [17, 18], "42e": [14, 17, 18], "843": [17, 18], "24": [13, 17, 18], "35it": [17, 18], "77e": [11, 17, 18], "25": [11, 14, 17, 18], "25e": [11, 14, 17, 18], "850": [17, 18], "27": [17, 18], "89it": [17, 18], "848": [17, 18], "16e": [17, 18], "858": [17, 18], "21it": [17, 18], "17e": [14, 17, 18], "856": [17, 18], "13": [17, 18], "33": [12, 17, 18], "11it": [17, 18], "864": [17, 18], "35": [14, 17, 18], "52it": [17, 18], "59e": [17, 18], "842": [17, 18], "36": [17, 18], "15e": [11, 17, 18], "846": [17, 18], "37": [11, 14, 17, 18], "67it": [17, 18], "90e": [11, 14, 17, 18], "61e": 17, "41": [17, 18], "51it": [17, 18], "835": [17, 18], "47it": [17, 18], "32e": [11, 14, 17, 18], "43": [17, 18], "49e": [14, 17, 18], "840": [12, 17], "44": [17, 18], "01it": [17, 18], "81e": 17, "19": [17, 18], "47": [17, 18], "97it": [17, 18], "76e": [11, 14, 17], "796": [17, 18], "49": [17, 18], "58it": [17, 18], "33e": 17, "781": [17, 18], "29it": [17, 18], "786": [17, 18], "51": [17, 18], "000": [10, 11, 14, 16, 17, 18, 20], "45": [17, 18], "53": [14, 17, 18], "54": [17, 18], "55": [11, 14, 17, 18], "56": [11, 17, 18], "57": [17, 18], "58": [17, 18], "60": [11, 14, 17, 18], "30": [12, 17, 18], "62": [17, 18], "32": [13, 17, 18], "27it": [17, 18], "26": [11, 17, 18, 23], "64": [17, 18], "23it": [17, 18], "65": [17, 18], "38it": [17, 18], "50it": [17, 18], "67": [17, 18], "34": [11, 13, 17, 18], "40it": [17, 18], "998": [17, 18], "68": [17, 18], "17it": [17, 18], "70": [17, 18], "71": [17, 18], "72": [17, 18], "40": [17, 18], "997": [17, 18], "73": [17, 18], "996": [17, 18], "74": [17, 18], "75": [17, 18], "76": [17, 18], "77": [17, 18], "995": [17, 18], "78": [17, 18], "79": [17, 18], "80": [17, 18], "82": [17, 18], "994": [17, 18], "83": [17, 18], "84": [17, 18], "15it": [17, 18], "86": [17, 18], "88": [17, 18], "61it": [17, 18], "89": [17, 18], "60it": [17, 18], "90": [17, 18], "91": [17, 18], "93": [12, 17, 18], "38": [17, 18], "94": [17, 18], "95": [17, 18], "993": 17, "96": [17, 18], "97": [12, 17, 18], "98": [17, 18], "99": [17, 18], "101": [17, 18], "102": [8, 17], "103": [17, 18], "10it": [17, 18], "992": [17, 18], "104": [12, 17, 18], "14it": [17, 18], "991": [17, 18], "105": [17, 18], "106": [17, 18], "107": [14, 17, 18], "108": 17, "109": [17, 18], "110": [17, 18], "111": [17, 18], "112": 17, "113": [17, 18], "46": [11, 14, 17, 18, 20], "114": 17, "115": [17, 18], "116": 17, "117": [17, 18], "118": [17, 18], "119": [17, 18], "120": [11, 14, 17], "18it": [17, 18], "990": 17, "121": [17, 18], "122": 17, "989": [17, 18], "123": [17, 18], "124": [17, 18], "125": [11, 14, 17, 18], "25it": [17, 18], "126": [17, 18], "54it": [17, 18], "988": 17, "127": 17, "96it": [17, 18], "129": [17, 18], "986": 17, "131": [17, 18], "985": [17, 18], "132": [17, 18], "983": 17, "133": [17, 18], "05it": [17, 18], "134": [17, 18], "135": 17, "136": [17, 18], "137": [11, 14, 17, 18], "138": 17, "139": [17, 18], "140": 17, "984": [17, 18], "141": [17, 18], "142": 17, "143": [11, 14, 17, 18], "144": 17, "145": [17, 18], "146": [17, 18], "22it": [17, 18], "147": 17, "44it": [17, 18], "148": [11, 14, 17, 18], "68it": [17, 18], "149": [17, 18], "64it": [17, 18], "150": [11, 14, 17, 18], "151": [14, 17, 18], "152": 17, "153": [11, 17, 18], "154": 17, "155": [17, 18], "156": [11, 14, 17], "157": [17, 18], "158": [17, 18], "159": [17, 18], "161": [17, 18], "162": [17, 18], "163": [17, 18], "164": 17, "165": [17, 18], "07it": [17, 18], "166": 17, "167": [17, 18], "168": [11, 14, 17], "169": [17, 18], "170": [17, 18], "09it": [17, 18], "171": [17, 18], "172": 17, "173": [17, 18], "174": 17, "175": [17, 18], "176": [17, 18], "177": [17, 18], "178": [17, 18], "180": [13, 17], "181": [12, 17, 18], "182": [17, 18], "183": [7, 8, 12, 17, 18], "185": 17, "186": [17, 18], "187": 17, "188": [17, 18], "189": 17, "191": [17, 18], "04it": [17, 18], "192": [17, 18], "193": [8, 17, 18], "194": [17, 18], "195": 17, "196": [17, 18], "197": [17, 18], "198": [12, 17, 18], "201": [17, 18], "202": [17, 18], "203": [17, 18], "204": [17, 18], "205": 17, "206": [17, 18], "207": [17, 18], "208": [17, 18], "209": 17, "211": [17, 18], "75it": [17, 18], "977": 17, "212": [11, 14, 17], "975": [17, 18], "213": [17, 18], "976": [17, 18], "215": [17, 18], "216": [17, 18], "87": [17, 18], "217": [12, 17, 18], "218": 17, "219": [17, 18], "220": [17, 18], "221": [17, 18], "222": 17, "223": [17, 18], "224": [17, 18], "225": [17, 18], "227": [17, 18], "228": 17, "33it": [17, 18], "229": [17, 18], "230": [8, 17], "231": [17, 18], "232": [12, 17, 18], "233": [17, 18], "234": 17, "235": [17, 18], "236": 17, "978": [17, 18], "237": [17, 18], "238": 17, "239": [17, 18], "240": [17, 18], "241": [17, 18], "242": 17, "243": [17, 18], "244": 17, "03it": [17, 18], "245": [17, 18], "246": 17, "247": [17, 18], "979": [17, 18], "248": 17, "249": [17, 18], "19it": [17, 18], "00it": [17, 18], "02it": [17, 18], "obtain": 17, "perform": [7, 12, 13, 17, 18, 24], "valid": [13, 17], "posterior_sampl": [17, 18], "get_sampl": [17, 18], "posterior_predict": [17, 18], "io_pyro": [17, 18], "trace": [17, 18], "log_likelihood": [17, 18], "omit": [17, 18], "compar": [12, 17], "assess": [7, 17], "plot_dens": [17, 18], "prior_predict": [17, 18], "shade": [17, 18], "var_nam": [17, 18], "data_label": [17, 18], "687": [17, 18], "01_thickness_problem_gempi": [17, 20], "bayesian": [18, 19, 21], "04_probabilistic_model": [], "02_model_1_bayesian": [18, 20], "pyro": [18, 19, 21, 22, 23], "mcmc": 18, "predict": [15, 16, 18, 21, 23], "gaussian_kernel": 18, "setup_geophys": 18, "region": [11, 14], "env_path": 18, "adapted_observed_grav": 18, "hyperparamet": [11, 14, 18], "length_scale_prior": 18, "1_000": 18, "variance_prior": 18, "covariance_matrix": 18, "prior_tensor": 18, "prior": 18, "mu_dens": 18, "fn": 18, "indic": [11, 14, 18], "simulated_geophys": 18, "multivariatenorm": 18, "view": [8, 12, 18, 23], "optim": [11, 12, 13, 14, 18], "number_octree_level": [8, 12, 18], "set_inact": 18, "1000": [11, 13, 14, 18], "300": [12, 18], "posterior": 18, "hdi_prob": 18, "006": [], "dynam": [19, 21, 23], "uncertain": [19, 21, 23], "emerg": [19, 21, 23], "statist": [19, 21, 23], "inher": [19, 21, 23], "embrac": [19, 21, 23], "gain": [19, 21, 23], "quantifi": [13, 19, 21, 23], "incorpor": [7, 19, 21, 23], "aleator": [19, 21, 23], "which": [11, 13, 14, 19, 21, 23], "framework": [7, 19, 21, 23], "encod": [19, 21, 23], "robust": [19, 21, 23], "wai": [19, 21, 23], "realism": [7, 19, 21, 23], "reliabl": [19, 21, 23], "invers": [12, 16, 19, 20], "constraint": [11, 14, 19, 21, 23], "scenario": [], "onli": [21, 23], "move": [], "manag": 13, "fascin": [], "challeng": [], "overcom": [], "valuabl": [], "693": 18, "examples_04_probabilistic_model": 20, "probabilist": [11, 14, 20], "showcas": [21, 23], "divers": [21, 23], "platform": [21, 23], "achiev": [21, 23], "categor": [13, 21, 23], "distinct": [7, 21, 23], "methodologi": [21, 23], "nuanc": [21, 23], "while": [21, 23], "featur": [8, 13, 21], "exhaust": [21, 23], "overview": 21, "potenti": [11, 14, 21, 23], "mai": [21, 23], "requir": [13, 21], "uniqu": [21, 23], "codebas": [21, 23], "uncov": [21, 23], "live": [21, 23], "contribut": [11, 14, 21, 23], "suggest": [21, 23], "novel": [21, 23], "collabor": [21, 23], "stai": [21, 23], "latest": [14, 21, 23], "reson": [21, 23], "discoveri": [21, 23], "depth": [11, 14, 21, 23], "find": [22, 23], "collect": [22, 23], "basic": [22, 23, 25], "simpl": [13, 22, 23], "releas": 23, "dev16": 23, "g525c9e2": 23, "date": 23, "decemb": [], "2023": [], "github": [23, 24], "com": 23, "materi": 23, "suit": 23, "serv": 23, "central": 23, "hub": 23, "access": 23, "softwar": 23, "toolset": 23, "maintain": 23, "member": 23, "wide": 23, "typic": 23, "workflow": [13, 23], "extens": 23, "accommod": 23, "varieti": 23, "scientif": [11, 14, 23], "inquiri": 23, "expand": [11, 14, 23], "meet": 23, "opportun": 23, "feedback": 23, "familiar": 23, "earli": 23, "dai": 23, "thing": 23, "orphan": 23, "There": 23, "mani": [13, 23], "depend": [11, 14, 23], "want": [11, 14, 23], "requirements_opt": 23, "txt": [11, 14, 23], "git": 23, "terranigma": 23, "egg": 23, "pyvista": 23, "discret": [11, 14, 23], "receiv": [11, 14, 23], "fund": 23, "european": 23, "union": 23, "horizon": 23, "europ": 23, "innov": 23, "programm": 23, "grant": 23, "agreement": 23, "101058483": 23, "opinion": 23, "express": 23, "howev": 23, "those": 23, "author": [13, 23], "necessarili": 23, "reflect": 23, "todo": [], "icon": [], "note": [11, 13, 14, 24], "changelog": 24, "rst": 24, "abov": [8, 11, 14, 24], "deploi": 24, "version": 24, "pypi": 24, "pick": 24, "conda": 24, "forg": 24, "everyth": 24, "fine": [11, 14, 24], "avail": [11, 13, 14, 24], "pass": [7, 8, 12, 18, 24], "hour": 24, "due": [11, 14, 24], "setuptools_scm": 24, "wheel": 24, "folder": 24, "exclud": 24, "manifest": 24, "enh": 24, "bug": 24, "doc": [11, 14, 24], "tst": 24, "bld": 24, "build": [12, 24], "perf": 24, "cln": 24, "cleanup": 24, "0x7fe1f46633a0": [], "overwritten": [7, 8, 12, 18], "dualcontouringmesh": [7, 8], "visualization_2d": [7, 8], "0x7fe1f4663970": [], "596560001373291": [], "755": 18, "_interpolation_opt": [8, 12], "interpolationopt": [8, 12], "i_r": [8, 12], "gi_r": [8, 12], "number_dimens": [8, 12], "kernelfunct": [8, 12], "base_funct": [8, 12], "cubic_funct": [8, 12], "0x7fe1d015bd90": [], "derivative_div_r": [8, 12], "cubic_function_p_div_r": [8, 12], "0x7fe1d015be20": [], "second_deriv": [8, 12], "cubic_function_a": [8, 12], "0x7fe1d015beb0": [], "consume_sq_dist": [8, 12], "kernel_solv": [8, 12], "optimizing_condition_numb": [8, 12], "condition_numb": [8, 12], "current_octree_level": [8, 12], "compute_scalar_gradi": [8, 12], "mesh_extraction_masking_opt": [8, 12], "meshextractionmaskingopt": [8, 12], "intersect": [8, 12], "mesh_extraction_f": [8, 12], "debug": [8, 12], "debug_water_tight": [8, 12], "50000": [8, 12], "_number_octree_levels_surfac": [8, 12], "_model_nam": [8, 12], "0x7fe0cf9c6530": [], "meta": [8, 12], "geomodelmeta": [8, 12], "creation_d": [8, 12], "last_modification_d": [8, 12], "owner": [8, 12], "hbl": [8, 12], "ffbe00": [8, 12], "is_act": [8, 12], "fault_rel": [8, 12], "_is_default_transform": [8, 12], "562422": [8, 12], "65655014": [8, 12], "647329": [8, 12], "31794742": [8, 12], "823": [8, 12, 18], "58712106": [8, 12], "rotat": [8, 12], "55363115e": [8, 12], "197676908759604e": [], "825774955312227e": [], "8888685703277588": [], "0654215812683105": [], "9542901515960693": [], "274": [], "029": [], "0x7fe0c2018e50": [], "4502103328704834": [], "215642538208114e": [], "076543541718083e": [], "8962e": 12, "9249e": 12, "1377e": 12, "1251e": 12, "3353e": 12, "5283e": 12, "6498572493478424": [], "437": [12, 18], "0795110136551": [], "_plot_2d_sections_api": [12, 18], "contact": [12, 13, 18], "yet": [12, 18], "scalar": [12, 18], "853": 18, "nn": [], "1518": [], "_wrapped_call_impl": [], "_call_impl": [], "1527": [], "forward_cal": [], "273": [12, 18], "_predict": [], "max_plate_nest": [], "_guess_max_plate_nest": [], "model_arg": [], "model_kwarg": [], "model_trac": [], "poutin": [], "get_trac": [], "trace_messeng": [], "__call__": [], "ret": [], "_contextlib": [], "decorate_context": [], "messeng": [], "_context_wrap": [], "nameerror": [], "822": 13, "0x7fcfc3377d90": [], "0x7fcfc3377e20": [], "0x7fcfc3377eb0": [], "0x7fcf618ed5a0": [], "structuralel": 8, "fault": 8, "blueredblu": 8, "6587724849823644e": [], "0014190617948770523": [], "2000": [], "0002832675527315587": [], "3000": [], "444144779990893e": [], "3959": [], "2062984562107886e": [], "0x7fcf62a2bc70": [], "2148756980895996": [], "669999599456787": [], "884875297546387": [], "052": [], "0133054092655226e": [], "197558655129011e": [], "557": 18, "221860171848252e": [], "stat": 18, "density_util": 18, "487": 18, "appear": 18, "singl": 18, "finit": 18, "1300": 18, "80e": 18, "00e": [11, 14, 18], "333": 18, "66it": 18, "34e": 18, "600": 18, "93e": [11, 14, 18], "714": 18, "83e": 18, "667": 18, "99it": 18, "99e": 18, "29e": 18, "744": 18, "07e": [11, 14, 18], "712": 18, "89e": [14, 18], "730": 18, "35e": 18, "745": 18, "65e": 18, "753": 18, "40e": [11, 14, 18], "741": 18, "85it": 18, "09e": [], "39e": 14, "765": 18, "52e": [11, 18], "742": 18, "37it": 18, "751": 18, "88e": [11, 18], "761": 18, "74e": 18, "750": 18, "82it": 18, "78e": 18, "758": 18, "764": 18, "777": 18, "69e": [14, 18], "766": 18, "73e": 18, "773": 18, "763": [], "775": 18, "762": 18, "767": 18, "13it": 18, "88it": 18, "60e": 18, "782": 18, "92e": [11, 18], "770": 18, "56it": 18, "45e": [14, 18], "11e": [14, 18], "45it": 18, "57it": 18, "779": 18, "82e": [11, 14, 18], "772": 18, "53it": 18, "86e": [11, 18], "774": 18, "79it": 18, "64e": [], "12e": [11, 18], "84it": 18, "778": 18, "30e": 18, "75e": [14, 18], "780": 18, "783": 18, "62e": 18, "37e": [11, 14, 18], "97e": 18, "93it": 18, "784": 18, "92it": 18, "55it": 18, "70it": 18, "10e": 18, "23e": [11, 18], "785": 18, "788": 18, "50e": [11, 18], "04e": [14, 18], "769": 18, "18e": 18, "80it": 18, "85e": 18, "30it": 18, "71it": 18, "34it": 18, "72e": 18, "06e": [11, 18], "31e": 18, "62it": 18, "05e": 18, "20it": 18, "79e": 14, "57e": 18, "94e": [14, 18], "98e": [14, 18], "48e": [11, 14, 18], "78it": 18, "83it": 18, "67e": 18, "58e": 18, "86it": 18, "02e": [11, 18], "98it": 18, "32it": 18, "63it": 18, "87e": [], "08e": [11, 18], "20e": 18, "226": 18, "21e": [11, 14, 18], "28e": [], "27e": 18, "51e": 18, "49it": 18, "251": 18, "71e": 18, "252": 18, "42it": 18, "84e": [14, 18], "253": 18, "254": 18, "256": 18, "95it": 18, "259": [], "260": 18, "261": 18, "262": 18, "26e": [14, 18], "264": 18, "265": [], "267": [], "268": 18, "269": 18, "76it": 18, "03e": [11, 18], "270": 18, "271": 18, "46it": 18, "275": 18, "277": 18, "278": 18, "279": [], "282": 18, "284": [], "286": 18, "24e": [11, 14, 18], "287": 18, "288": 18, "289": [], "290": 18, "39it": 18, "292": 18, "294": [], "295": 18, "296": [], "298": 18, "59it": 18, "299": 18, "302": [], "304": 18, "948": [12, 18], "306": [11, 18], "964": [], "307": 18, "934": 18, "308": 18, "936": 18, "309": 18, "907": 18, "310": [], "909": 18, "311": 18, "901": [], "312": 18, "902": 18, "313": 18, "314": 18, "916": [12, 18], "315": 18, "915": 18, "317": [], "925": [12, 18], "318": 18, "927": 18, "320": 18, "928": 18, "322": [], "323": 18, "325": 18, "327": 18, "328": 18, "330": 18, "938": 18, "942": 18, "944": [], "334": 18, "931": 18, "336": 18, "920": 18, "338": 18, "919": [], "339": 18, "922": [7, 10, 18], "343": [], "923": 18, "345": [], "921": [], "346": 18, "348": 18, "350": 18, "914": 18, "352": 18, "910": 18, "354": 18, "355": 18, "356": 18, "912": 18, "357": 18, "913": [], "358": 18, "359": 18, "911": [], "360": [12, 18], "361": [], "43it": 18, "362": 18, "364": [], "365": 18, "366": [], "368": [], "369": 18, "371": 18, "917": 18, "372": 18, "918": 18, "373": 18, "374": 18, "376": [], "378": 18, "380": [], "381": [14, 18], "382": [12, 18], "384": 18, "385": 18, "386": 18, "388": 18, "389": 18, "390": 18, "74it": 18, "391": [], "393": 18, "395": 18, "396": 18, "397": 18, "399": 18, "401": 18, "72it": 18, "402": 18, "403": 18, "405": [12, 18], "406": [], "407": 18, "408": 18, "410": 18, "94it": 18, "411": 18, "412": [], "413": 18, "414": 18, "415": 18, "417": [], "418": 18, "419": 18, "421": 18, "422": [], "423": 18, "424": 18, "425": [], "427": [], "429": [], "430": 18, "431": [], "432": 18, "433": 18, "434": 18, "435": [12, 18], "436": 18, "439": 18, "440": 18, "441": 18, "443": [12, 18], "444": [18, 20], "445": 18, "446": 18, "448": 18, "450": [13, 18], "451": 18, "453": 18, "454": 18, "456": 18, "458": 18, "460": 18, "461": [], "462": 18, "464": 18, "465": 18, "466": 18, "467": [], "468": 18, "470": 18, "471": 18, "474": [], "475": 18, "476": [], "477": 18, "478": [], "480": 18, "482": [], "484": [], "486": 18, "489": 18, "491": [], "492": 18, "494": 18, "496": 18, "497": 18, "498": 18, "501": 18, "503": 14, "505": 18, "507": 18, "508": [], "509": 18, "510": [11, 18], "511": 18, "512": 18, "513": 18, "515": [], "516": [12, 18], "517": [], "518": 18, "520": [], "521": 18, "523": 18, "524": 18, "526": 18, "528": [], "530": [], "531": 18, "533": 18, "535": 18, "536": 18, "537": 18, "538": 18, "539": 18, "541": 18, "542": 18, "544": 18, "545": 18, "546": [], "547": 18, "548": 18, "549": [], "550": [11, 14, 18], "552": 18, "553": 18, "554": [], "555": 18, "556": 18, "558": [], "559": 18, "561": [13, 18], "28it": 18, "563": 18, "564": 18, "566": 18, "567": 18, "569": 18, "570": [], "572": [], "573": 18, "574": [], "575": 18, "576": [], "577": 18, "579": 18, "581": [], "582": 18, "583": 18, "584": 18, "585": [12, 18], "586": 18, "587": 18, "589": [], "590": 18, "591": 18, "592": [], "593": 18, "594": 18, "595": 18, "596": [], "597": 18, "598": [], "599": 18, "602": 18, "603": [], "604": 18, "605": [12, 18], "606": [], "607": 18, "608": 18, "610": 18, "612": 18, "613": 18, "614": [13, 18], "615": 18, "617": 18, "618": [], "620": 18, "622": 18, "36it": 18, "623": [], "625": 18, "626": 18, "627": [], "628": 18, "629": 18, "630": [], "632": 18, "634": 18, "635": [], "636": 18, "637": 18, "639": 18, "640": 18, "642": 18, "643": 18, "644": [12, 18], "646": 18, "647": 18, "648": 18, "650": 18, "651": 18, "652": 18, "653": [], "654": 18, "656": 18, "658": [12, 18], "660": [], "661": 18, "662": [13, 18], "663": 18, "665": 18, "668": 18, "669": 18, "671": [], "673": [], "674": 18, "675": [], "676": 18, "677": 18, "679": 18, "681": 18, "683": 18, "685": 18, "686": [13, 18], "688": [], "689": 18, "690": 18, "692": 18, "694": 18, "695": [13, 18], "697": 18, "698": 18, "699": 18, "700": [], "702": 18, "703": 18, "704": 18, "706": 18, "707": 18, "708": 18, "710": [], "715": 18, "716": 18, "718": 18, "719": 18, "720": 18, "721": [12, 18], "722": 18, "723": 18, "724": 18, "725": 18, "726": 18, "729": 18, "732": [], "733": 18, "735": 18, "736": 18, "737": 18, "738": 18, "739": 18, "743": 18, "746": 18, "748": 18, "749": 18, "756": 18, "757": [], "759": 18, "768": 18, "771": 18, "787": 18, "789": 18, "790": 18, "791": [], "793": 18, "797": [], "798": 18, "801": 18, "802": 18, "803": 18, "804": 18, "805": 18, "807": 18, "808": 18, "810": 18, "811": [], "812": 18, "813": 18, "815": 18, "817": 18, "818": [], "820": 18, "821": 18, "824": 18, "827": 18, "829": 18, "830": 18, "831": [], "832": 18, "833": 18, "834": 12, "837": [], "838": 18, "841": 18, "844": 18, "845": 18, "847": [], "851": [], "852": 18, "855": 18, "857": 18, "859": 18, "861": 18, "863": 18, "865": 18, "866": [], "867": 18, "868": 18, "870": [], "871": 18, "872": 18, "873": 18, "874": [], "875": 18, "876": [13, 18], "878": 18, "880": 18, "882": 18, "883": [], "884": 18, "885": 18, "886": 18, "888": 18, "889": 18, "890": 18, "891": [], "892": 18, "894": 18, "895": [], "896": 18, "897": [], "899": [], "900": 18, "903": 18, "904": 18, "906": 18, "908": [], "924": 18, "926": 18, "929": 18, "935": 18, "937": [12, 18], "939": 18, "941": [12, 18], "945": 18, "946": 18, "947": 18, "949": [12, 18], "951": 18, "953": 18, "954": 18, "955": 18, "956": 18, "957": [], "958": 18, "960": 18, "962": 18, "963": 18, "965": 18, "966": 18, "967": 18, "968": 18, "969": [], "971": 18, "973": 18, "974": 18, "980": 18, "982": 18, "999": [], "1002": [], "1003": 18, "1004": [], "1005": 18, "1006": [], "1007": 18, "1008": [], "1009": 18, "1010": [], "1012": [], "1014": [], "1015": 18, "1016": 18, "1017": [], "1018": 18, "1019": 18, "1020": [], "1021": 18, "1022": 18, "1023": 18, "1025": 18, "1027": 18, "1029": 18, "1031": [], "1032": 18, "1033": 18, "1034": 18, "1035": [], "1037": 18, "1038": 18, "1039": [], "1041": 18, "1042": 18, "1044": 18, "1045": 18, "1046": [], "1047": 18, "1048": 18, "1049": 18, "1051": 18, "1053": 18, "1054": 18, "1055": 18, "1056": [], "1057": 18, "1058": [], "1059": 18, "1061": 18, "1063": 18, "1064": 18, "1065": 18, "1066": [], "1067": 18, "1068": [], "1069": 18, "1070": 18, "1071": 18, "1073": 18, "1075": 18, "1076": 18, "1077": 18, "1078": [], "1079": 18, "1081": 18, "1082": [], "1083": 18, "1085": 18, "1086": 18, "1088": 18, "1089": [], "1090": 18, "1091": 18, "1093": [], "1094": 18, "1095": 18, "1097": 18, "1099": 18, "1101": 18, "1103": 18, "1104": 18, "1105": [], "1106": 18, "1107": 18, "1109": 18, "1110": 18, "1111": 18, "1113": 18, "1114": 18, "1115": [], "1116": 18, "1117": 18, "1118": 18, "1120": [], "1122": 18, "1123": 18, "1124": 18, "1125": 18, "1126": 18, "1128": 18, "1129": [], "1130": 18, "1131": 18, "1133": [], "1134": 18, "1135": 18, "1136": 18, "1137": 18, "1138": 18, "1140": 18, "1141": [], "1142": 18, "1144": 18, "1145": 18, "1146": 18, "1147": 18, "1149": [], "1150": 18, "1152": 18, "1153": 18, "1154": 18, "1155": 18, "1157": 18, "1159": 18, "1160": [], "1161": 18, "1162": 18, "1163": 18, "1165": [], "1166": 18, "1167": [], "1168": 18, "1169": [], "1170": 18, "1172": 18, "1173": 18, "1175": [], "1176": 18, "1178": 18, "1179": [], "1180": 18, "1181": [], "1182": 18, "1184": 18, "1185": [], "1186": 18, "1187": [], "1188": 18, "1189": [], "1191": [], "1193": 18, "1194": [], "1195": 18, "1196": 18, "1197": 18, "1199": 18, "1200": [], "1202": 18, "1203": [], "1204": 18, "1205": 18, "1206": 11, "1207": 18, "1208": [], "1209": 18, "1210": 14, "1211": 18, "1213": 18, "1215": [11, 18], "1216": [], "1217": 18, "1218": 18, "1219": 18, "1221": 18, "1222": 14, "1223": 18, "1224": 18, "1225": 18, "1226": [], "1227": 18, "1228": [], "1229": 18, "1230": 18, "1231": 18, "1232": 18, "1233": 18, "1234": [11, 18], "1235": 18, "1236": 18, "1237": [], "1239": [], "1240": 18, "1241": [11, 14], "1242": [14, 18], "1243": 18, "1244": 18, "1246": 18, "1248": 18, "1249": 18, "1251": 18, "1252": 18, "1254": 18, "1256": 18, "1258": 18, "1259": [], "1260": 18, "1261": 18, "1262": 18, "1263": 18, "1265": 18, "1266": 18, "1267": [], "1269": [], "1271": 18, "1272": 18, "1273": [], "1275": 18, "1276": 18, "1278": 18, "1279": [], "1281": 18, "1283": 18, "1284": 18, "1285": [], "1286": 18, "1287": 18, "1288": 18, "1289": 18, "1290": [], "1291": 18, "1293": 18, "1295": [], "1297": 18, "1299": 18, "shape": 18, "draw": 18, "some": 18, "even": 18, "whole": 18, "0x7ff709333820": [], "562": [], "5422304872125056e": [], "0x7ff7092f06a0": [], "341927289962769": [], "contain": [8, 11, 13, 14], "global": 8, "loop": [8, 12], "verifi": [8, 12], "0x7ff75ef63d90": 12, "0x7ff75ef63e20": 12, "0x7ff75ef63eb0": 12, "0x7ff708d755d0": [], "better": 8, "accuraci": 8, "adjust": [8, 11, 12, 14, 18], "influenc": [8, 13], "result": [8, 11, 12, 13, 14, 18], "happen": 8, "engin": [8, 21, 23], "973442788828834e": [], "750282135366433e": [], "0x7ff708db1450": [], "know": 8, "part": [8, 12], "take": 8, "9062931537628174": [], "5196449756622314": [], "425938129425049": [], "943": 18, "alwai": 12, "good": 12, "0x7ff6f77a2920": 12, "later": 12, "relev": 12, "subset": 12, "accur": 12, "monitor": 12, "534396171569824": 12, "perspect": 12, "centeredgrid": 12, "563661": 12, "087": 12, "648441": 12, "046": 12, "563669": 12, "648272": 12, "032": 12, "648109": 12, "563957": 12, "646986": 12, "009": 12, "563872": 12, "578": [12, 18], "647286": 12, "563782": 12, "647474": 12, "563735": 12, "647663": 12, "647826": 12, "649593": 12, "563543": 12, "392": [11, 12, 16, 18], "649761": 12, "449": [12, 18], "563500": 12, "952": 12, "650008": 12, "563504": 12, "650133": 12, "563497": 12, "649457": 12, "563534": 12, "649329": 12, "563568": 12, "649122": 12, "263": 12, "563597": 12, "648625": 12, "563512": 12, "081": 12, "648836": 12, "kernel_grid_cent": 12, "383": [12, 18], "36972966": 12, "3407": 12, "68480754": 12, "4618": 12, "11403801": 12, "6300": 12, "left_voxel_edg": 12, "1709": 12, "43058496": 12, "68486483": 12, "56428767": 12, "21461523": 12, "942981": 12, "right_voxel_edg": 12, "23606704": 12, "support": 12, "oper": [11, 12, 13, 14], "fundament": [11, 12, 14], "0748418744916176e": 12, "902783759210787e": 12, "align": 12, "649859429120498": 12, "07950910565876": 12, "balanc": [7, 12], "neg": 12, "highlight": 12, "discrep": [7, 12], "0x7fa8cbe9bd90": 8, "0x7fa8cbe9be20": 8, "0x7fa8cbe9beb0": 8, "0x7fa8762c0eb0": 8, "6824900462306687e": 8, "902938475330302e": 8, "0x7fa87752c970": 8, "1760990619659424": 8, "8446145057678223": 8, "020713567733765": 8, "benchmark": 18, "purpos": [13, 18], "4115315697803186e": [], "753730404154513e": [], "comparison": 18, "580": 18, "003462526681421e": [], "54e": [11, 18], "666": [], "747": [], "96e": 18, "760": 18, "66e": [11, 18], "70e": 18, "19e": 18, "95e": [14, 18], "91e": 14, "255": 18, "266": 18, "272": 18, "276": 18, "280": 18, "285": 18, "291": [], "293": 18, "297": 18, "301": 18, "898": 18, "303": 18, "959": 18, "305": 18, "316": 18, "940": [], "932": 18, "324": 18, "329": [], "335": 18, "337": [], "905": [], "342": 18, "344": 18, "349": 18, "353": 18, "363": 18, "367": 18, "370": [], "375": 18, "377": 18, "379": 18, "387": [], "893": 18, "394": 18, "398": 18, "404": 18, "409": 18, "438": [], "442": 18, "455": [], "457": 18, "459": 18, "463": 18, "473": 18, "479": 18, "483": 18, "485": 18, "488": [], "493": 11, "499": 18, "502": 18, "504": 18, "506": [], "514": 18, "519": 18, "522": [], "527": 18, "529": 18, "532": 18, "534": 14, "540": 18, "543": 18, "551": [11, 14], "560": [], "565": 18, "571": 18, "588": 18, "601": 18, "609": 18, "611": 18, "616": [], "619": 18, "621": [], "631": 18, "633": [], "641": [], "645": 18, "655": [], "657": [], "659": 18, "670": 18, "678": [], "680": 18, "684": 18, "691": 18, "696": 18, "701": 18, "705": 18, "709": 18, "711": 18, "713": 18, "728": 18, "731": 18, "740": 18, "794": [], "799": 18, "806": [], "809": 18, "816": [], "826": [], "860": [], "862": [11, 14, 18], "877": 18, "881": [], "887": [], "930": 18, "950": 18, "961": 18, "970": 18, "972": 18, "981": [], "987": 18, "1001": 18, "1024": [], "1026": 18, "1028": [13, 18], "1030": 18, "1036": 18, "1040": 18, "1043": [], "1052": 18, "1060": 18, "1072": 18, "1074": 18, "1080": [], "1084": 18, "1087": 18, "1092": 18, "1096": [], "1098": [], "1102": 18, "1108": [], "1119": 18, "1121": 18, "1127": [], "1132": 18, "1143": 18, "1148": 18, "1151": [], "1156": 18, "1158": 18, "1164": 18, "1171": 18, "1174": 18, "1177": [], "1183": [], "1190": [14, 18], "1198": 18, "1201": 18, "1212": [], "1214": 18, "1220": 18, "1245": 11, "1250": 18, "1253": 18, "1255": 18, "1257": 18, "1264": 18, "1268": 18, "1270": 18, "1277": 18, "1282": [], "1292": [], "1294": 18, "1296": 18, "analyz": 18, "organ": [7, 13], "relationship": [7, 13], "variat": 7, "0x7f58a39e7e80": [], "underfit": 7, "5510663568802245e": [], "layout": 7, "viewer": 7, "taken": 7, "567967891693115": [], "734": 18, "0x7f0c62d377c0": [], "0x7f0ca42efd90": [], "6592659950256348": [], "0x7f1609c83e20": 7, "0x7f164b5813c0": 7, "7581591606140137": 7, "pgi": [11, 14], "focuss": [], "compon": [11, 13, 14], "gaussian": [], "mixtur": [], "d": [11, 14], "potential_field": [11, 14], "pf": [11, 14], "map": [11, 14], "inverse_problem": [11, 14], "data_misfit": [11, 14], "direct": [], "io_util": [], "scipi": [], "interp": [], "mpl": [11, 14], "math": [], "mpl_toolkit": [], "axes_grid1": [], "inset_loc": [], "inset_ax": [], "mkvc": [], "refine_tree_xyz": [], "active_from_xyz": [11, 14], "tensormesh": [], "treemesh": [], "plot2ddata": [], "model_build": [], "surface2ind_topo": [], "magnet": [], "mag": [], "shutil": [11, 14], "simpeghelp": [11, 14], "sh": [11, 14], "get_cpt": [], "get_cmap": [], "beautif": [11, 14], "formatt": [11, 14], "ticker": [11, 14], "scalarformatt": [11, 14], "usemathtext": [11, 14], "set_scientif": [11, 14], "set_powerlimit": [11, 14], "rc": [11, 14], "titles": [11, 14], "labels": [11, 14], "xtick": [11, 14], "ytick": [11, 14], "scienc": [], "seed": [], "518936": [], "ireland_ftg_nonneg": [], "path_to_mod_iter": [11, 14], "str": [], "path_to_output": [11, 14], "remov": [11, 13, 14], "rmtree": [11, 14], "makedir": [11, 14], "row": [], "path_to_gradiometri": [11, 14], "ftg_data": [11, 14], "delimit": [11, 14], "to_numpi": [11, 14], "c_": [11, 14], "zero": [11, 14], "tyi": [], "txz": [], "tyz": [], "txy": [], "txx": [], "resampl": [], "pf_r": [11, 14], "onto": [], "interv": [11, 14], "unit": [11, 14], "inc": [11, 14], "grav_new": [11, 14], "nx_new": [11, 14], "ny_new": [11, 14], "grav_vec": [11, 14], "negat": [], "opposit": [11, 14], "sign": [11, 14], "system": [], "sinc": [11, 14], "convent": [11, 14], "over": [11, 14], "inv_topo": [11, 14], "plot_2d_data": [11, 14], "nanmin": [11, 14], "nanmax": [11, 14], "jet": [11, 14], "which_data": [11, 14], "topo": [11, 14], "dx": [11, 14], "dy": [11, 14], "dz": [11, 14], "nz_core": [11, 14], "nz_pad": [11, 14], "fact": [11, 14], "constant": [11, 14], "inv_hx": [11, 14], "ones": [11, 14], "inv_hi": [11, 14], "inv_hz": [11, 14], "inv_mesh": [11, 14], "min": [11, 14], "drape": [11, 14], "actv": [11, 14], "ndv": [11, 14], "nan": [11, 14], "actvmap": [11, 14], "injectactivecel": [11, 14], "nactv": [11, 14], "xygrid": [], "meshgrid": [], "cell_centers_x": [11, 14], "cell_centers_i": [11, 14], "bool": [], "regactvarr": [], "empti": [], "len": [11, 14], "sqrt": [], "mindist": [], "repeat": [], "carri": [], "out": [], "replic": [], "tile": [], "cell_centers_z": [11, 14], "width": [11, 14], "factor": [11, 14], "dir": [11, 14], "plot_slic": [11, 14], "thee": [], "bg": [11, 14], "mod": [11, 14], "prop": [], "dict": 13, "boxstyl": [], "round": [], "pad": [11, 14], "facecolor": [], "white": [], "add_ax": [11, 14], "cplot": [11, 14], "ind": [11, 14], "set_titl": [11, 14], "set_xlabel": [11, 14], "m": [11, 14], "set_ylabel": [11, 14], "ticklabel_format": [11, 14], "set_aspect": [11, 14], "equal": [11, 14], "savefig": [11, 14], "_treemeshslic": [11, 14], "pdf": [11, 14], "bbox_inch": [11, 14], "tight": [11, 14], "problem": [], "wire": [11, 14], "density_map": [11, 14], "ident": [11, 14], "identity_map": [11, 14], "identitymap": [11, 14], "gravity_compon": [11, 14], "gyi": [11, 14], "gxz": [11, 14], "gyz": [11, 14], "gxy": [11, 14], "gxx": [11, 14], "gravity_receiver_loc": [11, 14], "gravity_receiv": [11, 14], "gravity_receiver_list": [11, 14], "gravity_source_field": [11, 14], "sourcefield": [11, 14], "receiver_list": [11, 14], "survei": [11, 14], "gravity_survei": [11, 14], "gravity_problem": [11, 14], "simulation3dintegr": [11, 14], "rhomap": [11, 14], "ind_act": [11, 14], "max_grav": [], "deviat": [], "std_graviti": [], "gravity_data": [11, 14], "dob": [11, 14], "flatten": [11, 14], "noise_floor": [11, 14], "relative_error": [11, 14], "misfit": [11, 14], "associ": [11, 14], "gravity_misfit": [11, 14], "l2datamisfit": [11, 14], "gmm": [], "rock": [11, 13, 14], "physic": [11, 14], "num_rock_unit": [11, 14], "num_physical_prop": [11, 14], "gmmref": [11, 14], "weightedgaussianmixtur": [11, 14], "n_compon": [11, 13, 14], "covariance_typ": [11, 14], "background_dens": [11, 14], "randn": [11, 14], "contrast": [11, 14], "One": [11, 14], "means_": [11, 14], "origin": [11, 14], "varianc": [11, 14], "density_vari": [11, 14], "8e": [11, 14], "covariances_": [11, 14], "precis": [11, 14], "cluster": [11, 14], "compute_clusters_precis": [11, 14], "weights_": [11, 14], "means_init": [], "covariances_init": [], "weights_init": [], "1d": [], "plot_pdf": [11, 14], "flag2d": [11, 14], "plotting_precis": [11, 14], "cc": [11, 14], "get_legend": [11, 14], "delrho": [11, 14], "scilimit": [11, 14], "_init_gmm": [11, 14], "initial_model": [11, 14], "r_": [11, 14], "sensit": [], "squar": [11, 14], "root": [11, 14], "volum": [11, 14], "sensitivity_weights_grav": [11, 14], "cell_volum": [11, 14], "multipli": [11, 14], "smallness_multipli": [11, 14], "1e": [11, 13, 14], "smoothness_x_multipli": [11, 14], "smoothness_y_multipli": [11, 14], "smoothness_z_multipli": [11, 14], "joint": [11, 14], "smooth": [11, 14], "regularization_term": [11, 14], "wiresmap": [11, 14], "maplist": [11, 14], "active_cel": [11, 14], "alpha_pgi": [11, 14], "alpha_x": [11, 14], "alpha_i": [11, 14], "alpha_z": [11, 14], "alpha_xx": [11, 14], "alpha_yi": [11, 14], "alpha_zz": [11, 14], "weights_list": [11, 14], "astic": [11, 14], "et": [11, 14], "al": [11, 14], "2021": [], "estim": [11, 14], "alphas_direct": [11, 14], "alphassmoothestimate_byeig": [11, 14], "beta": [11, 14], "alpha_": [11, 14], "schedul": [11, 14], "beta_direct": [11, 14], "betaestimate_byeig": [11, 14], "beta0_ratio": [11, 14], "beta_schedul": [11, 14], "pgi_betaalphaschedul": [11, 14], "coolingfactor": [11, 14], "toler": [11, 14], "progress": [11, 14], "target": [11, 14], "petrophys": [11, 13, 14], "target_misfit": [11, 14], "multitargetmisfit": [11, 14], "onc": [11, 14], "mref_in_smooth": [11, 14], "pgi_addmrefinsmooth": [11, 14], "wait_till_st": [11, 14], "keep": [11, 14], "l2": [11, 14], "approx": [11, 14], "update_smallness_direct": [11, 14], "pgi_updateparamet": [11, 14], "update_gmm": [11, 14], "kappa": [11, 14], "nu": [11, 14], "zeta": [11, 14], "precondition": [11, 14], "update_precondition": [11, 14], "updateprecondition": [11, 14], "save": [11, 14], "save_iteration_direct": [11, 14], "saveoutputeveryiter": [11, 14], "save_model_direct": [11, 14], "savemodeleveryiter": [11, 14], "lower_bound": [11, 14], "upper_bound": [11, 14], "projectedgncg": [11, 14], "maxit": [11, 14], "lower": [11, 13, 14], "upper": [11, 13, 14], "maxiterl": [11, 14], "maxitercg": [11, 14], "tolcg": [11, 14], "inverse_prob": [11, 14], "baseinvproblem": [11, 14], "inversion_algo": [11, 14], "baseinvers": [11, 14], "directivelist": [11, 14], "inverted_model": [11, 14], "invproblem": [11, 14], "reference_model": [11, 14], "m0": [11, 14], "bfgsh0": [11, 14], "eval2deriv": [11, 14], "solverlu": [11, 14], "solver_opt": [11, 14], "alpha": [11, 13, 14], "13303597": [], "345293514": [], "13291291": [], "128584256": [], "96004": [], "25899069471": [], "pgismal": [11, 14], "gncg": [11, 14], "phi_d": [11, 14], "phi_m": [11, 14], "proj": [11, 14], "l": [11, 14], "geophi": [11, 14], "6396": [], "6825": [], "31833": [], "27300": [], "cool": [11, 14], "minimum": [11, 14], "12694": [], "warm": [11, 14], "favor": [11, 14], "00010669177094483827": [], "mref": [11, 14], "29837": [], "place": [11, 14], "3443": [], "32765": [], "8190": [], "00021145111553427776": [], "14173": [], "32692": [], "0004191377804309684": [], "2336": [], "bfg": [11, 14], "3434": [], "32301": [], "0008328763975470134": [], "9637": [], "3410": [], "32353": [], "001666997423849284": [], "2304": [], "3405": [], "32305": [], "003340537806642481": [], "3394": [], "32227": [], "006716901289141315": [], "3379": [], "32130": [], "013563981510234007": [], "2484": [], "3375": [], "32093": [], "02742395715929332": [], "1765": [], "32073": [], "05544992823765521": [], "3366": [], "32451": [], "11240918288836876": [], "3181": [], "3365": [], "32609": [], "22793964709919495": [], "33336": [], "4621242063572519": [], "34792": [], "9369936514939342": [], "34950": [], "8994705672039287": [], "3384": [], "37831": [], "830382755121003": [], "3396": [], "35625": [], "697450612448777": [], "3508": [], "30940": [], "973218112151427": [], "3692": [], "29180": [], "673539996945806": [], "4215": [], "26238": [], "reach": [11, 14], "80242420960896": [], "stop": [11, 14], "fc": [11, 14], "fold": [11, 13, 14], "0000e": [11, 14], "tolf": [11, 14], "f0": [11, 14], "5869e": [], "xc": [11, 14], "x_last": [11, 14], "4899e": [], "tolx": [11, 14], "4333e": [], "tolg": [11, 14], "1e3": [11, 14], "ep": [11, 14], "save_plot": [11, 14], "ind_plot_x": [11, 14], "ind_plot_i": [11, 14], "ind_plot_z": [11, 14], "ind_plot": [11, 14], "inverted_density_model": [11, 14], "quasi_geology_model": [11, 14], "objfct": [11, 14], "compute_quasi_geology_model": [11, 14], "model_to_plot": [11, 14], "plot_model_slic": [11, 14], "sec_loc": [11, 14], "gdline": [11, 14], "which_prop": [11, 14], "den": [11, 14], "spectral": [11, 13, 14], "save_plt": [11, 14], "learned_mu": [], "learned_sigma": [], "learned_pi": [], "final_alpha_pgi": [], "hist": [11, 14], "bin": [11, 14], "_learned_gmm": [11, 14], "01_gravity_gradiometry_inversion_pgi": [11, 16], "tree": [], "0496041889313497e": 18, "752": 18, "258": 18, "283": 18, "319": 18, "321": 18, "326": 18, "340": 18, "347": 18, "416": 18, "428": 18, "447": 18, "452": 18, "469": 18, "481": 18, "490": 18, "495": 18, "568": 18, "638": 18, "649": 18, "664": 18, "672": 18, "792": 18, "839": 18, "849": 18, "854": 18, "879": 18, "1011": 18, "1013": 18, "1050": 18, "1112": 18, "1192": 18, "1238": 18, "1247": [14, 18], "1274": 18, "1280": 18, "machin": 13, "captur": [], "mineralogi": 13, "control": [], "ascertain": [], "spectra": 13, "sklearn": 13, "scikit": [13, 14], "linear_model": 13, "linearregress": 13, "neural_network": 13, "mlpregressor": 13, "tqdm": 13, "hklearn": [], "jan": [], "2024": [11, 13, 14, 23], "public": [], "hycor": [], "shed": [], "hylibrari": 13, "Not": [], "organis": [], "hifexplo": [], "hylit": 13, "correspond": 13, "train": [], "path_to_train": 13, "path_to_hsi_train": 13, "path_to_test": 13, "path_to_hsi_test": 13, "train_sh": 13, "loadsh": 13, "test_sh": 13, "train_fx50": 13, "fx50lib": 13, "train_fenix": 13, "fenixlib": 13, "train_lwir": 13, "lwirlib": 13, "train_vp": 13, "vp": 13, "test_fx50": 13, "test_fenix": 13, "test_lwir": 13, "test_vp": 13, "built": [], "org": 14, "tailor": [], "toward": [], "multipl": [11, 13, 14], "sensor": 13, "inbuilt": [], "hull": 13, "correct": 13, "extrema": [], "hsi_train": 13, "fenix": 13, "fx50": 13, "lwir": 13, "hc": 13, "2500": 13, "hsi_test": 13, "3771": 13, "independ": [11, 14], "present": [], "sup": [], "imped": [], "loss": 13, "converg": 13, "standardscal": 13, "y_scaler": 13, "preprocess": 13, "dummi": [], "dimens": [], "scaler": [], "_": 13, "larg": 13, "band": 13, "redund": 13, "princip": 13, "pca": 13, "wikipedia": 14, "wiki": 14, "principal_component_analysi": [], "concaten": [], "isn": 13, "inter": 13, "correl": 13, "same": [11, 14], "must": [], "admiss": [], "set_i": 13, "being": [11, 14], "pca_x": 13, "fit_pca": 13, "normalis": 13, "set_transform": 13, "initialis": [11, 14], "dictionari": 13, "wish": [], "linear": 13, "regress": 13, "multilay": 13, "perceptron": 13, "anoth": [], "mlp": 13, "hidden_layer_s": 13, "max_it": 13, "sgd": 13, "learning_r": 13, "param": 13, "fit_intercept": 13, "1e0": 13, "fit_model": 13, "item": 13, "leav": 13, "xtransform": 13, "ytransform": 13, "grid_search_cv": 13, "n_job": 13, "score": [], "tabl": 13, "get_score_t": 13, "pretti": [], "cross": 13, "andd": [], "y_test": 13, "nbsp": 13, "cv": 13, "03_hsi_to_petrophys": [13, 16], "given": [11, 14], "oldenburg": [11, 14], "2019": [11, 14], "doi": 14, "gji": [], "ggz389": [], "sub": [11, 14], "ftg": [], "irish": [11, 14], "midland": [11, 14], "tune": [11, 14], "hyper": [], "xyz": 14, "content": 14, "index": 14, "prevent": [11, 14], "criterion": [], "ireland_ftg": [11, 14], "left": [11, 14], "g_": [11, 14], "xx": [11, 14], "xy": [11, 14], "xz": [11, 14], "yy": [11, 14], "yz": [11, 14], "zz": [11, 14], "right": [11, 14], "traceless": [11, 14], "sum_": [], "ii": [], "ij": [], "frac": [], "partial": [], "phi": [], "x_i": [], "x_j": [], "laplac": [], "equat": [], "nabla": [], "2phi": [], "gravit": [], "henc": [11, 14], "five": [11, 14], "mandatori": [], "aid": [11, 14], "bound": [11, 14], "ground": [11, 14], "156000": [11, 14], "168000": [11, 14], "143000": [11, 14], "148500": [11, 14], "consider": [], "WILL": [], "04_ftg_pgi": 14, "valueerror": [], "operand": [], "broadcast": [], "2997": [], "comp": [11, 14], "terrain": [11, 14], "cartesian": [], "abil": [], "contract": [11, 14], "meshh": [], "outsid": [], "block": [], "success": [], "z_": [11, 14], "n": [11, 14], "increment": [11, 14], "alter": [11, 14], "choos": [11, 14], "entir": [11, 14], "set_xlim": [11, 14], "158000": [11, 14], "159000": [11, 14], "set_ylim": [11, 14], "clean": [], "models_map": [], "meter": [11, 14], "rel": [11, 14], "floor": [11, 14], "form": [11, 14], "multimod": [11, 14], "modal": [11, 14], "below": [11, 14], "said": [11, 14], "don": [11, 14], "itself": [11, 14], "dure": [11, 13, 14], "peak": [11, 14], "posteriori": [11, 14], "maximum_a_posteriori_estim": 14, "solv": [11, 14], "tri": [11, 14], "voxel": [11, 14], "giftoolscookbook": 14, "tikhonov": [11, 14], "strong": 14, "static": [11, 14], "trial": [11, 14], "kept": [11, 14], "instruct": [11, 14], "quasi": [], "li": [11, 14], "tle38010060": 14, "classifi": [11, 14], "therefor": [], "separ": [], "qgm": [11, 14], "p": [15, 16, 21, 23], "wave": [15, 16, 21, 23], "veloc": [15, 16, 21, 23], "hyperspectr": [15, 16, 21, 23], "januari": [13, 23], "424374656": [], "3648423": [], "404990165": [], "85196674": [], "236282": [], "4275556093": [], "7366": [], "7492": [11, 14], "53853": [], "44885": [11, 14], "14114": [11, 14], "00010171099958847947": [], "46815": [], "2834": [], "56894": [], "8991": [11, 14], "00026886191069982004": [], "24075": [], "1910": [], "59179": [], "001054333223102892": [], "13858": [], "1369": [], "60352": [], "005769824480543804": [], "8998": [], "60263": [], "03396120880680367": [], "60252": 14, "20064935425961286": [], "60196": [], "1934957367500931": [], "60348": [], "1627582899697835": [], "60644": [], "61751635859791": [], "61800": [], "46807770189685": [], "69196": [], "1637": [], "7748490116278": [], "63331": [], "10012": [], "626444088304": [], "1495": [], "34804": [], "50156": [], "79397417675": [], "7644e": [11, 14], "2111e": [], "2988e": [], "focus": 13, "numer": 13, "publicli": 13, "conveni": 13, "facilit": 13, "might": 13, "signific": 13, "extend": [11, 14], "criteria": [11, 14], "natur": [11, 14], "418083224": 14, "1567727": 14, "430664170": 14, "54921407": 14, "241249": 14, "22858700654": 14, "7385": 14, "53905": 14, "00010144902120428576": 14, "46912": 14, "2841": 14, "56915": 14, "0002674939266088537": 14, "23999": 14, "1907": 14, "59165": 14, "0010507772902925534": 14, "13880": 14, "1373": 14, "60358": 14, "005731251890475955": 14, "8975": 14, "1371": 14, "60091": 14, "031312537491235436": 14, "1888": 14, "1367": [11, 14], "60077": 14, "17156327747832578": 14, "1322": 14, "9719405715672758": 14, "1387": 14, "61007": 14, "838731886914972": 14, "5572": 14, "61012": 14, "21337400407953": 14, "61724": 14, "57758849285366": 14, "68747": 14, "1303": 14, "254486428423": 14, "67778": 14, "8067": 14, "926413603839": 14, "1464": 14, "42906": 14, "41274": 14, "01718048347": 14, "1470e": 14, "0919e": 14, "407792724": [], "113804": [], "424626960": [], "2554968": [], "221126": [], "95243627424": [], "7368": [], "53894": [], "00010168469282569992": [], "46910": [], "2830": [], "56896": [], "0002691421303923911": [], "24063": [], "1902": 11, "59143": [], "0010599891610268313": [], "13832": [], "1375": [], "60389": [], "005774534248890014": [], "9038": [], "60080": [], "03153706887057151": [], "1905": [], "60097": [], "17275139175643991": [], "1323": 11, "60260": [], "978107917262627": [], "1430": [], "61003": [], "881987963552143": [], "5544": [], "61029": [], "51698165347419": [], "61203": [], "69165502724044": [], "68460": [], "1337": [], "3321342695695": [], "67529": [], "8279": [], "566275364885": [], "1477": [], "42548": [], "41986": [], "86569241771": [], "1432e": [], "1236e": [], "clim": 11, "461515343": [], "25569654": [], "464211449": [], "3709552": [], "257029": [], "7490906207": [], "7401": [], "53919": [], "00010123034107693866": [], "46833": [], "2836": [], "56953": [], "0002673866959711343": [], "24126": [], "1906": [], "59184": [], "0010511222534575696": [], "13790": [], "1372": [], "60353": [], "005737098761536266": [], "9025": [], "60304": [], "03374264909359378": [], "60253": [], "1992300564013149": [], "60198": [], "1852457795459534": [], "60332": [], "120697651066349": [], "60599": [], "447814805467274": [], "61614": [], "6158274392054": [], "68928": [], "1646": [], "043385362302": [], "64285": [], "9990": [], "259034852235": [], "1465": [], "35845": [], "51083": [], "93124456563": [], "2467e": [], "2608e": [], "h": 11, "396786316": [], "09206057": [], "429179815": [], "7368405": [], "218968": [], "75781373543": [], "53920": [], "00010145400662878535": [], "47027": [], "2894": [], "56967": [], "0002625908897851789": [], "24109": [], "1914": [], "59131": [], "0010274416946612506": [], "13733": [], "1380": [], "60428": [], "005575793533619764": [], "9213": [], "60199": [], "030372583534085406": [], "1951": [], "60166": [], "16594702986501786": [], "1324": [], "60346": [], "9387789833905095": [], "1559": [], "61106": [], "659388249605837": [], "5588": [], "61134": [], "32440440993185": [], "61302": [], "25002481010793": [], "68498": [], "05366926506": [], "68201": [], "8039": [], "685269568643": [], "1461": [], "43729": [], "41222": [], "03095950207": [], "1456e": [], "0806e": [], "ind_plot_arr": 11, "468263089": [], "8099554": [], "498277818": [], "32285315": [], "256956": [], "2977018487": [], "7379": [], "53850": [], "00010153689741128951": [], "46846": [], "2802": [], "56897": [], "0002714927406922063": [], "24067": [], "1880": [], "59177": [], "0010815359399845206": [], "13902": [], "1368": [], "60236": [], "0059235974639565364": [], "9058": [], "60114": [], "03489209300314856": [], "60142": [], "20620507160231713": [], "60113": [], "2237730990925328": [], "60227": [], "339613362233211": [], "1311": [], "60997": [], "302676340937964": [], "1632": [], "61834": [], "4501713399262": [], "65763": [], "1627": [], "865010796383": [], "65918": [], "10019": [], "736564148901": [], "1453": [], "37433": [], "51643": [], "34721011131": [], "2844e": [], "2186e": [], "410030855": 11, "8629278": 11, "423924847": 11, "8682445": 11, "221301": 11, "76852332294": 11, "7363": 11, "53932": 11, "0001017520433220537": 11, "46923": 11, "2878": 11, "56886": 11, "00026486260428953257": 11, "24033": 11, "59150": 11, "0010432238094228118": 11, "13728": 11, "1377": 11, "60406": 11, "005673861421188311": 11, "9162": 11, "1370": 11, "60168": 11, "031023047077501028": 11, "1935": 11, "60140": 11, "1700062887019205": 11, "60296": 11, "9622012648565086": 11, "1397": 11, "61068": 11, "787288226899011": 11, "5580": 11, "61073": 11, "93527456181403": 11, "61269": 11, "1246047516577": 11, "68474": 11, "1307": 11, "8129600116547": 11, "67958": 11, "8120": 11, "550411338": 11, "1463": 11, "43152": 11, "41561": 11, "559728045744": 11, "1471e": 11, "0926e": 11}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"contribut": 0, "issu": 0, "question": 0, "report": 0, "bug": 0, "featur": [0, 23], "request": 0, "new": 0, "code": 0, "python": [0, 1], "guidelin": 0, "licens": 0, "read": [1, 2, 3], "omf": [1, 2, 3], "project": [1, 2, 3], "Into": 1, "requir": [1, 2, 3, 23], "librari": [1, 2, 3, 13], "load": [1, 2, 3, 11, 13, 14], "visual": [1, 2, 3, 4, 11, 14, 17], "pyvista": [1, 2, 3], "convert": [1, 3], "unstructur": [1, 2, 3], "singl": [1, 3], "block": [1, 3], "data": [1, 2, 3, 4, 11, 13, 14], "model": [2, 7, 8, 9, 11, 12, 13, 14, 17, 18, 19, 21, 23], "1": [2, 3, 8, 11, 12, 14], "subsurfac": [2, 3], "import": [2, 3, 13], "conclus": 2, "export": 3, "exampl": [3, 18, 21, 23], "option": [3, 23], "graviti": [4, 11, 12, 14], "reader": [5, 21, 23], "parser": [5, 21, 23], "comput": [6, 10, 16, 20], "time": [6, 10, 16, 20], "construct": [7, 8], "structur": [7, 9, 21, 23], "geolog": [7, 11, 14, 17, 18], "process": [], "set": [7, 11, 14, 17], "up": [7, 11, 14, 17], "gempi": [7, 17], "ad": [], "topographi": [], "optim": 7, "nugget": 7, "calcul": [], "execut": [], "helper": 8, "function": 8, "forward": 12, "geophys": [15, 21, 23], "engin": [], "invers": [11, 14, 15, 18, 21, 23], "2": [11, 14, 17], "includ": 17, "complex": 17, "probabilist": [17, 18, 19, 21, 23], "creat": [11, 13, 14, 17], "configur": 17, "custom": 17, "grid": [11, 14, 17], "plot": [11, 14, 17], "initi": [11, 13, 14, 17], "interpol": 17, "guess": 17, "geomodel": 17, "pyro": 17, "defin": 17, "run": [11, 17], "prior": [11, 14, 17], "sampl": 17, "from": [13, 17], "posterior": 17, "us": 17, "mcmc": 17, "predict": [13, 17], "check": 17, "densiti": 17, "vector": [21, 23], "geologi": [21, 23], "bayesian": [22, 23], "infer": [22, 23], "theori": [22, 23], "document": 23, "repositori": 23, "overview": 23, "kei": 23, "get": 23, "start": 23, "prerequisit": 23, "note": 23, "explor": 23, "our": 23, "guid": 23, "galleri": 23, "acknowledg": 23, "mainten": 24, "make": 24, "releas": 24, "type": 24, "commit": 24, "manual": 25, "todo": 25, "gradiometri": [11, 14], "tree": [], "mesh": [11, 14], "p": 13, "wave": 13, "veloc": 13, "hyperspectr": 13, "full": [11, 14], "tensor": [11, 14], "necessari": 13, "hycor": 13, "shed": 13, "hklearn": 13, "stack": 13, "object": [11, 13, 14], "scale": 13, "depend": 13, "variabl": 13, "y": 13, "transform": 13, "independ": 13, "x": 13, "train": 13, "score": 13, "evalu": 13, "step": [11, 14], "directori": [11, 14], "store": [11, 14], "iter": [11, 14], "output": [11, 14], "ftg": [11, 14], "g": [11, 14], "3": [11, 14], "resampl": [11, 14], "onto": [11, 14], "regular": [11, 14], "4": [11, 14], "5": [11, 14], "tensormesh": [11, 14], "6": [11, 14], "7": [11, 14], "problem": [11, 14], "8": [11, 14], "gaussian": [11, 14], "mixtur": [11, 14], "gmm": [11, 14], "1d": [11, 14], "9": [11, 14], "hyper": [11, 14], "paramet": [11, 14], "sensit": [11, 14], "weight": [11, 14], "10": [11, 14], "direct": [11, 14], "12": [11, 14], "3d": [11, 14], "13": [11, 14], "quasi": [11, 14], "14": [11, 14], "updat": [11, 14], "11": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 58}, "alltitles": {"Contributing": [[0, "contributing"]], "Issues": [[0, "issues"]], "Questions": [[0, "questions"]], "Reporting Bugs": [[0, "reporting-bugs"]], "Feature Requests": [[0, "feature-requests"]], "Contributing New Code": [[0, "contributing-new-code"]], "Python Code Guidelines": [[0, "python-code-guidelines"]], "Licensing": [[0, "licensing"]], "Reading OMF Project Into Python": [[1, "reading-omf-project-into-python"]], "Required Libraries": [[1, "required-libraries"]], "Load OMF Project": [[1, "load-omf-project"], [3, "load-omf-project"]], "Visualize OMF with PyVista": [[1, "visualize-omf-with-pyvista"]], "Convert OMF to Unstructured Single Block": [[1, "convert-omf-to-unstructured-single-block"], [3, "convert-omf-to-unstructured-single-block"]], "Visualize Unstructured Data": [[1, "visualize-unstructured-data"], [3, "visualize-unstructured-data"]], "Reading Model 1 OMF Project into Subsurface": [[2, "reading-model-1-omf-project-into-subsurface"]], "Importing Required Libraries": [[2, "importing-required-libraries"]], "Loading the OMF Project": [[2, "loading-the-omf-project"]], "Visualizing the OMF Project with PyVista": [[2, "visualizing-the-omf-project-with-pyvista"]], "Visualizing Unstructured Data with Subsurface and PyVista": [[2, "visualizing-unstructured-data-with-subsurface-and-pyvista"]], "Visualize Unstructured Data:": [[2, "visualize-unstructured-data"]], "Conclusions": [[2, "conclusions"]], "Reading OMF project and exporting it to Subsurface: Example 1": [[3, "reading-omf-project-and-exporting-it-to-subsurface-example-1"]], "Import Required Libraries": [[3, "import-required-libraries"]], "Visualize OMF Project with PyVista (Optional)": [[3, "visualize-omf-project-with-pyvista-optional"]], "Gravity Data Visualization": [[4, "gravity-data-visualization"]], "Readers and Parsers": [[5, "readers-and-parsers"], [21, "readers-and-parsers"], [23, "readers-and-parsers"]], "Computation times": [[6, "computation-times"], [10, "computation-times"], [20, "computation-times"], [16, "computation-times"]], "Constructing Structural Geological Model": [[7, "constructing-structural-geological-model"]], "Setting Up GemPy Model": [[7, "setting-up-gempy-model"]], "Optimizing Nuggets": [[7, "optimizing-nuggets"]], "Construct Model 1 with Helper Functions": [[8, "construct-model-1-with-helper-functions"]], "Structural Modeling": [[9, "structural-modeling"], [21, "structural-modeling"], [23, "structural-modeling"]], "Model 1 Forward Gravity": [[12, "model-1-forward-gravity"]], "2.2 - Including GemPy": [[17, "including-gempy"]], "Complex probabilistic model": [[17, "complex-probabilistic-model"]], "Creating the Geological Model": [[17, "creating-the-geological-model"]], "Configuring the Model": [[17, "configuring-the-model"]], "Setting up a Custom Grid": [[17, "setting-up-a-custom-grid"]], "Plotting the Initial Geological Setting": [[17, "plotting-the-initial-geological-setting"]], "Interpolating the Initial Guess": [[17, "interpolating-the-initial-guess"]], "Probabilistic Geomodeling with Pyro": [[17, "probabilistic-geomodeling-with-pyro"]], "Defining the Probabilistic Model": [[17, "defining-the-probabilistic-model"]], "Running Prior Sampling and Visualization": [[17, "running-prior-sampling-and-visualization"]], "Sampling from the Posterior using MCMC": [[17, "sampling-from-the-posterior-using-mcmc"]], "Posterior Predictive Checks": [[17, "posterior-predictive-checks"]], "Density Plot of Posterior Predictive": [[17, "density-plot-of-posterior-predictive"]], "Probabilistic Inversion Example: Geological Model": [[18, "probabilistic-inversion-example-geological-model"]], "Probabilistic Modeling": [[19, "probabilistic-modeling"], [21, "probabilistic-modeling"], [23, "probabilistic-modeling"]], "Bayesian Inference Theory": [[22, "bayesian-inference-theory"], [23, "bayesian-inference-theory"]], "Maintenance": [[24, "maintenance"]], "Making a release": [[24, "making-a-release"]], "Type of commits": [[24, "type-of-commits"]], "Manual": [[25, "manual"]], "Todo": [[25, "id1"]], "Inversion of Full Tensor Gravity Gradiometry Data": [[14, "inversion-of-full-tensor-gravity-gradiometry-data"], [11, "inversion-of-full-tensor-gravity-gradiometry-data"]], "Step 1: Create Directories for Storing Model Iterations and Outputs": [[14, "step-1-create-directories-for-storing-model-iterations-and-outputs"], [11, "step-1-create-directories-for-storing-model-iterations-and-outputs"]], "Step 2: Load the FTG-G Data": [[14, "step-2-load-the-ftg-g-data"], [11, "step-2-load-the-ftg-g-data"]], "Step 3: Resample Data onto a Regular Grid": [[14, "step-3-resample-data-onto-a-regular-grid"], [11, "step-3-resample-data-onto-a-regular-grid"]], "Step 4: Visualize the Data": [[14, "step-4-visualize-the-data"], [11, "step-4-visualize-the-data"]], "Step 5: Create a TensorMesh Object for Inversion": [[14, "step-5-create-a-tensormesh-object-for-inversion"], [11, "step-5-create-a-tensormesh-object-for-inversion"]], "Step 6: Visualize the Mesh": [[14, "step-6-visualize-the-mesh"], [11, "step-6-visualize-the-mesh"]], "Step 7: Set up the Gravity Inverse Problem": [[14, "step-7-set-up-the-gravity-inverse-problem"], [11, "step-7-set-up-the-gravity-inverse-problem"]], "Step 8: Setting up the Gaussian Mixture Model (GMM) Prior": [[14, "step-8-setting-up-the-gaussian-mixture-model-gmm-prior"], [11, "step-8-setting-up-the-gaussian-mixture-model-gmm-prior"]], "Plot the 1D-GMM": [[14, "plot-the-1d-gmm"], [11, "plot-the-1d-gmm"]], "Step 9: Setting the Hyper-parameters and the Sensitivity Weights": [[14, "step-9-setting-the-hyper-parameters-and-the-sensitivity-weights"], [11, "step-9-setting-the-hyper-parameters-and-the-sensitivity-weights"]], "Step 10: Initialize the Directives": [[14, "step-10-initialize-the-directives"], [11, "step-10-initialize-the-directives"]], "Step 12: Visualize the 3D Model": [[14, "step-12-visualize-the-3d-model"], [11, "step-12-visualize-the-3d-model"]], "Step 13: Visualize the Quasi-Geological Model": [[14, "step-13-visualize-the-quasi-geological-model"], [11, "step-13-visualize-the-quasi-geological-model"]], "Step 14: Plot the Updated 1D-GMM": [[14, "step-14-plot-the-updated-1d-gmm"], [11, "step-14-plot-the-updated-1d-gmm"]], "Predicting P-Wave Velocity from Hyperspectral Data": [[13, "predicting-p-wave-velocity-from-hyperspectral-data"]], "Importing Necessary Libraries": [[13, "importing-necessary-libraries"]], "Loading Data with hycore.Shed": [[13, "loading-data-with-hycore-shed"]], "Creating a hklearn.Stack Object": [[13, "creating-a-hklearn-stack-object"]], "Scaling the Dependent Variable (Y)": [[13, "scaling-the-dependent-variable-y"]], "Transforming the Independent Variable (X)": [[13, "transforming-the-independent-variable-x"]], "Initializing and Training Models": [[13, "initializing-and-training-models"]], "Scoring and Evaluating Models": [[13, "scoring-and-evaluating-models"]], "Step 11: Run the Inversion!": [[11, "step-11-run-the-inversion"]], "GeoPhysics and Inversion": [[15, "geophysics-and-inversion"], [21, "geophysics-and-inversion"], [23, "geophysics-and-inversion"]], "Vector Geology Examples": [[21, "vector-geology-examples"], [23, "vector-geology-examples"]], "vector-geology Documentation": [[23, "vector-geology-documentation"]], "Vector Geology Repository": [[23, "vector-geology-repository"]], "Overview": [[23, "overview"]], "Key Features": [[23, "key-features"]], "Getting Started": [[23, "getting-started"]], "Prerequisites": [[23, "prerequisites"]], "Note!": [[23, null]], "Explore Our Guides": [[23, "explore-our-guides"]], "Galleries": [[23, null]], "Requirements": [[23, "requirements"]], "Optional requirements": [[23, "optional-requirements"]], "Acknowledgements": [[23, "acknowledgements"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["contributing", "examples/01_readers/01_read_OMF_sites", "examples/01_readers/02_model_1_OMF_to_subsurface", "examples/01_readers/03_model_2_OMF_to_subsurface", "examples/01_readers/04_model_1_read_gravity", "examples/01_readers/index", "examples/01_readers/sg_execution_times", "examples/02_structural_modeling/01_model_1_gempy_step_by_step", "examples/02_structural_modeling/02_model_1_gempy", "examples/02_structural_modeling/03_model_spremberg_import", "examples/02_structural_modeling/04_model_spremberg_building", "examples/02_structural_modeling/index", "examples/02_structural_modeling/sg_execution_times", "examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi", "examples/03_forward_engines/02_model_1_gempy_fw_gravity", "examples/03_forward_engines/03_HSI_To_Petrophysics", "examples/03_forward_engines/index", "examples/03_forward_engines/sg_execution_times", "examples/04_probabilistic_modeling/01_thickness_problem_gempy", "examples/04_probabilistic_modeling/02_model_1_bayesian", "examples/04_probabilistic_modeling/index", "examples/04_probabilistic_modeling/sg_execution_times", "examples/index", "examples/sg_execution_times", "external/external_examples", "index", "maintenance", "manual", "sg_execution_times"], "filenames": ["contributing.rst", "examples/01_readers/01_read_OMF_sites.rst", "examples/01_readers/02_model_1_OMF_to_subsurface.rst", "examples/01_readers/03_model_2_OMF_to_subsurface.rst", "examples/01_readers/04_model_1_read_gravity.rst", "examples/01_readers/index.rst", "examples/01_readers/sg_execution_times.rst", "examples/02_structural_modeling/01_model_1_gempy_step_by_step.rst", "examples/02_structural_modeling/02_model_1_gempy.rst", "examples/02_structural_modeling/03_model_spremberg_import.rst", "examples/02_structural_modeling/04_model_spremberg_building.rst", "examples/02_structural_modeling/index.rst", "examples/02_structural_modeling/sg_execution_times.rst", "examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.rst", "examples/03_forward_engines/02_model_1_gempy_fw_gravity.rst", "examples/03_forward_engines/03_HSI_To_Petrophysics.rst", "examples/03_forward_engines/index.rst", "examples/03_forward_engines/sg_execution_times.rst", "examples/04_probabilistic_modeling/01_thickness_problem_gempy.rst", "examples/04_probabilistic_modeling/02_model_1_bayesian.rst", "examples/04_probabilistic_modeling/index.rst", "examples/04_probabilistic_modeling/sg_execution_times.rst", "examples/index.rst", "examples/sg_execution_times.rst", "external/external_examples.rst", "index.rst", "maintenance.rst", "manual.rst", "sg_execution_times.rst"], "titles": ["Contributing", "Reading OMF Project Into Python", "Reading Model 1 OMF Project into Subsurface", "Reading OMF project and exporting it to Subsurface: Example 1", "Gravity Data Visualization", "Readers and Parsers", "Computation times", "Constructing Structural Geological Model", "Construct Model 1 with Helper Functions", "Construct Spremberg: Importing borehole data", "Construct Spremberg: Building initial model", "Structural Modeling", "Computation times", "Inversion of Full Tensor Gravity Gradiometry Data", "Model 1 Forward Gravity", "Predicting P-Wave Velocity from Hyperspectral Data", "GeoPhysics and Inversion", "Computation times", "2.2 - Including GemPy", "Probabilistic Inversion Example: Geological Model", "Probabilistic Modeling", "Computation times", "Vector Geology Examples", "Computation times", "Bayesian Inference Theory", "vector-geology Documentation", "Maintenance", "Manual", "Computation times"], "terms": {"we": [0, 1, 2, 5, 7, 8, 10, 11, 13, 14, 15, 16, 18, 19, 20, 22, 25], "welcom": [0, 22, 25], "encourag": [0, 22, 25], "everyon": 0, "vector": [0, 5, 11, 18, 19], "geologi": [0, 5, 11, 19, 24], "can": [0, 2, 3, 5, 8, 10, 13, 14, 15, 16, 20, 22, 25], "here": [0, 1, 3, 5, 7, 8, 11, 13, 14, 15, 16, 18, 20, 22, 24, 25], "i": [0, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 18, 22, 25, 26], "how": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 16, 18, 20, 22, 24, 25], "get": [0, 1, 3, 4, 7, 8, 13, 14, 15, 18, 19], "start": [0, 7, 8, 14, 18, 19, 22], "For": [0, 2], "about": [0, 16, 22, 25], "e": [0, 2, 13, 25], "g": [0, 25], "its": [0, 8, 13, 15], "applic": [0, 7, 11, 16, 20, 22, 25], "function": [0, 1, 2, 7, 9, 10, 11, 12, 13, 14, 15, 18, 22, 25, 26, 28], "usag": 0, "pleas": [0, 13, 15], "search": 0, "exist": [0, 13, 22, 25], "relat": [0, 8, 10], "If": [0, 10, 13, 22, 25, 26], "your": [0, 10, 11, 13, 16, 18, 20, 22, 25], "ha": [0, 9, 10, 13, 25], "alreadi": [0, 8, 14, 19], "been": [0, 13], "ask": 0, "make": [0, 10, 11, 15, 22, 25], "page": 0, "label": [0, 4, 9, 10, 14, 19], "The": [0, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 25], "templat": 0, "essenti": [0, 18], "you": [0, 5, 10, 11, 13, 16, 20, 22, 24, 25, 26], "answer": 0, "so": [0, 2, 14, 22, 25], "understand": [0, 5, 8, 11, 14, 16, 18, 20, 22, 25], "reproduc": 0, "fix": [0, 13, 18, 26], "Be": 0, "verbos": [0, 8, 10, 13, 14], "whenev": 0, "possibl": 0, "provid": [0, 7, 8, 14, 15, 18, 19, 22, 25], "traceback": [0, 19], "error": [0, 13], "messag": 0, "screenshot": 0, "sampl": [0, 13, 19], "other": [0, 10, 13, 14], "file": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 17, 19, 21, 23, 26, 28], "user": [0, 10, 22, 25, 27], "submit": 0, "idea": 0, "improv": [0, 22, 25, 26], "project": [0, 4, 5, 6, 13, 22, 25, 28], "thi": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13, 14, 15, 18, 19, 20, 22, 25], "creat": [0, 7, 9, 11, 19, 22, 25, 26], "an": [0, 1, 2, 3, 9, 10, 13, 18, 20, 22, 25, 26], "sure": 0, "us": [0, 1, 2, 3, 5, 7, 8, 9, 10, 11, 13, 14, 15, 16, 19, 20, 22, 24, 25, 26], "descript": 0, "titl": [0, 4], "ampl": 0, "background": [0, 13], "inform": [0, 13, 14, 15, 16, 18, 22, 25], "help": [0, 8, 13, 14, 18], "u": [0, 18], "implement": [0, 10, 14, 16, 19, 22, 25], "futur": 0, "ani": [0, 13, 15, 18], "ar": [0, 2, 9, 10, 11, 13, 14, 15, 16, 22, 25], "whether": [0, 11, 16, 22, 25], "typo": 0, "ad": [0, 26], "post": [0, 5, 22, 25], "process": [0, 1, 3, 5, 7, 8, 9, 11, 13, 14, 16, 19, 20, 22, 25, 26], "plot": [0, 1, 2, 3, 4, 8, 10, 14, 19], "core": [0, 7, 8, 9, 13, 14, 18, 19, 25], "anyth": 0, "think": 0, "should": [0, 26], "repositori": [0, 22], "address": [0, 20, 22, 25], "open": [0, 1, 2], "either": 0, "have": [0, 2, 10, 13, 16, 22, 25, 26], "found": [0, 9, 10], "discuss": 0, "link": [0, 10], "pull": 0, "aim": [0, 15, 22, 25], "follow": [0, 13], "particular": 0, "sustain": 0, "posit": [0, 8, 14], "impact": [0, 18], "commun": 0, "zen": 0, "most": [0, 15, 19, 22, 25], "importantli": 0, "readabl": 0, "count": 0, "when": [0, 26], "write": [0, 25], "adher": 0, "style": [0, 13, 15], "guid": [0, 11, 13, 16, 20, 22], "pep8": 0, "thorough": 0, "effect": [0, 5, 11, 22, 25], "document": [0, 2, 9, 10, 13, 22, 26], "docstr": 0, "each": [0, 8, 13, 14, 15, 19, 22, 25], "modul": [0, 1, 2, 3, 7, 8, 9, 10, 13, 19], "class": [0, 13], "method": [0, 5, 13, 15, 16, 19, 20, 22, 25], "all": [0, 9, 13, 28], "pep": 0, "257": 0, "high": 0, "level": [0, 7, 8, 10, 11, 22, 25], "googl": 0, "syntax": 0, "exampl": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 20, 21, 23, 24, 28], "def": [0, 1, 3, 18, 19], "func": 0, "arg1": 0, "int": [0, 13], "arg2": 0, "float": 0, "A": [0, 8, 9, 10, 13, 15, 18, 22, 23, 25], "concis": 0, "one": [0, 2, 10], "line": [0, 2, 3, 18, 19], "summari": 0, "addit": [0, 4, 26], "necessari": [0, 1, 2, 3, 4, 7, 8, 9, 13, 14, 19], "long": [0, 8], "develop": [0, 10, 11, 22, 25], "arg": 0, "first": [0, 1, 15, 18], "argument": 0, "second": [0, 1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "hang": 0, "indent": 0, "multi": 0, "return": [0, 1, 3, 9, 10], "valu": [0, 7, 8, 9, 10, 13, 14, 19], "": [0, 2, 5, 8, 9, 11, 13, 14, 15, 16, 18, 19, 20, 22, 25], "42": [0, 18], "explain": 0, "what": [0, 2, 5, 11, 16, 20, 22, 25], "add": [0, 7, 9, 10, 13, 14, 18, 26, 27], "inlin": 0, "comment": [0, 13], "why": 0, "seem": [0, 2], "need": [0, 3, 10, 11, 13, 14, 19, 22, 25], "consid": [0, 18], "more": [0, 13, 15, 20, 22, 24, 25], "8": [0, 7, 8, 10, 14, 18, 19], "test": [0, 15, 26], "everi": [0, 13, 22, 25], "untest": 0, "dead": 0, "under": [0, 25], "eupl": 0, "1": [0, 1, 4, 5, 6, 7, 9, 10, 11, 12, 15, 16, 17, 18, 19, 22, 25, 28], "2": [0, 1, 4, 7, 8, 9, 10, 14, 15, 19, 20, 21, 22, 25, 28], "did": 0, "yourself": 0, "respons": [0, 16, 22, 25], "ensur": [0, 14, 15, 18, 22, 25], "compat": 0, "includ": [0, 7, 9, 10, 13, 20, 21, 22, 25, 28], "In": [0, 11, 13, 15, 18, 20, 22, 25], "gener": [0, 1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 22, 25], "discourag": 0, "third": 0, "parti": 0, "go": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "end": [1, 2, 3, 4, 7, 8, 9, 10, 11, 13, 14, 15, 18, 19, 22, 25], "download": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "full": [1, 2, 3, 4, 7, 8, 9, 10, 14, 15, 16, 17, 18, 19, 22, 25, 28], "code": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 25, 26], "tutori": [1, 2, 3, 11, 16, 20, 22, 25], "demonstr": [1, 2, 3, 5, 8, 9, 10, 14, 15, 16, 19, 22, 24, 25], "mine": [1, 2], "format": [1, 2, 3, 5, 7, 18, 22, 25], "suitabl": [1, 22, 25], "further": [1, 3, 14, 18], "analysi": [1, 2, 3, 4, 5, 14, 15, 18, 22, 25], "subsurfac": [1, 4, 5, 6, 9, 10, 11, 16, 20, 22, 25, 28], "import": [1, 4, 7, 8, 10, 11, 12, 13, 14, 18, 19, 22, 25, 26, 28], "handl": [1, 5, 14, 15, 20, 22, 25], "omfvista": [1, 3, 25], "from": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 22, 23, 25, 26, 28], "trisurf": [1, 2, 3], "dotenv": [1, 3, 4, 7, 8, 9, 13, 14, 15, 19, 25], "dotenv_valu": [1, 3, 4, 7, 8, 13, 14, 15, 19], "to_pyvista_mesh": [1, 2, 3], "pv_plot": 1, "writer": 1, "base_structs_to_binary_fil": [1, 2], "defin": [1, 4, 7, 9, 13, 14, 15, 19], "path": [1, 2, 3, 4, 7, 8, 9, 13, 14, 18, 19], "specifi": [1, 8, 9, 13, 19], "env": [1, 14], "load_omf": [1, 2, 3], "config": [1, 3, 4, 7, 8, 13, 14, 15, 18, 19], "path_to_model_2": [1, 3], "omf_project": [1, 3], "load_project": [1, 3], "util": [1, 2, 8, 13, 14, 22, 25], "interact": 1, "multi_color": [1, 2, 3], "true": [1, 2, 3, 7, 8, 9, 10, 13, 14, 15, 18, 19], "show_edg": [1, 2, 3], "notebook": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "fals": [1, 2, 3, 7, 8, 9, 10, 13, 14, 15, 18, 19], "block_nam": [1, 2, 3], "get_block_nam": [1, 2, 3], "4": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 14, 15, 18], "polydata_obj": [1, 2, 3], "polydata": [1, 2, 3, 9], "unstruct_pyvista": [1, 2, 3], "unstructuredgrid": [1, 2, 3], "cast_to_unstructured_grid": [1, 2, 3], "cells_pyvista": [1, 2, 3], "cell": [1, 2, 3, 9, 10, 13], "reshap": [1, 2, 3], "unstruct": [1, 2, 3], "unstructureddata": [1, 2, 3], "from_arrai": [1, 2, 3], "vertex": [1, 2, 3, 7], "point": [1, 2, 3, 8, 9, 10, 13, 18, 19, 22, 25], "option": [1, 4, 7, 8, 9, 13, 14, 18, 19], "export": [1, 2, 5, 6, 22, 25, 28], "liquid": [1, 2], "earth": [1, 2], "to_liquid_earth": 1, "replac": [1, 2], "actual": 1, "condit": [1, 2, 7, 8, 19], "leapfrog1": [1, 2], "final": [1, 15], "t": [1, 2, 3, 13, 14, 15, 19], "mesh": [1, 2, 3, 9, 19], "subsurface_mesh": 1, "image_2d": 1, "plotter": [1, 2, 3, 9], "object": [1, 7, 8, 9, 10, 14, 18], "0x7f2ef690bb80": 1, "total": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 23, 28], "run": [1, 2, 3, 4, 7, 8, 9, 10, 14, 15, 19, 26], "time": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "script": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 26], "0": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 23, 25, 28], "minut": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 26], "693": 1, "jupyt": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "01_read_omf_sit": [1, 6, 28], "ipynb": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19], "sourc": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 25], "py": [1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 18, 19, 21, 28], "galleri": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 22, 28], "sphinx": [1, 2, 3, 4, 7, 8, 9, 10, 13, 14, 15, 18, 19, 22, 25], "convert": [2, 4, 5, 22, 25], "enhanc": [2, 11, 15, 20, 22, 25, 26], "begin": [2, 5, 13, 22, 25], "panda": [2, 3, 4, 9, 10, 13, 14], "pd": [2, 3, 4, 9, 13, 14], "xarrai": [2, 5, 7, 8, 9, 10, 14, 19, 22, 25], "lineset": [2, 3], "to_pyvista_lin": [2, 3, 9, 10], "init_plott": [2, 3, 9], "vector_geologi": [2, 7, 8, 10, 13, 14, 15, 19], "custom": [2, 8, 9, 15], "path_to_model_1": 2, "next": 2, "initi": [2, 8, 9, 11, 12, 14, 19, 22, 25, 28], "toggl": 2, "enabl": [2, 3], "meshes_far": 2, "lines_1": 2, "lines_far": 2, "dataset": [2, 5, 7, 9, 10, 13, 22, 25], "none": [2, 7, 8, 10, 13, 14, 15, 18, 19], "rang": [2, 3, 5, 7, 8, 9, 10, 11, 14, 15, 19, 22, 25], "n_block": [2, 3], "print": [2, 7, 8, 10, 13, 14], "check": [2, 13], "continu": [2, 3], "get_cel": [2, 3], "type": [2, 3], "grid": [2, 7, 8, 9, 10, 14, 19], "cell_data": [2, 3], "name": [2, 3, 7, 8, 9, 10, 13, 14, 15, 19], "match": [2, 3, 14], "case": [2, 3, 22, 25], "celltyp": [2, 3], "triangl": [2, 3], "new_cell_data": [2, 3], "formation_major_": [2, 3], "cells_attr": [2, 3], "datafram": [2, 3, 4, 9, 10], "5": [2, 7, 8, 9, 10, 14, 15, 18, 19], "append": [2, 3, 7, 8, 14, 19], "far": [2, 14], "rest": 2, "am": 2, "still": [2, 25], "unsur": 2, "meant": 2, "repres": [2, 18, 19, 20, 22, 25], "els": 2, "to_netcdf": 2, "base_data": 2, "f": [2, 7, 8, 10, 13, 14, 19], "nc": [2, 7, 8, 13, 14, 19], "11": [2, 14, 18], "To": [2, 7, 8, 10, 14, 18, 19], "ignor": [2, 10], "well": [2, 9, 10, 13, 18], "now": [2, 10, 16, 22, 25], "3": [2, 3, 4, 7, 8, 9, 10, 14, 17, 18, 19, 25], "radiu": [2, 3, 9, 10, 14], "100": [2, 3, 10, 13, 14, 15, 18, 19], "as_tub": [2, 3], "spline": [2, 3], "10": [2, 4, 7, 8, 9, 10, 14, 15, 18], "elif": 2, "stonepark_dia": 2, "stonepark_ob": 2, "stonepark_or": 2, "stonepark_limerick_seism": 2, "stonepark_hbl": 2, "stonepark_waulsortian_region": 2, "stonepark_abl": 2, "stonepark_kkr": 2, "stonepark_w": 2, "collar": [2, 9, 10], "topographi": [2, 7, 8, 13, 14, 19], "dhd_stonepark_breccia": 2, "stonepark_topographi": 2, "dhd_stonepark_assai": 2, "dhd_stonepark_litho": 2, "stonepark_lgr": 2, "plot_model_area": 2, "add_mesh": [2, 3, 9, 10], "cmap": [2, 3, 4, 9, 10, 13, 14, 19], "magma": [2, 3], "opac": [2, 3, 7, 8, 14, 19], "viridi": [2, 3, 4, 14, 19], "togeth": [2, 9], "7": [2, 3, 7, 8, 10, 14, 18, 19], "show": [2, 3, 4, 7, 8, 9, 10, 13, 14, 16, 18, 19, 22, 25], "It": [2, 8, 9, 14, 18], "two": [2, 15, 16, 22, 25, 26], "area": [2, 4, 13, 16, 22, 25], "doe": 2, "legaci": 2, "report": 2, "On": 2, "do": [2, 13, 25], "litholog": [2, 9], "much": 2, "interpret": [2, 11, 14, 20, 22, 25], "reconstruct": 2, "gempi": [2, 8, 9, 10, 11, 14, 16, 19, 20, 21, 22, 25, 28], "lithologi": [2, 9, 10], "graviti": [2, 5, 6, 16, 17, 19, 22, 25, 28], "confidenti": 2, "share": [2, 10], "limit": [2, 9], "6": [2, 8, 14, 18, 19], "341": 2, "02_model_1_omf_to_subsurfac": [2, 6, 28], "python": [2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15, 18, 19, 22, 25, 28], "fixtur": 3, "step": [3, 5, 7, 8, 14, 15, 18, 22, 25], "skip": [3, 9, 10, 13], "modifi": [3, 8], "chang": [3, 8, 13, 14, 18, 19, 25], "block_index": 3, "isinst": 3, "base": [3, 7, 8, 9, 10, 13, 14, 16, 19, 22, 25], "formation_major": 3, "kei": [3, 9, 10, 13, 14, 20, 22], "desir": 3, "242": [3, 6], "03_model_2_omf_to_subsurfac": [3, 6, 28], "illustr": [4, 7, 13, 22, 25], "read": [4, 5, 6, 8, 9, 14, 22, 25, 28], "stonepark": 4, "numpi": [4, 7, 10, 13, 14, 15, 18, 19, 25], "np": [4, 7, 9, 10, 13, 14, 15, 18, 19], "matplotlib": [4, 13, 14, 18, 19, 25], "pyplot": [4, 13, 14, 18, 19], "plt": [4, 13, 14, 18, 19], "librari": [4, 5, 7, 9, 14, 22, 25], "load": [4, 7, 8, 14, 19], "environ": [4, 8, 10, 14, 15, 19], "variabl": [4, 8, 18, 19, 20, 22, 25], "path_to_model_1_bougu": [4, 14, 19], "df": [4, 9, 14], "read_csv": [4, 13, 14], "sep": [4, 14], "header": [4, 9, 14], "select": 4, "column": [4, 9, 10], "interest": [4, 13, 15], "interesting_column": [4, 14], "x": [4, 8, 9, 10, 13, 14, 18, 19], "y": [4, 9, 10, 13, 14, 19], "bouguer_267_complet": [4, 14, 19], "extent": [4, 7, 8, 9, 13, 14, 18, 19], "observ": [4, 14, 16, 18, 19, 20, 22, 25], "omf_ext": 4, "arrai": [4, 8, 10, 13, 14, 15, 18, 19], "559902": 4, "8297554839": 4, "564955": 4, "6824703198": 4, "01": [4, 6, 8, 13, 14, 15, 18, 28], "644278": 4, "2600910577": 4, "650608": 4, "7353560531": 4, "1753": 4, "160": [4, 18], "3266042185512": 4, "figur": [4, 13], "figsiz": [4, 10, 13], "scatter": [4, 14, 18, 19], "c": [4, 13, 14, 18, 19], "xlabel": 4, "coordin": [4, 9, 10, 14], "ylabel": 4, "colorbar": [4, 14, 19], "bouguer": [4, 14, 16, 22, 25], "anomali": 4, "set": [4, 8, 9, 10, 14, 15, 19, 22, 25], "xlim": 4, "ylim": 4, "hide": 4, "axi": [4, 9, 13], "cleaner": 4, "look": [4, 8, 11, 16, 22, 25], "gca": 4, "ax": [4, 13, 14, 18, 19], "xaxi": 4, "set_ticklabel": 4, "yaxi": 4, "displai": [4, 8, 9, 13, 14, 15], "071": 4, "04_model_1_read_grav": [4, 6, 28], "data": [5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 20, 22, 25, 28], "geophys": [5, 11, 13, 14, 19, 20], "effici": [5, 22, 25], "section": [5, 10, 11, 13, 14, 18, 19, 20, 22, 25], "dedic": [5, 22, 25], "special": [5, 22, 25], "pars": [5, 22, 25], "variou": [5, 15, 22, 25], "commonli": [5, 22, 25], "encount": [5, 22, 25], "expect": [5, 16, 22, 25], "recognit": [5, 22, 25], "learn": [5, 11, 13, 15, 16, 20, 22, 25], "identifi": [5, 22, 25], "differ": [5, 7, 8, 9, 10, 13, 14, 15, 22, 25], "remot": [5, 22, 25], "sens": [5, 22, 25], "research": [5, 11, 22, 25], "integr": [5, 14, 15, 18, 20, 22, 25], "leverag": [5, 8, 9, 22, 25], "specif": [5, 15, 18, 22, 25], "cover": [5, 22, 25], "tool": [5, 10, 11, 16, 20, 22, 25], "emphas": [5, 22, 25], "flexibl": [5, 22, 25], "eas": [5, 22, 25], "convers": [5, 22, 25], "discov": [5, 11, 20, 22, 25], "raw": [5, 11, 22, 25], "structur": [5, 8, 9, 10, 12, 14, 15, 16, 19, 20, 28], "power": [5, 11, 16, 20, 22, 25], "multidimension": [5, 22, 25], "crucial": [5, 7, 8, 11, 14, 18, 22, 25], "streamlin": [5, 8, 9, 22, 25], "activ": [5, 7, 8, 10, 14, 18, 19, 22, 25], "omf": [5, 6, 22, 25, 28], "Into": [5, 6, 22, 25, 28], "model": [5, 6, 9, 12, 16, 17, 21, 28], "visual": [5, 6, 7, 8, 9, 10, 14, 19, 22, 25, 28], "00": [6, 12, 13, 14, 15, 17, 18, 21, 23, 28], "execut": [6, 7, 8, 12, 13, 14, 17, 21, 23, 28], "01_reader": [6, 28], "mem": [6, 12, 17, 21, 23, 28], "mb": [6, 12, 17, 21, 23, 28], "000": [6, 12, 13, 17, 18, 21, 23, 28], "3d": [7, 8, 9, 10, 11, 14, 19, 22, 25], "deposit": [7, 8, 9], "o": [7, 8, 9, 13, 14, 18, 19], "omf_to_gempi": [7, 8, 14, 19], "process_fil": [7, 8, 14, 19], "gp": [7, 8, 9, 10, 14, 18, 19], "gempy_view": [7, 8, 9, 10, 14, 18, 19], "gpv": [7, 8, 9, 10, 14, 18, 19], "model_building_funct": 7, "optimize_nuggets_for_group": 7, "gempy_engin": [7, 8, 14, 18, 19], "kernel_class": 7, "kernel_funct": [7, 8, 14], "availablekernelfunct": [7, 8, 14], "timer": [7, 8, 14, 19], "track": 7, "start_tim": [7, 8, 14, 19], "involv": 7, "organ": [7, 15], "path_to_model_1_subsurfac": [7, 8, 14, 19], "structural_el": [7, 8, 14, 19], "global_ext": [7, 8, 14, 19], "color_gen": [7, 8, 9, 14, 19], "colorsgener": [7, 8, 9, 14, 19], "filenam": [7, 8, 14, 19], "listdir": [7, 8, 14, 19], "ext": [7, 8, 14, 19], "splitext": [7, 8, 14, 19], "join": [7, 8, 14, 19], "configur": [7, 8, 14, 19], "group": [7, 8, 9, 10, 18], "properti": [7, 13, 15], "framework": [7, 20, 22, 25], "relationship": [7, 15], "structural_group_r": 7, "structuralgroup": [7, 8, 9, 10, 14], "red": [7, 8, 14], "element": [7, 8, 9, 10, 13, 14, 19], "structural_rel": [7, 8, 9, 14], "stackrelationtyp": [7, 8, 9, 10, 14], "erod": [7, 8, 9, 10, 14], "structural_group_green": 7, "green": 7, "structural_group_blu": 7, "blue": [7, 8, 14], "structural_group_intrus": 7, "intrus": 7, "combin": [7, 9], "frame": 7, "structural_group": [7, 8, 9, 14], "structural_fram": [7, 8, 9, 10, 14, 19], "structuralfram": [7, 8, 9, 14], "geomodel": [7, 9, 10], "geo_model": [7, 8, 9, 10, 14, 18, 19], "create_geomodel": [7, 18], "project_nam": [7, 18], "tutorial_ch1_1_bas": [7, 8, 14], "refin": [7, 11, 16, 18, 22, 25], "incorpor": [7, 20, 22, 25], "realism": [7, 20, 22, 25], "surfac": [7, 8, 9, 13, 18], "variat": 7, "xr": [7, 8, 14, 19], "open_dataset": [7, 8, 14, 19], "set_topography_from_arrai": 7, "xyz_vertic": 7, "gridtyp": [7, 8, 10, 14, 18, 19], "octre": [7, 8, 10, 14], "grid_modul": [7, 8, 14, 18], "0x7f2eaa335ff0": 7, "small": [7, 13], "random": [7, 13], "nois": [7, 13], "account": [7, 10], "discrep": [7, 14], "complex": [7, 11, 20, 22, 25], "geometri": 7, "balanc": [7, 14], "between": [7, 11, 14, 15, 18, 22, 25], "overfit": [7, 13], "underfit": 7, "trigger_optimize_nugget": 7, "apply_optimized_nugget": 7, "interpolation_opt": [7, 8, 9, 10, 14, 18, 19], "cache_mod": [7, 8, 14], "interpolationopt": [7, 8, 9, 14], "cachemod": [7, 8, 14], "no_cach": 7, "kernel_opt": [7, 8, 10, 14, 19], "c_o": [7, 8, 9, 14, 19], "plot_evalu": 7, "plot_result": 7, "appli": [7, 15, 16, 20, 22, 24, 25], "loaded_nuggets_r": 7, "temp": 7, "nuggets_r": 7, "npy": [7, 13], "loaded_nuggets_green": 7, "nuggets_green": 7, "loaded_nuggets_blu": 7, "nuggets_blu": 7, "modify_surface_point": [7, 8], "slice": [7, 8, 9, 10, 13], "elements_nam": [7, 10], "get_group_by_nam": 7, "comput": [7, 8, 13, 14, 18, 19], "interpol": [7, 8, 9, 14, 19], "mesh_extract": [7, 8, 9, 14, 18, 19], "compute_condition_numb": [7, 8, 14, 19], "cubic": [7, 8, 14], "updat": [7, 9, 18, 26], "color": [7, 8, 9, 10, 14, 18, 19], "transform": [7, 11, 16, 22, 25], "distinct": [7, 22, 25], "get_element_by_nam": [7, 10], "kkr": [7, 8, 14], "a46283": [7, 8, 14], "lgr": [7, 8, 14], "6394a4": [7, 8, 14], "wal": [7, 8, 14], "72a473": [7, 8, 14], "abl": [7, 8, 14], "1d3943": [7, 8, 14], "basement_color": 7, "8b4220": 7, "update_transform": 7, "compute_model": [7, 8, 10, 14, 18, 19], "engine_config": [7, 8, 10, 14, 18, 19], "gempyengineconfig": [7, 8, 10, 14, 18, 19], "backend": [7, 8, 10, 14, 18, 19], "availablebackend": [7, 8, 10, 14, 18, 19], "pytorch": [7, 8, 10, 14, 18, 19], "dtype": [7, 8, 10, 14, 18, 19], "float64": [7, 8, 10, 14, 18, 19], "number": [7, 8, 10, 13, 15, 19], "146830": [7, 19], "09028250765": [7, 19], "276736": [7, 19], "9518433538": [7, 19], "solut": [7, 8, 10, 18, 19, 25], "dualcontouringmesh": [7, 8, 10], "both": [7, 13, 20, 22, 25], "2d": [7, 8, 14, 18, 19], "assess": [7, 18], "layout": 7, "plot_2d": [7, 8, 10, 14, 18, 19], "show_scalar": [7, 8], "visualization_2d": [7, 8, 10], "plot2d": [7, 8, 10, 14, 19], "0x7f2ef511cac0": 7, "viewer": 7, "gempy_vista": [7, 8, 14, 19], "plot_3d": [7, 8, 9, 10, 14, 19], "kwargs_plot_structured_grid": [7, 8, 14, 19], "measur": [7, 8, 13, 14, 15, 20, 22, 25], "taken": 7, "insight": [7, 11, 14, 16, 19, 22, 25], "perform": [7, 14, 15, 18, 19, 26], "end_tim": [7, 8, 14], "execution_tim": [7, 8, 14], "sphinx_gallery_thumbnail_numb": [7, 8, 9, 10, 14, 18, 19], "007350206375122": 7, "189": [7, 18], "01_model_1_gempy_step_by_step": [7, 12, 28], "geolog": [8, 9, 11, 12, 14, 16, 20, 21, 22, 25, 28], "api": [8, 9, 10, 14, 19], "model_1_build": [8, 14, 19], "initialize_geo_model": [8, 14, 19], "up": [8, 14, 26], "directori": [8, 19], "list": [8, 9, 13, 19], "store": [8, 15, 19], "prepar": [8, 11, 14, 18, 19, 22, 25], "contain": [8, 13, 15], "global": 8, "loop": [8, 14], "abov": [8, 13, 26], "load_nugget": [8, 14, 19], "home": [8, 9, 10, 14, 18, 19], "leguark": [8, 9, 10, 14, 18, 19], "188": [8, 14], "userwarn": [8, 9, 10, 14, 18, 19], "basement": [8, 14, 19], "wa": [8, 14, 19], "015482": [8, 14, 19], "warn": [8, 9, 10, 14, 18, 19], "dens": [8, 10, 14, 18, 19], "verifi": [8, 14], "_interpolation_opt": [8, 14], "uni_degre": [8, 14, 18], "i_r": [8, 14], "gi_r": [8, 14], "number_dimens": [8, 14], "kernelfunct": [8, 14], "base_funct": [8, 14], "cubic_funct": [8, 14], "0x7fea8a6cd480": 8, "derivative_div_r": [8, 14], "cubic_function_p_div_r": [8, 14], "0x7fea8a6cd510": 8, "second_deriv": [8, 14], "cubic_function_a": [8, 14], "0x7fea8a6cd5a0": 8, "consume_sq_dist": [8, 14], "kernel_solv": [8, 14], "solver": [8, 13, 14, 15], "default": [8, 13, 14, 26], "optimizing_condition_numb": [8, 14], "condition_numb": [8, 14], "evaluation_opt": [8, 10, 14], "_number_octree_level": [8, 14], "_number_octree_levels_surfac": [8, 14], "curvature_threshold": [8, 10, 14], "error_threshold": [8, 10, 14], "min_octree_level": [8, 14], "mesh_extraction_masking_opt": [8, 14], "meshextractionmaskingopt": [8, 14], "intersect": [8, 9, 14], "mesh_extraction_f": [8, 14], "evaluation_chunk_s": [8, 14], "5000000": [8, 14], "compute_scalar_gradi": [8, 10, 14], "temp_interpolation_valu": [8, 14], "tempinterpolationvalu": [8, 14], "0x7fea2d6872e0": 8, "debug": [8, 14], "in_memory_cach": [8, 14], "cache_model_nam": [8, 14], "block_solutions_typ": [8, 14], "blocksolutiontyp": [8, 14], "sigmoid_slop": [8, 14, 18], "50000": [8, 14], "debug_water_tight": [8, 14], "_octree_grid": [8, 14], "_dense_grid": [8, 14], "regulargrid": [8, 14], "resolut": [8, 9, 14, 18], "20": [8, 9, 10, 13, 14, 18], "59902830e": [8, 14], "05": [8, 14, 18], "64955682e": [8, 14], "44278260e": [8, 14], "50608735e": [8, 14], "75340000e": [8, 14], "03": [8, 13, 14, 18], "60326604e": [8, 14], "02": [8, 13, 14, 18], "60029151e": [8, 14], "44594784e": [8, 14], "70555683e": [8, 14], "60987050e": [8, 14], "51418417e": [8, 14], "64829361e": [8, 14], "50292212e": [8, 14], "88892213e": [8, 14], "67971089e": [8, 14], "12483439e": [8, 14], "mask_topo": [8, 14], "shape": [8, 14], "bool": [8, 14], "_transform": [8, 14], "_custom_grid": [8, 14], "_topographi": [8, 14], "0x7fea789b5600": 8, "_section": [8, 14], "_centered_grid": [8, 14], "49201963e": [8, 14], "06993262e": [8, 14], "49905349e": [8, 14], "89864414e": [8, 14], "05702308e": [8, 14], "length": [8, 14], "_octree_level": [8, 14], "input_transform": [8, 14], "_cached_pivot": [8, 14], "_is_default_transform": [8, 14], "562422": [8, 14], "65655014": [8, 14], "647329": [8, 14], "31794742": [8, 14], "823": [8, 14], "58712106": [8, 14], "rotat": [8, 14], "scale": [8, 13, 14], "55363115e": [8, 14], "meta": [8, 14], "geomodelmeta": [8, 14], "creation_d": [8, 14], "last_modification_d": [8, 14], "owner": [8, 14], "hbl": [8, 14], "ffbe00": [8, 14], "is_act": [8, 14], "fault_rel": [8, 14], "better": 8, "accuraci": 8, "adjust": [8, 13, 14, 19], "influenc": [8, 15], "result": [8, 13, 14, 15, 19], "featur": [8, 15, 22], "surface_points_copi": [8, 9], "130": 8, "structuralel": [8, 9, 10], "fault": [8, 10], "blueredblu": 8, "where": [8, 13, 18, 26], "happen": 8, "engin": [8, 22, 25], "before_compute_tim": 8, "float32": 8, "146825": 8, "828125": 8, "276737": 8, "layer": [8, 18], "0x7fea2d483790": 8, "view": [8, 9, 10, 14, 19, 25], "comprehens": [8, 11, 14, 16, 20, 22, 25], "calcul": [8, 14, 19], "know": 8, "part": [8, 14], "take": 8, "prep_tim": 8, "compute_tim": 8, "0133297443389893": 8, "729570627212524": 8, "742900371551514": 8, "802": 8, "02_model_1_gempi": [8, 12, 28], "pyvista": [9, 25], "geological_format": 9, "boreholeset": 9, "mergeopt": 9, "survei": [9, 10, 13], "reader_help": 9, "readers_data": 9, "genericreaderfileshelp": 9, "reader": [9, 10], "read_borehole_interfac": [9, 10], "read_lith": 9, "read_survei": 9, "read_collar": 9, "to_pyvista_point": [9, 10], "map": [9, 13], "load_dotenv": 9, "file_or_buff": 9, "getenv": 9, "path_to_spremberg_stratigraphi": 9, "columns_map": 9, "hole_id": 9, "id": [9, 10], "depth_from": 9, "top": [9, 10, 18], "depth_to": 9, "lit_cod": 9, "compon": [9, 13, 15], "lith": 9, "116": [9, 10], "settingwithcopywarn": [9, 10], "try": [9, 10], "copi": [9, 10, 18], "loc": [9, 10], "row_index": [9, 10], "col_index": [9, 10], "instead": [9, 10], "see": [9, 10, 13], "caveat": [9, 10], "http": [9, 10, 25], "pydata": [9, 10], "org": [9, 10], "doc": [9, 10, 13, 26], "stabl": [9, 10, 13], "user_guid": [9, 10], "index": [9, 10], "html": [9, 10], "versu": [9, 10], "lith_df": [9, 10], "ab": [9, 10, 14], "117": [9, 10, 18], "path_to_spremberg_survei": 9, "depth": [9, 13, 22, 25], "md": 9, "dip": 9, "azimuth": 9, "azi": [9, 10], "80": [9, 10, 18], "inc": [9, 10, 13], "present": [9, 10], "straight": [9, 10], "from_df": 9, "update_survey_with_lith": 9, "6e_58": [9, 10], "trajectori": [9, 10], "assign": [9, 10], "must": [9, 10], "keyerror": [9, 10], "valueerror": [9, 10], "reader_collar": 9, "path_to_spremberg_collar": 9, "usecol": 9, "x_gk5_incl_insert": 9, "y__incl_insert": 9, "z_gk": 9, "z": [9, 10, 13, 14, 18], "df_collar": 9, "borehole_set": [9, 10], "merge_opt": 9, "well_mesh": [9, 10], "line_set": [9, 10], "combined_trajectori": [9, 10], "active_scalar": [9, 10], "lith_id": [9, 10], "collar_loc": [9, 10], "pyvista_plott": 9, "unit": [9, 13], "threshold": [9, 10], "units_limit": [9, 10], "tab20c": [9, 10], "clim": [9, 10, 13], "point_siz": [9, 10], "render_points_as_spher": [9, 10], "structural_elements_from_borehole_set": 9, "elements_dict": 9, "buntsandstein": [9, 10], "53_300": [9, 10], "983999": [9, 10], "werra": [9, 10], "anhydrit": [9, 10], "61_730": [9, 10], "00923f": [9, 10], "kupfershief": 9, "61_760": [9, 10], "da251d": [9, 10], "zechsteinkonglomerat": [9, 10], "61_770": [9, 10], "f8c300": [9, 10], "rotliegend": [9, 10], "62_000": [9, 10], "bb825b": [9, 10], "stratigraph": [9, 10], "pile": [9, 10], "determin": [9, 13, 18], "all_surface_points_coord": 9, "surfacepointst": 9, "extent_from_data": 9, "xyz": 9, "min": [9, 13], "max": [9, 13, 14], "50": [9, 15, 18, 19], "number_octree_level": [9, 19], "gempy_plot": [9, 10], "kwargs_pyvista_bound": [9, 10], "show_xlabel": [9, 10], "show_ylabel": [9, 10], "imag": [9, 10, 14, 19], "them": [9, 10, 11, 22, 25], "sp_mesh": 9, "surface_points_mesh": 9, "show_bound": 9, "all_edg": 9, "add_point_label": [9, 10], "shape_opac": [9, 10], "font_siz": [9, 10], "12": [9, 10, 15, 18], "bold": [9, 10], "add_actor": 9, "surface_points_actor": 9, "784": 9, "03_model_spremberg_import": [9, 12, 28], "model_contructor": 10, "generate_spremberg_model": 10, "get_spremberg_borehole_set": 10, "add_wells_plot": 10, "elements_to_gempi": 10, "kupferschief": 10, "spremberg_borehol": 10, "borehol": [10, 11, 12, 22, 25, 28], "orient": [10, 13, 18], "add_orient": 10, "5_460_077": 10, "527386775": 10, "5_450_077": 10, "5_720_030": 10, "2446156405": 10, "5_710_030": 10, "600": 10, "pole_vector": 10, "stratigrap": 10, "pivot": 10, "5_478_256": 10, "5_698_528": 10, "946534388": 10, "point_2": 10, "5_483_077": 10, "point_3": 10, "5_474_977": 10, "5974836275": 10, "5_712_059": 10, "373443342": 10, "section_dict": 10, "section1": 10, "section2": 10, "section3": 10, "set_section_grid": 10, "plot_section_trac": 10, "0x7f9b35facd30": [], "_": [10, 15], "ve": 10, "transformed_data": 10, "kwargs_plot_data": 10, "arrow_s": 10, "001000": 10, "curvatur": 10, "number_octree_levels_surfac": 10, "gempy_model": [10, 14, 18, 19], "voxel": [10, 13], "mark": 10, "stat": 10, "407": 10, "torch": [10, 18, 19], "size": [10, 13, 18], "512": 10, "245": [10, 18], "would": 10, "1677": 10, "3472": 10, "1308": 10, "4096": 10, "chunk": [10, 14, 19], "done": [10, 13, 14, 19], "15": [10, 13, 14, 18], "section_nam": [10, 14, 19], "_plot_2d_sections_api": [10, 14, 19], "105": [10, 14, 18, 19], "contact": [10, 14, 15, 19], "yet": [10, 14, 19], "pass": [10, 14, 19, 26], "scalar": [10, 14, 19], "field": [10, 11, 13, 14, 19, 22, 25], "0x7f9ae737c880": [], "show_lith": 10, "show_zlabel": 10, "p": [10, 16, 17, 22, 25, 28], "beyond": 10, "classic": [10, 16, 22, 25], "capabl": [10, 11, 22, 25], "introduc": [10, 13, 18], "v3": 10, "also": [10, 11, 15, 22, 25, 26], "upload": 10, "collabor": [10, 22, 25], "platform": [10, 22, 25], "design": [10, 11, 13, 15, 22, 25], "mani": [10, 15, 25], "main": 10, "maintain": [10, 25], "strong": 10, "focu": [10, 11, 20, 22, 25], "excel": 10, "across": 10, "token": 10, "onc": [10, 13], "easili": 10, "anyon": 10, "plot_to_liquid_earth": 10, "space_nam": 10, "file_nam": 10, "user_token": 10, "grab": 10, "grab_link": 10, "18": [13, 14, 15, 17, 18], "631": [], "04_model_spremberg_build": [10, 12, 28], "delv": [11, 20, 22, 25], "world": [11, 16, 22, 25], "our": [11, 16, 18, 22], "har": [11, 22, 25], "partner": [11, 22, 25], "within": [11, 15, 22, 25, 26], "consortium": [11, 22, 25], "offer": [11, 16, 20, 22, 25], "intricaci": [11, 22, 25], "construct": [11, 12, 14, 19, 22, 25, 28], "detail": [11, 13, 15, 16, 22, 25], "through": [11, 13, 16, 20, 22, 25], "three": [11, 13, 22, 25], "dimension": [11, 22, 25], "represent": [11, 14, 18, 22, 25], "new": [11, 13, 18, 22, 25, 26], "skill": [11, 16, 22, 25], "cater": [11, 22, 25], "expertis": [11, 22, 25], "goal": [11, 22, 25], "empow": [11, 22, 25], "knowledg": [11, 20, 22, 25], "just": [11, 13, 22, 25], "extract": [11, 13, 14, 15, 22, 25], "meaning": [11, 16, 22, 25], "These": [11, 13, 14, 16, 18, 19, 20, 22, 25], "bridg": [11, 22, 25], "gap": [11, 22, 25], "decis": [11, 22, 25], "practic": [11, 14, 22, 25], "real": [11, 13, 22, 25], "By": [11, 18, 22, 25], "equip": [11, 22, 25], "helper": [11, 12, 22, 25, 28], "spremberg": [11, 12, 22, 25, 28], "build": [11, 12, 14, 22, 25, 26, 28], "21": 18, "414": [], "02_structural_model": [12, 28], "sub": 13, "densiti": [13, 14, 19], "over": 13, "irish": 13, "midland": 13, "petrophys": [13, 15], "pgi": 13, "tune": 13, "astic": 13, "oldenburg": 13, "2019": 13, "extend": 13, "origin": 13, "simpeg": [13, 16, 22, 25], "shutil": 13, "potential_field": 13, "pf": 13, "discret": [13, 25], "d": 13, "mpl": 13, "inverse_problem": 13, "optim": [13, 14, 15, 19], "data_misfit": 13, "grav": [13, 14, 19], "active_from_xyz": 13, "simpeghelp": 13, "sh": 13, "beautif": 13, "formatt": 13, "ticker": 13, "scalarformatt": 13, "usemathtext": 13, "set_scientif": 13, "set_powerlimit": 13, "rc": 13, "titles": 13, "labels": 13, "xtick": 13, "ytick": 13, "save": 13, "prevent": 13, "stop": 13, "criteria": 13, "ireland_ftg": 13, "path_to_mod_iter": 13, "path_to_output": 13, "rmtree": 13, "makedir": 13, "five": 13, "independ": 13, "due": [13, 26], "symmetr": [13, 14], "traceless": 13, "natur": 13, "left": 13, "cc": 13, "g_": 13, "xx": 13, "xy": 13, "xz": 13, "yy": 13, "yz": 13, "zz": 13, "right": 13, "file_path": [13, 14], "path_to_gradiometri": 13, "ftg_data": 13, "delimit": 13, "to_numpi": 13, "aid": 13, "pf_r": 13, "potenti": [13, 22, 25], "150": 13, "interv": 13, "ground": 13, "grav_new": 13, "nx_new": 13, "ny_new": 13, "bound": 13, "156000": 13, "168000": 13, "143000": 13, "148500": 13, "note": [13, 15, 26], "sinc": 13, "convent": 13, "forward": [13, 16, 17, 22, 25, 28], "oper": [13, 14, 15], "opposit": 13, "grav_vec": 13, "sign": 13, "inv_topo": 13, "plot_2d_data": 13, "c_": 13, "nanmin": 13, "nanmax": 13, "jet": 13, "which_data": 13, "comp": 13, "terrain": 13, "topo": 13, "invert": 13, "constant": 13, "region": 13, "expand": [13, 25], "contract": 13, "pad": 13, "z_": 13, "n": [13, 23], "r": [13, 18, 19], "multipl": [13, 15], "factor": 13, "increment": 13, "alter": 13, "choos": 13, "spatial": [13, 14, 18], "cluster": 13, "entir": 13, "dx": 13, "dy": 13, "dz": 13, "nz_core": 13, "nz_pad": 13, "fact": 13, "inv_hx": 13, "ones": 13, "inv_hi": 13, "inv_hz": 13, "inv_mesh": 13, "h": 13, "x0": 13, "drape": 13, "actv": 13, "ndv": 13, "nan": 13, "actvmap": 13, "injectactivecel": 13, "nactv": 13, "sum": [13, 18], "137": [13, 18], "862": 13, "width": 13, "dir": 13, "81": [13, 18], "156": [13, 18], "168": [13, 18], "37": [13, 18], "143": 13, "148": 13, "550": 13, "46": [13, 18], "551": 13, "59": [13, 18], "55": [13, 18], "60": [13, 18], "plot_slic": 13, "bg": 13, "mod": 13, "fig": [13, 14, 18], "add_ax": 13, "cplot": 13, "normal": [13, 18, 19], "ind": 13, "22": [13, 18], "set_titl": 13, "set_xlabel": 13, "m": 13, "set_ylabel": 13, "set_xlim": 13, "158000": 13, "159000": 13, "set_ylim": 13, "500": [13, 18], "ticklabel_format": 13, "set_aspect": 13, "equal": 13, "savefig": 13, "_treemeshslic": 13, "pdf": 13, "bbox_inch": 13, "tight": 13, "receiv": [13, 25], "locat": [13, 18], "wire": 13, "density_map": 13, "ident": 13, "identity_map": 13, "identitymap": 13, "input": [13, 14, 19, 22, 25], "gravity_compon": 13, "gxx": 13, "gyi": 13, "gxz": 13, "gyz": 13, "gxy": 13, "25": [13, 18, 19], "meter": 13, "gravity_receiver_loc": 13, "120": [13, 18], "gravity_receiv": 13, "gravity_receiver_list": 13, "gravity_source_field": 13, "sourcefield": 13, "receiver_list": 13, "gravity_survei": 13, "simul": [13, 16, 22, 25], "gravity_problem": 13, "simulation3dintegr": 13, "rhomap": 13, "ind_act": 13, "rel": 13, "standard": 13, "floor": 13, "gravity_data": 13, "dob": 13, "flatten": 13, "noise_floor": 13, "relative_error": 13, "misfit": 13, "associ": 13, "gravity_misfit": 13, "l2datamisfit": 13, "constraint": [13, 20, 22, 25], "form": 13, "multimod": 13, "probabilist": [13, 21, 28], "distribut": [13, 14, 18, 19], "which": [13, 15, 20, 22, 25], "given": 13, "rock": [13, 15], "modal": 13, "avail": [13, 15, 26], "below": 13, "fit": [13, 15], "said": 13, "gmmref": 13, "physic": 13, "num_rock_unit": 13, "num_physical_prop": 13, "weightedgaussianmixtur": 13, "n_compon": [13, 15], "covariance_typ": 13, "background_dens": 13, "randn": 13, "mean": 13, "contrast": 13, "One": 13, "means_": 13, "varianc": 13, "density_vari": 13, "8e": 13, "covari": 13, "don": 13, "keep": 13, "same": 13, "itself": 13, "dure": [13, 15], "covariances_": 13, "precis": 13, "compute_clusters_precis": 13, "peak": 13, "weights_": 13, "125": [13, 18], "plot_pdf": 13, "flag2d": 13, "plotting_precis": 13, "1000": [13, 15, 19], "probabl": 13, "get_legend": 13, "remov": [13, 15], "delrho": 13, "scientif": [13, 25], "scilimit": 13, "_init_gmm": 13, "maximum": [13, 14], "posteriori": 13, "being": 13, "solv": 13, "tri": 13, "minim": 13, "l2": 13, "initialis": 13, "contribut": [13, 22, 25], "depend": [13, 25], "alpha_": 13, "smooth": 13, "alpha_i": 13, "fundament": [13, 14], "tikhonov": 13, "static": 13, "henc": 13, "fine": [13, 26], "trial": 13, "initial_model": 13, "r_": 13, "matrix": 13, "squar": 13, "root": 13, "volum": 13, "sensitivity_weights_grav": 13, "cell_volum": 13, "multipli": 13, "smallness_multipli": 13, "1e": [13, 15], "smoothness_x_multipli": 13, "smoothness_y_multipli": 13, "smoothness_z_multipli": 13, "joint": 13, "regularization_term": 13, "wiresmap": 13, "maplist": 13, "active_cel": 13, "alpha_pgi": 13, "alpha_x": 13, "alpha_z": 13, "deriv": [13, 16, 18, 22, 25], "kept": 13, "zero": 13, "want": [13, 25], "alpha_xx": 13, "alpha_yi": 13, "alpha_zz": 13, "weights_list": 13, "instruct": 13, "hyperparamet": [13, 19], "estim": 13, "alphas_direct": 13, "alphassmoothestimate_byeig": 13, "beta": 13, "schedul": 13, "beta_direct": 13, "betaestimate_byeig": 13, "beta0_ratio": 13, "beta_schedul": 13, "pgi_betaalphaschedul": 13, "coolingfactor": 13, "16": [13, 14, 15, 18, 19, 21, 28], "toler": 13, "progress": 13, "target": 13, "target_misfit": 13, "multitargetmisfit": 13, "refer": 13, "mref_in_smooth": 13, "pgi_addmrefinsmooth": 13, "wait_till_st": 13, "approx": 13, "update_smallness_direct": 13, "pgi_updateparamet": 13, "update_gmm": 13, "kappa": 13, "nu": 13, "zeta": 13, "precondition": 13, "update_precondition": 13, "updateprecondition": 13, "save_iteration_direct": 13, "saveoutputeveryiter": 13, "save_model_direct": 13, "savemodeleveryiter": 13, "lower_bound": 13, "upper_bound": 13, "projectedgncg": 13, "maxit": 13, "lower": [13, 15], "upper": [13, 15], "maxiterl": 13, "maxitercg": 13, "tolcg": 13, "setup": [13, 14, 19], "inverse_prob": 13, "baseinvproblem": 13, "inversion_algo": 13, "baseinvers": 13, "directivelist": 13, "inverted_model": 13, "invproblem": 13, "reference_model": 13, "m0": 13, "bfgsh0": 13, "eval2deriv": 13, "solverlu": 13, "solver_opt": 13, "alpha": [13, 15], "450539987": 13, "2319715": 13, "450331911": 13, "77148": 13, "252496": 13, "71182171933": 13, "pgismal": 13, "2024": [13, 15, 25], "06": [13, 18], "31": [13, 18], "txt": [13, 25], "gncg": 13, "phi_d": 13, "phi_m": 13, "proj": 13, "l": 13, "16e": [13, 18], "76e": 13, "04": [13, 18], "00e": [13, 18], "82e": [13, 18], "geophi": 13, "7371": 13, "7492": 13, "53906": 13, "44885": 13, "cool": 13, "evalu": [13, 18], "minimum": 13, "14114": 13, "warm": 13, "favor": 13, "00010163944435366406": 13, "mref": 13, "46847": 13, "place": 13, "37e": 13, "14e": [13, 18], "53e": 13, "40e": 13, "2838": 13, "56935": 13, "8991": 13, "000268289722030569": 13, "24087": 13, "84e": 13, "03e": 13, "99e": [13, 18], "75e": 13, "1905": 13, "59195": 13, "0010549908997251215": 13, "13874": 13, "91e": 13, "11e": 13, "07e": 13, "25e": 13, "bfg": 13, "1372": 13, "60354": 13, "005759570489988677": 13, "8966": 13, "93e": [13, 18], "1272": 13, "60282": 13, "03391664568403566": 13, "911": 13, "27e": [13, 18], "10e": 13, "43e": [13, 18], "56e": 13, "1267": 13, "60283": 13, "20048874090982202": 13, "505": 13, "09e": [13, 18], "1262": 13, "60177": 13, "1896358760296895": 13, "770": 13, "26e": 13, "42e": 13, "12e": [13, 18], "1256": 13, "60322": 13, "095110291995982": 13, "1257": 13, "58e": 13, "1229": 13, "60662": 13, "43": [13, 18], "22879746069664": 13, "838": 13, "23e": 13, "95e": [13, 18], "1228": 13, "61694": 13, "263": [13, 14], "6454125573714": 13, "240": 13, "05e": 13, "44e": 13, "98e": 13, "1221": 13, "71285": 13, "1616": 13, "6169674812083": 13, "256": 13, "22e": 13, "77e": 13, "1250": 13, "9684": 13, "855466686517": 13, "68": [13, 18], "30e": 13, "1487": 13, "33779": 13, "reach": 13, "48768": 13, "36025676174": 13, "75": [13, 18], "fc": 13, "fold": [13, 15], "0000e": 13, "tolf": 13, "f0": 13, "7644e": 13, "xc": 13, "x_last": 13, "1970e": 13, "tolx": 13, "2712e": 13, "tolg": 13, "1e3": 13, "ep": 13, "save_plot": 13, "indic": [13, 19], "ind_plot_x": 13, "len": 13, "cell_centers_x": 13, "ind_plot_i": 13, "cell_centers_i": 13, "ind_plot_z": 13, "cell_centers_z": 13, "ind_plot": 13, "inverted_density_model": 13, "quasi_geology_model": 13, "objfct": 13, "compute_quasi_geology_model": 13, "model_to_plot": 13, "plot_model_slic": 13, "ind_plot_arr": 13, "sec_loc": 13, "gdline": 13, "which_prop": 13, "den": 13, "spectral": [13, 15], "save_plt": 13, "li": 13, "et": 13, "al": 13, "classifi": 13, "qgm": 13, "hist": 13, "bin": 13, "_learned_gmm": 13, "217": [13, 14], "01_gravity_gradiometry_inversion_pgi": [13, 17, 28], "backend_tensor": [14, 18, 19], "backendtensor": [14, 18, 19], "bayesian_help": [14, 19], "calculate_scale_shift": [14, 19], "extend_box": 14, "alwai": 14, "good": 14, "0x7f2f106c13f0": 14, "0x7f2f106c1480": 14, "0x7f2f106c1510": 14, "0x7f2ea8ec1270": 14, "0x7f2ea8ec3130": 14, "csv": [14, 18], "later": 14, "filepath_or_buff": 14, "filter": 14, "relev": 14, "subset": 14, "565000": 14, "accur": 14, "show_topographi": [14, 18, 19], "zorder": [14, 18, 19], "10000": [14, 19], "monitor": 14, "5401320457458496": 14, "perspect": 14, "correctli": [14, 18], "device_loc": [14, 18], "center": [14, 19], "gradient": 14, "set_centered_grid": 14, "5000": 14, "centeredgrid": 14, "563661": 14, "087": 14, "648441": 14, "046": 14, "563669": 14, "585": 14, "648272": 14, "032": 14, "949": 14, "648109": 14, "941": [14, 18], "563957": 14, "93": [14, 18], "646986": 14, "009": 14, "563872": 14, "578": 14, "647286": 14, "382": 14, "563782": 14, "33": [14, 18], "647474": 14, "644": 14, "563735": 14, "776": 14, "647663": 14, "405": 14, "181": [14, 19], "647826": 14, "937": 14, "916": [14, 18], "649593": 14, "721": 14, "563543": 14, "392": 14, "649761": 14, "449": 14, "563500": 14, "952": 14, "650008": 14, "198": 14, "563504": 14, "273": 14, "650133": 14, "658": 14, "563497": 14, "948": 14, "649457": 14, "563534": 14, "516": 14, "649329": 14, "563568": 14, "834": 14, "649122": 14, "563597": 14, "443": 14, "648625": 14, "232": [14, 18], "563512": 14, "081": 14, "648836": 14, "925": [14, 18], "kernel_grid_cent": 14, "300": [14, 19], "360": 14, "383": 14, "36972966": 14, "3407": 14, "68480754": 14, "4618": 14, "11403801": 14, "6300": 14, "left_voxel_edg": 14, "1709": 14, "43058496": 14, "30": [14, 18], "68486483": 14, "435": 14, "56428767": 14, "605": 14, "21461523": 14, "840": [14, 18], "942981": 14, "right_voxel_edg": 14, "23606704": 14, "support": 14, "tensor": [14, 16, 17, 18, 19, 22, 25, 28], "change_backend_gempi": [14, 18, 19], "engine_backend": [14, 18, 19], "critic": 14, "invers": [14, 17, 20, 21, 28], "gravity_gradi": 14, "calculate_gravity_gradi": 14, "centered_grid": 14, "densities_tensor": 14, "61": [14, 18, 19], "92": [14, 18, 19], "requires_grad": 14, "geophysics_input": [14, 18, 19], "geophysicsinput": [14, 19], "tz": [14, 19], "sol": [14, 19], "backward": 14, "output": 14, "grad": 14, "8962e": 14, "9249e": 14, "1455e": 14, "9": [14, 18, 19], "8152e": 14, "3207e": 14, "5280e": 14, "shift": 14, "align": 14, "b": [14, 19], "detach": [14, 18, 19], "6781754018106533": 14, "436": 14, "951602077492": 14, "adapt": [14, 15, 19, 25], "adapted_grav": 14, "diff": 14, "compar": [14, 18], "vmin": 14, "vmax": 14, "neg": 14, "max_diff": 14, "absolut": 14, "highlight": 14, "sc": [14, 19], "bwr": 14, "mgal": [14, 19], "998": [14, 17], "02_model_1_gempy_fw_grav": [14, 17, 28], "machin": 15, "techniqu": [15, 16, 20, 22, 25], "mineralogi": 15, "explor": [15, 16, 20, 22], "quantifi": [15, 20, 22, 25], "focus": 15, "requir": [15, 22], "packag": [15, 16, 18, 22, 25], "manag": 15, "sklearn": 15, "numer": 15, "workflow": [15, 25], "linear_model": 15, "linearregress": 15, "neural_network": 15, "mlpregressor": 15, "tqdm": 15, "As": [15, 16, 22, 25], "januari": 15, "publicli": 15, "author": [15, 25], "call": [15, 19], "conveni": 15, "categor": [15, 22, 25], "hylibrari": 15, "hylit": 15, "correspond": 15, "path_to_train": 15, "path_to_hsi_train": 15, "path_to_test": 15, "path_to_hsi_test": 15, "train_sh": 15, "loadsh": 15, "test_sh": 15, "train_fx50": 15, "fx50lib": 15, "train_fenix": 15, "fenixlib": 15, "train_lwir": 15, "lwirlib": 15, "train_vp": 15, "vp": 15, "test_fx50": 15, "test_fenix": 15, "test_lwir": 15, "test_vp": 15, "sensor": 15, "hull": 15, "correct": 15, "spectra": 15, "hsi_train": 15, "fenix": 15, "fx50": 15, "lwir": 15, "hc": 15, "450": 15, "2500": 15, "hsi_test": 15, "3771": 15, "51": [15, 18, 19], "1028": 15, "facilit": 15, "converg": 15, "loss": 15, "standardscal": 15, "scikit": 15, "purpos": [15, 19], "y_scaler": 15, "preprocess": 15, "often": [15, 20, 22, 25], "larg": 15, "band": 15, "might": 15, "redund": 15, "princip": 15, "pca": 15, "signific": 15, "isn": 15, "inter": 15, "correl": 15, "pca_x": 15, "fit_pca": 15, "normalis": 15, "set_transform": 15, "set_i": 15, "simpl": [15, 24, 25], "linear": 15, "regress": 15, "multilay": 15, "perceptron": 15, "dictionari": 15, "paramet": [15, 18, 19], "dict": 15, "mlp": 15, "hidden_layer_s": 15, "180": [15, 18], "max_it": 15, "sgd": 15, "learning_r": 15, "param": 15, "fit_intercept": 15, "linspac": [15, 18], "1e0": 15, "item": 15, "leav": 15, "fit_model": 15, "xtransform": 15, "ytransform": 15, "grid_search_cv": 15, "n_job": 15, "01it": [15, 18], "32": [15, 18], "85": [15, 18], "17": [10, 15, 18, 19], "get_score_t": 15, "tabl": 15, "cross": 15, "valid": [15, 18], "best": 15, "y_test": 15, "nbsp": 15, "cv": 15, "686": 15, "662": 15, "614": 15, "874": 15, "832": 15, "759": 15, "35": [15, 18], "813": 15, "03_hsi_to_petrophys": [15, 17, 28], "craft": [16, 22, 25], "advanc": [16, 22, 24, 25], "like": [16, 22, 25], "beginn": [16, 22, 25], "dive": [16, 22, 25], "ll": [16, 20, 22, 25], "turn": [16, 18, 22, 25], "current": [16, 22, 25], "principl": [16, 22, 25], "gradiometri": [16, 17, 22, 25, 28], "predict": [16, 17, 19, 22, 25, 28], "wave": [16, 17, 22, 25, 28], "veloc": [16, 17, 22, 25, 28], "hyperspectr": [16, 17, 22, 25, 28], "03_forward_engin": [17, 28], "dist": [18, 19], "infer": [18, 19], "nut": [18, 19], "autoguid": 18, "init_to_mean": 18, "arviz": [18, 19], "az": [18, 19], "gempy_prob": [18, 19], "plot_posterior": [18, 19], "default_r": [18, 19], "default_blu": [18, 19], "recent": 19, "last": 19, "04_probabilistic_model": [19, 21, 28], "01_thickness_problem_gempi": [18, 21, 28], "23": 18, "modulenotfounderror": [], "No": [18, 25], "seed": [18, 19], "123456": [18, 19], "manual_se": [18, 19], "set_rng_se": [18, 19], "data_path": 18, "abspath": 18, "plot_geo_setting_wel": 18, "along": 18, "devic": 18, "6e3": 18, "3700": 18, "well_1": 18, "41e3": 18, "well_2": 18, "p2d": 18, "legend": 18, "marker": 18, "3e3": 18, "400": 18, "71a4b3": 18, "9e3": 18, "da8886": 18, "vertic": 18, "vline": 18, "5e3": 18, "linewidth": 18, "grai": 18, "12000": 18, "4000": 18, "importer_help": 18, "importerhelp": 18, "path_to_orient": 18, "layers_orient": 18, "path_to_surface_point": 18, "layers_surface_point": 18, "temporari": 18, "hard": 18, "sigmoid": 18, "space": [18, 22, 25], "x_loc": 18, "6000": 18, "y_loc": 18, "z_loc": 18, "xyz_coord": 18, "set_custom_grid": 18, "befor": 18, "approach": [18, 20, 22, 25], "program": [18, 20, 22, 25], "languag": [18, 25], "uncertainti": [18, 20, 22, 25], "quantif": 18, "sp_coords_copi": 18, "interpolation_input_copi": [18, 19], "surface_point": 18, "sp_coord": 18, "aspect": [18, 19], "thick": 18, "y_obs_list": [18, 19], "prior_mean": [18, 19], "mu_top": 18, "mu_": [18, 19], "interpolation_input": [18, 19], "index_put": [18, 19], "data_descriptor": [18, 19], "input_data_descriptor": [18, 19], "simulated_wel": 18, "octrees_output": 18, "last_output_cent": 18, "custom_grid_valu": 18, "determinist": [18, 19], "y_thick": 18, "y_": 18, "ob": [18, 19], "assumpt": 18, "200": 18, "210": 18, "190": 18, "num_sampl": [18, 19], "from_pyro": [18, 19], "plot_trac": [18, 19], "markov": [18, 19], "chain": [18, 19], "mont": [18, 19], "carlo": [18, 19], "sampler": 18, "algorithm": [18, 19], "give": 18, "after": [18, 26], "magic": 18, "sauc": 18, "default_pykeop": 18, "_change_backend": 18, "pykeops_en": 18, "primit": [18, 19], "enable_valid": [18, 19], "is_valid": [18, 19], "nuts_kernel": [18, 19], "step_siz": 18, "0085": 18, "adapt_step_s": 18, "target_accept_prob": 18, "max_tree_depth": 18, "init_strategi": 18, "warmup_step": [18, 19], "obtain": 18, "posterior_sampl": [18, 19], "get_sampl": [18, 19], "posterior_predict": [18, 19], "plot_dens": [18, 19], "prior_predict": [18, 19], "shade": [18, 19], "var_nam": [18, 19], "data_label": [18, 19], "bayesian": [19, 20, 22], "pyro": [19, 20, 22, 24, 25], "mcmc": 19, "gaussian_kernel": 19, "setup_geophys": 19, "02_model_1_bayesian": [19, 21, 28], "26": [10, 18], "benchmark": 19, "env_path": 19, "comparison": 19, "adapted_observed_grav": 19, "length_scale_prior": 19, "1_000": 19, "variance_prior": 19, "covariance_matrix": 19, "prior_tensor": 19, "62": [18, 19], "mu_dens": 19, "fn": 19, "simulated_geophys": 19, "multivariatenorm": 19, "active_grid": 19, "prior": 19, "rais": 19, "notimplementederror": 19, "again": 19, "analyz": 19, "posterior": 19, "hdi_prob": 19, "99": [18, 19], "001": [], "dynam": [20, 22, 25], "uncertain": [20, 22, 25], "realm": [20, 22, 25], "emerg": [20, 22, 25], "statist": [20, 22, 25], "inher": [20, 22, 25], "embrac": [20, 22, 25], "gain": [20, 22, 25], "aleator": [20, 22, 25], "encod": [20, 22, 25], "robust": [20, 22, 25], "wai": [20, 22, 25], "reliabl": [20, 22, 25], "allow": [20, 22, 25], "437": [], "showcas": [22, 25], "divers": [22, 25], "onli": [22, 25], "achiev": [22, 25], "methodologi": [22, 25], "grasp": [22, 25], "nuanc": [22, 25], "while": [22, 25], "exhaust": [22, 25], "overview": 22, "mai": [22, 25], "uniqu": [22, 25], "codebas": [22, 25], "uncov": [22, 25], "live": [22, 25], "suggest": [22, 25], "novel": [22, 25], "stai": [22, 25], "latest": [22, 25], "reson": [22, 25], "discoveri": [22, 25], "re": [22, 25], "journei": [22, 25], "find": [24, 25], "collect": [24, 25], "basic": [24, 25, 27], "releas": 25, "dev0": 25, "gf79ba49": 25, "d20240612": 25, "date": 25, "13": [18, 19, 25, 28], "june": 25, "github": [25, 26], "com": 25, "materi": 25, "suit": 25, "serv": 25, "central": 25, "hub": 25, "access": 25, "softwar": 25, "toolset": 25, "member": 25, "wide": 25, "typic": 25, "extens": 25, "accommod": 25, "varieti": 25, "inquiri": 25, "meet": 25, "opportun": 25, "feedback": 25, "familiar": 25, "earli": 25, "dai": 25, "thing": 25, "orphan": 25, "There": 25, "requirements_opt": 25, "git": 25, "terranigma": 25, "egg": 25, "fund": 25, "european": 25, "union": 25, "horizon": 25, "europ": 25, "innov": 25, "programm": 25, "grant": 25, "agreement": 25, "101058483": 25, "opinion": 25, "express": 25, "howev": 25, "those": 25, "necessarili": 25, "reflect": 25, "changelog": 26, "rst": 26, "subsequ": 26, "deploi": 26, "version": 26, "pypi": 26, "pick": 26, "conda": 26, "forg": 26, "everyth": 26, "work": 26, "hour": 26, "setuptools_scm": 26, "wheel": 26, "folder": 26, "exclud": 26, "manifest": 26, "enh": 26, "bug": 26, "tst": 26, "bld": 26, "perf": 26, "cln": 26, "cleanup": 26, "grid_typ": 18, "customgrid": 18, "0x7f3657603190": 18, "warmup": 18, "250": 18, "acc": 18, "prob": 18, "970": 18, "75it": 18, "718": 18, "65it": 18, "70e": 18, "769": 18, "55it": 18, "783": 18, "38it": 18, "96e": 18, "772": 18, "67it": 18, "08e": 18, "793": 18, "24it": 18, "41e": 18, "820": 18, "14": 18, "10it": 18, "831": 18, "43it": 18, "06e": 18, "72it": 18, "28e": 18, "836": 18, "46it": 18, "850": 18, "19": 18, "81it": 18, "50e": 18, "858": 18, "94it": 18, "33e": 18, "837": 18, "85it": 18, "842": 18, "21e": 18, "845": 18, "854": 18, "00it": 18, "844": 18, "27": 18, "07": 18, "90it": 18, "835": 18, "28": [18, 19], "71it": 18, "29": 18, "09": [18, 28], "56it": 18, "45e": 18, "29it": 18, "83e": 18, "23it": 18, "49e": 18, "20it": 18, "38e": 18, "855": 18, "34": 18, "48it": 18, "74e": 18, "859": 18, "36": 18, "49it": 18, "88e": 18, "860": 18, "95it": 18, "13e": 18, "863": 18, "38": 18, "27it": 18, "866": 18, "39": 18, "70it": 18, "869": 18, "41": 18, "14it": 18, "04e": 18, "873": 18, "52it": 18, "36e": 18, "876": 18, "44": 18, "62it": 18, "97e": 18, "871": 18, "48": 18, "74it": 18, "72e": 18, "843": 18, "18it": 18, "53": 18, "962": 18, "955": 18, "57": 18, "21it": 18, "943": 18, "58": 18, "61it": 18, "933": 18, "24": 18, "22it": 18, "914": 18, "63": [10, 18], "11it": 18, "917": 18, "65": 18, "07it": 18, "918": 18, "67": 18, "927": 18, "69": 18, "19it": 18, "931": 18, "70": 18, "31it": 18, "928": 18, "72": 18, "73it": 18, "73": 18, "45it": 18, "74": 18, "935": 18, "93it": 18, "936": 18, "76": 18, "78": 18, "97it": 18, "939": 18, "79": 18, "13it": 18, "932": 18, "83": 18, "53it": 18, "84": 18, "930": 18, "921": 18, "86": 18, "37it": 18, "923": 18, "87": 18, "84it": 18, "88": 18, "922": 18, "90": 18, "05it": 18, "91": 18, "924": 18, "76it": 18, "94": 18, "95": 18, "68it": 18, "97": 18, "79it": 18, "98": 18, "40": 18, "17it": 18, "82it": 18, "102": 18, "103": 18, "104": 18, "926": 18, "25it": 18, "106": 18, "40it": 18, "107": 18, "108": 18, "920": 18, "109": 18, "86it": 18, "111": 18, "45": 18, "112": 18, "114": 18, "32it": 18, "47": 18, "51it": 18, "119": 18, "49": 18, "122": 18, "124": 18, "50it": 18, "126": 18, "127": 18, "52": [10, 12, 18, 28], "129": 18, "131": 18, "08it": 18, "132": 18, "54": 18, "134": 18, "47it": 18, "136": 18, "16it": 18, "919": 18, "138": 18, "56": 18, "140": 18, "142": 18, "144": 18, "145": 18, "146": 18, "83it": 18, "147": 18, "80it": 18, "149": 18, "151": 18, "915": 18, "153": 18, "155": 18, "158": 18, "59it": 18, "64": 18, "162": 18, "66": 18, "164": 18, "165": 18, "15it": 18, "166": 18, "170": 18, "64it": 18, "171": 18, "172": 18, "96it": 18, "173": 18, "99it": 18, "175": 18, "78it": 18, "176": 18, "71": 18, "178": 18, "182": 18, "54it": 18, "184": 18, "42it": 18, "187": 18, "41it": 18, "58it": 18, "191": 18, "77": 18, "193": 18, "39it": 18, "195": 18, "03it": 18, "197": 18, "199": 18, "201": 18, "203": 18, "82": 18, "205": 18, "207": 18, "209": 18, "211": 18, "212": 18, "60it": 18, "214": 18, "216": 18, "44it": 18, "218": 18, "219": 18, "87it": 18, "220": 18, "89": 18, "222": 18, "224": 18, "225": 18, "226": 18, "227": 18, "228": 18, "230": 18, "231": 18, "234": 18, "236": 18, "02it": 18, "237": 18, "12it": 18, "96": 18, "241": 18, "243": 18, "246": 18, "98it": 18, "247": 18, "249": 18, "77it": 18, "virtualenv": 18, "gempy_depend": 18, "lib": 18, "python3": 18, "site": 18, "io_pyro": 18, "could": 18, "trace": 18, "log_likelihood": 18, "omit": 18, "206": 19, "330": [], "0x7f2b1175b760": [], "corner": 10, "0x7f2aab7aeb30": [], "_plot_liquidearth": [], "652": [], "051": [], "703": [], "0x7f14ae14f760": 10, "0x7f14501aab60": 10, "app": 10, "4a7b5726": 10, "6ccd": 10, "4453": 10, "94d7": 10, "a9bbe72152a8": 10, "865": [10, 12, 28], "294": [19, 21, 28], "159": 28}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"contribut": 0, "issu": 0, "question": 0, "report": 0, "bug": 0, "featur": [0, 25], "request": 0, "new": 0, "code": 0, "python": [0, 1], "guidelin": 0, "licens": 0, "read": [1, 2, 3], "omf": [1, 2, 3], "project": [1, 2, 3], "Into": 1, "requir": [1, 2, 3, 25], "librari": [1, 2, 3, 15], "load": [1, 2, 3, 13, 15], "visual": [1, 2, 3, 4, 13, 18], "pyvista": [1, 2, 3], "convert": [1, 3], "unstructur": [1, 2, 3], "singl": [1, 3], "block": [1, 3], "data": [1, 2, 3, 4, 9, 13, 15], "model": [2, 7, 8, 10, 11, 13, 14, 15, 18, 19, 20, 22, 25], "1": [2, 3, 8, 13, 14], "subsurfac": [2, 3], "import": [2, 3, 9, 15], "conclus": 2, "export": 3, "exampl": [3, 19, 22, 25], "option": [3, 25], "graviti": [4, 13, 14], "reader": [5, 22, 25], "parser": [5, 22, 25], "comput": [6, 12, 17, 21, 23, 28], "time": [6, 12, 17, 21, 23, 28], "construct": [7, 8, 9, 10], "structur": [7, 11, 22, 25], "geolog": [7, 13, 18, 19], "set": [7, 13, 18], "up": [7, 13, 18], "gempi": [7, 18], "optim": 7, "nugget": 7, "helper": 8, "function": 8, "spremberg": [9, 10], "borehol": 9, "build": 10, "initi": [10, 13, 15, 18], "liquidearth": 10, "integr": 10, "invers": [13, 16, 19, 22, 25], "full": 13, "tensor": 13, "gradiometri": 13, "step": 13, "creat": [13, 15, 18], "directori": 13, "store": 13, "iter": 13, "output": 13, "2": [13, 18], "ftg": 13, "g": 13, "3": 13, "resampl": 13, "onto": 13, "regular": 13, "grid": [13, 18], "4": 13, "5": 13, "tensormesh": 13, "object": [13, 15], "6": 13, "mesh": 13, "7": 13, "problem": 13, "8": 13, "gaussian": 13, "mixtur": 13, "gmm": 13, "prior": [13, 18], "plot": [13, 18], "1d": 13, "9": 13, "hyper": 13, "paramet": 13, "sensit": 13, "weight": 13, "10": 13, "direct": 13, "11": 13, "run": [13, 18], "12": 13, "3d": 13, "13": 13, "quasi": 13, "14": 13, "updat": 13, "forward": 14, "predict": [15, 18], "p": 15, "wave": 15, "veloc": 15, "from": [15, 18], "hyperspectr": 15, "necessari": 15, "hycor": 15, "shed": 15, "hklearn": 15, "stack": 15, "scale": 15, "depend": 15, "variabl": 15, "y": 15, "transform": 15, "independ": 15, "x": 15, "train": 15, "score": 15, "evalu": 15, "geophys": [16, 22, 25], "includ": 18, "complex": 18, "probabilist": [18, 19, 20, 22, 25], "configur": 18, "custom": 18, "interpol": 18, "guess": 18, "geomodel": 18, "pyro": 18, "defin": 18, "sampl": 18, "posterior": 18, "us": 18, "mcmc": 18, "check": 18, "densiti": 18, "vector": [22, 25], "geologi": [22, 25], "bayesian": [24, 25], "infer": [24, 25], "theori": [24, 25], "document": 25, "repositori": 25, "overview": 25, "kei": 25, "get": 25, "start": 25, "prerequisit": 25, "note": 25, "explor": 25, "our": 25, "guid": 25, "galleri": 25, "acknowledg": 25, "mainten": 26, "make": 26, "releas": 26, "type": 26, "commit": 26, "manual": 27, "todo": 27}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Contributing": [[0, "contributing"]], "Issues": [[0, "issues"]], "Questions": [[0, "questions"]], "Reporting Bugs": [[0, "reporting-bugs"]], "Feature Requests": [[0, "feature-requests"]], "Contributing New Code": [[0, "contributing-new-code"]], "Python Code Guidelines": [[0, "python-code-guidelines"]], "Licensing": [[0, "licensing"]], "Reading OMF Project Into Python": [[1, "reading-omf-project-into-python"]], "Required Libraries": [[1, "required-libraries"]], "Load OMF Project": [[1, "load-omf-project"], [3, "load-omf-project"]], "Visualize OMF with PyVista": [[1, "visualize-omf-with-pyvista"]], "Convert OMF to Unstructured Single Block": [[1, "convert-omf-to-unstructured-single-block"], [3, "convert-omf-to-unstructured-single-block"]], "Visualize Unstructured Data": [[1, "visualize-unstructured-data"], [3, "visualize-unstructured-data"]], "Reading Model 1 OMF Project into Subsurface": [[2, "reading-model-1-omf-project-into-subsurface"]], "Importing Required Libraries": [[2, "importing-required-libraries"]], "Loading the OMF Project": [[2, "loading-the-omf-project"]], "Visualizing the OMF Project with PyVista": [[2, "visualizing-the-omf-project-with-pyvista"]], "Visualizing Unstructured Data with Subsurface and PyVista": [[2, "visualizing-unstructured-data-with-subsurface-and-pyvista"]], "Visualize Unstructured Data:": [[2, "visualize-unstructured-data"]], "Conclusions": [[2, "conclusions"]], "Reading OMF project and exporting it to Subsurface: Example 1": [[3, "reading-omf-project-and-exporting-it-to-subsurface-example-1"]], "Import Required Libraries": [[3, "import-required-libraries"]], "Visualize OMF Project with PyVista (Optional)": [[3, "visualize-omf-project-with-pyvista-optional"]], "Gravity Data Visualization": [[4, "gravity-data-visualization"]], "Readers and Parsers": [[5, "readers-and-parsers"], [22, "readers-and-parsers"], [25, "readers-and-parsers"]], "Computation times": [[6, "computation-times"], [12, "computation-times"], [17, "computation-times"], [21, "computation-times"], [23, "computation-times"], [28, "computation-times"]], "Constructing Structural Geological Model": [[7, "constructing-structural-geological-model"]], "Setting Up GemPy Model": [[7, "setting-up-gempy-model"]], "Optimizing Nuggets": [[7, "optimizing-nuggets"]], "Construct Model 1 with Helper Functions": [[8, "construct-model-1-with-helper-functions"]], "Construct Spremberg: Importing borehole data": [[9, "construct-spremberg-importing-borehole-data"]], "Construct Spremberg: Building initial model": [[10, "construct-spremberg-building-initial-model"]], "LiquidEarth Integration": [[10, "liquidearth-integration"]], "Structural Modeling": [[11, "structural-modeling"], [22, "structural-modeling"], [25, "structural-modeling"]], "Inversion of Full Tensor Gravity Gradiometry Data": [[13, "inversion-of-full-tensor-gravity-gradiometry-data"]], "Step 1: Create Directories for Storing Model Iterations and Outputs": [[13, "step-1-create-directories-for-storing-model-iterations-and-outputs"]], "Step 2: Load the FTG-G Data": [[13, "step-2-load-the-ftg-g-data"]], "Step 3: Resample Data onto a Regular Grid": [[13, "step-3-resample-data-onto-a-regular-grid"]], "Step 4: Visualize the Data": [[13, "step-4-visualize-the-data"]], "Step 5: Create a TensorMesh Object for Inversion": [[13, "step-5-create-a-tensormesh-object-for-inversion"]], "Step 6: Visualize the Mesh": [[13, "step-6-visualize-the-mesh"]], "Step 7: Set up the Gravity Inverse Problem": [[13, "step-7-set-up-the-gravity-inverse-problem"]], "Step 8: Setting up the Gaussian Mixture Model (GMM) Prior": [[13, "step-8-setting-up-the-gaussian-mixture-model-gmm-prior"]], "Plot the 1D-GMM": [[13, "plot-the-1d-gmm"]], "Step 9: Setting the Hyper-parameters and the Sensitivity Weights": [[13, "step-9-setting-the-hyper-parameters-and-the-sensitivity-weights"]], "Step 10: Initialize the Directives": [[13, "step-10-initialize-the-directives"]], "Step 11: Run the Inversion!": [[13, "step-11-run-the-inversion"]], "Step 12: Visualize the 3D Model": [[13, "step-12-visualize-the-3d-model"]], "Step 13: Visualize the Quasi-Geological Model": [[13, "step-13-visualize-the-quasi-geological-model"]], "Step 14: Plot the Updated 1D-GMM": [[13, "step-14-plot-the-updated-1d-gmm"]], "Model 1 Forward Gravity": [[14, "model-1-forward-gravity"]], "Predicting P-Wave Velocity from Hyperspectral Data": [[15, "predicting-p-wave-velocity-from-hyperspectral-data"]], "Importing Necessary Libraries": [[15, "importing-necessary-libraries"]], "Loading Data with hycore.Shed": [[15, "loading-data-with-hycore-shed"]], "Creating a hklearn.Stack Object": [[15, "creating-a-hklearn-stack-object"]], "Scaling the Dependent Variable (Y)": [[15, "scaling-the-dependent-variable-y"]], "Transforming the Independent Variable (X)": [[15, "transforming-the-independent-variable-x"]], "Initializing and Training Models": [[15, "initializing-and-training-models"]], "Scoring and Evaluating Models": [[15, "scoring-and-evaluating-models"]], "GeoPhysics and Inversion": [[16, "geophysics-and-inversion"], [22, "geophysics-and-inversion"], [25, "geophysics-and-inversion"]], "2.2 - Including GemPy": [[18, "including-gempy"]], "Complex probabilistic model": [[18, "complex-probabilistic-model"]], "Creating the Geological Model": [[18, "creating-the-geological-model"]], "Configuring the Model": [[18, "configuring-the-model"]], "Setting up a Custom Grid": [[18, "setting-up-a-custom-grid"]], "Plotting the Initial Geological Setting": [[18, "plotting-the-initial-geological-setting"]], "Interpolating the Initial Guess": [[18, "interpolating-the-initial-guess"]], "Probabilistic Geomodeling with Pyro": [[18, "probabilistic-geomodeling-with-pyro"]], "Defining the Probabilistic Model": [[18, "defining-the-probabilistic-model"]], "Running Prior Sampling and Visualization": [[18, "running-prior-sampling-and-visualization"]], "Sampling from the Posterior using MCMC": [[18, "sampling-from-the-posterior-using-mcmc"]], "Posterior Predictive Checks": [[18, "posterior-predictive-checks"]], "Density Plot of Posterior Predictive": [[18, "density-plot-of-posterior-predictive"]], "Probabilistic Inversion Example: Geological Model": [[19, "probabilistic-inversion-example-geological-model"]], "Probabilistic Modeling": [[20, "probabilistic-modeling"], [22, "probabilistic-modeling"], [25, "probabilistic-modeling"]], "Vector Geology Examples": [[22, "vector-geology-examples"], [25, "vector-geology-examples"]], "Bayesian Inference Theory": [[24, "bayesian-inference-theory"], [25, "bayesian-inference-theory"]], "vector-geology Documentation": [[25, "vector-geology-documentation"]], "Vector Geology Repository": [[25, "vector-geology-repository"]], "Overview": [[25, "overview"]], "Key Features": [[25, "key-features"]], "Getting Started": [[25, "getting-started"]], "Prerequisites": [[25, "prerequisites"]], "Note!": [[25, null]], "Explore Our Guides": [[25, "explore-our-guides"]], "Galleries": [[25, null]], "Requirements": [[25, "requirements"]], "Optional requirements": [[25, "optional-requirements"]], "Acknowledgements": [[25, "acknowledgements"]], "Maintenance": [[26, "maintenance"]], "Making a release": [[26, "making-a-release"]], "Type of commits": [[26, "type-of-commits"]], "Manual": [[27, "manual"]], "Todo": [[27, "id1"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/sg_execution_times.html b/sg_execution_times.html new file mode 100644 index 0000000..e654f7a --- /dev/null +++ b/sg_execution_times.html @@ -0,0 +1,189 @@ + + + + + + + + Computation times — Vector Geology 0.3.dev0+gf79ba49.d20240612 documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          + + +
          + +
          +

          Computation timesΒΆ

          +

          01:09.159 total execution time for 13 files from all galleries:

          +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

          Example

          Time

          Mem (MB)

          Construct Spremberg: Building initial model (../../examples/02_structural_modeling/04_model_spremberg_building.py)

          00:52.865

          0.0

          Probabilistic Inversion Example: Geological Model (../../examples/04_probabilistic_modeling/02_model_1_bayesian.py)

          00:16.294

          0.0

          Reading OMF Project Into Python (../../examples/01_readers/01_read_OMF_sites.py)

          00:00.000

          0.0

          Reading Model 1 OMF Project into Subsurface (../../examples/01_readers/02_model_1_OMF_to_subsurface.py)

          00:00.000

          0.0

          Reading OMF project and exporting it to Subsurface: Example 1 (../../examples/01_readers/03_model_2_OMF_to_subsurface.py)

          00:00.000

          0.0

          Gravity Data Visualization (../../examples/01_readers/04_model_1_read_gravity.py)

          00:00.000

          0.0

          Constructing Structural Geological Model (../../examples/02_structural_modeling/01_model_1_gempy_step_by_step.py)

          00:00.000

          0.0

          Construct Model 1 with Helper Functions (../../examples/02_structural_modeling/02_model_1_gempy.py)

          00:00.000

          0.0

          Construct Spremberg: Importing borehole data (../../examples/02_structural_modeling/03_model_spremberg_import.py)

          00:00.000

          0.0

          Inversion of Full Tensor Gravity Gradiometry Data (../../examples/03_forward_engines/01_gravity_gradiometry_inversion_pgi.py)

          00:00.000

          0.0

          Model 1 Forward Gravity (../../examples/03_forward_engines/02_model_1_gempy_fw_gravity.py)

          00:00.000

          0.0

          Predicting P-Wave Velocity from Hyperspectral Data (../../examples/03_forward_engines/03_HSI_To_Petrophysics.py)

          00:00.000

          0.0

          2.2 - Including GemPy (../../examples/04_probabilistic_modeling/01_thickness_problem_gempy.py)

          00:00.000

          0.0

          +
          +
          + + +
          + +
          +
          + +
          +
          + + + + + + + \ No newline at end of file