├── .env.example ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .teamcity └── Gempy │ ├── buildTypes │ ├── GempyEngine_TestingEngine.xml │ ├── Gempy_BuildDocs.xml │ ├── Gempy_PublishDocs.xml │ ├── Gempy_TestingGemPy.xml │ ├── Gempy_TestingViewer.xml │ ├── ReleaseGemPy.xml │ ├── ReleaseGemPyEngine.xml │ └── ReleaseGemPyViewer.xml │ ├── project-config.xml │ └── vcsRoots │ ├── GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain.xml │ ├── GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain.xml │ ├── Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain.xml │ ├── Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1.xml │ └── Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain2.xml ├── .travis.yml ├── AUTHORS.rst ├── CITATION.cff ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DevelopersGuide.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── WhatsNewGemPy3.md ├── docs ├── .buildinfo ├── .nojekyll ├── CNAME ├── Makefile ├── __init__.py ├── developers_notes │ └── dev_log │ │ ├── 2022-2023.md │ │ ├── 2025_05.md │ │ ├── log_2024-05.md │ │ ├── log_2024-06-25.md │ │ └── log_2024-06.md ├── index.html ├── main_docstrings ├── readme_images │ ├── alesmodel.png │ ├── data_vis.png │ ├── geomap.png │ ├── greenstonemodel.png │ ├── header_combined_slim.png │ ├── model1_nodata.png │ ├── model2_nodata.png │ ├── model3_nodata.png │ ├── model4_nodata.png │ ├── model5_nodata.png │ ├── model6_nodata.png │ ├── model_header.png │ ├── perthmodel.png │ ├── scalarfield.png │ ├── sectiontest.png │ ├── topology.png │ └── topology_matrix.png └── source │ ├── _images │ ├── 3D_view_pyvista_example.png │ ├── AlesModel_example.png │ ├── data_to_model.png │ ├── ge.png │ ├── gempy_zunc.png │ ├── google_Earth.svg │ ├── input_example.png │ ├── institute.JPG │ ├── model_example.png │ ├── model_examples.png │ ├── modeling_principle.png │ ├── perth_example.png │ ├── sandbox.jpg │ ├── sandstone_example.png │ ├── uncertainty.png │ └── vtkFault.png │ ├── _static │ ├── GemPy_model_combined.png │ ├── computational_graph1.png │ ├── computational_graph2.png │ ├── correlation.pdf │ ├── grids.jpg │ ├── logos │ │ ├── Terranigma.png │ │ ├── favicon.ico │ │ ├── gempy.png │ │ └── logo_CGRE.png │ └── nothing.txt │ ├── _templates │ ├── base.rst │ ├── class.rst │ └── module.rst │ ├── api_reference.rst │ ├── conf.py │ ├── external │ └── _do_not_delete.txt │ ├── index.rst │ ├── installation.rst │ └── make_external_gallery.py ├── examples ├── __init__.py ├── data │ ├── figures │ │ ├── ipv.png │ │ └── ipyvolume.png │ ├── gempy_models │ │ ├── Greenstone │ │ │ ├── Greenstone_extent.npy │ │ │ ├── Greenstone_faults.csv │ │ │ ├── Greenstone_faults_relations.csv │ │ │ ├── Greenstone_kriging_data.csv │ │ │ ├── Greenstone_options.csv │ │ │ ├── Greenstone_orientations.csv │ │ │ ├── Greenstone_rescaling_data.csv │ │ │ ├── Greenstone_resolution.npy │ │ │ ├── Greenstone_series.csv │ │ │ ├── Greenstone_surface_points.csv │ │ │ └── Greenstone_surfaces.csv │ │ ├── Tutorial_ch1-1_Basics │ │ │ ├── Tutorial_ch1-1_Basics_extent.npy │ │ │ ├── Tutorial_ch1-1_Basics_faults.csv │ │ │ ├── Tutorial_ch1-1_Basics_faults_relations.csv │ │ │ ├── Tutorial_ch1-1_Basics_kriging_data.csv │ │ │ ├── Tutorial_ch1-1_Basics_options.csv │ │ │ ├── Tutorial_ch1-1_Basics_orientations.csv │ │ │ ├── Tutorial_ch1-1_Basics_rescaling_data.csv │ │ │ ├── Tutorial_ch1-1_Basics_resolution.npy │ │ │ ├── Tutorial_ch1-1_Basics_series.csv │ │ │ ├── Tutorial_ch1-1_Basics_surface_points.csv │ │ │ └── Tutorial_ch1-1_Basics_surfaces.csv │ │ ├── Tutorial_ch1-8_Onlap_relations │ │ │ ├── Tutorial_ch1-8_Onlap_relations_extent.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_fault_blocks.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_faults.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_faults_relations.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_gradient.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_kriging_data.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_lith_block.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_options.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_orientations.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_rescaling_data.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_resolution.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_scalar_field_faults.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_scalar_field_lith.npy │ │ │ ├── Tutorial_ch1-8_Onlap_relations_series.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_surface_points.csv │ │ │ ├── Tutorial_ch1-8_Onlap_relations_surfaces.csv │ │ │ └── Tutorial_ch1-8_Onlap_relations_values_block.npy │ │ ├── Tutorial_ch1-9a_Fault_relations │ │ │ ├── Tutorial_ch1-9a_Fault_relations_extent.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_fault_blocks.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_faults.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_faults_relations.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_gradient.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_kriging_data.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_lith_block.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_options.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_orientations.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_rescaling_data.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_resolution.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_scalar_field_faults.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_scalar_field_lith.npy │ │ │ ├── Tutorial_ch1-9a_Fault_relations_series.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_surface_points.csv │ │ │ ├── Tutorial_ch1-9a_Fault_relations_surfaces.csv │ │ │ └── Tutorial_ch1-9a_Fault_relations_values_block.npy │ │ └── Tutorial_ch1-9b_Fault_relations │ │ │ ├── Tutorial_ch1-9b_Fault_relations_extent.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_fault_blocks.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_faults.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_faults_relations.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_gradient.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_kriging_data.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_lith_block.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_options.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_orientations.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_rescaling_data.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_resolution.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_scalar_field_faults.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_scalar_field_lith.npy │ │ │ ├── Tutorial_ch1-9b_Fault_relations_series.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_surface_points.csv │ │ │ ├── Tutorial_ch1-9b_Fault_relations_surfaces.csv │ │ │ └── Tutorial_ch1-9b_Fault_relations_values_block.npy │ └── input_data │ │ ├── AlesModel │ │ ├── 2018_interf.csv │ │ ├── 2018_orient_clust_n_init5_0.csv │ │ └── _cropped_DEM_coarse.tif │ │ ├── Claudius │ │ ├── APoints.csv │ │ ├── BPoints.csv │ │ ├── CPoints.csv │ │ ├── DPoints.csv │ │ ├── Dips.csv │ │ └── Fault.csv │ │ ├── Hecho │ │ ├── Dips.csv │ │ ├── F1Line.csv │ │ ├── F2Line.csv │ │ ├── F3Line.csv │ │ ├── H1.csv │ │ ├── H2.csv │ │ ├── H3.csv │ │ ├── H4.csv │ │ ├── H5.csv │ │ ├── H6.csv │ │ ├── H7.csv │ │ ├── H8.csv │ │ └── H9.csv │ │ ├── Moureze │ │ ├── Moureze_Points.csv │ │ ├── Sections_EW.csv │ │ └── Sections_NS.csv │ │ ├── jan_models │ │ ├── fixture_model_orientations.csv │ │ ├── fixture_model_surfaces.csv │ │ ├── model1_orientations.csv │ │ ├── model1_surface_points.csv │ │ ├── model2_orientations.csv │ │ ├── model2_surface_points.csv │ │ ├── model3_orientations.csv │ │ ├── model3_surface_points.csv │ │ ├── model4_orientations.csv │ │ ├── model4_surface_points.csv │ │ ├── model5_orientations.csv │ │ ├── model5_surface_points.csv │ │ ├── model6_orientations.csv │ │ ├── model6_surface_points.csv │ │ ├── model7_orientations.csv │ │ ├── model7_surface_points.csv │ │ ├── tutorial_model_orientations.csv │ │ └── tutorial_model_surface_points.csv │ │ ├── lisa_models │ │ ├── foliations1.csv │ │ ├── foliations2.csv │ │ ├── foliations3.csv │ │ ├── foliations5.csv │ │ ├── foliations6.csv │ │ ├── foliations7.csv │ │ ├── foliations8.csv │ │ ├── foliations9.csv │ │ ├── interfaces1.csv │ │ ├── interfaces2.csv │ │ ├── interfaces3.csv │ │ ├── interfaces5.csv │ │ ├── interfaces6.csv │ │ ├── interfaces7.csv │ │ ├── interfaces8.csv │ │ └── interfaces9.csv │ │ ├── perth_basin │ │ ├── Paper_GU2F_sc_faults_topo_Foliations.csv │ │ └── Paper_GU2F_sc_faults_topo_Points.csv │ │ ├── striplog_integration │ │ ├── alpha_strip.tops │ │ ├── beta_strip.tops │ │ ├── epsilon_strip.tops │ │ └── gamma_strip.tops │ │ ├── tut-ch1-4 │ │ ├── tut_ch1-4_orientations.csv │ │ └── tut_ch1-4_points.csv │ │ ├── tut-ch1-5 │ │ ├── tut_ch1-5_orientations.csv │ │ └── tut_ch1-5_points.csv │ │ ├── tut-ch1-7 │ │ ├── bogota.tif │ │ ├── onelayer_interfaces.csv │ │ └── onelayer_orient.csv │ │ ├── tut_SandStone │ │ ├── SandStone_Foliations.csv │ │ ├── SandStone_Points.csv │ │ ├── Sst_grav_1000.xyz │ │ ├── Sst_grav_2000.xyz │ │ ├── Sst_grav_500.xyz │ │ ├── Uncertainties.xlsx │ │ ├── parameters.xlsx │ │ └── real_grav.npy │ │ ├── tut_chapter1 │ │ ├── .~lock.fault_unconformity_model_orientations.csv# │ │ ├── .~lock.fault_unconformity_model_points.csv# │ │ ├── fault_unconformity_model_orientations.csv │ │ ├── fault_unconformity_model_points.csv │ │ ├── simple_fault_model_orientations.csv │ │ ├── simple_fault_model_orientations_geophy.csv │ │ ├── simple_fault_model_points.csv │ │ └── simple_fault_model_points_geophy.csv │ │ └── tut_chapter6 │ │ ├── ch6_data_fol.csv │ │ └── ch6_data_interf.csv ├── examples │ ├── README.rst │ ├── __init__.py │ ├── geometries │ │ ├── README.rst │ │ ├── __init__.py │ │ ├── a01_horizontal_stratigraphic.py │ │ ├── b02_fold.py │ │ ├── c03_recumbent_fold.py │ │ ├── d04_pinchout.py │ │ ├── e05_fault.py │ │ ├── f06_unconformity.py │ │ ├── g07_combination.py │ │ └── h08_more_examples.py │ └── real │ │ ├── Alesmodel.py │ │ ├── Claudius.py │ │ ├── Greenstone.py │ │ ├── Hecho.py │ │ ├── Moureze.py │ │ ├── Perth_basin.py │ │ ├── README.rst │ │ ├── __init__.py │ │ ├── mik.py │ │ └── moureze_sf_gempy ├── integrations │ ├── README.rst │ ├── __init__.py │ ├── gempy_export_MOOSE.py │ ├── gempy_subsurface.py │ ├── geo_model_units_moose_input.i │ ├── permeability_pflotran.png │ └── pflotran_perth_bassin.in └── tutorials │ ├── README.rst │ ├── __init__.py │ ├── a_getting_started │ ├── README.rst │ ├── __init__.py │ ├── boreholes_concept.png │ └── get_started.py │ ├── ch1_fundamentals │ ├── README.rst │ ├── __init__.py │ ├── ch1_1_basics.py │ ├── ch1_3a_grids.py │ ├── ch1_3b_cross_sections.py │ ├── ch1_3c_topography.py │ ├── ch1_4_onlap_relations.py │ ├── ch1_5_fault_relations.py │ ├── ch1_6_2d_visualization.py │ └── ch1_7_3d_visualization.py │ ├── ch2-Geophysics │ ├── README.rst │ ├── ch2_1_gravity.py │ └── ch2_2_cell_selection.py │ ├── ch3-Interpolations │ ├── README.rst │ └── ch3_1_kriging_interpolation_and_simulation.py │ ├── ch4-Topology │ ├── README.rst │ ├── __init__.py │ └── ch4-1-Topology.py │ └── z_other_tutorials │ ├── README.rst │ ├── __init__.py │ ├── json_io │ ├── 01_surface_points_io.py │ ├── 02_horizontal_stratigraphic.py │ ├── 03_multiple_series_faults.py │ ├── 04_combination_model.py │ ├── 05_minimal_json.py │ ├── 05c_minimal_comparison.py │ ├── horizontal_stratigraphic.json │ ├── minimal_model.json │ ├── minimal_model_loaded.json │ ├── model_x_direction.png │ ├── model_y_direction.png │ ├── multiple_series_faults.json │ └── sample_surface_points.json │ ├── video_tutorial_model_1.py │ ├── video_tutorial_model_2_faults.py │ └── video_tutorial_model_3_onlap.py ├── gempy ├── API │ ├── __init__.py │ ├── _version.py │ ├── compute_API.py │ ├── examples_generator.py │ ├── faults_API.py │ ├── gp2_gp3_compatibility │ │ ├── __init__.py │ │ ├── gp3_to_gp2_input.py │ │ └── gp3_to_gp2_output.py │ ├── grid_API.py │ ├── implicit_functions.py │ ├── initialization_API.py │ ├── io_API.py │ └── map_stack_to_surfaces_API.py ├── __init__.py ├── _version.py ├── config.py ├── core │ ├── __init__.py │ ├── color_generator.py │ ├── data │ │ ├── DEP_xsolution.py │ │ ├── __init__.py │ │ ├── _data_points_helpers.py │ │ ├── core_utils.py │ │ ├── encoders │ │ │ ├── __init__.py │ │ │ ├── binary_encoder.py │ │ │ ├── converters.py │ │ │ └── json_geomodel_encoder.py │ │ ├── enumerators.py │ │ ├── gempy_engine_config.py │ │ ├── geo_model.py │ │ ├── grid.py │ │ ├── grid_modules │ │ │ ├── __init__.py │ │ │ ├── custom_grid.py │ │ │ ├── diamond_square.py │ │ │ ├── regular_grid.py │ │ │ ├── sections_grid.py │ │ │ └── topography.py │ │ ├── importer_helper.py │ │ ├── options.py │ │ ├── orientations.py │ │ ├── structural_element.py │ │ ├── structural_frame.py │ │ ├── structural_group.py │ │ └── surface_points.py │ └── engine.rst ├── modules │ ├── __init__.py │ ├── advance_pile │ │ ├── __init__.py │ │ └── strat_definition.py │ ├── custom_implicit_functions │ │ ├── __init__.py │ │ └── ellipsoid_implicit_function.py │ ├── data_manipulation │ │ ├── __init__.py │ │ ├── _engine_factory.py │ │ ├── manipulate_points.py │ │ ├── manipulate_structural_frame.py │ │ └── orientations_from_surface_points.py │ ├── grids │ │ ├── __init__.py │ │ └── create_topography.py │ ├── json_io │ │ ├── __init__.py │ │ ├── json_operations.py │ │ └── schema.py │ ├── mesh_extranction │ │ ├── __init__.py │ │ └── marching_cubes.py │ ├── optimize_nuggets │ │ ├── __init__.py │ │ ├── _ops.py │ │ └── _optimizer.py │ └── serialization │ │ ├── __init__.py │ │ └── save_load.py └── optional_dependencies.py ├── requirements ├── base-requirements.txt ├── dev-requirements.txt ├── docs_requirements.txt ├── optional-requirements.txt └── requirements.txt ├── scripts ├── build_docs.sh ├── deploy.sh └── update_doc_elements.sh ├── setup.cfg ├── setup.py └── test ├── Test Results - pytest_in_test.xml ├── __init__.py ├── conftest.py ├── context.py ├── pytest.ini ├── test_api ├── __init__.py ├── test_backends.py ├── test_fault_api.py ├── test_gempy_legacy_comp.py ├── test_initialization_and_compute_api.py ├── test_model_construction_granular.py ├── test_modify_input_data.py └── test_show_input_data.py ├── test_community_bugs ├── __init__.py └── test_community_bugs.py ├── test_core ├── __init__.py ├── test_color_generator.py ├── test_installation.py └── test_transfoms.py ├── test_model_types ├── __init__.py ├── test_example_models_I.py ├── test_example_models_I.test_generate_combination_model.Combination Scalar Field.approved.txt ├── test_example_models_I.test_generate_fault_model.Fault Scalar Field.approved.txt ├── test_example_models_I.test_generate_fold_model.Anticline Scalar Field.approved.txt ├── test_example_models_I.test_generate_horizontal_stratigraphic_model.Horizontal Stratigraphic Scalar Field.approved.txt └── test_subduction.py ├── test_modules ├── __init__.py ├── _geophysics_TO_UPDATE │ ├── __init__.py │ ├── test_gravity.py │ └── test_gravity.test_gravity.verify │ │ └── 2-layers.approved.txt ├── test_faults │ ├── __init__.py │ ├── test_finite_faults.py │ └── test_finite_faults.test_finite_fault_scalar_field_on_fault.verify │ │ └── fault.approved.txt ├── test_gempy_subsurface.py ├── test_grids │ ├── __init__.py │ ├── test_custom_grid.py │ ├── test_custom_grid.test_custom_grid.verify │ │ └── fold.approved.txt │ ├── test_diamond_square.py │ ├── test_grids_I.py │ ├── test_grids_sections.py │ ├── test_grids_sections.test_section_grids.verify │ │ └── fold.approved.txt │ └── test_grids_sections.test_topography_II.verify │ │ └── Model1.approved.txt ├── test_json_io.py ├── test_marching_cubes.py ├── test_outliers.py ├── test_pile │ ├── __init__.py │ └── test_stratigraphic_pile.py ├── test_serialize_model.py ├── test_serialize_model.test_generate_horizontal_stratigraphic_model.verify │ └── Horizontal Stratigraphic Model serialization.approved.txt └── test_transformed_space.py ├── test_private ├── __init__.py └── test_terranigma │ ├── __init__.py │ └── test_nuggets │ ├── __init__.py │ ├── _aux_func.py │ └── test_nugget_effect_optimization.py └── verify_helper.py /.env.example: -------------------------------------------------------------------------------- 1 | LIQUID_EARTH_API_TOKEN = "foobar-1499cbe49808c8cfef14303d2aaacXDx-w1vc1bD065Wj0ABi3HD2fzQ" 2 | BOREHOLES_SOUTH_FOLDER = "/mnt/d/OneDrive - .../boreholes_south" 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: Leguark 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. Include error messages / 12 | tracebacks. If useful include screenshots. 13 | 14 | **To Reproduce** 15 | Provide detailed steps to reproduce the behavior: 16 | 17 | 1. 18 | 2. 19 | 3. 20 | ... 21 | 22 | **Expected behavior** 23 | A clear and concise description of what you expected to happen. 24 | 25 | **Screenshots** 26 | If applicable, add screenshots to help explain your problem. 27 | 28 | **Desktop (please complete the following information):** 29 | * OS: (e.g. iOS) 30 | * GemPy Version 31 | * if installed via pip: provide GemPy version (e.g. 2.0.1) 32 | * if cloned from GitHub: provide Git commit id (e.g. 839bf85f) 33 | * Jupyter Version (if applicable) 34 | 35 | **Additional context** 36 | Add any other context about the problem here. 37 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Ask a question about GemPy 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **What is your question?** 11 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Description 2 | Please include a summary of the changes. 3 | 4 | Relates to 5 | 6 | # Checklist 7 | - [ ] My code uses type hinting for function and method arguments and return values. 8 | - [ ] I have created tests which cover my code. 9 | - [ ] The test code either 1. demonstrates at least one valuable use case (e.g. integration tests) 10 | or 2. verifies that outputs are as expected for given inputs (e.g. unit tests). 11 | - [ ] New tests pass locally with my changes. 12 | 13 | -------------------------------------------------------------------------------- /.teamcity/Gempy/buildTypes/ReleaseGemPy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Release GemPy 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.teamcity/Gempy/buildTypes/ReleaseGemPyEngine.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Release GemPy Engine 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.teamcity/Gempy/buildTypes/ReleaseGemPyViewer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Release GemPy Viewer 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.teamcity/Gempy/project-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Gempy 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /.teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://github.com/gempy-project/gempy_engine#refs/heads/main 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://github.com/gempy-project/gempy_viewer#refs/heads/main 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | GemPy Main 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Caching docs vcs 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | GemPy - GH Pages 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | os: linux 3 | dist: xenial 4 | 5 | branches: 6 | only: 7 | - master 8 | - release 9 | 10 | python: 11 | - '3.8' 12 | 13 | before_install: 14 | # configure a headless display 15 | - git clone --depth 1 git://github.com/pyvista/gl-ci-helpers.git 16 | - source ./gl-ci-helpers/travis/setup_headless_display.sh 17 | 18 | install: 19 | - sudo apt-get update 20 | # We do this conditionally because it saves us some downloading if the 21 | # version is the same. 22 | - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; 23 | - bash miniconda.sh -b -p $HOME/miniconda 24 | - export PATH="$HOME/miniconda/bin:$PATH" 25 | - hash -r 26 | - conda config --set always_yes yes --set changeps1 no 27 | - conda update --all 28 | # Useful for debugging any issues with conda 29 | - conda info -a 30 | 31 | # Install and activate environment, install packages 32 | - conda create -q -n tenv python=$TRAVIS_PYTHON_VERSION 33 | - source activate tenv 34 | 35 | # Installs from conda-forge 36 | - conda install -c conda-forge python-graphviz 37 | - conda install -c conda-forge pip matplotlib ipython six pytest pytest-cov ipywidgets 38 | - conda install -c conda-forge recommonmark networkx panel setuptools mkl-service 39 | 40 | # Installs from anaconda 41 | - conda install -c anaconda libffi 42 | 43 | - conda install aesara 44 | 45 | # Installs from pip 46 | - pip install welly pymc3 47 | 48 | - pip install scikit-image>=0.17 sklearn 49 | 50 | - pip install pandas seaborn>=0.9 sphinx-gallery 51 | # Install 52 | - pip install -e . 53 | 54 | # Pyvista should have been fixed- pip install pyvista 55 | # Arviz broke with xarray update 56 | - pip install git+https://github.com/arviz-devs/arviz --force-reinstall 57 | 58 | # Install subsurface 59 | - pip install subsurface 60 | 61 | - conda install -c conda-forge gdal 62 | 63 | - python -c "import pyvista as pv;print(pv.Report())" 64 | 65 | - pip install pooch 66 | 67 | stages: 68 | - test 69 | 70 | jobs: 71 | include: 72 | - stage: test 73 | script: 74 | - pytest -v 75 | cache: pip 76 | -------------------------------------------------------------------------------- /AUTHORS.rst: -------------------------------------------------------------------------------- 1 | .. _authors_ref: 2 | 3 | Authors 4 | ------- 5 | 6 | .. image:: https://img.shields.io/github/contributors/gempy-project/gempy_engine.svg?logo=github&logoColor=white 7 | :target: https://github.com/gempy-projects/gempy_engine/graphs/contributors/ 8 | 9 | 10 | The following is a list of authors who have made substantial contributions to 11 | the conception or design of this software; or the creation of new code used in 12 | this software; or have drafted the work or substantively revised it: 13 | 14 | - Miguel de la Varga, (`@leguark `_) 15 | - Alexander Zimmerman 16 | - Elisa Heim 17 | - Alexander Schaaf 18 | - Fabian Stamm 19 | - Florian Wellmann 20 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | message: "If you use GemPy, please cite it as below." 3 | authors: 4 | - family-names: "de la Varga" 5 | given-names: "Miguel" 6 | orcid: https://orcid.org/0000-0001-6941-2685 7 | - family-names: "Schaaf" 8 | given-names: "Alexander" 9 | - family-names: "Wellmann" 10 | given-names: "Florian" 11 | orcid: https://orcid.org/0000-0003-2552-1876 12 | title: "GemPy 1.0: open-source stochastic geological modeling and inversion" 13 | version: 1.0 14 | doi: https://doi.org/10.5194/gmd-12-1-2019 15 | date-released: 2019-01-02 16 | url: "https://github.com/cgre-aachen/gempy" 17 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | exclude notebooks/* 2 | exclude docs/* 3 | exclude examples/* 4 | include LICENSE 5 | -------------------------------------------------------------------------------- /docs/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 6b4aef288104d0a5b66327c5a7278fec 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/.nojekyll -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | gempy.rocks -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = gempy 8 | SOURCEDIR = source 9 | BUILDDIR = build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | 22 | html-noplot: export SPHX_GLR_THEME = $(theme) 23 | html-noplot: 24 | $(SPHINXBUILD) -D plot_gallery=0 -b html $(ALLSPHINXOPTS) $(SOURCEDIR) $(BUILDDIR)/html 25 | @echo 26 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 27 | 28 | -------------------------------------------------------------------------------- /docs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/__init__.py -------------------------------------------------------------------------------- /docs/developers_notes/dev_log/2022-2023.md: -------------------------------------------------------------------------------- 1 | ## Refactoring for v3 notes: 2 | 3 | - I want to make proper subpackages of the library 4 | - Once the subpackages are done we can start moving them out to different repos 5 | - First proposition: 6 | - integration tests 7 | - notebooks 8 | - scripts 9 | - examples 10 | - GemPy 11 | - Plugins: 12 | - Addons 13 | - Assets 14 | - Bayesian 15 | - API 16 | - API Modules 17 | - gempy_api 18 | - Plotting 19 | - Core 20 | - Data 21 | - Interpolation 22 | - Theano 23 | - GemPy Engine 24 | 25 | > I think Pluggins and addons have to be split depending on how couple are they to the interpolator? 26 | 27 | 28 | ## Refactoring notes: 29 | 30 | Doing: 31 | - [-] Refactoring interpolation (Aug-Sep 2023) 32 | 33 | - TODO: 34 | - [ ] Saving and loading models (Sep-Oct 2023) 35 | - [ ] Refactoring Geophysics (Oct-Nov 2023) 36 | - [ ] Refactoring topology 37 | - [ ] Orientations from surface points - Move to gempy_plugins -------------------------------------------------------------------------------- /docs/developers_notes/dev_log/2025_05.md: -------------------------------------------------------------------------------- 1 | ### From gempy_prob notes: 2 | **Saving models** 3 | - ? Do we want to try to save the full input as versioning so that we can just have one system to go back and forth? 4 | - A way to save the model already with the correct **nugget effects** instead of having to "load nuggets" 5 | 6 | # TODO: 7 | -[ ] Saving and loading models 8 | - [x] Make tests passing for InterpOptions serializable 9 | - [x] Dealing with large numpy arrays 10 | - [x] Trying to have a better implementation for deserializing complex fields 11 | - [ ] Make save and load function 12 | -[ ] Better api for nugget effect optimization 13 | 14 | ## Saving models 15 | - From gempy 16 | - StructuralFrame 17 | - OrientationsTable 18 | - SurfacePointsTable 19 | - From Engine 20 | - Input 21 | - EngineGrid 22 | - GeophysicsInput 23 | - InterpolationOptions 24 | - InputDataDescriptor 25 | - InterpolatorInput 26 | - Solutions (Not sure if I want to save them) 27 | - RawArraysSolutions 28 | - Solutions 29 | - Testing 30 | - [ ] 10 Test to go in modules 31 | - [ ] test api 32 | 33 | ## What do I have in the engine server logic? 34 | -------------------------------------------------------------------------------- /docs/developers_notes/dev_log/log_2024-06-25.md: -------------------------------------------------------------------------------- 1 | ## Goals 2 | 3 | - [ ] 1. Fixing 2024.2.0 for whatever version of python that is not working 4 | 5 | 6 | ## TODO: 7 | 8 | - [x] Analyze error: 9 | - [x] Set up environment 3.11 10 | - [x] Fixing the lines of code 11 | - [x] Test the code 12 | - [ ] Release hot fix 13 | 14 | ## Extra points: 15 | - [ ] Setting up github actions 16 | - [ ] Categories for the tests like I did in subsurface 17 | - [ ] Run tests in python 3.10, 3.11 and 3.12 -------------------------------------------------------------------------------- /docs/developers_notes/dev_log/log_2024-06.md: -------------------------------------------------------------------------------- 1 | # Refactoring grid to add transform 2 | 3 | ## TODO: 4 | - [x] Rotation of pyvista grid 5 | - [x] Rotation of pyvista meshes 6 | - [ ] Run something with octrees again 7 | - [ ] **We do need settings presets** 8 | 9 | 10 | ## Release Notes: 11 | - (Beta) Pivot grids 12 | - Analysis tools: 13 | - Eigenvalues and condition numbers 14 | - Transformed data plots 15 | - Octree refinement evaluation 16 | - Improved octree testing 17 | - LiquidEarth integration 18 | - Chunking for large grids 19 | 20 | ## Notes: 21 | ### Optimizing interpolation June 2024 22 | 23 | - Create_grad_kernel is call 27 times 24 | 25 | ### Wholes issue 26 | - Spremberg with 1.5 std of extra refinement: 27 | Number of voxels marked by stats: 424 of torch.Size([512]). 28 | Number of voxels marked total by corners: 281 29 | Dense Grid would be 512 voxels 30 | Number of voxels marked by stats: 2535 of torch.Size([3568]). 31 | Number of voxels marked total by corners: 1492 32 | Dense Grid would be 4096 voxels 33 | Number of voxels marked by stats: 12148 of torch.Size([21152]). 34 | Number of voxels marked total by corners: 7614 35 | Dense Grid would be 32768 voxels 36 | Number of voxels marked by stats: 69619 of torch.Size([101432]). 37 | Number of voxels marked total by corners: 37423 38 | Dense Grid would be 262144 voxels 39 | Chunking done: 12 chunks 40 | - Spremberg with 1 41 | Number of voxels marked by stats: 408 of torch.Size([512]). 42 | Number of voxels marked total by corners: 281 43 | Dense Grid would be 512 voxels 44 | Number of voxels marked by stats: 1953 of torch.Size([3504]). 45 | Number of voxels marked total by corners: 1492 46 | Dense Grid would be 4096 voxels 47 | Number of voxels marked by stats: 8632 of torch.Size([16856]). 48 | Number of voxels marked total by corners: 7612 49 | Dense Grid would be 32768 voxels 50 | Chunking done: 13 chunks 51 | Number of voxels marked by stats: 47653 of torch.Size([79080]). 52 | Number of voxels marked total by corners: 37408 53 | Dense Grid would be 262144 voxels 54 | Chunking done: 10 chunks 55 | 56 | ### Other: 57 | {'_cached_pivot': [200, 200, 0], 58 | '_is_default_transform': False, 59 | 'position': array([0., 0., 0.]), 60 | 'rotation': array([ 0., -0., -45.]), 61 | 'scale': array([1., 1., 1.])} 62 | 63 | ## Questions: 64 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Title 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/main_docstrings: -------------------------------------------------------------------------------- 1 | :class:`gempy.interpolator.InterpolatorData` 2 | :class:`gempy.data_management.InputData` 3 | :class:`gempy.data_management.GridClass` 4 | :class:`_pn.core.frame.DataFrame` 5 | :class:`_np.ndarray` 6 | 7 | 8 | :class:`matplotlib.pyplot.Figure` 9 | :class:`DataFrame` 10 | :class:`ndarray` 11 | 12 | itype(str {'all', 'interfaces', 'orientaions', 'formations', 'series', 'faults', 'fautls_relations'}): input 13 | data type to be retrieved. -------------------------------------------------------------------------------- /docs/readme_images/alesmodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/alesmodel.png -------------------------------------------------------------------------------- /docs/readme_images/data_vis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/data_vis.png -------------------------------------------------------------------------------- /docs/readme_images/geomap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/geomap.png -------------------------------------------------------------------------------- /docs/readme_images/greenstonemodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/greenstonemodel.png -------------------------------------------------------------------------------- /docs/readme_images/header_combined_slim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/header_combined_slim.png -------------------------------------------------------------------------------- /docs/readme_images/model1_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model1_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model2_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model2_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model3_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model3_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model4_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model4_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model5_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model5_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model6_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model6_nodata.png -------------------------------------------------------------------------------- /docs/readme_images/model_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/model_header.png -------------------------------------------------------------------------------- /docs/readme_images/perthmodel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/perthmodel.png -------------------------------------------------------------------------------- /docs/readme_images/scalarfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/scalarfield.png -------------------------------------------------------------------------------- /docs/readme_images/sectiontest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/sectiontest.png -------------------------------------------------------------------------------- /docs/readme_images/topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/topology.png -------------------------------------------------------------------------------- /docs/readme_images/topology_matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/readme_images/topology_matrix.png -------------------------------------------------------------------------------- /docs/source/_images/3D_view_pyvista_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/3D_view_pyvista_example.png -------------------------------------------------------------------------------- /docs/source/_images/AlesModel_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/AlesModel_example.png -------------------------------------------------------------------------------- /docs/source/_images/data_to_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/data_to_model.png -------------------------------------------------------------------------------- /docs/source/_images/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/ge.png -------------------------------------------------------------------------------- /docs/source/_images/gempy_zunc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/gempy_zunc.png -------------------------------------------------------------------------------- /docs/source/_images/input_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/input_example.png -------------------------------------------------------------------------------- /docs/source/_images/institute.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/institute.JPG -------------------------------------------------------------------------------- /docs/source/_images/model_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/model_example.png -------------------------------------------------------------------------------- /docs/source/_images/model_examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/model_examples.png -------------------------------------------------------------------------------- /docs/source/_images/modeling_principle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/modeling_principle.png -------------------------------------------------------------------------------- /docs/source/_images/perth_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/perth_example.png -------------------------------------------------------------------------------- /docs/source/_images/sandbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/sandbox.jpg -------------------------------------------------------------------------------- /docs/source/_images/sandstone_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/sandstone_example.png -------------------------------------------------------------------------------- /docs/source/_images/uncertainty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/uncertainty.png -------------------------------------------------------------------------------- /docs/source/_images/vtkFault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_images/vtkFault.png -------------------------------------------------------------------------------- /docs/source/_static/GemPy_model_combined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/GemPy_model_combined.png -------------------------------------------------------------------------------- /docs/source/_static/computational_graph1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/computational_graph1.png -------------------------------------------------------------------------------- /docs/source/_static/computational_graph2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/computational_graph2.png -------------------------------------------------------------------------------- /docs/source/_static/correlation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/correlation.pdf -------------------------------------------------------------------------------- /docs/source/_static/grids.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/grids.jpg -------------------------------------------------------------------------------- /docs/source/_static/logos/Terranigma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/logos/Terranigma.png -------------------------------------------------------------------------------- /docs/source/_static/logos/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/logos/favicon.ico -------------------------------------------------------------------------------- /docs/source/_static/logos/gempy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/logos/gempy.png -------------------------------------------------------------------------------- /docs/source/_static/logos/logo_CGRE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/logos/logo_CGRE.png -------------------------------------------------------------------------------- /docs/source/_static/nothing.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/_static/nothing.txt -------------------------------------------------------------------------------- /docs/source/_templates/base.rst: -------------------------------------------------------------------------------- 1 | {{ fullname | escape | underline}} 2 | 3 | .. currentmodule:: {{ module }} 4 | 5 | .. auto{{ objtype }}:: {{ objname }} 6 | 7 | .. include:: ../gen_modules/backreferences/{{fullname}}.{{item}}examples 8 | .. raw:: html 9 | 10 |
-------------------------------------------------------------------------------- /docs/source/_templates/class.rst: -------------------------------------------------------------------------------- 1 | {{ fullname | escape | underline}} 2 | 3 | .. currentmodule:: {{ module }} 4 | 5 | 6 | .. autoclass:: {{ objname }} 7 | :no-undoc-members: 8 | 9 | {% block examples%} 10 | .. include:: ../gen_modules/backreferences/{{fullname}}.examples 11 | .. raw:: html 12 | 13 |
14 | {% endblock %} 15 | {% block methods %} 16 | {% if methods %} 17 | .. rubric:: Methods 18 | .. autosummary:: 19 | {% for item in methods %} 20 | ~{{ name }}.{{ item }} 21 | {%- endfor %} 22 | {% endif %} 23 | {% endblock %} 24 | 25 | {% block attributes %} 26 | {% if attributes %} 27 | .. rubric:: Attributes 28 | 29 | .. autosummary:: 30 | {% for item in attributes %} 31 | ~{{ name }}.{{ item }} 32 | {%- endfor %} 33 | {% endif %} 34 | {% endblock %} 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/source/_templates/module.rst: -------------------------------------------------------------------------------- 1 | {{ fullname | escape | underline}} 2 | 3 | .. automodule:: {{ fullname }} 4 | 5 | {% block functions %} 6 | {% if functions %} 7 | .. rubric:: Functions 8 | 9 | .. autosummary:: 10 | {% for item in functions %} 11 | {{ item }} 12 | {%- endfor %} 13 | {% endif %} 14 | {% endblock %} 15 | 16 | {% block classes %} 17 | {% if classes %} 18 | .. rubric:: Classes 19 | 20 | .. autosummary:: 21 | {% for item in classes %} 22 | {{ item }} 23 | {%- endfor %} 24 | {% endif %} 25 | {% endblock %} 26 | 27 | {% block exceptions %} 28 | {% if exceptions %} 29 | .. rubric:: Exceptions 30 | 31 | .. autosummary:: 32 | {% for item in exceptions %} 33 | {{ item }} 34 | {%- endfor %} 35 | {% endif %} 36 | {% endblock %} 37 | -------------------------------------------------------------------------------- /docs/source/external/_do_not_delete.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/docs/source/external/_do_not_delete.txt -------------------------------------------------------------------------------- /examples/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/__init__.py -------------------------------------------------------------------------------- /examples/data/figures/ipv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/figures/ipv.png -------------------------------------------------------------------------------- /examples/data/figures/ipyvolume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/figures/ipyvolume.png -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_extent.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Greenstone/Greenstone_extent.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_faults.csv: -------------------------------------------------------------------------------- 1 | ,isFault,isFinite 2 | EarlyGranite_Series,False,False 3 | BIF_Series,False,False 4 | SimpleMafic_Series,False,False 5 | Basement,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_faults_relations.csv: -------------------------------------------------------------------------------- 1 | ,EarlyGranite_Series,BIF_Series,SimpleMafic_Series,Basement 2 | EarlyGranite_Series,False,False,False,False 3 | BIF_Series,False,False,False,False 4 | SimpleMafic_Series,False,False,False,False 5 | Basement,False,False,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_kriging_data.csv: -------------------------------------------------------------------------------- 1 | ,range,$C_o$,drift equations,nugget grad,nugget scalar 2 | values,86591.22357375486,178524761.9047619,[3 3 3 0],0.01,1e-06 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_options.csv: -------------------------------------------------------------------------------- 1 | ,dtype,output,aesara_optimizer,device,verbosity 2 | values,float64,geology,fast_compile,cpu,[] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_rescaling_data.csv: -------------------------------------------------------------------------------- 1 | ,rescaling factor,centers 2 | values,97123.0,[ 7.21180062e+05 6.89349475e+06 -3.95136022e+03] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_resolution.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Greenstone/Greenstone_resolution.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_series.csv: -------------------------------------------------------------------------------- 1 | ,order_series,BottomRelation,isActive 2 | EarlyGranite_Series,1,Erosion,True 3 | BIF_Series,2,Erosion,True 4 | SimpleMafic_Series,3,Erosion,True 5 | Basement,4,Erosion,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Greenstone/Greenstone_surfaces.csv: -------------------------------------------------------------------------------- 1 | ,surface,series,order_surfaces,isBasement,isFault,isActive,color,vertices,edges,id,value_0 2 | 3,EarlyGranite,EarlyGranite_Series,1,False,False,True,#728f02,"[[ 6.96913326e+05 6.86300000e+06 -1.47480000e+04] 3 | [ 6.97020000e+05 6.86309351e+06 -1.47480000e+04] 4 | [ 6.97020000e+05 6.86300000e+06 -1.49709013e+04] 5 | ... 6 | [ 7.45781532e+05 6.87774000e+06 -2.04000000e+02] 7 | [ 7.45980000e+05 6.87774000e+06 -5.31339188e+02] 8 | [ 7.45980000e+05 6.87779400e+06 -2.04000000e+02]]","[[ 2 1 0] 9 | [ 0 1 3] 10 | [ 3 1 4] 11 | ... 12 | [3577 3634 3635] 13 | [3576 3634 3577] 14 | [3636 3637 3635]]",1,2.61 15 | 0,SimpleMafic2,BIF_Series,1,False,False,True,#015482,"[[ 7.17372390e+05 6.88444000e+06 -2.04000000e+02] 16 | [ 7.17420000e+05 6.88444000e+06 -2.19525421e+02] 17 | [ 7.17420000e+05 6.88416750e+06 -2.04000000e+02] 18 | ... 19 | [ 7.45980000e+05 6.89022786e+06 -1.01200000e+03] 20 | [ 7.45980000e+05 6.89058852e+06 -6.08000000e+02] 21 | [ 7.45980000e+05 6.89094654e+06 -2.04000000e+02]]","[[ 2 1 0] 22 | [ 0 1 3] 23 | [ 3 1 4] 24 | ... 25 | [1049 1050 990] 26 | [ 991 1051 992] 27 | [1050 1051 991]]",2,2.92 28 | 1,SimpleBIF,BIF_Series,2,False,False,True,#9f0052,"[[ 7.14839407e+05 6.88042000e+06 -2.04000000e+02] 29 | [ 7.15380000e+05 6.88042000e+06 -2.72209213e+02] 30 | [ 7.15380000e+05 6.87984794e+06 -2.04000000e+02] 31 | ... 32 | [ 7.45980000e+05 6.89114000e+06 -6.54912231e+02] 33 | [ 7.45980000e+05 6.89117842e+06 -6.08000000e+02] 34 | [ 7.45980000e+05 6.89150733e+06 -2.04000000e+02]]","[[ 2 1 0] 35 | [ 0 1 3] 36 | [ 3 1 4] 37 | ... 38 | [1332 1334 1265] 39 | [1334 1266 1265] 40 | [1334 1335 1266]]",3,3.1 41 | 2,SimpleMafic1,SimpleMafic_Series,1,False,False,True,#ffbe00,"[[ 6.96000000e+05 6.86300000e+06 -2.45178632e+03] 42 | [ 6.97020000e+05 6.86393305e+06 -2.22400000e+03] 43 | [ 6.97020000e+05 6.86300000e+06 -2.48451546e+03] 44 | ... 45 | [ 7.45267801e+05 6.88176000e+06 -2.04000000e+02] 46 | [ 7.45222338e+05 6.88310000e+06 -2.04000000e+02] 47 | [ 7.45091231e+05 6.88444000e+06 -2.04000000e+02]]","[[ 2 1 0] 48 | [ 0 1 3] 49 | [ 4 3 1] 50 | ... 51 | [3030 3018 3029] 52 | [3029 3018 3014] 53 | [3030 3021 3018]]",4,2.92 54 | 4,basement,Basement,1,True,False,True,#443988,,,5,2.61 55 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_extent.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_extent.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults.csv: -------------------------------------------------------------------------------- 1 | ,isFault,isFinite 2 | Fault_Series,True,False 3 | Strat_Series,False,False 4 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults_relations.csv: -------------------------------------------------------------------------------- 1 | ,Fault_Series,Strat_Series 2 | Fault_Series,False,True 3 | Strat_Series,False,False 4 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_kriging_data.csv: -------------------------------------------------------------------------------- 1 | ,range,$C_o$,drift equations 2 | values,3464.1016151377544,285714.2857142857,[3 3] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_options.csv: -------------------------------------------------------------------------------- 1 | ,dtype,output,aesara_optimizer,device,verbosity 2 | values,float64,geology,fast_compile,cpu,[] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series,smooth 2 | 2,500,1000,864.602,0.40799473684210524,0.5001,0.4907847368421052,-0.9486830155918029,9.998257297572324e-13,0.31622861338970926,71.565,270.0,1.0,Main_Fault,Fault_Series,1,1,0.01 3 | 1,400,1000,1400.0,0.38167894736842106,0.5001,0.631678947368421,0.3162286133897092,1.0000193634179593e-12,0.9486830155938029,18.435,90.0,1.0,Sandstone_2,Strat_Series,2,2,0.01 4 | 0,1000,1000,950.0,0.5395736842105263,0.5001,0.5132578947368421,0.3162286133897092,1.0000193634179593e-12,0.9486830155938029,18.435,90.0,1.0,Shale,Strat_Series,4,2,0.01 5 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_rescaling_data.csv: -------------------------------------------------------------------------------- 1 | ,rescaling factor,centers 2 | values,3800,[ 850. 1000. 900.] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_resolution.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_resolution.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_series.csv: -------------------------------------------------------------------------------- 1 | ,order_series,BottomRelation,isActive 2 | Fault_Series,1,Fault,True 3 | Strat_Series,2,Erosion,True 4 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_extent.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_extent.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_fault_blocks.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_fault_blocks.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults.csv: -------------------------------------------------------------------------------- 1 | ,isFault,isFinite 2 | seafloor_series,False,False 3 | right_series,False,False 4 | onlap_series,False,False 5 | left_series,False,False 6 | basement,False,False 7 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults_relations.csv: -------------------------------------------------------------------------------- 1 | ,seafloor_series,right_series,onlap_series,left_series,basement 2 | seafloor_series,False,False,False,False,False 3 | right_series,False,False,False,False,False 4 | onlap_series,False,False,False,False,False 5 | left_series,False,False,False,False,False 6 | basement,False,False,False,False,False 7 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_gradient.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_gradient.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_kriging_data.csv: -------------------------------------------------------------------------------- 1 | ,range,$C_o$,drift equations,nugget grad,nugget scalar 2 | values,1854.7236990991407,81904.76190476191,[3 3 3 3],0.01,1e-06 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_lith_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_lith_block.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_options.csv: -------------------------------------------------------------------------------- 1 | ,dtype,output,aesara_optimizer,device,verbosity 2 | values,float64,geology,fast_compile,cpu,[] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series 2 | 0,200.0,50.0,-200.0,0.3126,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 3 | 1,500.0,50.0,-200.0,0.5001,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 4 | 2,800.0,50.0,-200.0,0.6876,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 5 | 4,700.0,50.0,-450.0,0.6251,0.5001,0.59385,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,right_series,2,2 6 | 3,900.0,50.0,-450.0,0.7501,0.5001,0.59385,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,right_series,2,2 7 | 6,700.0,50.0,-700.0,0.6251,0.5001,0.4376,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,right_series,3,2 8 | 5,900.0,50.0,-700.0,0.7501,0.5001,0.4376,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,right_series,3,2 9 | 7,300.0,50.0,-200.0,0.3751,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,onlap_surface,onlap_series,4,3 10 | 8,700.0,50.0,-1000.0,0.6251,0.5001,0.2501,1.000000000001,1.0000612323399569e-12,1.0000612323399569e-12,90.0,90.0,1.0,onlap_surface,onlap_series,4,3 11 | 9,550.0,50.0,-500.0,0.53135,0.5001,0.5626,0.766044443119978,1.0000469066937634e-12,0.6427876096875393,50.0,90.0,1.0,onlap_surface,onlap_series,4,3 12 | 10,100.0,50.0,-400.0,0.2501,0.5001,0.6251,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,left_series,5,4 13 | 11,450.0,50.0,-1000.0,0.46885,0.5001,0.2501,1.000000000001,2.3054614646942163e-12,1.0000612323399569e-12,90.0,89.9999999999252,1.0,rock3,left_series,5,4 14 | 12,300.0,50.0,-500.0,0.3751,0.5001,0.5626,0.766044443119978,1.0000469066937634e-12,0.6427876096875393,49.99999999992522,89.9999999999252,1.0,rock3,left_series,5,4 15 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_rescaling_data.csv: -------------------------------------------------------------------------------- 1 | ,rescaling factor,centers 2 | values,1600.0,[ 500. 50. -600.] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_resolution.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_resolution.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_scalar_field_faults.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_scalar_field_faults.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_scalar_field_lith.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_scalar_field_lith.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_series.csv: -------------------------------------------------------------------------------- 1 | ,order_series,BottomRelation 2 | seafloor_series,1,Erosion 3 | right_series,2,Onlap 4 | onlap_series,3,Erosion 5 | left_series,4,Erosion 6 | basement,5,Erosion 7 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_surface_points.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series 2 | 0,200.0,0.0,-200.0,0.3126,0.46885,0.7501,seafloor,seafloor_series,6,1 3 | 1,200.0,100.0,-200.0,0.3126,0.53135,0.7501,seafloor,seafloor_series,6,1 4 | 2,500.0,0.0,-200.0,0.5001,0.46885,0.7501,seafloor,seafloor_series,6,1 5 | 3,500.0,100.0,-200.0,0.5001,0.53135,0.7501,seafloor,seafloor_series,6,1 6 | 4,800.0,0.0,-200.0,0.6876,0.46885,0.7501,seafloor,seafloor_series,6,1 7 | 5,800.0,100.0,-200.0,0.6876,0.53135,0.7501,seafloor,seafloor_series,6,1 8 | 7,700.0,0.0,-450.0,0.6251,0.46885,0.59385,rock1,right_series,4,2 9 | 6,700.0,100.0,-450.0,0.6251,0.53135,0.59385,rock1,right_series,4,2 10 | 8,900.0,0.0,-450.0,0.7501,0.46885,0.59385,rock1,right_series,4,2 11 | 9,900.0,100.0,-450.0,0.7501,0.53135,0.59385,rock1,right_series,4,2 12 | 13,700.0,0.0,-700.0,0.6251,0.46885,0.4376,rock2,right_series,5,2 13 | 12,700.0,100.0,-700.0,0.6251,0.53135,0.4376,rock2,right_series,5,2 14 | 11,900.0,0.0,-700.0,0.7501,0.46885,0.4376,rock2,right_series,5,2 15 | 10,900.0,100.0,-700.0,0.7501,0.53135,0.4376,rock2,right_series,5,2 16 | 14,300.0,0.0,-200.0,0.3751,0.46885,0.7501,onlap_surface,onlap_series,3,3 17 | 15,300.0,100.0,-200.0,0.3751,0.53135,0.7501,onlap_surface,onlap_series,3,3 18 | 16,700.0,0.0,-1000.0,0.6251,0.46885,0.2501,onlap_surface,onlap_series,3,3 19 | 17,700.0,100.0,-1000.0,0.6251,0.53135,0.2501,onlap_surface,onlap_series,3,3 20 | 18,550.0,0.0,-500.0,0.53135,0.46885,0.5626,onlap_surface,onlap_series,3,3 21 | 19,550.0,100.0,-500.0,0.53135,0.53135,0.5626,onlap_surface,onlap_series,3,3 22 | 20,100.0,0.0,-400.0,0.2501,0.46885,0.6251,rock3,left_series,2,4 23 | 21,100.0,100.0,-400.0,0.2501,0.53135,0.6251,rock3,left_series,2,4 24 | 22,450.0,0.0,-1000.0,0.46885,0.46885,0.2501,rock3,left_series,2,4 25 | 23,450.0,100.0,-1000.0,0.46885,0.53135,0.2501,rock3,left_series,2,4 26 | 24,300.0,0.0,-500.0,0.3751,0.46885,0.5626,rock3,left_series,2,4 27 | 25,300.0,100.0,-500.0,0.3751,0.53135,0.5626,rock3,left_series,2,4 28 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_values_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_values_block.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_extent.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_extent.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_fault_blocks.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_fault_blocks.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults.csv: -------------------------------------------------------------------------------- 1 | ,isFault,isFinite 2 | fault_series1,True,False 3 | series2,False,False 4 | series1,False,False 5 | basement_series,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults_relations.csv: -------------------------------------------------------------------------------- 1 | ,fault_series1,series2,series1,basement_series 2 | fault_series1,False,False,True,True 3 | series2,False,False,False,False 4 | series1,False,False,False,False 5 | basement_series,False,False,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_gradient.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_gradient.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_kriging_data.csv: -------------------------------------------------------------------------------- 1 | ,range,$C_o$,drift equations,nugget grad,nugget scalar 2 | values,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_lith_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_lith_block.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_options.csv: -------------------------------------------------------------------------------- 1 | ,dtype,output,aesara_optimizer,device,verbosity 2 | values,float64,geology,fast_compile,cpu,[0] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series 2 | 10,500.0,500.0,-600.0,0.5001,0.5001,0.46885,0.8949343616030251,1.0000547989250692e-12,0.4461978131108087,63.5,90.0,1.0,fault1,fault_series1,1,1 3 | 9,850.0,500.0,-425.0,0.71885,0.5001,0.578225,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock5,series2,2,2 4 | 8,150.0,500.0,-400.0,0.28135,0.5001,0.59385,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock5,series2,2,2 5 | 7,150.0,500.0,-450.0,0.28135,0.5001,0.5626,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series2,3,2 6 | 6,850.0,500.0,-525.0,0.71885,0.5001,0.515725,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series2,3,2 7 | 5,150.0,500.0,-500.0,0.28135,0.5001,0.53135,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 8 | 4,850.0,500.0,-575.0,0.71885,0.5001,0.484475,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 9 | 3,850.0,500.0,-625.0,0.71885,0.5001,0.453225,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 10 | 2,150.0,500.0,-550.0,0.28135,0.5001,0.5001,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 11 | 0,150.0,500.0,-600.0,0.28135,0.5001,0.46885,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 12 | 1,850.0,500.0,-675.0,0.71885,0.5001,0.421975,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 13 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_rescaling_data.csv: -------------------------------------------------------------------------------- 1 | ,rescaling factor,centers 2 | values,1600.0,[ 500. 500. -550.] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_resolution.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_resolution.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_scalar_field_faults.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_scalar_field_faults.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_scalar_field_lith.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_scalar_field_lith.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_series.csv: -------------------------------------------------------------------------------- 1 | ,order_series,BottomRelation 2 | fault_series1,1,Fault 3 | series2,2,Erosion 4 | series1,3,Erosion 5 | basement_series,4,Erosion 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_surfaces.csv: -------------------------------------------------------------------------------- 1 | ,surface,series,order_surfaces,isBasement,color,vertices,edges,id 2 | 4,basement,basement_series,1,False,#325916,,,1 3 | 5,fault1,fault_series1,1,False,#015482,,,2 4 | 0,rock3,series1,1,False,#728f02,,,3 5 | 3,rock2,series1,2,False,#443988,,,4 6 | 1,rock1,series1,3,False,#ff3f20,,,5 7 | 7,rock5,series2,1,False,#9f0052,,,6 8 | 6,rock4,series2,2,True,#ffbe00,,,7 9 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_values_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_values_block.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_extent.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_extent.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_fault_blocks.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_fault_blocks.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults.csv: -------------------------------------------------------------------------------- 1 | ,isFault,isFinite 2 | fault_series2,True,False 3 | fault_series1,True,False 4 | series1,False,False 5 | basement_series,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults_relations.csv: -------------------------------------------------------------------------------- 1 | ,fault_series2,fault_series1,series1,basement_series 2 | fault_series2,False,True,True,True 3 | fault_series1,False,False,True,True 4 | series1,False,False,False,False 5 | basement_series,False,False,False,False 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_gradient.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_gradient.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_kriging_data.csv: -------------------------------------------------------------------------------- 1 | ,range,$C_o$,drift equations,nugget grad,nugget scalar 2 | values,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_lith_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_lith_block.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_options.csv: -------------------------------------------------------------------------------- 1 | ,dtype,output,aesara_optimizer,device,verbosity 2 | values,float64,geology,fast_compile,cpu,[0] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series 2 | 13,550.0,500.0,-600.0,0.53135,0.5001,0.53135,-0.8949343616010249,9.576199963080072e-18,0.4461978131108091,63.49999999993597,270.0,1.0,fault2,fault_series2,1,1 3 | 10,350.0,500.0,-700.0,0.40635,0.5001,0.46885,0.8949343616030251,1.0000547989250692e-12,0.4461978131108087,63.5,90.0,1.0,fault1,fault_series1,2,2 4 | 11,400.0,500.0,-625.0,0.4376,0.5001,0.515725,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 5 | 7,150.0,500.0,-550.0,0.28135,0.5001,0.5626,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 6 | 6,850.0,500.0,-525.0,0.71885,0.5001,0.578225,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 7 | 12,400.0,500.0,-675.0,0.4376,0.5001,0.484475,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 8 | 5,150.0,500.0,-600.0,0.28135,0.5001,0.53135,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 9 | 4,850.0,500.0,-575.0,0.71885,0.5001,0.546975,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 10 | 3,850.0,500.0,-625.0,0.71885,0.5001,0.515725,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 11 | 2,150.0,500.0,-650.0,0.28135,0.5001,0.5001,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 12 | 0,150.0,500.0,-700.0,0.28135,0.5001,0.46885,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 13 | 1,850.0,500.0,-675.0,0.71885,0.5001,0.484475,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 14 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_rescaling_data.csv: -------------------------------------------------------------------------------- 1 | ,rescaling factor,centers 2 | values,1600.0,[ 500. 500. -650.] 3 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_resolution.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_resolution.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_scalar_field_faults.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_scalar_field_faults.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_scalar_field_lith.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_scalar_field_lith.npy -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_series.csv: -------------------------------------------------------------------------------- 1 | ,order_series,BottomRelation 2 | fault_series2,1,Fault 3 | fault_series1,2,Fault 4 | series1,3,Erosion 5 | basement_series,4,Erosion 6 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_surfaces.csv: -------------------------------------------------------------------------------- 1 | ,surface,series,order_surfaces,isBasement,color,vertices,edges,id 2 | 4,basement,basement_series,1,False,#325916,,,1 3 | 5,fault1,fault_series1,1,False,#9f0052,,,2 4 | 7,fault2,fault_series2,1,False,#015482,,,3 5 | 6,rock4,series1,1,False,#ffbe00,,,4 6 | 0,rock3,series1,2,False,#728f02,,,5 7 | 3,rock2,series1,3,False,#443988,,,6 8 | 1,rock1,series1,4,True,#ff3f20,,,7 9 | -------------------------------------------------------------------------------- /examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_values_block.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_values_block.npy -------------------------------------------------------------------------------- /examples/data/input_data/AlesModel/_cropped_DEM_coarse.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/input_data/AlesModel/_cropped_DEM_coarse.tif -------------------------------------------------------------------------------- /examples/data/input_data/Claudius/Dips.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z;OrientX;OrientY;OrientZ;Cutoff 2 | 552189.3105;7819406.617;-9797.297852;-0.076036;0.041318;-0.996249;0.014754793 3 | 552201.8105;7819406.617;-9798.693359;-0.044863;0.045039;-0.997977;0.534278959 4 | 552214.3105;7819406.617;-9798.426758;0.074373;0.009594;-0.997184;0.525125044 5 | 552201.8105;7819425.391;-9797.804688;-0.039994;0.047585;-0.998066;0.965154017 6 | 551439.3105;7820589.129;-9805.916992;0.075779;-0.310751;-0.947466;0.495156448 7 | 550851.8105;7820720.52;-9797.066406;-0.532043;-0.275707;-0.800572;0.338591489 8 | 551226.8105;7819800.789;-9789.371094;-0.069551;0.093259;-0.99321;0.293874261 9 | 551239.3105;7819744.48;-9795.443359;-0.094403;0.068798;-0.993154;0.448177408 10 | 550976.8105;7819425.391;-9748.006836;-0.555253;-0.085871;-0.827237;0.179894809 11 | 550551.8105;7818674.59;-9228.764648;0.109148;0.332519;-0.936759;0.300751604 12 | 550576.8086;7818618.281;-9240.390625;0.249464;0.225306;-0.941809;0.262720433 13 | 550814.3105;7818561.969;-9897.173828;0.177374;0.070957;-0.981582;0.170738004 14 | 550214.3105;7818299.188;-9284.345703;-0.228273;-0.046569;-0.972483;0.628062506 15 | 552226.8105;7819406.617;-9796.917969;0.078851;-0.021838;-0.996647;0.798092917 16 | 551476.8105;7818374.27;-9687.792969;-0.269706;-0.050618;-0.961611;0.886774802 17 | 551651.8105;7817811.168;-9816.841797;-0.204194;0.003709;-0.978923;0.025874757 18 | 551626.8105;7817829.938;-9813.594727;0.020179;0.040417;-0.998979;0.138523201 19 | 551639.3105;7817811.168;-9814.689453;-0.105093;0.028396;-0.994057;0.770719843 20 | 550639.3105;7817642.238;-9257.282227;-0.028335;-0.158873;-0.986892;0.569668192 21 | 550926.8105;7817248.07;-9789.704102;0.162537;-0.105722;-0.981022;0.071327636 22 | 550989.3105;7817210.527;-9782.967773;0.187195;0.138165;-0.972558;0.976691621 23 | 550939.3105;7821227.309;-9958.425781;-0.080561;-0.043063;-0.995819;0.248187027 24 | 549276.8105;7820682.98;-9985.125977;-0.161328;0.075208;-0.984031;0.649480427 25 | 548976.8105;7820345.121;-9974.265625;-0.012103;-0.153309;-0.988104;0.05002477 26 | 549764.3105;7820457.738;-9901.208984;0.36949;-0.187053;-0.910213;0.759421295 27 | -------------------------------------------------------------------------------- /examples/data/input_data/Hecho/F1Line.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z 2 | 6.424469;0.203543;1.20437 3 | 6.693804;-0.036842;0.995854 4 | 6.912352;0.340509;0.826699 5 | 7.121053;0.377681;0.665257 6 | 7.30629;0.482484;0.522088 7 | 7.477253;-0.354199;0.398039 8 | 7.643442;0.389842;0.293734 9 | 7.814081;-0.134994;0.209952 10 | 7.984539;0.450005;0.142965 11 | 8.15018;0.290266;0.088988 12 | 8.347618;0.390555;0 13 | -------------------------------------------------------------------------------- /examples/data/input_data/Hecho/F2Line.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z 2 | 11.090211;0.154567;1.28784 3 | 11.223454;-0.301787;1.37682 4 | 11.346533;-0.458967;1.4914 5 | 11.49791;-0.250198;1.69684 6 | 11.59726;-0.262147;1.83917 7 | 11.667309;-0.304462;1.95635 8 | 11.730947;0.444778;2.08641 9 | 11.802798;-0.323861;2.21023 10 | 11.897274;-0.125617;2.30864 11 | 12.015276;0.478744;2.39002 12 | 12.157452;0.440389;2.46241 13 | 12.316145;-0.363783;2.52832 14 | 12.483515;0.103354;2.59009 15 | 12.65233;-0.492103;2.65068 16 | 12.857302;-0.153067;2.72796 17 | -------------------------------------------------------------------------------- /examples/data/input_data/Hecho/F3Line.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z 2 | 11.15029;-0.073352;0.719278 3 | 11.066742;-0.133512;0.855967 4 | 11.023535;0.194252;0.972789 5 | 11.037835;-0.373243;1.0978 6 | 11.078171;0.475725;1.23286 7 | 11.113068;0.105955;1.37974 8 | 11.143734;-0.172893;1.53226 9 | 11.171513;0.284198;1.68442 10 | 11.159113;0.399711;1.81939 11 | 11.069008;0.032232;1.9203 12 | 10.885192;-0.428004;2.10412 13 | -------------------------------------------------------------------------------- /examples/data/input_data/Hecho/H1.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z;Strati;PART_ID 2 | 1.505406;0.29554;3.32516;0;1 3 | 1.710851;0.284936;3.24865;0;1 4 | 1.851495;-0.00339;3.19537;0;1 5 | 2.240846;-0.237692;3.04396;0;1 6 | 2.651827;-0.044266;2.90336;0;1 7 | 3.181776;0.486114;2.75195;0;1 8 | 3.614388;-0.270456;2.61135;0;1 9 | 3.776618;-0.265148;2.63298;0;1 10 | 3.830694;-0.077911;2.77358;0;1 11 | 3.852325;0.272048;3.10885;0;1 12 | 3.873955;0.342194;3.46576;0;1 13 | 3.895585;-0.348773;3.68206;0;1 14 | 3.921422;0.410191;3.96162;0;1 15 | 4.057551;0.211153;4.03639;0;1 16 | 4.211221;0.224591;4.07481;0;1 17 | 1.983993;-0.195852;3.1442;0;1 18 | 2.111974;0.447949;3.09283;0;1 19 | 2.375809;0.01664;2.99659;0;1 20 | 2.505367;-0.464299;2.9504;0;1 21 | 2.818563;0.281779;2.85379;0;1 22 | 3.002423;-0.148964;2.80692;0;1 23 | 3.329585;-0.036496;2.68705;0;1 24 | 3.465678;-0.422852;2.64109;0;1 25 | 3.852325;0.096054;2.93175;0;1 26 | 3.860436;-0.123006;3.30454;0;1 27 | 3.88492;0.372103;3.57927;0;1 28 | 3.877138;-0.19571;3.82885;0;1 29 | 1.781173;0.140773;3.22201;0;1 30 | 2.026654;0.018748;3.12708;0;1 31 | 2.069314;0.233348;3.10995;0;1 32 | 2.154932;0.219402;3.07654;0;1 33 | 2.197889;-0.009145;3.06025;0;1 34 | 2.440588;-0.223829;2.9735;0;1 35 | 2.578597;-0.254283;2.92688;0;1 36 | 2.735195;0.118756;2.87858;0;1 37 | 2.910492;0.066407;2.83036;0;1 38 | 3.062207;0.062728;2.7886;0;1 39 | 3.121992;0.274421;2.77027;0;1 40 | 3.255681;0.224809;2.7195;0;1 41 | 3.397632;-0.229674;2.66407;0;1 42 | 3.85638;0.074521;3.2067;0;1 43 | 3.867196;0.109594;3.38515;0;1 44 | 3.888475;0.131811;3.61353;0;1 45 | 3.89203;-0.108481;3.6478;0;1 46 | 3.891899;0.006257;3.8731;0;1 47 | 3.906661;0.208224;3.91736;0;1 48 | -------------------------------------------------------------------------------- /examples/data/input_data/Hecho/H9.csv: -------------------------------------------------------------------------------- 1 | X;Y;Z;Strati;PART_ID 2 | 10.295227;0.182503;1.25328;5.200000;1 3 | 10.308938;0.395599;1.42489;5.200000;1 4 | 10.332090;0.147206;1.55363;5.200000;1 5 | 10.359694;-0.273491;1.65259;5.200000;1 6 | 10.389619;0.051627;1.67821;5.200000;1 7 | 10.438280;0.344764;1.69749;5.200000;1 8 | 10.587311;0.472410;1.67223;5.200000;1 9 | 10.718938;0.149573;1.60488;5.200000;1 10 | 10.873301;0.085932;1.51507;5.200000;1 11 | 11.010823;-0.036715;1.41122;5.200000;1 12 | 11.086601;0.010783;1.3607;5.200000;1 13 | 10.345892;-0.063142;1.60311;5.200000;1 14 | 10.374657;-0.110932;1.6654;5.200000;1 15 | 10.653124;0.310991;1.63855;5.200000;1 16 | 11.470213;0.282821;1.35501;5.200000;2 17 | 11.520885;0.134955;1.33577;5.200000;2 18 | 11.571557;-0.012911;1.31653;5.200000;2 19 | 11.618086;-0.245436;1.29874;5.200000;2 20 | 11.664615;-0.477961;1.28095;5.200000;2 21 | 11.691947;-0.240815;1.2707;5.200000;2 22 | 11.719278;-0.003670;1.26045;5.200000;2 23 | 11.746611;0.233476;1.25019;5.200000;2 24 | 11.773943;0.470621;1.23994;5.200000;2 25 | 11.817730;0.197237;1.22275;5.200000;2 26 | 11.861517;-0.076148;1.20557;5.200000;2 27 | 11.905304;-0.349533;1.18838;5.200000;2 28 | 11.973866;-0.181941;1.16003;5.200000;2 29 | 12.042426;-0.014350;1.13168;5.200000;2 30 | 12.112723;-0.230784;1.10448;5.200000;2 31 | 12.183021;-0.447219;1.07729;5.200000;2 32 | 12.247808;-0.251604;1.05271;5.200000;2 33 | 12.312595;-0.055990;1.02812;5.200000;2 34 | 12.375095;-0.237683;1.01105;5.200000;2 35 | 12.437595;-0.419376;0.993975;5.200000;2 36 | 12.481410;-0.194848;0.985863;5.200000;2 37 | 12.525226;0.029679;0.977751;5.200000;2 38 | 12.569040;0.254206;0.969639;5.200000;2 39 | 12.642176;0.060768;0.963293;5.200000;2 40 | 12.715312;-0.132671;0.956946;5.200000;2 41 | 12.872252;-0.164293;0.938576;5.200000;2 42 | 12.948841;0.008175;0.929246;5.200000;2 43 | 13.025431;0.180642;0.919917;5.200000;2 44 | 13.156769;0.171614;0.900824;5.200000;2 45 | 13.218388;-0.071732;0.884913;5.200000;2 46 | 13.280005;-0.315077;0.869002;5.200000;2 47 | 13.412395;-0.079217;0.829215;5.200000;2 48 | 13.485059;-0.254574;0.805137;5.200000;2 49 | 13.557722;-0.429932;0.781058;5.200000;2 50 | 13.632277;-0.245430;0.756777;5.200000;2 51 | 13.706833;-0.060928;0.732496;5.200000;2 52 | 13.815107;0.214221;0.696605;5.200000;2 53 | 13.923383;0.489369;0.660714;5.200000;2 54 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/fixture_model_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 0,500,450,90,330,1,rock2 3 | 0,500,250,90,345,1,rock1 4 | 500,500,800,90,0,1,rock3 5 | 2000,500,400,90,55,1,fault 6 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/fixture_model_surfaces.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,0,800,rock3 3 | 0,500,800,rock3 4 | 0,1000,800,rock3 5 | 500,0,800,rock3 6 | 500,500,800,rock3 7 | 500,1000,800,rock3 8 | 1000,0,800,rock3 9 | 1000,500,800,rock3 10 | 1000,1000,800,rock3 11 | 1500,0,800,rock3 12 | 1500,500,800,rock3 13 | 1500,1000,800,rock3 14 | 2000,0,650,rock3 15 | 2000,500,650,rock3 16 | 2000,1000,650,rock3 17 | 0,0,450,rock2 18 | 0,500,450,rock2 19 | 0,1000,450,rock2 20 | 150,0,600,rock2 21 | 150,500,600,rock2 22 | 150,1000,600,rock2 23 | 300,0,750,rock2 24 | 300,500,750,rock2 25 | 300,1000,750,rock2 26 | 450,0,600,rock2 27 | 450,500,600,rock2 28 | 450,1000,600,rock2 29 | 600,0,450,rock2 30 | 600,500,450,rock2 31 | 600,1000,450,rock2 32 | 750,0,600,rock2 33 | 750,500,600,rock2 34 | 750,1000,600,rock2 35 | 850,0,800,rock2 36 | 850,500,800,rock2 37 | 850,1000,800,rock2 38 | 1500,0,800,rock2 39 | 1500,500,800,rock2 40 | 1500,1000,800,rock2 41 | 1600,0,600,rock2 42 | 1600,500,600,rock2 43 | 1600,1000,600,rock2 44 | 1750,0,450,rock2 45 | 1750,500,450,rock2 46 | 1750,1000,450,rock2 47 | 1850,0,550,rock2 48 | 1850,500,550,rock2 49 | 1850,1000,550,rock2 50 | 2200,0,550,rock2 51 | 2200,500,550,rock2 52 | 2200,1000,550,rock2 53 | 2300,0,650,rock2 54 | 2300,500,650,rock2 55 | 2300,1000,650,rock2 56 | 0,0,250,rock1 57 | 0,500,250,rock1 58 | 0,1000,250,rock1 59 | 150,0,400,rock1 60 | 150,500,400,rock1 61 | 150,1000,400,rock1 62 | 300,0,550,rock1 63 | 300,500,550,rock1 64 | 300,1000,550,rock1 65 | 450,0,400,rock1 66 | 450,500,400,rock1 67 | 450,1000,400,rock1 68 | 600,0,250,rock1 69 | 600,500,250,rock1 70 | 600,1000,250,rock1 71 | 750,0,350,rock1 72 | 750,500,350,rock1 73 | 750,1000,350,rock1 74 | 900,0,550,rock1 75 | 900,500,550,rock1 76 | 900,1000,550,rock1 77 | 1450,0,550,rock1 78 | 1450,500,550,rock1 79 | 1450,1000,550,rock1 80 | 1600,0,350,rock1 81 | 1600,500,350,rock1 82 | 1600,1000,350,rock1 83 | 1750,0,250,rock1 84 | 1750,500,250,rock1 85 | 1750,1000,250,rock1 86 | 1850,0,350,rock1 87 | 1850,500,350,rock1 88 | 1850,1000,350,rock1 89 | 2200,0,350,rock1 90 | 2200,500,350,rock1 91 | 2200,1000,350,rock1 92 | 2300,0,450,rock1 93 | 2300,500,450,rock1 94 | 2300,1000,450,rock1 95 | 1050,0,799,rock1 96 | 1050,500,799,rock1 97 | 1050,1000,799,rock1 98 | 1300,0,799,rock1 99 | 1300,500,799,rock1 100 | 1300,1000,799,rock1 101 | 2000,0,400,fault 102 | 2000,500,400,fault 103 | 2000,1000,400,fault 104 | 105 | 106 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model1_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 500,500,600,90,0,1,rock2 3 | 500,500,400,90,0,1,rock1 4 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model1_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 100,200,600,rock2 3 | 500,200,600,rock2 4 | 900,200,600,rock2 5 | 100,800,600,rock2 6 | 500,800,600,rock2 7 | 900,800,600,rock2 8 | 100,200,400,rock1 9 | 500,200,400,rock1 10 | 900,200,400,rock1 11 | 100,800,400,rock1 12 | 500,800,400,rock1 13 | 900,800,400,rock1 14 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model2_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 500,500,820,90,0,1,rock2 3 | 500,500,620,90,0,1,rock1 4 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model2_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,100,200,rock1 3 | 0,500,200,rock1 4 | 0,900,200,rock1 5 | 400,100,600,rock1 6 | 400,500,600,rock1 7 | 400,900,600,rock1 8 | 200,100,400,rock1 9 | 200,500,400,rock1 10 | 200,900,400,rock1 11 | 800,100,400,rock1 12 | 800,500,400,rock1 13 | 800,900,400,rock1 14 | 600,100,600,rock1 15 | 600,500,600,rock1 16 | 600,900,600,rock1 17 | 1000,100,200,rock1 18 | 1000,500,200,rock1 19 | 1000,900,200,rock1 20 | 0,100,400,rock2 21 | 0,500,400,rock2 22 | 0,900,400,rock2 23 | 1000,100,400,rock2 24 | 1000,500,400,rock2 25 | 1000,900,400,rock2 26 | 400,100,800,rock2 27 | 400,500,800,rock2 28 | 400,900,800,rock2 29 | 200,100,600,rock2 30 | 200,500,600,rock2 31 | 200,900,600,rock2 32 | 600,100,800,rock2 33 | 600,500,800,rock2 34 | 600,900,800,rock2 35 | 800,100,600,rock2 36 | 800,500,600,rock2 37 | 800,900,600,rock2 38 | 39 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model3_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 200,500,780,90,185.73,1,rock1 3 | 200,500,220,90,354.27,1,rock1 4 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model3_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,200,800,rock1 3 | 0,200,200,rock1 4 | 100,200,790,rock1 5 | 100,200,210,rock1 6 | 200,200,780,rock1 7 | 200,200,220,rock1 8 | 300,200,770,rock1 9 | 300,200,230,rock1 10 | 400,200,760,rock1 11 | 400,200,240,rock1 12 | 700,200,500,rock1 13 | 0,0,800,rock1 14 | 0,0,200,rock1 15 | 100,0,790,rock1 16 | 100,0,210,rock1 17 | 200,0,780,rock1 18 | 200,0,220,rock1 19 | 300,0,770,rock1 20 | 300,0,230,rock1 21 | 400,0,760,rock1 22 | 400,0,240,rock1 23 | 700,0,500,rock1 24 | 0,500,800,rock1 25 | 0,500,200,rock1 26 | 100,500,790,rock1 27 | 100,500,210,rock1 28 | 200,500,780,rock1 29 | 200,500,220,rock1 30 | 300,500,770,rock1 31 | 300,500,230,rock1 32 | 400,500,760,rock1 33 | 400,500,240,rock1 34 | 700,500,500,rock1 35 | 0,1000,800,rock1 36 | 0,1000,200,rock1 37 | 100,1000,790,rock1 38 | 100,1000,210,rock1 39 | 200,1000,780,rock1 40 | 200,1000,220,rock1 41 | 300,1000,770,rock1 42 | 300,1000,230,rock1 43 | 400,1000,760,rock1 44 | 400,1000,240,rock1 45 | 700,1000,500,rock1 46 | 700,800,500,rock1 47 | 0,800,800,rock1 48 | 0,800,200,rock1 49 | 100,800,790,rock1 50 | 100,800,210,rock1 51 | 200,800,780,rock1 52 | 200,800,220,rock1 53 | 300,800,770,rock1 54 | 300,800,230,rock1 55 | 400,800,760,rock1 56 | 400,800,240,rock1 57 | 0,200,600,rock2 58 | 0,200,400,rock2 59 | 100,200,590,rock2 60 | 100,200,410,rock2 61 | 200,200,580,rock2 62 | 200,200,420,rock2 63 | 300,200,570,rock2 64 | 300,200,430,rock2 65 | 400,200,560,rock2 66 | 400,200,440,rock2 67 | 0,0,600,rock2 68 | 0,0,400,rock2 69 | 100,0,590,rock2 70 | 100,0,410,rock2 71 | 200,0,580,rock2 72 | 200,0,420,rock2 73 | 300,0,570,rock2 74 | 300,0,430,rock2 75 | 400,0,560,rock2 76 | 400,0,440,rock2 77 | 0,500,600,rock2 78 | 0,500,400,rock2 79 | 100,500,590,rock2 80 | 100,500,410,rock2 81 | 200,500,580,rock2 82 | 200,500,420,rock2 83 | 300,500,570,rock2 84 | 300,500,430,rock2 85 | 400,500,560,rock2 86 | 400,500,440,rock2 87 | 0,1000,600,rock2 88 | 0,1000,400,rock2 89 | 100,1000,590,rock2 90 | 100,1000,410,rock2 91 | 200,1000,580,rock2 92 | 200,1000,420,rock2 93 | 300,1000,570,rock2 94 | 300,1000,430,rock2 95 | 400,1000,560,rock2 96 | 400,1000,440,rock2 97 | 0,800,600,rock2 98 | 0,800,400,rock2 99 | 100,800,590,rock2 100 | 100,800,410,rock2 101 | 200,800,580,rock2 102 | 200,800,420,rock2 103 | 300,800,570,rock2 104 | 300,800,430,rock2 105 | 400,800,560,rock2 106 | 400,800,440,rock2 107 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model4_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 500,500,625,90,8.54,1,rock2 3 | 500,200,625,90,8.54,1,rock2 4 | 500,800,625,90,8.54,1,rock2 5 | 500,500,375,90,351.46,1,rock1 6 | 500,200,375,90,351.46,1,rock1 7 | 500,800,375,90,351.46,1,rock1 8 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model4_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,200,300,rock1 3 | 0,800,300,rock1 4 | 500,200,375,rock1 5 | 500,800,375,rock1 6 | 1000,200,450,rock1 7 | 1000,800,450,rock1 8 | 0,200,700,rock2 9 | 0,800,700,rock2 10 | 500,200,625,rock2 11 | 500,800,625,rock2 12 | 1000,200,550,rock2 13 | 1000,800,550,rock2 -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model5_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 100,500,800,90,0,1,rock2 3 | 100,500,600,90,0,1,rock1 4 | 900,500,400,90,0,1,rock2 5 | 900,500,200,90,0,1,rock1 6 | 500,500,500,90,60,1,fault 7 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model5_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,200,600,rock1 3 | 0,500,600,rock1 4 | 0,800,600,rock1 5 | 200,200,600,rock1 6 | 200,500,600,rock1 7 | 200,800,600,rock1 8 | 800,200,200,rock1 9 | 800,500,200,rock1 10 | 800,800,200,rock1 11 | 1000,200,200,rock1 12 | 1000,500,200,rock1 13 | 1000,800,200,rock1 14 | 0,200,800,rock2 15 | 0,800,800,rock2 16 | 200,200,800,rock2 17 | 200,800,800,rock2 18 | 800,200,400,rock2 19 | 800,800,400,rock2 20 | 1000,200,400,rock2 21 | 1000,800,400,rock2 22 | 500,500,500,fault 23 | 450,500,600,fault 24 | 500,200,500,fault 25 | 450,200,600,fault 26 | 500,800,500,fault 27 | 450,800,600,fault 28 | 29 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model6_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 100,500,700,90,315,1,rock2 3 | 900,500,700,90,45,1,rock2 4 | 100,500,500,90,315,1,rock1 5 | 900,500,500,90,45,1,rock1 6 | 500,500,701,90,0,1,rock3 7 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model6_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,200,400,rock1 3 | 0,500,400,rock1 4 | 0,800,400,rock1 5 | 100,200,500,rock1 6 | 100,500,500,rock1 7 | 100,800,500,rock1 8 | 200,200,600,rock1 9 | 200,500,600,rock1 10 | 200,800,600,rock1 11 | 800,200,600,rock1 12 | 800,500,600,rock1 13 | 800,800,600,rock1 14 | 900,200,500,rock1 15 | 900,500,500,rock1 16 | 900,800,500,rock1 17 | 1000,200,400,rock1 18 | 1000,500,400,rock1 19 | 1000,800,400,rock1 20 | 0,200,600,rock2 21 | 0,500,600,rock2 22 | 0,800,600,rock2 23 | 1000,200,600,rock2 24 | 1000,500,600,rock2 25 | 1000,800,600,rock2 26 | 100,200,700,rock2 27 | 100,500,700,rock2 28 | 100,800,700,rock2 29 | 900,200,700,rock2 30 | 900,500,700,rock2 31 | 900,800,700,rock2 32 | 200,200,701,rock3 33 | 200,500,701,rock3 34 | 200,800,701,rock3 35 | 500,200,701,rock3 36 | 500,500,701,rock3 37 | 500,800,701,rock3 38 | 800,200,701,rock3 39 | 800,500,701,rock3 40 | 800,800,701,rock3 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model7_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 0,500,450,90,335,1,rock2 3 | 0,500,250,90,335,1,rock1 4 | 0,0,450,90,335,1,rock2 5 | 0,0,250,90,335,1,rock1 6 | 0,1000,450,90,335,1,rock2 7 | 0,1000,250,90,335,1,rock1 8 | 500,500,800,90,0,1,rock3 9 | 2000,500,400,90,55,1,fault 10 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/model7_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,0,800,rock3 3 | 0,500,800,rock3 4 | 0,1000,800,rock3 5 | 500,0,800,rock3 6 | 500,500,800,rock3 7 | 500,1000,800,rock3 8 | 1000,0,800,rock3 9 | 1000,500,800,rock3 10 | 1000,1000,800,rock3 11 | 1500,0,800,rock3 12 | 1500,500,800,rock3 13 | 1500,1000,800,rock3 14 | 2000,0,650,rock3 15 | 2000,500,650,rock3 16 | 2000,1000,650,rock3 17 | 0,0,450,rock2 18 | 0,500,450,rock2 19 | 0,1000,450,rock2 20 | 150,0,600,rock2 21 | 150,500,600,rock2 22 | 150,1000,600,rock2 23 | 300,0,750,rock2 24 | 300,500,750,rock2 25 | 300,1000,750,rock2 26 | 450,0,600,rock2 27 | 450,500,600,rock2 28 | 450,1000,600,rock2 29 | 600,0,450,rock2 30 | 600,500,450,rock2 31 | 600,1000,450,rock2 32 | 750,0,600,rock2 33 | 750,500,600,rock2 34 | 750,1000,600,rock2 35 | 850,0,800,rock2 36 | 850,500,800,rock2 37 | 850,1000,800,rock2 38 | 1500,0,800,rock2 39 | 1500,500,800,rock2 40 | 1500,1000,800,rock2 41 | 1600,0,600,rock2 42 | 1600,500,600,rock2 43 | 1600,1000,600,rock2 44 | 1750,0,450,rock2 45 | 1750,500,450,rock2 46 | 1750,1000,450,rock2 47 | 1850,0,550,rock2 48 | 1850,500,550,rock2 49 | 1850,1000,550,rock2 50 | 2200,0,550,rock2 51 | 2200,500,550,rock2 52 | 2200,1000,550,rock2 53 | 2300,0,650,rock2 54 | 2300,500,650,rock2 55 | 2300,1000,650,rock2 56 | 0,0,250,rock1 57 | 0,500,250,rock1 58 | 0,1000,250,rock1 59 | 150,0,400,rock1 60 | 150,500,400,rock1 61 | 150,1000,400,rock1 62 | 300,0,550,rock1 63 | 300,500,550,rock1 64 | 300,1000,550,rock1 65 | 450,0,400,rock1 66 | 450,500,400,rock1 67 | 450,1000,400,rock1 68 | 600,0,250,rock1 69 | 600,500,250,rock1 70 | 600,1000,250,rock1 71 | 750,0,350,rock1 72 | 750,500,350,rock1 73 | 750,1000,350,rock1 74 | 900,0,550,rock1 75 | 900,500,550,rock1 76 | 900,1000,550,rock1 77 | 1450,0,550,rock1 78 | 1450,500,550,rock1 79 | 1450,1000,550,rock1 80 | 1600,0,350,rock1 81 | 1600,500,350,rock1 82 | 1600,1000,350,rock1 83 | 1750,0,250,rock1 84 | 1750,500,250,rock1 85 | 1750,1000,250,rock1 86 | 1850,0,350,rock1 87 | 1850,500,350,rock1 88 | 1850,1000,350,rock1 89 | 2200,0,350,rock1 90 | 2200,500,350,rock1 91 | 2200,1000,350,rock1 92 | 2300,0,450,rock1 93 | 2300,500,450,rock1 94 | 2300,1000,450,rock1 95 | 1050,0,799,rock1 96 | 1050,500,799,rock1 97 | 1050,1000,799,rock1 98 | 1300,0,799,rock1 99 | 1300,500,799,rock1 100 | 1300,1000,799,rock1 101 | 2000,0,400,fault 102 | 2000,500,400,fault 103 | 2000,1000,400,fault -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/tutorial_model_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 0,500,450,90,335,1,rock2 3 | 0,500,250,90,335,1,rock1 4 | 0,0,450,90,335,1,rock2 5 | 0,0,250,90,335,1,rock1 6 | 0,1000,450,90,335,1,rock2 7 | 0,1000,250,90,335,1,rock1 8 | 500,500,800,90,0,1,rock3 9 | -------------------------------------------------------------------------------- /examples/data/input_data/jan_models/tutorial_model_surface_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 0,0,800,rock3 3 | 0,500,800,rock3 4 | 0,1000,800,rock3 5 | 500,0,800,rock3 6 | 500,500,800,rock3 7 | 500,1000,800,rock3 8 | 1000,0,800,rock3 9 | 1000,500,800,rock3 10 | 1000,1000,800,rock3 11 | 1500,0,800,rock3 12 | 1500,500,800,rock3 13 | 1500,1000,800,rock3 14 | 2000,0,800,rock3 15 | 2000,500,800,rock3 16 | 2000,1000,800,rock3 17 | 0,0,450,rock2 18 | 0,500,450,rock2 19 | 0,1000,450,rock2 20 | 150,0,600,rock2 21 | 150,500,600,rock2 22 | 150,1000,600,rock2 23 | 300,0,750,rock2 24 | 300,500,750,rock2 25 | 300,1000,750,rock2 26 | 450,0,600,rock2 27 | 450,500,600,rock2 28 | 450,1000,600,rock2 29 | 600,0,450,rock2 30 | 600,500,450,rock2 31 | 600,1000,450,rock2 32 | 750,0,600,rock2 33 | 750,500,600,rock2 34 | 750,1000,600,rock2 35 | 850,0,800,rock2 36 | 850,500,800,rock2 37 | 850,1000,800,rock2 38 | 1500,0,800,rock2 39 | 1500,500,800,rock2 40 | 1500,1000,800,rock2 41 | 1600,0,600,rock2 42 | 1600,500,600,rock2 43 | 1600,1000,600,rock2 44 | 1750,0,450,rock2 45 | 1750,500,450,rock2 46 | 1750,1000,450,rock2 47 | 1850,0,550,rock2 48 | 1850,500,550,rock2 49 | 1850,1000,550,rock2 50 | 0,0,250,rock1 51 | 0,500,250,rock1 52 | 0,1000,250,rock1 53 | 150,0,400,rock1 54 | 150,500,400,rock1 55 | 150,1000,400,rock1 56 | 300,0,550,rock1 57 | 300,500,550,rock1 58 | 300,1000,550,rock1 59 | 450,0,400,rock1 60 | 450,500,400,rock1 61 | 450,1000,400,rock1 62 | 600,0,250,rock1 63 | 600,500,250,rock1 64 | 600,1000,250,rock1 65 | 750,0,350,rock1 66 | 750,500,350,rock1 67 | 750,1000,350,rock1 68 | 900,0,550,rock1 69 | 900,500,550,rock1 70 | 900,1000,550,rock1 71 | 1450,0,550,rock1 72 | 1450,500,550,rock1 73 | 1450,1000,550,rock1 74 | 1600,0,350,rock1 75 | 1600,500,350,rock1 76 | 1600,1000,350,rock1 77 | 1750,0,250,rock1 78 | 1750,500,250,rock1 79 | 1750,1000,250,rock1 80 | 1850,0,350,rock1 81 | 1850,500,350,rock1 82 | 1850,1000,350,rock1 83 | 1050,0,799,rock1 84 | 1050,500,799,rock1 85 | 1050,1000,799,rock1 86 | 1300,0,799,rock1 87 | 1300,500,799,rock1 88 | 1300,1000,799,rock1 -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations1.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotations 2 | 0,1000.0,1000.0,1500.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Sandstone,Strat_Series_1,1,1,False,1,"${\bf{x}}_{\beta \,{\bf{1}},0}$" 3 | 1,1000.0,1000.0,1400.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Siltstone,Strat_Series_1,2,1,False,2,"${\bf{x}}_{\beta \,{\bf{2}},0}$" 4 | 2,1000.0,1000.0,1100.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Shale,Strat_Series_1,3,1,False,3,"${\bf{x}}_{\beta \,{\bf{3}},0}$" 5 | 3,1000.0,1000.0,1000.0,0.6427876096875392,1.0000393593894367e-12,0.766044443119978,40.0,90.0,1.0,Sandstone2,Strat_Series_2,4,2,False,4,"${\bf{x}}_{\beta \,{\bf{4}},0}$" 6 | 4,1000.0,1000.0,500.0,0.6427876096875392,1.0000393593894367e-12,0.766044443119978,40.0,90.0,1.0,Siltstone2,Strat_Series_2,5,2,False,5,"${\bf{x}}_{\beta \,{\bf{5}},0}$" 7 | 5,1000.0,1000.0,100.0,0.6427876096875392,1.0000393593894367e-12,0.766044443119978,40.0,90.0,1.0,Shale2,Strat_Series_2,6,2,False,6,"${\bf{x}}_{\beta \,{\bf{6}},0}$" 8 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations2.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotations 2 | 2,750.0,1000.0,1300.0,-0.8191520442879918,9.998495242106419e-13,0.573576436352046,55.0,270.0,1.0,Siltstone,Strat_Series,2,2,False,2,"${\bf{x}}_{\beta \,{\bf{2}},0}$" 3 | 3,1250.0,1000.0,1300.0,0.8191520442899918,1.0000501585964528e-12,0.573576436352046,55.0,90.0,1.0,Siltstone,Strat_Series,2,2,False,2,"${\bf{x}}_{\beta \,{\bf{2}},1}$" 4 | 0,750.0,1000.0,500.0,-0.8191520442879918,9.998495242106419e-13,0.573576436352046,55.0,270.0,1.0,Schist,Strat_Series,5,2,False,5,"${\bf{x}}_{\beta \,{\bf{5}},0}$" 5 | 1,1250.0,1000.0,500.0,0.8191520442899918,1.0000501585964528e-12,0.573576436352046,55.0,90.0,1.0,Schist,Strat_Series,5,2,False,5,"${\bf{x}}_{\beta \,{\bf{5}},1}$" 6 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations3.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotations 2 | 2,1000.0,1250.0,1500.0,0.31816239933811036,-0.4772448176609822,0.8191520442899918,35.0,146.31,1.0,Sandstone,Strat_Series,1,2,False,1,"${\bf{x}}_{\beta \,{\bf{1}},0}$" 3 | 1,1000.0,1250.0,700.0,0.3181623993373182,-0.477244817659794,0.8191520442909918,34.99999999990011,146.31,1.0,Schist,Strat_Series,5,2,False,5,"${\bf{x}}_{\beta \,{\bf{5}},0}$" 4 | 0,1000.0000000000001,1249.9999999999982,10.00000000000001,0.31816239933811036,-0.4772448176609822,0.8191520442899918,35.0,146.31,1.0,Gneiss,Strat_Series,6,2,False,6,"${\bf{x}}_{\beta \,{\bf{6}},0}$" 5 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations5.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotations 2 | 0,500.0,1000.0,864.602,-0.9486830155920029,-0.31622861338710945,1.999261954502598e-12,89.99999999994274,251.56500000003624,1.0,Main_Fault,Fault_Series,1,1,True,1,"${\bf{x}}_{\beta \,{\bf{1}},0}$" 3 | 1,1000.0,1000.0,1500.0,0.40557978767430714,-0.40557978767030683,0.8191520442903204,34.99999999996717,134.99999999985872,1.0,Sandstone,Strat_Series,2,2,False,2,"${\bf{x}}_{\beta \,{\bf{2}},0}$" 4 | 2,1000.0,1000.0,500.0,0.4055797876736288,-0.4055797876696291,0.8191520442909919,34.999999999900105,134.99999999985874,1.0,Schist,Strat_Series,6,2,False,6,"${\bf{x}}_{\beta \,{\bf{6}},0}$" 5 | 3,1000.0,1000.0,10.0,0.4055797876736288,-0.4055797876696291,0.8191520442909919,34.999999999900105,134.99999999985874,1.0,Gneiss,Strat_Series,7,2,False,7,"${\bf{x}}_{\beta \,{\bf{7}},0}$" 6 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations6.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 2,1000,1000,1500,1e-12,1e-12,1.000000000001,0,90,1,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\beta \,{\bf{2}},0}$",2 3 | 1,1000,1000,1000,1e-12,1e-12,1.000000000001,0,90,1,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\beta \,{\bf{3}},0}$",3 4 | 0,1000,1000,500,1e-12,1e-12,1.000000000001,0,90,1,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\beta \,{\bf{4}},0}$",4 5 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations8.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotations 2 | 0,500.0,1000.0,864.602,-0.9486830155920029,-0.31622861338710945,1.999261954502598e-12,89.99999999994274,251.56500000003624,1.0,Main_Fault,Fault_Series,1,1,True,1,"${\bf{x}}_{\beta \,{\bf{1}},0}$" 3 | 1,1500.0,1000.0,1000.0,0.5389855446963152,0.19617469496985063,0.8191520442903204,34.99999999996717,70.0,1.0,Sandstone,Strat_Series,2,2,False,2,"${\bf{x}}_{\beta \,{\bf{2}},0}$" 4 | 4,250.0,1000.0,1100.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Sandstone,Strat_Series,2,2,False,2,"${\bf{x}}_{\beta \,{\bf{2}},1}$" 5 | 5,250.0,1000.0,800.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Shale,Strat_Series,4,2,False,4,"${\bf{x}}_{\beta \,{\bf{4}},0}$" 6 | 6,250.0,1000.0,500.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Sandstone_2,Strat_Series,5,2,False,5,"${\bf{x}}_{\beta \,{\bf{5}},0}$" 7 | 2,1500.0,1000.0,200.0,0.5389855446954142,0.19617469496952267,0.8191520442909919,34.999999999900105,70.0,1.0,Schist,Strat_Series,6,2,False,6,"${\bf{x}}_{\beta \,{\bf{6}},0}$" 8 | 7,250.0,1000.0,300.0,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,Schist,Strat_Series,6,2,False,6,"${\bf{x}}_{\beta \,{\bf{6}},1}$" 9 | 3,1500.0,1000.0,100.0,0.5389855446954142,0.19617469496952267,0.8191520442909919,34.999999999900105,70.0,1.0,Gneiss,Strat_Series,7,2,False,7,"${\bf{x}}_{\beta \,{\bf{7}},0}$" 10 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/foliations9.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,Unnamed: 0,formation_value,annotations 2 | 2,1000.0,1249.9999999999984,10.000000000000009,0.31816239933811036,-0.4772448176609822,0.8191520442899918,35.0,146.31,1.0,Gneiss,Default series,1,1,False,0,1,"${\bf{x}}_{\beta \,{\bf{1}},0}$" 3 | 0,1000.0,1250.0,1500.0,0.31816239933811036,-0.4772448176609822,0.8191520442899918,35.0,146.31,1.0,Sandstone,Default series,2,1,False,2,2,"${\bf{x}}_{\beta \,{\bf{2}},0}$" 4 | 1,1000.0,1250.0,700.0,0.31816239933731816,-0.4772448176597939,0.8191520442909919,34.999999999900105,146.31,1.0,Schist,Default series,4,1,False,1,4,"${\bf{x}}_{\beta \,{\bf{4}},0}$" 5 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces1.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 0,500.0,1000.0,1500.0,Sandstone,Strat_Series_1,1,1,False,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",1 3 | 1,1500.0,1000.0,1500.0,Sandstone,Strat_Series_1,1,1,False,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",1 4 | 2,500.0,1000.0,1400.0,Siltstone,Strat_Series_1,2,1,False,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",2 5 | 3,1500.0,1000.0,1400.0,Siltstone,Strat_Series_1,2,1,False,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",2 6 | 4,500.0,1000.0,1100.0,Shale,Strat_Series_1,3,1,False,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",3 7 | 5,1500.0,1000.0,1100.0,Shale,Strat_Series_1,3,1,False,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",3 8 | 6,1000.0,500.0,1000.0,Sandstone2,Strat_Series_2,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",4 9 | 7,1000.0,1500.0,1000.0,Sandstone2,Strat_Series_2,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",4 10 | 8,1000.0,500.0,500.0,Siltstone2,Strat_Series_2,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",5 11 | 9,1000.0,1500.0,500.0,Siltstone2,Strat_Series_2,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",5 12 | 10,1000.0,500.0,100.0,Shale2,Strat_Series_2,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",6 13 | 11,1000.0,1500.0,100.0,Shale2,Strat_Series_2,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",6 14 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces2.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 2,1500.0,1000.0,1500.0,Sandstone,Strat_Series,1,2,False,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",1 3 | 3,500.0,1000.0,1500.0,Sandstone,Strat_Series,1,2,False,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",1 4 | 10,500.0,1000.0,1300.0,Siltstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",2 5 | 11,1500.0,1000.0,1300.0,Siltstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",2 6 | 8,1500.0,1000.0,1200.0,Shale,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",3 7 | 9,500.0,1000.0,1200.0,Shale,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",3 8 | 4,1500.0,1000.0,800.0,Sandstone_2,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",4 9 | 5,500.0,1000.0,800.0,Sandstone_2,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",4 10 | 6,1500.0,1000.0,500.0,Schist,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",5 11 | 7,500.0,1000.0,500.0,Schist,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",5 12 | 0,1500.0,1000.0,10.0,Gneiss,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",6 13 | 1,500.0,1000.0,10.0,Gneiss,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",6 14 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces3.csv: -------------------------------------------------------------------------------- 1 | ,Unnamed: 0,X,Y,Z,annotations,formation,formation_number,formation_value,isFault,order_series,series 2 | 0,11.0,2000.0,2000.0,1500.0,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",Sandstone,1,1,False,2,Strat_Series 3 | 1,12.0,0.0,500.0,1500.0,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",Sandstone,1,1,False,2,Strat_Series 4 | 2,0.0,0.0,500.0,1400.0,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",Siltstone,2,2,False,2,Strat_Series 5 | 3,10.0,2000.0,2000.0,1400.0,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",Siltstone,2,2,False,2,Strat_Series 6 | 4,1.0,2000.0,2000.0,1150.0,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",Shale,3,3,False,2,Strat_Series 7 | 5,2.0,0.0,500.0,1150.0,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",Shale,3,3,False,2,Strat_Series 8 | 6,3.0,2000.0,2000.0,1000.0,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",Sandstone_2,4,4,False,2,Strat_Series 9 | 7,4.0,0.0,500.0,1000.0,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",Sandstone_2,4,4,False,2,Strat_Series 10 | 8,5.0,2000.0,2000.0,700.0,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",Schist,5,5,False,2,Strat_Series 11 | 9,6.0,0.0,500.0,700.0,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",Schist,5,5,False,2,Strat_Series 12 | 10,7.0,2000.0,2000.0,10.0,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",Gneiss,6,6,False,2,Strat_Series 13 | 11,8.0,0.0,500.0,10.0,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",Gneiss,6,6,False,2,Strat_Series 14 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces5.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 0,600.0,1000.0,600.0,Main_Fault,Fault_Series,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",1 3 | 1,700.0,1000.0,900.0,Main_Fault,Fault_Series,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",1 4 | 2,800.0,1000.0,1200.0,Main_Fault,Fault_Series,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},2}$",1 5 | 3,900.0,1000.0,1500.0,Main_Fault,Fault_Series,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},3}$",1 6 | 4,500.0,1000.0,300.0,Main_Fault,Fault_Series,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},4}$",1 7 | 16,2000.0,2000.0,100.0,Gneiss,Strat_Series,7,2,False,"${\bf{x}}_{\alpha \,{\bf{7}},0}$",7 8 | 14,0.0,0.0,100.0,Schist,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",6 9 | 13,2000.0,2000.0,500.0,Schist,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",6 10 | 12,0.0,0.0,400.0,Sandstone_2,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",5 11 | 11,2000.0,2000.0,800.0,Sandstone_2,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",5 12 | 8,2000.0,2000.0,1300.0,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",3 13 | 10,0.0,0.0,800.0,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",4 14 | 15,0.0,0.0,0.0,Gneiss,Strat_Series,7,2,False,"${\bf{x}}_{\alpha \,{\bf{7}},1}$",7 15 | 7,0.0,0.0,900.0,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",3 16 | 6,0.0,0.0,1100.0,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",2 17 | 5,2000.0,2000.0,1500.0,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",2 18 | 9,2000.0,2000.0,1200.0,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",4 19 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces6.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 46,500.0,1000.0,1500.0,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",2 3 | 56,1500.0,1000.0,500.0,Gneiss,Strat_Series,7,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},7}$",7 4 | 49,500.0,1000.0,800.0,Sandstone_2,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},6}$",5 5 | 50,1500.0,1000.0,800.0,Sandstone_2,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},5}$",5 6 | 51,1000.0,1000.0,600.0,Sandstone_2,Strat_Series,5,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},4}$",5 7 | 52,500.0,1000.0,700.0,Schist,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},3}$",6 8 | 53,1500.0,1000.0,700.0,Schist,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},2}$",6 9 | 54,1000.0,1000.0,500.0,Schist,Strat_Series,6,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",6 10 | 57,1000.0,1000.0,300.0,Gneiss,Strat_Series,7,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},8}$",7 11 | 55,500.0,1000.0,500.0,Gneiss,Strat_Series,7,2,False,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",7 12 | 15,500.0,1000.0,1200.0,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",4 13 | 12,1500.0,1000.0,1200.0,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",4 14 | 19,500.0,1000.0,1300.0,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},2}$",3 15 | 20,1500.0,1000.0,1300.0,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",3 16 | 21,1000.0,1000.0,1100.0,Siltstone,Strat_Series,3,2,False,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",3 17 | 47,1500.0,1000.0,1500.0,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},2}$",2 18 | 27,1000.0,1000.0,1200.0,Sandstone,Strat_Series,2,2,False,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",2 19 | 9,1000.0,1000.0,1000.0,Shale,Strat_Series,4,2,False,"${\bf{x}}_{\alpha \,{\bf{4}},2}$",4 20 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces7.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value 2 | 0,750.0,1500.0,500.0,Fault_1,Fault_1,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",1 3 | 1,750.0,500.0,500.0,Fault_1,Fault_1,1,1,True,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",1 4 | 2,1250.0,1500.0,500.0,Fault_2,Fault_2,2,2,True,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",2 5 | 3,1250.0,1500.0,500.0,Fault_2,Fault_2,2,2,True,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",2 6 | 13,1000.0,1000.0,300.0,Gneiss,Strat_Series,8,3,False,"${\bf{x}}_{\alpha \,{\bf{8}},1}$",8 7 | 5,250.0,1000.0,500.0,Gneiss,Strat_Series,8,3,False,"${\bf{x}}_{\alpha \,{\bf{8}},0}$",8 8 | 8,250.0,1000.0,700.0,Schist,Strat_Series,7,3,False,"${\bf{x}}_{\alpha \,{\bf{7}},2}$",7 9 | 7,1750.0,1000.0,700.0,Schist,Strat_Series,7,3,False,"${\bf{x}}_{\alpha \,{\bf{7}},1}$",7 10 | 6,1000.0,1000.0,500.0,Schist,Strat_Series,7,3,False,"${\bf{x}}_{\alpha \,{\bf{7}},0}$",7 11 | 9,250.0,1000.0,900.0,Sandstone_2,Strat_Series,6,3,False,"${\bf{x}}_{\alpha \,{\bf{6}},2}$",6 12 | 10,1750.0,1000.0,900.0,Sandstone_2,Strat_Series,6,3,False,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",6 13 | 11,1000.0,1000.0,700.0,Sandstone_2,Strat_Series,6,3,False,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",6 14 | 12,1750.0,1000.0,1200.0,Shale,Strat_Series,5,3,False,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",5 15 | 4,1750.0,1000.0,500.0,Gneiss,Strat_Series,8,3,False,"${\bf{x}}_{\alpha \,{\bf{8}},2}$",8 16 | 14,250.0,1000.0,1200.0,Shale,Strat_Series,5,3,False,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",5 17 | 17,250.0,1000.0,1300.0,Siltstone,Strat_Series,4,3,False,"${\bf{x}}_{\alpha \,{\bf{4}},2}$",4 18 | 16,1750.0,1000.0,1300.0,Siltstone,Strat_Series,4,3,False,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",4 19 | 15,1000.0,1000.0,1100.0,Siltstone,Strat_Series,4,3,False,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",4 20 | 20,250.0,1000.0,1500.0,Sandstone,Strat_Series,3,3,False,"${\bf{x}}_{\alpha \,{\bf{3}},2}$",3 21 | 19,1000.0,1000.0,1200.0,Sandstone,Strat_Series,3,3,False,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",3 22 | 18,1750.0,1000.0,1500.0,Sandstone,Strat_Series,3,3,False,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",3 23 | 21,1000.0,1000.0,1000.0,Shale,Strat_Series,5,3,False,"${\bf{x}}_{\alpha \,{\bf{5}},2}$",5 24 | -------------------------------------------------------------------------------- /examples/data/input_data/lisa_models/interfaces9.csv: -------------------------------------------------------------------------------- 1 | ,Unnamed: 0,Unnamed: 0.1,X,Y,Z,annotations,formation,formation_number,formation_value,isFault,order_series,series 2 | 10,10.0,7.0,2000.0,2000.0,10.0,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",Gneiss,1,1,False,1,Default series 3 | 11,11.0,8.0,0.0,500.0,10.0,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",Gneiss,1,1,False,1,Default series 4 | 0,0.0,11.0,2000.0,2000.0,1500.0,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",Sandstone,2,2,False,1,Default series 5 | 1,1.0,12.0,0.0,500.0,1500.0,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",Sandstone,2,2,False,1,Default series 6 | 6,6.0,3.0,2000.0,2000.0,1000.0,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",Sandstone_2,3,3,False,1,Default series 7 | 7,7.0,4.0,0.0,500.0,1000.0,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",Sandstone_2,3,3,False,1,Default series 8 | 8,8.0,5.0,2000.0,2000.0,700.0,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",Schist,4,4,False,1,Default series 9 | 9,9.0,6.0,0.0,500.0,700.0,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",Schist,4,4,False,1,Default series 10 | 4,4.0,1.0,2000.0,2000.0,1150.0,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",Shale,5,5,False,1,Default series 11 | 5,5.0,2.0,0.0,500.0,1150.0,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",Shale,5,5,False,1,Default series 12 | 2,2.0,0.0,0.0,500.0,1400.0,"${\bf{x}}_{\alpha \,{\bf{6}},0}$",Siltstone,6,6,False,1,Default series 13 | 3,3.0,10.0,2000.0,2000.0,1400.0,"${\bf{x}}_{\alpha \,{\bf{6}},1}$",Siltstone,6,6,False,1,Default series 14 | -------------------------------------------------------------------------------- /examples/data/input_data/perth_basin/Paper_GU2F_sc_faults_topo_Foliations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 393936.142320,6693632.776940,957.702303,263.276747,1.193492,1,Permian 3 | 396918.892567,6693984.396839,977.204803,83.276747,0.349367,1,Permian 4 | 351487.758871,6688628.772226,-7385.646697,83.277000,6.546000,1,Permian 5 | 338518.168564,6650708.570891,-4542.306605,256.590252,1.789915,1,Permian 6 | 397464.032464,6663077.533819,959.378895,268.100891,1.432093,1,Permian 7 | 388231.346475,6662771.397837,-5909.347105,88.100891,1.548158,1,Permian 8 | 390067.013711,6693176.666808,-2027.085197,258.305884,56.113829,1,Darling 9 | 387480.312066,6692871.734884,-5468.217697,258.453840,50.172150,1,Darling 10 | 380685.471752,6692070.728810,-2475.219197,258.181256,59.136216,1,Urella_North 11 | 378225.542286,6691780.741356,-5604.015697,258.491356,45.884855,1,Urella_North 12 | 349524.174513,6688397.296146,-1722.315697,258.469633,48.978506,1,Eneabba_South 13 | 346943.915258,6688093.123680,-4278.195197,258.462867,40.562225,1,Eneabba_South 14 | 340944.288072,6687385.860875,-2356.005197,77.995123,62.486979,-1,Coomallo 15 | 342643.483167,6687586.169570,-5228.729697,78.277337,56.597000,-1,Coomallo 16 | 348362.594755,6688260.363945,-4800.701697,83.277000,7.496000,1,Lesueur 17 | 347339.390828,6688139.744103,-5803.145697,83.277000,12.095000,1,Woodada_Kockatea 18 | 352054.428028,6688695.573713,-3672.951697,83.277000,7.472000,1,Cattamarra 19 | 377146.267897,6662140.215356,-3767.430605,252.583876,73.779822,1,Hypo_fault_E 20 | 375633.492464,6661665.672702,-8051.546105,252.583876,66.705447,1,Hypo_fault_E 21 | 358317.030388,6656233.670235,-3868.630105,72.583876,74.666723,-1,Hypo_fault_W 22 | 359797.619749,6656698.116438,-8017.813105,72.583876,64.573130,-1,Hypo_fault_W 23 | 386644.134759,6662718.769315,-2733.176605,262.967799,59.896750,1,Urella_South 24 | 384322.099881,6662641.775640,-6850.435605,262.886991,61.379678,1,Urella_South 25 | 349566.870409,6653488.831804,-1894.695784,72.584000,14.036000,1,Cretaceous 26 | 393713.418971,6662953.171554,-1357.485252,88.101000,0.000000,1,Yarragadee 27 | 362273.437500,6691196.250000,265.802829,37.647360,89.720212,-1,Abrolhos_Transfer 28 | 382171.344000,6676036.000000,273.424125,216.987277,89.473746,1,Abrolhos_Transfer -------------------------------------------------------------------------------- /examples/data/input_data/striplog_integration/alpha_strip.tops: -------------------------------------------------------------------------------- 1 | top, comp lith 2 | 0, overburden 3 | 50, miguel 4 | 75, evan 5 | 100, brian 6 | 120, dieter 7 | -------------------------------------------------------------------------------- /examples/data/input_data/striplog_integration/beta_strip.tops: -------------------------------------------------------------------------------- 1 | top, comp lith 2 | 0, overburden 3 | 50, miguel 4 | 80, evan 5 | 100, brian 6 | 130, dieter 7 | -------------------------------------------------------------------------------- /examples/data/input_data/striplog_integration/epsilon_strip.tops: -------------------------------------------------------------------------------- 1 | top, comp lith 2 | 0, overburden 3 | 50, miguel 4 | 75, brian 5 | 110, dieter 6 | -------------------------------------------------------------------------------- /examples/data/input_data/striplog_integration/gamma_strip.tops: -------------------------------------------------------------------------------- 1 | top, comp lith 2 | 0, overburden 3 | 50, miguel 4 | 75, evan 5 | 100, brian 6 | 130, dieter 7 | -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-4/tut_ch1-4_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series 2 | 0,200.0,50.0,-200.0,0.3126,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 3 | 1,500.0,50.0,-200.0,0.5001,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 4 | 2,800.0,50.0,-200.0,0.6876,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,seafloor,seafloor_series,1,1 5 | 4,700.0,50.0,-450.0,0.6251,0.5001,0.59385,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,right_series,2,2 6 | 3,900.0,50.0,-450.0,0.7501,0.5001,0.59385,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,right_series,2,2 7 | 6,700.0,50.0,-700.0,0.6251,0.5001,0.4376,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,right_series,3,2 8 | 5,900.0,50.0,-700.0,0.7501,0.5001,0.4376,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,right_series,3,2 9 | 7,300.0,50.0,-200.0,0.3751,0.5001,0.7501,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,onlap_surface,onlap_series,4,3 10 | 8,700.0,50.0,-1000.0,0.6251,0.5001,0.2501,1.000000000001,1.0000612323399569e-12,1.0000612323399569e-12,90.0,90.0,1.0,onlap_surface,onlap_series,4,3 11 | 9,550.0,50.0,-500.0,0.53135,0.5001,0.5626,0.766044443119978,1.0000469066937634e-12,0.6427876096875393,50.0,90.0,1.0,onlap_surface,onlap_series,4,3 12 | 10,100.0,50.0,-400.0,0.2501,0.5001,0.6251,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,left_series,5,4 13 | 11,450.0,50.0,-1000.0,0.46885,0.5001,0.2501,1.000000000001,2.3054614646942163e-12,1.0000612323399569e-12,90.0,89.9999999999252,1.0,rock3,left_series,5,4 14 | 12,300.0,50.0,-500.0,0.3751,0.5001,0.5626,0.766044443119978,1.0000469066937634e-12,0.6427876096875393,49.99999999992522,89.9999999999252,1.0,rock3,left_series,5,4 15 | -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-4/tut_ch1-4_points.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series 2 | 0,200.0,0.0,-200.0,0.3126,0.46885,0.7501,seafloor,seafloor_series,6,1 3 | 1,200.0,100.0,-200.0,0.3126,0.53135,0.7501,seafloor,seafloor_series,6,1 4 | 2,500.0,0.0,-200.0,0.5001,0.46885,0.7501,seafloor,seafloor_series,6,1 5 | 3,500.0,100.0,-200.0,0.5001,0.53135,0.7501,seafloor,seafloor_series,6,1 6 | 4,800.0,0.0,-200.0,0.6876,0.46885,0.7501,seafloor,seafloor_series,6,1 7 | 5,800.0,100.0,-200.0,0.6876,0.53135,0.7501,seafloor,seafloor_series,6,1 8 | 7,700.0,0.0,-450.0,0.6251,0.46885,0.59385,rock1,right_series,4,2 9 | 6,700.0,100.0,-450.0,0.6251,0.53135,0.59385,rock1,right_series,4,2 10 | 8,900.0,0.0,-450.0,0.7501,0.46885,0.59385,rock1,right_series,4,2 11 | 9,900.0,100.0,-450.0,0.7501,0.53135,0.59385,rock1,right_series,4,2 12 | 13,700.0,0.0,-700.0,0.6251,0.46885,0.4376,rock2,right_series,5,2 13 | 12,700.0,100.0,-700.0,0.6251,0.53135,0.4376,rock2,right_series,5,2 14 | 11,900.0,0.0,-700.0,0.7501,0.46885,0.4376,rock2,right_series,5,2 15 | 10,900.0,100.0,-700.0,0.7501,0.53135,0.4376,rock2,right_series,5,2 16 | 14,300.0,0.0,-200.0,0.3751,0.46885,0.7501,onlap_surface,onlap_series,3,3 17 | 15,300.0,100.0,-200.0,0.3751,0.53135,0.7501,onlap_surface,onlap_series,3,3 18 | 16,700.0,0.0,-1000.0,0.6251,0.46885,0.2501,onlap_surface,onlap_series,3,3 19 | 17,700.0,100.0,-1000.0,0.6251,0.53135,0.2501,onlap_surface,onlap_series,3,3 20 | 18,550.0,0.0,-500.0,0.53135,0.46885,0.5626,onlap_surface,onlap_series,3,3 21 | 19,550.0,100.0,-500.0,0.53135,0.53135,0.5626,onlap_surface,onlap_series,3,3 22 | 20,100.0,0.0,-400.0,0.2501,0.46885,0.6251,rock3,left_series,2,4 23 | 21,100.0,100.0,-400.0,0.2501,0.53135,0.6251,rock3,left_series,2,4 24 | 22,450.0,0.0,-1000.0,0.46885,0.46885,0.2501,rock3,left_series,2,4 25 | 23,450.0,100.0,-1000.0,0.46885,0.53135,0.2501,rock3,left_series,2,4 26 | 24,300.0,0.0,-500.0,0.3751,0.46885,0.5626,rock3,left_series,2,4 27 | 25,300.0,100.0,-500.0,0.3751,0.53135,0.5626,rock3,left_series,2,4 28 | -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-5/tut_ch1-5_orientations.csv: -------------------------------------------------------------------------------- 1 | ,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series 2 | 13,550.0,500.0,-600.0,0.53135,0.5001,0.53135,-0.8949343616010249,9.576199963080072e-18,0.4461978131108091,63.49999999993597,270.0,1.0,fault2,fault_series2,1,1 3 | 10,350.0,500.0,-700.0,0.40635,0.5001,0.46885,0.8949343616030251,1.0000547989250692e-12,0.4461978131108087,63.5,90.0,1.0,fault1,fault_series1,2,2 4 | 11,400.0,500.0,-625.0,0.4376,0.5001,0.515725,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 5 | 7,150.0,500.0,-550.0,0.28135,0.5001,0.5626,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 6 | 6,850.0,500.0,-525.0,0.71885,0.5001,0.578225,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock4,series1,3,3 7 | 12,400.0,500.0,-675.0,0.4376,0.5001,0.484475,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 8 | 5,150.0,500.0,-600.0,0.28135,0.5001,0.53135,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 9 | 4,850.0,500.0,-575.0,0.71885,0.5001,0.546975,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock3,series1,4,3 10 | 3,850.0,500.0,-625.0,0.71885,0.5001,0.515725,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 11 | 2,150.0,500.0,-650.0,0.28135,0.5001,0.5001,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock2,series1,5,3 12 | 0,150.0,500.0,-700.0,0.28135,0.5001,0.46885,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 13 | 1,850.0,500.0,-675.0,0.71885,0.5001,0.484475,1e-12,1e-12,1.000000000001,0.0,0.0,1.0,rock1,series1,6,3 14 | -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-7/bogota.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/input_data/tut-ch1-7/bogota.tif -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-7/onelayer_interfaces.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 450000,79300,205,layer1 3 | 458000,79300,-402.,layer1 4 | 450760,70668,205,layer1 5 | 460000,70668,-402.,layer1 -------------------------------------------------------------------------------- /examples/data/input_data/tut-ch1-7/onelayer_orient.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation,azimuth,dip,polarity 2 | 450760,75484,205,layer1,0,0,1 3 | 455000,75484,-402,layer1,0,0,1 -------------------------------------------------------------------------------- /examples/data/input_data/tut_SandStone/Uncertainties.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/input_data/tut_SandStone/Uncertainties.xlsx -------------------------------------------------------------------------------- /examples/data/input_data/tut_SandStone/parameters.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/input_data/tut_SandStone/parameters.xlsx -------------------------------------------------------------------------------- /examples/data/input_data/tut_SandStone/real_grav.npy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/data/input_data/tut_SandStone/real_grav.npy -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/.~lock.fault_unconformity_model_orientations.csv#: -------------------------------------------------------------------------------- 1 | ,bl9,bl9,24.01.2018 18:51,file:///home/bl9/.config/libreoffice/4; -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/.~lock.fault_unconformity_model_points.csv#: -------------------------------------------------------------------------------- 1 | ,bl9,bl9,24.01.2018 18:39,file:///home/bl9/.config/libreoffice/4; -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/fault_unconformity_model_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 1000,1000,950,90,18.435,1,Shale 3 | 400,1000,1400,90,18.435,1,Sandstone_2 4 | 1000,1500,1600,270,20,1,Carbonate 5 | 500,1000,864.602,270,71.565,1,Main_Fault 6 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/fault_unconformity_model_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 800,50,750,Shale 3 | 800,150,700,Shale 4 | 800,300,700,Shale 5 | 800,500,800,Shale 6 | 800,1000,1000,Shale 7 | 800,1500,700,Shale 8 | 800,1700,600,Shale 9 | 800,1950,650,Shale 10 | 0,1000,1100,Shale 11 | 300,1000,1000,Shale 12 | 450,1000,950,Shale 13 | 1100,1000,900,Shale 14 | 1400,1000,850,Shale 15 | 1700,1000,900,Shale 16 | 1500,500,800,Shale 17 | 1500,1500,750,Shale 18 | 800,50,450,Sandstone_1 19 | 800,150,400,Sandstone_1 20 | 800,300,400,Sandstone_1 21 | 800,500,500,Sandstone_1 22 | 800,1000,700,Sandstone_1 23 | 800,1500,400,Sandstone_1 24 | 800,1700,300,Sandstone_1 25 | 800,1950,350,Sandstone_1 26 | 0,1000,800,Sandstone_1 27 | 300,1000,700,Sandstone_1 28 | 1100,1000,600,Sandstone_1 29 | 1400,1000,550,Sandstone_1 30 | 1700,1000,600,Sandstone_1 31 | 1500,500,500,Sandstone_1 32 | 1500,1500,450,Sandstone_1 33 | 900,150,920,Siltstone 34 | 900,300,920,Siltstone 35 | 900,1500,920,Siltstone 36 | 900,1700,820,Siltstone 37 | 900,1950,870,Siltstone 38 | 0,1000,1300,Siltstone 39 | 300,1000,1200,Siltstone 40 | 600,1000,1100,Siltstone 41 | 1100,1000,1100,Siltstone 42 | 1400,1000,1050,Siltstone 43 | 1700,1000,1100,Siltstone 44 | 1500,500,1000,Siltstone 45 | 1500,1500,950,Siltstone 46 | 0,1000,1500,Sandstone_2 47 | 300,1000,1400,Sandstone_2 48 | 600,1000,1300,Sandstone_2 49 | 1100,1000,1300,Sandstone_2 50 | 1400,1000,1250,Sandstone_2 51 | 1700,1000,1300,Sandstone_2 52 | 1500,500,1200,Sandstone_2 53 | 1500,1500,1150,Sandstone_2 54 | 300,300,1500,Carbonate 55 | 1700,1700,1600,Carbonate 56 | 1000,1000,1300,Carbonate 57 | 300,1700,1400,Carbonate 58 | 1700,300,1500,Carbonate 59 | 700,1000,900,Main_Fault 60 | 600,1000,600,Main_Fault 61 | 500,1000,300,Main_Fault 62 | 800,1000,1200,Main_Fault 63 | 900,1000,1500,Main_Fault 64 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/simple_fault_model_orientations.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 1000,1000,950,90,18.435,1,Shale 3 | 400,1000,1400,90,18.435,1,Sandstone_2 4 | 500,1000,864.602,270,71.565,1,Main_Fault 5 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/simple_fault_model_orientations_geophy.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,azimuth,dip,polarity,formation 2 | 1000,1000,-1050,90,18.435,1,target 3 | 400,1000,-600,90,18.435,1,seawater 4 | 500,1000,-1135.398,270,71.565,1,fault 5 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/simple_fault_model_points.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 800,50,750,Shale 3 | 800,150,700,Shale 4 | 800,300,700,Shale 5 | 800,500,800,Shale 6 | 800,1000,1000,Shale 7 | 800,1500,700,Shale 8 | 800,1700,600,Shale 9 | 800,1950,650,Shale 10 | 0,1000,1100,Shale 11 | 300,1000,1000,Shale 12 | 450,1000,950,Shale 13 | 1100,1000,900,Shale 14 | 1400,1000,850,Shale 15 | 1700,1000,900,Shale 16 | 1500,500,800,Shale 17 | 1500,1500,750,Shale 18 | 800,50,450,Sandstone_1 19 | 800,150,400,Sandstone_1 20 | 800,300,400,Sandstone_1 21 | 800,500,500,Sandstone_1 22 | 800,1000,700,Sandstone_1 23 | 800,1500,400,Sandstone_1 24 | 800,1700,300,Sandstone_1 25 | 800,1950,350,Sandstone_1 26 | 0,1000,800,Sandstone_1 27 | 300,1000,700,Sandstone_1 28 | 1100,1000,600,Sandstone_1 29 | 1400,1000,550,Sandstone_1 30 | 1700,1000,600,Sandstone_1 31 | 1500,500,500,Sandstone_1 32 | 1500,1500,450,Sandstone_1 33 | 900,150,920,Siltstone 34 | 900,300,920,Siltstone 35 | 900,1500,920,Siltstone 36 | 900,1700,820,Siltstone 37 | 900,1950,870,Siltstone 38 | 0,1000,1300,Siltstone 39 | 300,1000,1200,Siltstone 40 | 600,1000,1100,Siltstone 41 | 1100,1000,1100,Siltstone 42 | 1400,1000,1050,Siltstone 43 | 1700,1000,1100,Siltstone 44 | 1500,500,1000,Siltstone 45 | 1500,1500,950,Siltstone 46 | 0,1000,1500,Sandstone_2 47 | 300,1000,1400,Sandstone_2 48 | 600,1000,1300,Sandstone_2 49 | 1100,1000,1300,Sandstone_2 50 | 1400,1000,1250,Sandstone_2 51 | 1700,1000,1300,Sandstone_2 52 | 1500,500,1200,Sandstone_2 53 | 1500,1500,1150,Sandstone_2 54 | 700,1000,900,Main_Fault 55 | 600,1000,600,Main_Fault 56 | 500,1000,300,Main_Fault 57 | 800,1000,1200,Main_Fault 58 | 900,1000,1500,Main_Fault 59 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter1/simple_fault_model_points_geophy.csv: -------------------------------------------------------------------------------- 1 | X,Y,Z,formation 2 | 800,50,-1250,target 3 | 800,150,-1300,target 4 | 800,300,-1300,target 5 | 800,500,-1200,target 6 | 800,1000,-1000,target 7 | 800,1500,-1300,target 8 | 800,1700,-1400,target 9 | 800,1950,-1350,target 10 | 0,1000,-900,target 11 | 300,1000,-1000,target 12 | 450,1000,-1050,target 13 | 1100,1000,-1100,target 14 | 1400,1000,-1150,target 15 | 1700,1000,-1100,target 16 | 1500,500,-1200,target 17 | 1500,1500,-1250,target 18 | 800,50,-1550,underburden 19 | 800,150,-1600,underburden 20 | 800,300,-1600,underburden 21 | 800,500,-1500,underburden 22 | 800,1000,-1300,underburden 23 | 800,1500,-1600,underburden 24 | 800,1700,-1700,underburden 25 | 800,1950,-1650,underburden 26 | 0,1000,-1200,underburden 27 | 300,1000,-1300,underburden 28 | 1100,1000,-1400,underburden 29 | 1400,1000,-1450,underburden 30 | 1700,1000,-1400,underburden 31 | 1500,500,-1500,underburden 32 | 1500,1500,-1550,underburden 33 | 900,150,-1080,overburden 34 | 900,300,-1080,overburden 35 | 900,1500,-1080,overburden 36 | 900,1700,-1180,overburden 37 | 900,1950,-1130,overburden 38 | 0,1000,-700,overburden 39 | 300,1000,-800,overburden 40 | 600,1000,-900,overburden 41 | 1100,1000,-900,overburden 42 | 1400,1000,-950,overburden 43 | 1700,1000,-900,overburden 44 | 1500,500,-1000,overburden 45 | 1500,1500,-1050,overburden 46 | 0,1000,-500,seawater 47 | 300,1000,-600,seawater 48 | 600,1000,-700,seawater 49 | 1100,1000,-700,seawater 50 | 1400,1000,-750,seawater 51 | 1700,1000,-700,seawater 52 | 1500,500,-800,seawater 53 | 1500,1500,-850,seawater 54 | 700,1000,-1100,fault 55 | 600,1000,-1400,fault 56 | 500,1000,-1700,fault 57 | 800,1000,-800,fault 58 | 900,1000,-500,fault 59 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter6/ch6_data_fol.csv: -------------------------------------------------------------------------------- 1 | G_x,G_y,G_z,X,X_std,Y,Y_std,Z,Z_std,annotations,azimuth,azimuth_std,dip,dip_std,formation,formation_number,group_id,index,isFault,order_series,polarity,series 2 | 0.8682431421244591,-5.537707899440688e-15,0.4961389383568339,1500.0,,6.66666666667,,990.0,,"${\bf{x}}_{\beta \,{\bf{1}},0}$",90.0,,60.2551187031,,Fault,1,fault,,True,1,1,fault 3 | 0.25881904510252074,1.5848095757158825e-17,0.9659258262890683,506.333333333,,9.66666666667,,1679.33333333,,"${\bf{x}}_{\beta \,{\bf{2}},0}$",90,,15,,Layer 2,2,l2_a,1.0,False,2,1,Rest 4 | 0.25881904510252074,1.5848095757158825e-17,0.9659258262890683,2500,,9.666666666666666,,911,,"${\bf{x}}_{\beta \,{\bf{2}},1}$",90,,15,,Layer 2,2,l2_a,1.0,False,2,1,Rest 5 | -------------------------------------------------------------------------------- /examples/data/input_data/tut_chapter6/ch6_data_interf.csv: -------------------------------------------------------------------------------- 1 | X,X_std,Y,Y_std,Z,Z_std,annotations,formation,formation_number,group_id,isFault,order_series,series 2 | 1700,0.0,0,0.0,640,0.0,"${\bf{x}}_{\alpha \,{\bf{1}},0}$",Fault,1,fault,True,1,fault 3 | 1500,0.0,10,0.0,990,0.0,"${\bf{x}}_{\alpha \,{\bf{1}},1}$",Fault,1,fault,True,1,fault 4 | 1300,0.0,10,0.0,1340,0.0,"${\bf{x}}_{\alpha \,{\bf{1}},2}$",Fault,1,fault,True,1,fault 5 | 2500,0.0,10,0.0,911,0.0,"${\bf{x}}_{\alpha \,{\bf{2}},0}$",Layer 2,2,l2_b,False,2,Rest 6 | 500,0.0,10,0.0,1681,0.0,"${\bf{x}}_{\alpha \,{\bf{2}},1}$",Layer 2,2,l2_a,False,2,Rest 7 | 2500,0.0,10,0.0,704,0.0,"${\bf{x}}_{\alpha \,{\bf{3}},0}$",Layer 3,3,l3_b,False,2,Rest 8 | 500,0.0,10,0.0,1474,0.0,"${\bf{x}}_{\alpha \,{\bf{3}},1}$",Layer 3,3,l3_a,False,2,Rest 9 | 2500,0.0,10,0.0,497,0.0,"${\bf{x}}_{\alpha \,{\bf{4}},0}$",Layer 4,4,l4_b,False,2,Rest 10 | 500,0.0,10,0.0,1267,0.0,"${\bf{x}}_{\alpha \,{\bf{4}},1}$",Layer 4,4,l4_a,False,2,Rest 11 | 2500,0.0,10,0.0,290,0.0,"${\bf{x}}_{\alpha \,{\bf{5}},0}$",Layer 5,5,l5_b,False,2,Rest 12 | 500,0.0,10,0.0,1060,0.0,"${\bf{x}}_{\alpha \,{\bf{5}},1}$",Layer 5,5,l5_a,False,2,Rest 13 | -------------------------------------------------------------------------------- /examples/examples/README.rst: -------------------------------------------------------------------------------- 1 | Examples 2 | ======== 3 | 4 | This examples intend to be a gallery of what other people has done with GemPy. 5 | Hopefully with the help of the community we can create a complete library of 6 | structures that can serve as template for new users. 7 | -------------------------------------------------------------------------------- /examples/examples/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/examples/__init__.py -------------------------------------------------------------------------------- /examples/examples/geometries/README.rst: -------------------------------------------------------------------------------- 1 | Simple geometries 2 | ----------------- 3 | Some simple geometries. -------------------------------------------------------------------------------- /examples/examples/geometries/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/examples/geometries/__init__.py -------------------------------------------------------------------------------- /examples/examples/geometries/b02_fold.py: -------------------------------------------------------------------------------- 1 | """ 2 | Model 2 - Anticline 3 | =================== 4 | 5 | Simple model of an anticline 6 | 7 | This script demonstrates how to create a geological model of an anticline structure using GemPy, 8 | a Python-based, open-source library for implicit geological modeling. 9 | """ 10 | 11 | # Import necessary libraries 12 | import gempy as gp 13 | import gempy_viewer as gpv 14 | 15 | 16 | # sphinx_gallery_thumbnail_number = 2 17 | 18 | 19 | # %% 20 | # Generate the model 21 | # Define the path to data 22 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 23 | path_to_data = data_path + "/data/input_data/jan_models/" 24 | # Create a GeoModel instance 25 | data: gp.data.GeoModel = gp.create_geomodel( 26 | project_name='fold', 27 | extent=[0, 1000, 0, 1000, 0, 1000], 28 | refinement=6, 29 | importer_helper=gp.data.ImporterHelper( 30 | path_to_orientations=path_to_data + "model2_orientations.csv", 31 | path_to_surface_points=path_to_data + "model2_surface_points.csv" 32 | ) 33 | ) 34 | # Map geological series to surfaces 35 | gp.map_stack_to_surfaces( 36 | gempy_model=data, 37 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 38 | ) 39 | # Compute the geological model 40 | gp.compute_model(data) 41 | geo_data = data 42 | 43 | # %% 44 | # Plot the initial geological model in the y direction without results 45 | gpv.plot_2d(geo_data, direction=['y'], show_results=False) 46 | 47 | # Plot the result of the model in the y and x direction with data and scalar 48 | gpv.plot_2d(geo_data, direction='y', show_data=True, show_scalar=False) 49 | gpv.plot_2d(geo_data, direction='x', show_data=True, show_scalar=True) 50 | -------------------------------------------------------------------------------- /examples/examples/geometries/c03_recumbent_fold.py: -------------------------------------------------------------------------------- 1 | """ 2 | Model 3 - Recumbent Fold 3 | ======================== 4 | 5 | Modeling a recumbent fold 6 | 7 | This script demonstrates how to create a geological model of a recumbent fold using GemPy, 8 | a Python-based, open-source library for implicit geological modeling. 9 | """ 10 | 11 | # Import necessary libraries 12 | import gempy as gp 13 | import gempy_viewer as gpv 14 | 15 | 16 | # sphinx_gallery_thumbnail_number = 2 17 | 18 | 19 | # %% 20 | # Generate the model 21 | # Define the path to data 22 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 23 | path_to_data = data_path + "/data/input_data/jan_models/" 24 | # Create a GeoModel instance 25 | data = gp.create_geomodel( 26 | project_name='recumbent', 27 | extent=[0, 1000, 0, 1000, 0, 1000], 28 | resolution=[50, 50, 50], 29 | refinement=6, 30 | importer_helper=gp.data.ImporterHelper( 31 | path_to_orientations=path_to_data + "model3_orientations.csv", 32 | path_to_surface_points=path_to_data + "model3_surface_points.csv" 33 | ) 34 | ) 35 | # Map geological series to surfaces 36 | gp.map_stack_to_surfaces( 37 | gempy_model=data, 38 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 39 | ) 40 | # Compute the geological model 41 | gp.compute_model(data) 42 | geo_data = data 43 | 44 | # %% 45 | # Plot the initial geological model in the y direction 46 | gpv.plot_2d(geo_data, direction=['y'], show_results=False) 47 | 48 | # Plot the result of the model in the y direction with data 49 | gpv.plot_2d(geo_data, direction=['y'], show_data=True) 50 | 51 | # %% 52 | gpv.plot_3d(geo_data, show_surfaces=True) 53 | -------------------------------------------------------------------------------- /examples/examples/geometries/d04_pinchout.py: -------------------------------------------------------------------------------- 1 | """ 2 | Model 4 - Pinchout 3 | ================== 4 | 5 | Modeling of a pinchout: combining scalar fields 6 | 7 | This script demonstrates how to create a geological model with a layer of varying thickness (pinchout) using GemPy, 8 | a Python-based, open-source library for implicit geological modeling. 9 | """ 10 | 11 | # Import necessary libraries 12 | import gempy as gp 13 | import gempy_viewer as gpv 14 | 15 | 16 | # sphinx_gallery_thumbnail_number = 3 17 | 18 | 19 | # %% 20 | # Generate the model 21 | # Define the path to data 22 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 23 | path_to_data = data_path + "/data/input_data/jan_models/" 24 | # Create a GeoModel instance 25 | data = gp.create_geomodel( 26 | project_name='pinchout', 27 | extent=[0, 1000, 0, 1000, 0, 1000], 28 | resolution=[50, 50, 50], 29 | refinement=6, 30 | importer_helper=gp.data.ImporterHelper( 31 | path_to_orientations=path_to_data + "model4_orientations.csv", 32 | path_to_surface_points=path_to_data + "model4_surface_points.csv" 33 | ) 34 | ) 35 | # Map geological series to surfaces 36 | gp.map_stack_to_surfaces( 37 | gempy_model=data, 38 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 39 | ) 40 | # Compute the geological model 41 | gp.compute_model(data) 42 | geo_data = data 43 | 44 | # %% 45 | # Plot the initial geological model in the y direction 46 | gpv.plot_2d(geo_data, direction=['y'], show_results=False) 47 | 48 | # Plot the result of the model in the x and y direction with data 49 | gpv.plot_2d(geo_data, direction=['x'], show_data=True) 50 | gpv.plot_2d(geo_data, direction=['y'], show_data=True) 51 | 52 | # %% 53 | gpv.plot_3d(geo_data, show_surfaces=True) 54 | -------------------------------------------------------------------------------- /examples/examples/geometries/e05_fault.py: -------------------------------------------------------------------------------- 1 | """ 2 | Model 5 - Fault 3 | =============== 4 | 5 | Modeling a fault 6 | 7 | This script demonstrates how to create a simple fault model with constant offset using GemPy, 8 | a Python-based, open-source library for implicit geological modeling. 9 | """ 10 | 11 | # Import necessary libraries 12 | import gempy as gp 13 | import gempy_viewer as gpv 14 | import numpy as np 15 | from gempy_engine.core.data.stack_relation_type import StackRelationType 16 | 17 | # sphinx_gallery_thumbnail_number = 2 18 | 19 | 20 | # %% 21 | # Generate the model 22 | # Define the path to data 23 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 24 | path_to_data = data_path + "/data/input_data/jan_models/" 25 | # Create a GeoModel instance 26 | data = gp.create_geomodel( 27 | project_name='fault', 28 | extent=[0, 1000, 0, 1000, 0, 1000], 29 | refinement=6, 30 | importer_helper=gp.data.ImporterHelper( 31 | path_to_orientations=path_to_data + "model5_orientations.csv", 32 | path_to_surface_points=path_to_data + "model5_surface_points.csv" 33 | ) 34 | ) 35 | # Map geological series to surfaces 36 | gp.map_stack_to_surfaces( 37 | gempy_model=data, 38 | mapping_object={ 39 | "Fault_Series": 'fault', 40 | "Strat_Series": ('rock2', 'rock1') 41 | } 42 | ) 43 | # Define fault groups 44 | data.structural_frame.structural_groups[0].structural_relation = StackRelationType.FAULT 45 | data.structural_frame.fault_relations = np.array([[0, 1], [0, 0]]) 46 | # Compute the geological model 47 | gp.compute_model(data) 48 | geo_data = data 49 | 50 | # %% 51 | # Plot the initial geological model in the y direction 52 | gpv.plot_2d(geo_data, direction=['y'], show_results=False) 53 | 54 | # %% 55 | 56 | # Plot the result of the model in the x and y direction with data 57 | gpv.plot_2d(geo_data, direction='y', show_data=True) 58 | gpv.plot_2d(geo_data, direction='x', show_data=True) 59 | 60 | gpv.plot_3d(geo_data, show_data=True, show_boundaries=True, show_lith=True) 61 | -------------------------------------------------------------------------------- /examples/examples/geometries/f06_unconformity.py: -------------------------------------------------------------------------------- 1 | """ 2 | Model 6 - Unconformity 3 | ====================== 4 | 5 | Modeling unconformities through the combination of scalar fields 6 | 7 | This script creates an unconformity cutting an anticline structure using GemPy, 8 | an open-source, Python-based library for building implicit geological models. 9 | """ 10 | 11 | # Importing necessary libraries 12 | import gempy as gp 13 | import gempy_viewer as gpv 14 | from gempy_engine.core.data.stack_relation_type import StackRelationType 15 | 16 | # sphinx_gallery_thumbnail_number = 2 17 | 18 | 19 | # %% 20 | # Generate the model 21 | # Define the path to data 22 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 23 | path_to_data = data_path + "/data/input_data/jan_models/" 24 | # Create a GeoModel instance 25 | data = gp.create_geomodel( 26 | project_name='unconformity', 27 | extent=[0, 1000, 0, 1000, 0, 1000], 28 | refinement=6, 29 | importer_helper=gp.data.ImporterHelper( 30 | path_to_orientations=path_to_data + "model6_orientations.csv", 31 | path_to_surface_points=path_to_data + "model6_surface_points.csv" 32 | ) 33 | ) 34 | # Map geological series to surfaces 35 | gp.map_stack_to_surfaces( 36 | gempy_model=data, 37 | mapping_object={ 38 | "Strat_Series1": 'rock3', 39 | "Strat_Series2": ('rock2', 'rock1') 40 | } 41 | ) 42 | # Define the structural relation 43 | data.structural_frame.structural_groups[0].structural_relation = StackRelationType.ERODE 44 | 45 | # Compute the geological model 46 | gp.compute_model(data) 47 | geo_data = data 48 | 49 | # %% 50 | # Plot the initial geological model in the y direction 51 | gpv.plot_2d(geo_data, direction=['y'], show_results=False) 52 | 53 | # %% 54 | # Plot the result of the model in the y and x directions with data 55 | gpv.plot_2d(geo_data, direction='y', show_data=True) 56 | gpv.plot_2d(geo_data, direction='x', show_data=True) 57 | 58 | -------------------------------------------------------------------------------- /examples/examples/real/Greenstone.py: -------------------------------------------------------------------------------- 1 | """ 2 | Greenstone. 3 | =========== 4 | """ 5 | import os 6 | 7 | # Importing gempy 8 | import gempy as gp 9 | import gempy_viewer as gpv 10 | 11 | print(gp.__version__) 12 | 13 | # %% 14 | 15 | data_path = os.path.abspath('../../data/input_data/tut_SandStone') 16 | 17 | # Importing the data from csv 18 | 19 | geo_model: gp.data.GeoModel = gp.create_geomodel( 20 | project_name='Greenstone', 21 | extent=[696000, 747000, 6863000, 6930000, -20000, 200], # * Here we define the extent of the model 22 | refinement=6, 23 | # * Here we define the number of octree levels. If octree levels are defined, the resolution is ignored. 24 | importer_helper=gp.data.ImporterHelper( 25 | path_to_orientations=data_path + "/SandStone_Foliations.csv", 26 | path_to_surface_points=data_path + "/SandStone_Points.csv", 27 | hash_surface_points=None, 28 | hash_orientations=None 29 | ) 30 | ) 31 | 32 | # %% 33 | gpv.plot_2d(geo_model, direction=['z']) 34 | 35 | # %% 36 | gp.map_stack_to_surfaces( 37 | gempy_model=geo_model, 38 | mapping_object={ 39 | "EarlyGranite_Series": 'EarlyGranite', 40 | "BIF_Series": ('SimpleMafic2', 'SimpleBIF'), 41 | "SimpleMafic_Series": 'SimpleMafic1', 'Basement': 'basement' 42 | } 43 | ) 44 | 45 | # %% 46 | gp.compute_model(geo_model) 47 | 48 | # %% 49 | gpv.plot_2d(geo_model, cell_number=[-1], direction=['z'], show_data=False) 50 | 51 | # %% 52 | gpv.plot_2d(geo_model, cell_number=['mid'], direction='x') 53 | 54 | # %% 55 | # sphinx_gallery_thumbnail_number = -1 56 | gpv.plot_3d(geo_model) 57 | -------------------------------------------------------------------------------- /examples/examples/real/README.rst: -------------------------------------------------------------------------------- 1 | Real case studies 2 | ----------------- 3 | 4 | These models are built with real data 5 | -------------------------------------------------------------------------------- /examples/examples/real/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/examples/real/__init__.py -------------------------------------------------------------------------------- /examples/examples/real/moureze_sf_gempy: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/examples/real/moureze_sf_gempy -------------------------------------------------------------------------------- /examples/integrations/README.rst: -------------------------------------------------------------------------------- 1 | Integrations 2 | ============ 3 | 4 | Here there are examples showing GemPy working together with other libraries 5 | of geoscientific stack. This needs to grow! -------------------------------------------------------------------------------- /examples/integrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/integrations/__init__.py -------------------------------------------------------------------------------- /examples/integrations/permeability_pflotran.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/integrations/permeability_pflotran.png -------------------------------------------------------------------------------- /examples/tutorials/README.rst: -------------------------------------------------------------------------------- 1 | GemPy Tutorials 2 | =============== 3 | 4 | Here you will find a selection of examples showing what can you do and how 5 | you can do it in GemPy 6 | 7 | -------------------------------------------------------------------------------- /examples/tutorials/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/__init__.py -------------------------------------------------------------------------------- /examples/tutorials/a_getting_started/README.rst: -------------------------------------------------------------------------------- 1 | Getting Started 2 | --------------- 3 | 4 | Here you can see how to run a simple GemPy example. -------------------------------------------------------------------------------- /examples/tutorials/a_getting_started/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/a_getting_started/__init__.py -------------------------------------------------------------------------------- /examples/tutorials/a_getting_started/boreholes_concept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/a_getting_started/boreholes_concept.png -------------------------------------------------------------------------------- /examples/tutorials/ch1_fundamentals/README.rst: -------------------------------------------------------------------------------- 1 | Chapter 1: GemPy fundamentals 2 | ----------------------------- 3 | 4 | These examples show the basic functionality to create geometries. 5 | -------------------------------------------------------------------------------- /examples/tutorials/ch1_fundamentals/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/ch1_fundamentals/__init__.py -------------------------------------------------------------------------------- /examples/tutorials/ch1_fundamentals/ch1_7_3d_visualization.py: -------------------------------------------------------------------------------- 1 | """ 2 | 1.7: 3-D Visualization 3 | ====================== 4 | 5 | """ 6 | 7 | # %% 8 | # Importing GemPy 9 | import gempy as gp 10 | import gempy_viewer as gpv 11 | from gempy import generate_example_model 12 | from gempy.core.data.enumerators import ExampleModel 13 | import dotenv 14 | 15 | dotenv.load_dotenv() 16 | 17 | # sphinx_gallery_thumbnail_number = -1 18 | 19 | # %% 20 | # Loading an example geomodel 21 | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 | # 23 | 24 | # %% 25 | 26 | 27 | geo_model = generate_example_model(ExampleModel.GRABEN) 28 | 29 | gp.compute_model(geo_model) 30 | 31 | # %% 32 | # Basic plotting API 33 | # ------------------ 34 | # 35 | 36 | 37 | # %% 38 | # Data plot 39 | # ~~~~~~~~~ 40 | # 41 | 42 | # %% 43 | gpv.plot_3d( 44 | model=geo_model, 45 | show_surfaces=False, 46 | show_data=True, 47 | show_lith=False, 48 | image=False 49 | ) 50 | 51 | # %% 52 | # Geomodel plot 53 | # ~~~~~~~~~~~~~ 54 | # 55 | 56 | # %% 57 | gpv.plot_3d(geo_model, image=False) 58 | 59 | # %% 60 | # LiquidEarth Integration 61 | # ~~~~~~~~~~~~~~~~~~~~~~~ 62 | # Beyond the classical plotting capabilities introduced in GemPy v3, users can now also upload models to LiquidEarth. 63 | # `LiquidEarth `_ is a collaborative platform designed for 3D visualization, 64 | # developed by many of the main `gempy` maintainers, with a strong focus on collaboration and sharing. 65 | # This makes it an excellent tool for sharing your models with others and viewing them across different platforms. 66 | # To upload a model to LiquidEarth, you must have an account and a user token. Once your model is uploaded, 67 | # you can easily share the link with anyone. 68 | 69 | # %% 70 | link = gpv.plot_to_liquid_earth( 71 | geo_model=geo_model, 72 | space_name="[PUBLIC] GemPy Tutorial 1.7: 3-D Visualization", 73 | file_name="gempy_model", 74 | user_token=None, # If None, it will try to grab it from the environment 75 | grab_link=True, 76 | make_new_space=False 77 | ) 78 | 79 | print(f"Generated Link: {link}") 80 | 81 | # %% 82 | # Now we can use `this link `_ to visualize the model in Liquid Earth. 83 | 84 | # %% 85 | # .. image:: /_static/gp_model_in_le.png 86 | -------------------------------------------------------------------------------- /examples/tutorials/ch2-Geophysics/README.rst: -------------------------------------------------------------------------------- 1 | Chapter 2: Forward Geophysics 2 | ----------------------------- 3 | 4 | These examples show how to use some of the in built functionality for forward geophysics. At this date GemPy is not meant to be a package for classical geophysical inversion rather to allow probabilistic inversion. This means that we need algorithms that can be fast, differentiable but still capable to estimate the right answer! -------------------------------------------------------------------------------- /examples/tutorials/ch3-Interpolations/README.rst: -------------------------------------------------------------------------------- 1 | Chapter 3: Domain Kriging 2 | ------------------------- 3 | 4 | GemPy uses Kriging to interpolate the scalar field to construct the 5 | structural model. However to populate petrophysical data within each domain 6 | we also provide functionality to interpolate data in 3D. -------------------------------------------------------------------------------- /examples/tutorials/ch4-Topology/README.rst: -------------------------------------------------------------------------------- 1 | Chapter 4: Topological analysis 2 | ------------------------------- 3 | 4 | One of the reasons to perform structural modeling is to analyse the topology 5 | of the system, i.e. the connectivity between layers. GemPy provide built-in 6 | functionality to calculate and analyse this aspect of each geological modeling -------------------------------------------------------------------------------- /examples/tutorials/ch4-Topology/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/ch4-Topology/__init__.py -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/README.rst: -------------------------------------------------------------------------------- 1 | Video tutorials 2 | --------------- 3 | 4 | Compilation of tutorials for videos on the `gempy` YouTube channel https://www.youtube.com/@GemPy3D. -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/z_other_tutorials/__init__.py -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/json_io/minimal_model.json: -------------------------------------------------------------------------------- 1 | { 2 | "surface_points": [ 3 | { 4 | "x": 50.0, 5 | "y": 0.0, 6 | "z": -20.0, 7 | "id": 0 8 | } 9 | ], 10 | "orientations": [ 11 | { 12 | "x": 50.0, 13 | "y": 0.0, 14 | "z": -68.0, 15 | "G_x": 1.0, 16 | "G_y": 0.0, 17 | "G_z": 1.0, 18 | "id": 0 19 | } 20 | ], 21 | "grid_settings": { 22 | "regular_grid_resolution": [ 23 | 100, 24 | 2, 25 | 100 26 | ], 27 | "regular_grid_extent": [ 28 | 0, 29 | 150, 30 | -10, 31 | 10, 32 | -100, 33 | 0 34 | ] 35 | }, 36 | "interpolation_options": { 37 | "kernel_options": { 38 | "range": 10.0, 39 | "c_o": 5.0 40 | }, 41 | "mesh_extraction": true, 42 | "number_octree_levels": 2 43 | }, 44 | "series": [ 45 | { 46 | "name": "default_formations", 47 | "surfaces": [ 48 | "surface1" 49 | ], 50 | "structural_relation": "ERODE" 51 | } 52 | ] 53 | } -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/json_io/minimal_model_loaded.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "GemPy Model", 4 | "creation_date": "2025-03-28", 5 | "last_modification_date": "2025-03-28", 6 | "owner": "GemPy Modeller" 7 | }, 8 | "surface_points": [ 9 | { 10 | "x": 50.0, 11 | "y": 0.0, 12 | "z": -20.0, 13 | "id": 34966260, 14 | "nugget": 0.0 15 | } 16 | ], 17 | "orientations": [ 18 | { 19 | "x": 50.0, 20 | "y": 0.0, 21 | "z": -20.0, 22 | "G_x": 1.0, 23 | "G_y": 0.0, 24 | "G_z": 1.0, 25 | "id": 34966260, 26 | "nugget": 0.01, 27 | "polarity": 1 28 | } 29 | ], 30 | "series": [ 31 | { 32 | "name": "Strat_Series", 33 | "surfaces": [ 34 | "surface_0" 35 | ], 36 | "structural_relation": "ERODE", 37 | "colors": [ 38 | "#015482" 39 | ] 40 | } 41 | ], 42 | "grid_settings": { 43 | "regular_grid_resolution": [ 44 | 100, 45 | 2, 46 | 100 47 | ], 48 | "regular_grid_extent": [ 49 | 0.0, 50 | 150.0, 51 | -10.0, 52 | 10.0, 53 | -100.0, 54 | 0.0 55 | ], 56 | "octree_levels": null 57 | }, 58 | "interpolation_options": { 59 | "kernel_options": { 60 | "range": 1.7, 61 | "c_o": 10.0 62 | }, 63 | "mesh_extraction": true, 64 | "number_octree_levels": 4 65 | }, 66 | "fault_relations": [ 67 | [ 68 | 0 69 | ] 70 | ], 71 | "id_name_mapping": { 72 | "name_to_id": { 73 | "surface_0": 34966260, 74 | "basement": 91927817 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/json_io/model_x_direction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/z_other_tutorials/json_io/model_x_direction.png -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/json_io/model_y_direction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/examples/tutorials/z_other_tutorials/json_io/model_y_direction.png -------------------------------------------------------------------------------- /examples/tutorials/z_other_tutorials/json_io/sample_surface_points.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "name": "sample_model", 4 | "creation_date": "2024-03-19", 5 | "last_modification_date": "2024-03-19", 6 | "owner": "tutorial" 7 | }, 8 | "surface_points": [ 9 | { 10 | "x": 0.0, 11 | "y": 0.0, 12 | "z": 0.0, 13 | "id": 0, 14 | "nugget": 2e-05 15 | }, 16 | { 17 | "x": 1.0, 18 | "y": 1.0, 19 | "z": 1.0, 20 | "id": 0, 21 | "nugget": 2e-05 22 | }, 23 | { 24 | "x": 2.0, 25 | "y": 2.0, 26 | "z": 2.0, 27 | "id": 1, 28 | "nugget": 2e-05 29 | }, 30 | { 31 | "x": 3.0, 32 | "y": 3.0, 33 | "z": 3.0, 34 | "id": 1, 35 | "nugget": 2e-05 36 | }, 37 | { 38 | "x": 4.0, 39 | "y": 4.0, 40 | "z": 4.0, 41 | "id": 2, 42 | "nugget": 2e-05 43 | } 44 | ], 45 | "orientations": [], 46 | "faults": [], 47 | "series": [], 48 | "grid_settings": { 49 | "regular_grid_resolution": [ 50 | 10, 51 | 10, 52 | 10 53 | ], 54 | "regular_grid_extent": [ 55 | 0, 56 | 4, 57 | 0, 58 | 4, 59 | 0, 60 | 4 61 | ], 62 | "octree_levels": null 63 | }, 64 | "interpolation_options": {} 65 | } -------------------------------------------------------------------------------- /gempy/API/_version.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/API/_version.py -------------------------------------------------------------------------------- /gempy/API/gp2_gp3_compatibility/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/API/gp2_gp3_compatibility/__init__.py -------------------------------------------------------------------------------- /gempy/API/gp2_gp3_compatibility/gp3_to_gp2_input.py: -------------------------------------------------------------------------------- 1 | from gempy.core.data import GeoModel 2 | from gempy.core.data.orientations import OrientationsTable 3 | from gempy.core.data.surface_points import SurfacePointsTable 4 | from gempy.optional_dependencies import require_gempy_legacy 5 | 6 | 7 | def gempy3_to_gempy2(geo_model: GeoModel) -> "gempy_legacy.Project": 8 | gl = require_gempy_legacy() 9 | legacy_model: "gempy_legacy.Project" = gl.create_model(project_name=geo_model.meta.name) 10 | 11 | surface_points: SurfacePointsTable = geo_model.structural_frame.surface_points 12 | surface_points_df = surface_points.df # This is a property 13 | surface_points_df['surfaces'] = surface_points_df['id'].map(geo_model.structural_frame.element_id_name_map) 14 | 15 | orientations: OrientationsTable = geo_model.structural_frame.orientations 16 | orientations_df = orientations.df 17 | orientations_df['surfaces'] = orientations_df['id'].map(geo_model.structural_frame.element_id_name_map) 18 | 19 | # * Set data 20 | gl.init_data( 21 | geo_model=legacy_model, 22 | extent=geo_model.grid.regular_grid.extent, 23 | resolution=geo_model.grid.regular_grid.resolution, 24 | surface_points_df=surface_points_df, 25 | orientations_df=orientations_df 26 | ) 27 | 28 | 29 | # # * Map StructuralFrame 30 | mapper: dict[str, list[str]] = geo_model.structural_frame.groups_to_mapper 31 | gl.map_stack_to_surfaces( 32 | geo_model=legacy_model, 33 | mapping_object=mapper 34 | ) 35 | 36 | legacy_model.add_surfaces("basement") 37 | 38 | 39 | return legacy_model 40 | -------------------------------------------------------------------------------- /gempy/API/implicit_functions.py: -------------------------------------------------------------------------------- 1 | from ..modules.custom_implicit_functions.ellipsoid_implicit_function import ellipsoid_3d_factory 2 | 3 | __all__ = ['ellipsoid_3d_factory'] -------------------------------------------------------------------------------- /gempy/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | Module initialisation for GemPy 3 | Created on 06.19.2023 4 | 5 | @author: Miguel de la Varga 6 | """ 7 | import sys 8 | 9 | # =================== CORE =================== 10 | from .core import data 11 | from .core.color_generator import ColorsGenerator 12 | 13 | # =================== API =================== 14 | 15 | from .API import * 16 | from .API import implicit_functions 17 | 18 | # * Assert at least pyton 3.10 19 | assert sys.version_info[0] >= 3 and sys.version_info[1] >= 10, "GemPy requires Python 3.10 or higher" 20 | 21 | from ._version import __version__ 22 | 23 | if __name__ == '__main__': 24 | pass 25 | -------------------------------------------------------------------------------- /gempy/_version.py: -------------------------------------------------------------------------------- 1 | # file generated by setuptools_scm 2 | # don't change, don't track in version control 3 | TYPE_CHECKING = False 4 | if TYPE_CHECKING: 5 | from typing import Tuple, Union 6 | VERSION_TUPLE = Tuple[Union[int, str], ...] 7 | else: 8 | VERSION_TUPLE = object 9 | 10 | version: str 11 | __version__: str 12 | __version_tuple__: VERSION_TUPLE 13 | version_tuple: VERSION_TUPLE 14 | 15 | __version__ = version = '2024.2.0.3.dev0+gf344a731.d20240626' 16 | __version_tuple__ = version_tuple = (2024, 2, 0, 3, 'dev0', 'gf344a731.d20240626') 17 | -------------------------------------------------------------------------------- /gempy/config.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from dotenv import load_dotenv 4 | 5 | # Define the paths for the .env files 6 | 7 | script_dir = os.path.dirname(os.path.abspath(__file__)) 8 | 9 | dotenv_path = os.path.join(script_dir, '../.env') 10 | dotenv_gempy_engine_path = os.path.expanduser('~/.env') 11 | 12 | # Check if the .env files exist and prioritize the local .env file 13 | if os.path.exists(dotenv_path): 14 | load_dotenv(dotenv_path) 15 | elif os.path.exists(dotenv_gempy_engine_path): 16 | load_dotenv(dotenv_gempy_engine_path) 17 | else: 18 | load_dotenv() 19 | -------------------------------------------------------------------------------- /gempy/core/__init__.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | pass 3 | -------------------------------------------------------------------------------- /gempy/core/data/__init__.py: -------------------------------------------------------------------------------- 1 | from .geo_model import GeoModel 2 | from .structural_frame import StructuralFrame 3 | from .structural_group import StructuralGroup 4 | from .structural_element import StructuralElement 5 | from .orientations import OrientationsTable 6 | from .surface_points import SurfacePointsTable 7 | from .grid import Grid, Topography 8 | from .importer_helper import ImporterHelper 9 | from .gempy_engine_config import GemPyEngineConfig 10 | from .structural_group import FaultsRelationSpecialCase 11 | from ..color_generator import ColorsGenerator 12 | 13 | from gempy_engine.core.data.interpolation_input import InterpolationInput 14 | from gempy_engine.core.data.stack_relation_type import StackRelationType 15 | from gempy_engine.core.data.options import InterpolationOptions 16 | from gempy_engine.core.data.solutions import Solutions 17 | from gempy_engine.core.data.raw_arrays_solution import RawArraysSolution 18 | from gempy_engine.core.data.transforms import GlobalAnisotropy, Transform 19 | from gempy_engine.core.data.kernel_classes.faults import FaultsData, FiniteFaultData 20 | from gempy_engine.config import AvailableBackends 21 | from gempy_engine.core.data.geophysics_input import GeophysicsInput 22 | 23 | 24 | __all__ = [ 25 | # From gempy 26 | 'GeoModel', 'StructuralFrame', 'StructuralGroup', 'StructuralElement', 'OrientationsTable', 'SurfacePointsTable', 27 | 'Grid', 'Topography', 28 | 'ImporterHelper', 'GemPyEngineConfig', 'FaultsRelationSpecialCase', 'ColorsGenerator', 29 | # From gempy engine 30 | 'InterpolationInput','StackRelationType', 'InterpolationOptions', 'Solutions', 'RawArraysSolution', 'GlobalAnisotropy', 'Transform', 31 | 'FaultsData', 'FiniteFaultData', 'AvailableBackends', 'GeophysicsInput' 32 | ] -------------------------------------------------------------------------------- /gempy/core/data/_data_points_helpers.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | 3 | from typing import Sequence 4 | 5 | import numpy as np 6 | 7 | 8 | def structural_element_hasher(i: int, name: str, hash_length: int = 8) -> int: 9 | # Get the last 'hash_length' digits from the hash 10 | name_hash = int(hashlib.md5(name.encode('utf-8')).hexdigest(), 16) % (10 ** hash_length) 11 | return i * (10 ** hash_length) + name_hash 12 | 13 | 14 | def generate_ids_from_names(name_id_map, names, x): 15 | name_id_map = name_id_map or {name: structural_element_hasher(i, name) for i, name in enumerate(np.unique(names))} 16 | if isinstance(names, str): 17 | ids = np.array([name_id_map[names]] * len(x)) 18 | elif isinstance(names, Sequence) or isinstance(names, np.ndarray): 19 | ids = np.array([name_id_map[name] for name in names]) 20 | else: 21 | raise TypeError(f"Names should be a string or a NumPy array, not {type(names)}") 22 | return ids, name_id_map 23 | -------------------------------------------------------------------------------- /gempy/core/data/core_utils.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | from gempy.optional_dependencies import require_scipy 4 | 5 | 6 | def calculate_line_coordinates_2points(p1, p2, res): 7 | if isinstance(p1, list) or isinstance(p1, tuple): 8 | p1 = np.array(p1) 9 | if isinstance(p2, list) or isinstance(p2, tuple): 10 | p2 = np.array(p2) 11 | v = p2 - p1 # vector pointing from p1 to p2 12 | u = v / np.linalg.norm(v) # normalize it 13 | distance = distance_2_points(p1, p2) 14 | steps = np.linspace(0, distance, res) 15 | values = p1.reshape(2, 1) + u.reshape(2, 1) * steps.ravel() 16 | return values.T 17 | 18 | 19 | def distance_2_points(p1, p2): 20 | return np.sqrt(np.diff((p1[0], p2[0])) ** 2 + np.diff((p1[1], p2[1])) ** 2) 21 | 22 | 23 | def interpolate_zvals_at_xy(xy, topography, method='DEP'): 24 | """ 25 | Interpolates DEM values on a defined section. 26 | 27 | Args: 28 | xy (np.ndarray): Array of shape (n, 2) containing x (EW) and y (NS) coordinates of the profile. 29 | topography (Topography): An instance of Topography containing the DEM data. 30 | 31 | Returns: 32 | np.ndarray: z values, i.e., topography along the profile. 33 | """ 34 | scipy = require_scipy() 35 | xj = topography.values_2d[:, 0, 0] 36 | yj = topography.values_2d[0, :, 1] 37 | zj = topography.values_2d[:, :, 2] 38 | 39 | spline = scipy.interpolate.RectBivariateSpline(xj, yj, zj) 40 | zi = spline.ev(xy[:, 0], xy[:, 1]) 41 | 42 | return zi 43 | -------------------------------------------------------------------------------- /gempy/core/data/encoders/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/core/data/encoders/__init__.py -------------------------------------------------------------------------------- /gempy/core/data/encoders/converters.py: -------------------------------------------------------------------------------- 1 | from typing import Annotated 2 | 3 | from contextlib import contextmanager 4 | 5 | from contextvars import ContextVar 6 | 7 | import numpy as np 8 | from pydantic import BeforeValidator 9 | 10 | 11 | def convert_to_arrays(values, keys): 12 | for key in keys: 13 | if key in values and not isinstance(values[key], np.ndarray): 14 | values[key] = np.array(values[key]) 15 | return values 16 | 17 | 18 | def validate_numpy_array(v): 19 | return np.array(v) if v is not None else None 20 | 21 | 22 | short_array_type = Annotated[np.ndarray, (BeforeValidator(lambda v: np.array(v) if v is not None else None))] 23 | 24 | 25 | def instantiate_if_necessary(data: dict, key: str, type: type) -> None: 26 | """ 27 | Creates instances of the specified type for a dictionary key if the key exists and its 28 | current type does not match the specified type. This function modifies the dictionary 29 | in place by converting the value associated with the key into an instance of the given 30 | type. 31 | 32 | This is typically used when a dictionary contains data that needs to be represented as 33 | objects of a specific class type. 34 | 35 | Args: 36 | data (dict): The dictionary containing the key-value pair to inspect and possibly 37 | convert. 38 | key (str): The key in the dictionary whose value should be inspected and converted 39 | if necessary. 40 | type (type): The type to which the value of `key` should be converted, if it is not 41 | already an instance of the type. 42 | 43 | Returns: 44 | None 45 | """ 46 | if key in data and not isinstance(data[key], type): 47 | data[key] = type(**data[key]) 48 | 49 | numpy_array_short_validator = BeforeValidator(validate_numpy_array) 50 | 51 | # First, create a context variable 52 | loading_model_context = ContextVar('loading_model_context', default={}) 53 | 54 | @contextmanager 55 | def loading_model_from_binary(input_binary: bytes, grid_binary: bytes): 56 | token = loading_model_context.set({ 57 | 'input_binary': input_binary, 58 | 'grid_binary': grid_binary 59 | }) 60 | try: 61 | yield 62 | finally: 63 | loading_model_context.reset(token) 64 | 65 | -------------------------------------------------------------------------------- /gempy/core/data/encoders/json_geomodel_encoder.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | 3 | 4 | def encode_numpy_array(array: np.ndarray): 5 | # Check length 6 | if array.size > 10: 7 | return [] 8 | return array.tolist() 9 | -------------------------------------------------------------------------------- /gempy/core/data/enumerators.py: -------------------------------------------------------------------------------- 1 | from enum import Enum, auto 2 | 3 | 4 | class ExampleModel(Enum): 5 | TWO_AND_A_HALF_D = auto() 6 | HORIZONTAL_STRAT = auto() 7 | ANTICLINE = auto() 8 | ONE_FAULT = auto() 9 | COMBINATION = auto() 10 | ONE_FAULT_GRAVITY = auto() 11 | GRABEN = auto() 12 | -------------------------------------------------------------------------------- /gempy/core/data/gempy_engine_config.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import Optional 3 | 4 | from gempy_engine import config 5 | from gempy_engine.config import AvailableBackends 6 | 7 | 8 | @dataclass 9 | class GemPyEngineConfig: 10 | backend: AvailableBackends = config.DEFAULT_BACKEND # ? This can be grabbed from gempy.config file? 11 | use_gpu: bool = False 12 | dtype: Optional[str] = None #: The data type used in the engine. If None, the default data type of the backend is used. 13 | -------------------------------------------------------------------------------- /gempy/core/data/grid_modules/__init__.py: -------------------------------------------------------------------------------- 1 | from .regular_grid import RegularGrid 2 | from .custom_grid import CustomGrid 3 | from .sections_grid import Sections 4 | from .topography import Topography 5 | -------------------------------------------------------------------------------- /gempy/core/data/grid_modules/custom_grid.py: -------------------------------------------------------------------------------- 1 | import dataclasses 2 | import numpy as np 3 | from pydantic import Field 4 | 5 | 6 | @dataclasses.dataclass 7 | class CustomGrid: 8 | """Object that contains arbitrary XYZ coordinates. 9 | 10 | Args: 11 | xyx_coords (numpy.ndarray like): XYZ (in columns) of the desired coordinates 12 | 13 | Attributes: 14 | values (np.ndarray): XYZ coordinates 15 | """ 16 | 17 | values: np.ndarray = Field( 18 | exclude=True, 19 | default_factory=lambda: np.zeros((0, 3)), 20 | repr=False 21 | ) 22 | 23 | 24 | def __post_init__(self): 25 | custom_grid = np.atleast_2d(self.values) 26 | assert type(custom_grid) is np.ndarray and custom_grid.shape[1] == 3, \ 27 | 'The shape of new grid must be (n,3) where n is the number of' \ 28 | ' points of the grid' 29 | 30 | 31 | @property 32 | def length(self): 33 | return self.values.shape[0] 34 | -------------------------------------------------------------------------------- /gempy/core/data/importer_helper.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from typing import Optional 3 | 4 | 5 | @dataclass 6 | class ImporterHelper: 7 | path_to_surface_points: Optional[str] 8 | path_to_orientations: Optional[str] 9 | 10 | hash_surface_points: Optional[str] = None 11 | hash_orientations: Optional[str] = None 12 | 13 | coord_x_name: Optional[str] = "X" 14 | coord_y_name: Optional[str] = "Y" 15 | coord_z_name: Optional[str] = "Z" 16 | surface_name: Optional[str] = "formation" 17 | 18 | gx_name: Optional[str] = "G_x" 19 | gy_name: Optional[str] = "G_y" 20 | gz_name: Optional[str] = "G_z" 21 | 22 | pandas_reader_kwargs: Optional[dict] = None 23 | 24 | 25 | # ? Add here pandas reader options -------------------------------------------------------------------------------- /gempy/core/data/options.py: -------------------------------------------------------------------------------- 1 | import enum 2 | class InterpolationOptionsType(enum.Enum): 3 | 4 | DENSE_GRID = enum.auto() 5 | OCTREE = enum.auto() 6 | -------------------------------------------------------------------------------- /gempy/modules/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | GemPy modules package. 3 | """ 4 | 5 | from . import json_io 6 | from . import custom_implicit_functions 7 | from . import data_manipulation 8 | from . import grids 9 | from . import advance_pile 10 | 11 | __all__ = [ 12 | 'json_io', 13 | 'custom_implicit_functions', 14 | 'data_manipulation', 15 | 'grids', 16 | 'advance_pile' 17 | ] 18 | -------------------------------------------------------------------------------- /gempy/modules/advance_pile/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/advance_pile/__init__.py -------------------------------------------------------------------------------- /gempy/modules/advance_pile/strat_definition.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/advance_pile/strat_definition.py -------------------------------------------------------------------------------- /gempy/modules/custom_implicit_functions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/custom_implicit_functions/__init__.py -------------------------------------------------------------------------------- /gempy/modules/data_manipulation/__init__.py: -------------------------------------------------------------------------------- 1 | from ._engine_factory import interpolation_input_from_structural_frame -------------------------------------------------------------------------------- /gempy/modules/data_manipulation/manipulate_structural_frame.py: -------------------------------------------------------------------------------- 1 | from gempy_engine.core.data.stack_relation_type import StackRelationType 2 | from gempy.core.data import StructuralGroup, GeoModel, FaultsRelationSpecialCase, StructuralElement, StructuralFrame 3 | 4 | 5 | def add_structural_group( 6 | model: GeoModel, group_index: int, structural_group_name: str, elements: list[StructuralElement], 7 | structural_relation: StackRelationType, fault_relations: FaultsRelationSpecialCase = FaultsRelationSpecialCase.OFFSET_ALL) -> StructuralFrame: 8 | 9 | # Check elements are a Sequence 10 | if not isinstance(elements, list): 11 | raise TypeError("elements must be a list of StructuralElement objects.") 12 | 13 | new_group = StructuralGroup( 14 | name=structural_group_name, 15 | elements=elements, 16 | structural_relation=structural_relation, 17 | fault_relations=fault_relations 18 | ) 19 | 20 | # Insert the fault group into the structural frame: 21 | model.structural_frame.insert_group(group_index, new_group) 22 | return model.structural_frame 23 | 24 | 25 | def remove_structural_group_by_index(model: GeoModel, group_index: int) -> StructuralFrame: 26 | model.structural_frame.structural_groups.pop(group_index) 27 | return model.structural_frame 28 | 29 | 30 | def remove_structural_group_by_name(model: GeoModel, group_name: str) -> StructuralFrame: 31 | group = model.structural_frame.get_group_by_name(group_name) 32 | group_index = model.structural_frame.structural_groups.index(group) 33 | model.structural_frame.structural_groups.pop(group_index) 34 | return model.structural_frame 35 | 36 | 37 | def remove_element_by_name(model: GeoModel, element_name: str) -> StructuralFrame: 38 | element = model.structural_frame.get_element_by_name(element_name) 39 | element_group: StructuralGroup = model.structural_frame.get_group_by_element(element) 40 | element_group.remove_element(element) 41 | return model.structural_frame 42 | -------------------------------------------------------------------------------- /gempy/modules/data_manipulation/orientations_from_surface_points.py: -------------------------------------------------------------------------------- 1 | from typing import Optional 2 | 3 | import numpy as np 4 | from numpy.linalg import svd 5 | 6 | from gempy.core.data import SurfacePointsTable, OrientationsTable 7 | 8 | 9 | def create_orientations_from_surface_points_coords(xyz_coords: np.ndarray, 10 | subset: Optional[np.ndarray] = None, 11 | element_name: Optional[str] = "Generated") -> OrientationsTable: 12 | # Initialize the arrays 13 | center = np.empty((len(subset) if subset is not None else 1, 3)) 14 | normal = np.empty((len(subset) if subset is not None else 1, 3)) 15 | 16 | if subset is None: 17 | center[0], normal[0] = _plane_fit(xyz_coords) 18 | else: 19 | for idx, i in enumerate(subset): 20 | center[idx], normal[idx] = _plane_fit(xyz_coords[i]) 21 | 22 | orientations = OrientationsTable.from_arrays( 23 | x=center[:, 0], 24 | y=center[:, 1], 25 | z=center[:, 2], 26 | G_x=normal[:, 0], 27 | G_y=normal[:, 1], 28 | G_z=normal[:, 2], 29 | names=[element_name] 30 | ) 31 | return orientations 32 | 33 | 34 | def _plane_fit(point_list): 35 | """ 36 | Fit plane to points in PointSet 37 | Fit an d-dimensional plane to the points in a point set. 38 | adjusted from: http://stackoverflow.com/questions/12299540/plane-fitting-to-4-or-more-xyz-points 39 | 40 | Args: 41 | point_list (array_like): array of points XYZ 42 | 43 | Returns: 44 | Return a point, p, on the plane (the point-cloud centroid), 45 | and the normal, n. 46 | """ 47 | 48 | points = point_list.T 49 | 50 | points = np.reshape(points, (np.shape(points)[0], -1)) # Collapse trialing dimensions 51 | assert points.shape[0] <= points.shape[1], "There are only {} points in {} dimensions.".format(points.shape[1], 52 | points.shape[0]) 53 | ctr = points.mean(axis=1) 54 | x = points - ctr[:, np.newaxis] 55 | M = np.dot(x, x.T) # Could also use np.cov(x) here. 56 | 57 | # ctr = Point(x=ctr[0], y=ctr[1], z=ctr[2], type='utm', zone=self.points[0].zone) 58 | normal = svd(M)[0][:, -1] 59 | # return ctr, svd(M)[0][:, -1] 60 | if normal[2] < 0: 61 | normal = - normal 62 | 63 | return ctr, normal 64 | -------------------------------------------------------------------------------- /gempy/modules/grids/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/grids/__init__.py -------------------------------------------------------------------------------- /gempy/modules/grids/create_topography.py: -------------------------------------------------------------------------------- 1 | """ 2 | This file is part of gempy. 3 | 4 | Created on 16.04.2019 5 | 6 | @author: Elisa Heim 7 | """ 8 | from typing import Optional 9 | 10 | import numpy as np 11 | 12 | from ...core.data.grid_modules.topography import _LoadDEMArtificial 13 | 14 | 15 | def create_random_topography(extent: np.array, resolution: np.array, dz: Optional[np.array] = None, 16 | fractal_dimension: Optional[float] = 2.0) -> np.array: 17 | dem = _LoadDEMArtificial( 18 | extent=extent, 19 | resolution=resolution, 20 | d_z=dz, 21 | fd=fractal_dimension 22 | ) 23 | 24 | return dem.get_values() 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /gempy/modules/json_io/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | JSON I/O module for GemPy. 3 | This module provides functionality to load and save GemPy models to/from JSON files. 4 | """ 5 | 6 | from .json_operations import JsonIO 7 | 8 | __all__ = ['JsonIO'] -------------------------------------------------------------------------------- /gempy/modules/mesh_extranction/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/mesh_extranction/__init__.py -------------------------------------------------------------------------------- /gempy/modules/optimize_nuggets/__init__.py: -------------------------------------------------------------------------------- 1 | from ._optimizer import nugget_optimizer -------------------------------------------------------------------------------- /gempy/modules/optimize_nuggets/_optimizer.py: -------------------------------------------------------------------------------- 1 | from gempy_engine.core.backend_tensor import BackendTensor 2 | from gempy_engine.core.data.interpolation_input import InterpolationInput 3 | from ._ops import run_optimization 4 | from ..data_manipulation.manipulate_points import modify_surface_points 5 | from ...core.data import GeoModel, GemPyEngineConfig, StructuralGroup 6 | from ...modules.data_manipulation import interpolation_input_from_structural_frame 7 | 8 | 9 | def nugget_optimizer( 10 | target_cond_num: float, 11 | engine_cfg: GemPyEngineConfig, 12 | model: GeoModel, 13 | max_epochs: int, 14 | only_groups: list[StructuralGroup] | None = None, 15 | lr: float = .01, 16 | patience: int = 10, 17 | min_impr: float = 0.01, 18 | ) -> GeoModel: 19 | """ 20 | Optimize the nugget effect scalar to achieve a target condition number. 21 | Returns the final nugget effect value. 22 | """ 23 | # 1) Backend setup (ideally done once, not every call) 24 | BackendTensor.change_backend_gempy( 25 | engine_backend=engine_cfg.backend, 26 | use_gpu=engine_cfg.use_gpu, 27 | dtype=engine_cfg.dtype, 28 | ) 29 | 30 | # 2) Prepare data 31 | 32 | all_groups: list[StructuralGroup] = model.structural_frame.structural_groups 33 | if only_groups is not None: 34 | groups_to_optimize = only_groups 35 | else: 36 | groups_to_optimize: list[StructuralGroup] = all_groups 37 | 38 | for group in groups_to_optimize: 39 | model.structural_frame.structural_groups = [group] 40 | 41 | interp_in: InterpolationInput = interpolation_input_from_structural_frame(model) 42 | model.taped_interpolation_input = interp_in 43 | nugget: "torch.Tensor" = interp_in.surface_points.nugget_effect_scalar 44 | nugget.requires_grad_(True) 45 | 46 | model.interpolation_options.kernel_options.optimizing_condition_number = True 47 | 48 | nuggets = run_optimization(lr, max_epochs, min_impr, model, nugget, patience, target_cond_num) 49 | 50 | modify_surface_points( 51 | geo_model=model, 52 | nugget=nuggets.detach().numpy() 53 | ) 54 | 55 | model.interpolation_options.kernel_options.optimizing_condition_number = False 56 | 57 | model.structural_frame.structural_groups = all_groups 58 | 59 | return model 60 | 61 | 62 | -------------------------------------------------------------------------------- /gempy/modules/serialization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/gempy/modules/serialization/__init__.py -------------------------------------------------------------------------------- /gempy/optional_dependencies.py: -------------------------------------------------------------------------------- 1 | def require_pandas(): 2 | try: 3 | import pandas as pd 4 | except ImportError: 5 | raise ImportError("The pandas library is required to use this function.") 6 | return pd 7 | 8 | 9 | def require_pooch(): 10 | try: 11 | import pooch 12 | except ImportError: 13 | raise ImportError("The pooch library is required to use this function.") 14 | return pooch 15 | 16 | 17 | def require_gempy_legacy(): 18 | try: 19 | import gempy_legacy 20 | except ImportError: 21 | raise ImportError("The gempy_legacy library is required to use this function.") 22 | return gempy_legacy 23 | 24 | 25 | def require_gempy_viewer(): 26 | try: 27 | import gempy_viewer 28 | except ImportError: 29 | raise ImportError("The gempy_viewer package is required to run this function.") 30 | return gempy_viewer 31 | 32 | def require_matplotlib(): 33 | try: 34 | import matplotlib.pyplot as plt 35 | except ImportError: 36 | raise ImportError("The matplotlib package is required to run this function.") 37 | return plt 38 | 39 | 40 | def require_skimage(): 41 | try: 42 | import skimage 43 | except ImportError: 44 | raise ImportError("The skimage package is required to run this function.") 45 | return skimage 46 | 47 | 48 | def require_scipy(): 49 | try: 50 | import scipy 51 | except ImportError: 52 | raise ImportError("The scipy package is required to run this function.") 53 | return scipy 54 | 55 | 56 | def require_subsurface(): 57 | try: 58 | import subsurface 59 | except ImportError: 60 | raise ImportError("The subsurface package is required to run this function.") 61 | return subsurface 62 | 63 | def require_zlib(): 64 | try: 65 | import zlib 66 | except ImportError: 67 | raise ImportError("The zlib package is required to run this function.") 68 | return zlib 69 | 70 | def require_torch(): 71 | try: 72 | import torch 73 | except ImportError: 74 | raise ImportError("The torch package is required to run this function.") 75 | return torch -------------------------------------------------------------------------------- /requirements/base-requirements.txt: -------------------------------------------------------------------------------- 1 | -r requirements.txt 2 | 3 | # This install matplotlib 4 | gempy_viewer~=2025.1.0 5 | pandas 6 | -------------------------------------------------------------------------------- /requirements/dev-requirements.txt: -------------------------------------------------------------------------------- 1 | -r optional-requirements.txt 2 | 3 | pytest 4 | pyvista 5 | subsurface-terra 6 | wellpathpy 7 | torch 8 | 9 | # Testing 10 | pytest-approvaltests -------------------------------------------------------------------------------- /requirements/docs_requirements.txt: -------------------------------------------------------------------------------- 1 | -r dev-requirements.txt 2 | 3 | torch 4 | rasterio 5 | 6 | sphinx 7 | sphinx-gallery 8 | sphinx_design 9 | sphinx_automodapi 10 | liquid-earth-sdk 11 | wellpathpy 12 | 13 | openpyxl -------------------------------------------------------------------------------- /requirements/optional-requirements.txt: -------------------------------------------------------------------------------- 1 | -r base-requirements.txt 2 | 3 | gempy_plugins 4 | 5 | # for data download 6 | pooch 7 | scipy 8 | scikit-image -------------------------------------------------------------------------------- /requirements/requirements.txt: -------------------------------------------------------------------------------- 1 | # This install also numpy 2 | gempy_engine>=2025.2.0dev0,<2025.3.0 3 | -------------------------------------------------------------------------------- /scripts/build_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source ~/.virtualenvs/gempy_dependencies/bin/activate 4 | 5 | cd ../docs || exit 6 | #make clean 7 | make html 8 | cd - || exit -------------------------------------------------------------------------------- /scripts/update_doc_elements.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # #!/bin/bash 4 | 5 | # sets the working directory to the current directory 6 | cd './notebooks/tutorials' 7 | 8 | # converts all Jupyter Notebook files to basic html 9 | for f in *.ipynb; do jupyter nbconvert --to rst --output-dir ../../docs/source/_notebooks $f; done 10 | 11 | cd ../../docs 12 | make html 13 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | description-file = README.md -------------------------------------------------------------------------------- /test/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/__init__.py -------------------------------------------------------------------------------- /test/conftest.py: -------------------------------------------------------------------------------- 1 | import enum 2 | import os 3 | 4 | input_path = os.path.dirname(__file__) + '/input_data' 5 | input_path2 = os.path.dirname(__file__) + '/../examples/data/input_data/' 6 | import numpy as np 7 | 8 | np.random.seed(1234) 9 | 10 | 11 | class TestSpeed(enum.Enum): 12 | MILLISECONDS = 0 13 | SECONDS = 1 14 | MINUTES = 2 15 | HOURS = 3 16 | 17 | 18 | class Requirements(enum.Enum): 19 | CORE = enum.auto() 20 | BASE = enum.auto() 21 | OPTIONAL = enum.auto() 22 | DEV = enum.auto() 23 | 24 | 25 | TEST_SPEED = TestSpeed.MINUTES # * Use seconds for compile errors, minutes before pushing and hours before release 26 | REQUIREMENT_LEVEL = Requirements.CORE # * Use CORE for mandatory tests, OPTIONAL for optional tests and DEV for development tests 27 | -------------------------------------------------------------------------------- /test/context.py: -------------------------------------------------------------------------------- 1 | """ 2 | The main function of the code you provided is to add the parent directory of the tests folder to the Python path (sys.path). 3 | his is done with sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))). 4 | his line is adding the directory one level up from the directory of the context.py file to the front of the sys.path. 5 | 6 | sys.path is the list of directories that Python checks when it's trying to import a module. By inserting the parent 7 | directory of the tests directory at the front of sys.path, Python will check this directory first when importing modules. 8 | This allows test scripts in the tests directory to import modules from the parent directory (like gempy in your case) as 9 | if they were in the same directory. This is very helpful when you're running tests because it ensures the tests are 10 | running against the source code in your project, rather than an installed version of your package. 11 | """ 12 | # -*- coding: utf-8 -*- 13 | import sys 14 | import os 15 | 16 | sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 17 | -------------------------------------------------------------------------------- /test/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | addopts = -v 3 | norecursedirs = test\test_modules\_geophysics_TO_UPDATE -------------------------------------------------------------------------------- /test/test_api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_api/__init__.py -------------------------------------------------------------------------------- /test/test_api/test_backends.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | import gempy as gp 4 | import gempy_viewer as gpv 5 | from gempy.core.data.gempy_engine_config import GemPyEngineConfig 6 | from gempy_engine.config import AvailableBackends 7 | from gempy.core.data.enumerators import ExampleModel 8 | from test.conftest import TEST_SPEED, TestSpeed 9 | 10 | 11 | @pytest.mark.skipif(TEST_SPEED.value < TestSpeed.SECONDS.value, reason="Global test speed below this test value.") 12 | class TestBackends: 13 | @pytest.fixture(scope='class') 14 | def geo_model(self): 15 | geo_model: gp.data.GeoModel = gp.generate_example_model( 16 | example_model=ExampleModel.ONE_FAULT, 17 | compute_model=False 18 | ) 19 | 20 | geo_model.interpolation_options.number_octree_levels = 6 21 | return geo_model 22 | 23 | def test_backends_numpy(self, geo_model): 24 | gp.compute_model(geo_model, engine_config=GemPyEngineConfig(backend=AvailableBackends.numpy)) 25 | gpv.plot_3d( 26 | model=geo_model, 27 | show_data=True, 28 | show_boundaries=True, 29 | show_lith=False, 30 | image=True 31 | ) 32 | 33 | 34 | def test_numpy_pykeops(self, geo_model): 35 | gp.compute_model( 36 | gempy_model=geo_model, 37 | engine_config=GemPyEngineConfig( 38 | backend=AvailableBackends.numpy, 39 | use_gpu=False, 40 | )) 41 | 42 | gpv.plot_3d( 43 | model=geo_model, 44 | show_data=True, 45 | show_boundaries=True, 46 | show_lith=False, 47 | image=True 48 | ) 49 | 50 | @pytest.mark.skip(reason="Not finished yet. Fault data is not passed to legacy properly.") 51 | @pytest.mark.skipif(TEST_SPEED.value <= 1, reason="Global test speed below this test value.") 52 | def test_backends_legacy(self, geo_model): 53 | # TODO: (Sep 2023, Miguel) Pass fault data to legacy properly 54 | 55 | gp.compute_model(geo_model, engine_config=GemPyEngineConfig(backend=AvailableBackends.legacy)) 56 | from gempy.optional_dependencies import require_gempy_legacy 57 | gpl = require_gempy_legacy() 58 | gpl.plot_3d( 59 | model=geo_model.legacy_model, 60 | show_data=True, 61 | show_boundaries=True, 62 | show_lith=False, 63 | image=True 64 | ) -------------------------------------------------------------------------------- /test/test_api/test_gempy_legacy_comp.py: -------------------------------------------------------------------------------- 1 | import gempy as gp 2 | import gempy_viewer 3 | from gempy.core.data import Solutions 4 | from gempy.API.gp2_gp3_compatibility.gp3_to_gp2_input import gempy3_to_gempy2 5 | from gempy.optional_dependencies import require_gempy_legacy 6 | from test.test_api.test_initialization_and_compute_api import _create_data 7 | 8 | # Skip pytest if legacy is not installed 9 | try: 10 | require_gempy_legacy() 11 | except ImportError: 12 | import pytest 13 | pytest.skip("Legacy is not installed.", allow_module_level=True) 14 | 15 | 16 | 17 | def test_compare_numpy_with_legacy(): 18 | geo_data = _create_data() 19 | 20 | gp.map_stack_to_surfaces( 21 | gempy_model=geo_data, 22 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 23 | ) 24 | 25 | sol: Solutions = gp.compute_model(geo_data) 26 | 27 | gempy_viewer.plot_2d(geo_data, direction=['y'], show_data=True, show_boundaries=False) 28 | 29 | legacy_model = gempy3_to_gempy2(geo_data) 30 | 31 | gl = require_gempy_legacy() 32 | gl.set_interpolator(legacy_model) 33 | gl.compute_model(legacy_model) 34 | gl.plot_2d(legacy_model, direction=['y']) 35 | -------------------------------------------------------------------------------- /test/test_api/test_initialization_and_compute_api.py: -------------------------------------------------------------------------------- 1 | from pprint import pprint 2 | 3 | import gempy as gp 4 | import gempy_viewer 5 | from gempy.core.data import GeoModel 6 | 7 | from gempy_engine.core.data.solutions import Solutions 8 | 9 | 10 | def test_api_create_data(): 11 | geo_data = _create_data() 12 | 13 | pprint(geo_data) 14 | 15 | return geo_data 16 | 17 | 18 | def _create_data(): 19 | data_path = 'https://raw.githubusercontent.com/cgre-aachen/gempy_data/master/' 20 | geo_data: GeoModel = gp.create_geomodel( 21 | project_name='horizontal', 22 | extent=[0, 1000, 0, 1000, 0, 1000], 23 | resolution=[50, 5, 50], 24 | importer_helper=gp.data.ImporterHelper( 25 | path_to_surface_points=data_path + "/data/input_data/jan_models/model1_surface_points.csv", 26 | path_to_orientations=data_path + "/data/input_data/jan_models/model1_orientations.csv" 27 | ) 28 | ) 29 | return geo_data 30 | 31 | 32 | def test_map_stack_to_surfaces(): 33 | geo_data = _create_data() 34 | 35 | gp.map_stack_to_surfaces( 36 | gempy_model=geo_data, 37 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 38 | ) 39 | 40 | pprint(geo_data.structural_frame) 41 | 42 | 43 | def test_api_compute_model(): 44 | geo_data = _create_data() 45 | 46 | gp.map_stack_to_surfaces( 47 | gempy_model=geo_data, 48 | mapping_object={"Strat_Series": ('rock2', 'rock1')} 49 | ) 50 | 51 | gempy_viewer.plot_2d(geo_data, direction=['y']) 52 | 53 | sol: Solutions = gp.compute_model(geo_data) 54 | 55 | gempy_viewer.plot_2d(geo_data, direction=['y'], show_data=True, show_boundaries=True, show_lith=False) 56 | gempy_viewer.plot_2d(geo_data, direction=['y'], show_data=False, show_scalar=True) 57 | -------------------------------------------------------------------------------- /test/test_api/test_modify_input_data.py: -------------------------------------------------------------------------------- 1 | from gempy import generate_example_model 2 | from gempy.core.data.enumerators import ExampleModel 3 | import gempy_viewer as gp_viewer 4 | import gempy as gp 5 | 6 | 7 | def test_modify_surface_point_by_name_and_index(): 8 | model = generate_example_model(ExampleModel.ONE_FAULT, compute_model=False) 9 | print(model.structural_frame) 10 | gp_viewer.plot_2d( 11 | model, 12 | direction=['y'], 13 | show_boundaries=False, # TODO: Fix boundaries 14 | ) 15 | 16 | gp.modify_surface_points( 17 | geo_model=model, 18 | elements_names=["fault"], 19 | Z=800 # This can be an array of the same length as the number of points 20 | ) 21 | 22 | gp_viewer.plot_2d( 23 | model, 24 | direction=['y'], 25 | show_boundaries=False, # TODO: Fix boundaries 26 | ) 27 | 28 | 29 | 30 | def test_modify_surface_point_by_global_index(): 31 | model = generate_example_model(ExampleModel.ONE_FAULT, compute_model=False) 32 | print(model.surface_points_copy.df) 33 | gp_viewer.plot_2d( 34 | model, 35 | direction=['y'], 36 | show_boundaries=False, # TODO: Fix boundaries 37 | ) 38 | 39 | gp.modify_surface_points( 40 | geo_model=model, 41 | slice=0, 42 | Z=800 43 | ) 44 | 45 | print(model.surface_points_copy.df) 46 | gp_viewer.plot_2d( 47 | model, 48 | direction=['y'], 49 | show_boundaries=False, # TODO: Fix boundaries 50 | ) 51 | 52 | -------------------------------------------------------------------------------- /test/test_api/test_show_input_data.py: -------------------------------------------------------------------------------- 1 | from gempy import generate_example_model 2 | from gempy.core.data.enumerators import ExampleModel 3 | 4 | 5 | def test_print_structural_frame(): 6 | model = generate_example_model(ExampleModel.ONE_FAULT, compute_model=False) 7 | print(model.structural_frame) 8 | -------------------------------------------------------------------------------- /test/test_community_bugs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_community_bugs/__init__.py -------------------------------------------------------------------------------- /test/test_community_bugs/test_community_bugs.py: -------------------------------------------------------------------------------- 1 | """ 2 | This scrip is to add test for specific issues that the community has found. Use the the following template: 3 | 4 | def test_issue_XXX(): 5 | ... 6 | 7 | """ 8 | -------------------------------------------------------------------------------- /test/test_core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_core/__init__.py -------------------------------------------------------------------------------- /test/test_core/test_color_generator.py: -------------------------------------------------------------------------------- 1 | import gempy.core.color_generator as cg 2 | 3 | 4 | def test_color_generator(): 5 | 6 | # create an instance of ColorsGenerator 7 | color_iterator: iter = cg.ColorsGenerator() 8 | 9 | # generate color dictionary (with optional seaborn palettes if you want) 10 | 11 | # get the generator from next_color method 12 | 13 | # now you can get colors one by one 14 | print(next(color_iterator)) # prints first color 15 | print(next(color_iterator)) # prints second color 16 | 17 | left_colors = color_iterator._gempy_default_colors[2:] 18 | 19 | assert left_colors == [ 20 | color for color, _ in zip(color_iterator, left_colors) 21 | ] 22 | 23 | # get a random color 24 | assert color_iterator.up_next() == next(color_iterator) 25 | 26 | # override the random color generator 27 | cg.np.random.randint = lambda a, b: 0x00ff42 28 | 29 | assert color_iterator._random_hexcolor() == "#00ff42" 30 | assert next(color_iterator) == "#00ff42" 31 | 32 | # trigger up_next method for the cache 33 | assert color_iterator.up_next() == "#00ff42" 34 | 35 | cg.np.random.randint = lambda a, b: 0x000000 36 | 37 | # ensure that the up_next method still returns the same color 38 | assert color_iterator.up_next() == "#00ff42" 39 | 40 | # trigger the cache 41 | assert next(color_iterator) == "#00ff42" 42 | assert next(color_iterator) == "#000000" 43 | 44 | # etc... 45 | -------------------------------------------------------------------------------- /test/test_core/test_installation.py: -------------------------------------------------------------------------------- 1 | def test_installation(): 2 | import gempy 3 | import gempy_engine -------------------------------------------------------------------------------- /test/test_model_types/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_model_types/__init__.py -------------------------------------------------------------------------------- /test/test_model_types/test_example_models_I.test_generate_combination_model.Combination Scalar Field.approved.txt: -------------------------------------------------------------------------------- 1 | [-0.47370804 -0.22882972 -0.17098718 -0.03740668 -0.1331182 -0.36460383 2 | -0.15089813 -0.22213337 -0.15759448 -0.02401399 -0.12642185 0.00715865 3 | -0.3868865 -0.39577646 -0.08416563 -0.15540086 -0.07746928 -0.16648445 4 | -0.38019015 -0.24660965 -0.07077293 0.03163493 0.00935227 0.06280756 5 | 0.05160848 0.18518898 0.08278112 0.21636161 0.2809005 0.20966526 6 | 0.31207313 0.0805875 0.15851908 0.16740905 0.23864428 0.47012991 7 | 0.37441839 -0.04410303 0.05830483 -0.0129304 0.11395375 0.34543938 8 | 0.36772205 0.37661201 0.39219833 0.22305796 0.32546583 0.14293276 9 | 0.31876948 0.53247517 0.46123994] 10 | -------------------------------------------------------------------------------- /test/test_model_types/test_example_models_I.test_generate_fault_model.Fault Scalar Field.approved.txt: -------------------------------------------------------------------------------- 1 | [-0.1392846 -0.11116681 -0.26449206 -0.27858931 -0.30810439 -0.14968921 2 | -0.09447202 -0.14585538 0.08501889 0.15848263 -0.08214193 -0.01325316 3 | 0.14947106 -0.0649086 -0.36480339 -0.14775211 -0.11782683 -0.2599415 4 | -0.28515257 -0.0905377 0.0980803 0.05291076 -0.0704939 0.00945358 5 | 0.03710443 -0.0739189 -0.08710456 0.15971804 -0.05909646 0.03401982 6 | 0.11368978 0.18807022 0.26154531 0.30770615 0.14548409 0.19288724 7 | 0.383562 0.16111616 0.03852545 -0.06932341 0.08035318 0.02398674 8 | -0.01260595 0.04257085 0.29119355 0.26789519 0.15125526 0.17373195 9 | 0.27665695 0.13183626 0.14195753] 10 | -------------------------------------------------------------------------------- /test/test_model_types/test_example_models_I.test_generate_fold_model.Anticline Scalar Field.approved.txt: -------------------------------------------------------------------------------- 1 | [-0.52188333 -0.50112162 -0.42984112 -0.50125078 -0.5236967 -0.35683332 2 | -0.38732066 -0.41792324 -0.5444072 -0.39905631 -0.44620461 -0.45210505 3 | -0.33743959 -0.40682861 -0.47639785 -0.4552543 -0.38059134 -0.55295399 4 | -0.43369522 -0.40885491 -0.48980574 -0.49550079 -0.41034204 -0.50137384 5 | -0.43740675 -0.35470835 -0.50319884 -0.5238445 -0.50194786 -0.33142261 6 | -0.50728961 -0.43556368 -0.41173995 -0.48483987 -0.46553386 -0.35610584 7 | -0.3657635 -0.43209016 -0.54574333 -0.43253114 -0.35558502 -0.52390714 8 | -0.45315845 -0.45991493 -0.46509034 -0.38966641 -0.49660931 -0.43707138 9 | -0.37491253 -0.32893974 -0.35520657] 10 | -------------------------------------------------------------------------------- /test/test_model_types/test_example_models_I.test_generate_horizontal_stratigraphic_model.Horizontal Stratigraphic Scalar Field.approved.txt: -------------------------------------------------------------------------------- 1 | [-0.53138973 -0.53401697 -0.53639193 -0.53851076 -0.54037354 -0.54198423 2 | -0.54335025 -0.54448177 -0.54539063 -0.54608928 -0.54658948 -0.54690111 3 | -0.54703108 -0.5469825 -0.54675437 -0.54634166 -0.54573594 -0.5449263 4 | -0.54390055 -0.54264645 -0.54115292 -0.53941111 -0.53741528 -0.53516341 5 | -0.5326574 -0.53138973 -0.53401697 -0.53639193 -0.53851076 -0.54037354 6 | -0.54198423 -0.54335025 -0.54448177 -0.54539063 -0.54608928 -0.54658948 7 | -0.54690111 -0.54703108 -0.5469825 -0.54675437 -0.54634166 -0.54573594 8 | -0.5449263 -0.54390055 -0.54264645 -0.54115292 -0.53941111 -0.53741528 9 | -0.53516341 -0.5326574 ] 10 | -------------------------------------------------------------------------------- /test/test_modules/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_modules/__init__.py -------------------------------------------------------------------------------- /test/test_modules/_geophysics_TO_UPDATE/__init__.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | pytestmark = pytest.mark.skip(reason="Geophysics module is not yet updated") -------------------------------------------------------------------------------- /test/test_modules/test_faults/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_modules/test_faults/__init__.py -------------------------------------------------------------------------------- /test/test_modules/test_grids/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_modules/test_grids/__init__.py -------------------------------------------------------------------------------- /test/test_modules/test_grids/test_custom_grid.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pytest 3 | 4 | from test.verify_helper import verify_model_serialization 5 | from test.conftest import TEST_SPEED, TestSpeed 6 | import gempy as gp 7 | from gempy.core.data.enumerators import ExampleModel 8 | 9 | pytestmark = pytest.mark.skipif(TEST_SPEED.value < TestSpeed.SECONDS.value, reason="Global test speed below this test value.") 10 | 11 | xyz_coord = np.array( 12 | [[0, 0, 0], 13 | [1000, 0, 0], 14 | [0, 1000, 0], 15 | [1000, 1000, 0], 16 | [0, 0, 1000], 17 | [1000, 0, 1000], 18 | [0, 1000, 1000], 19 | [1000, 1000, 1000]], 20 | dtype=float 21 | ) 22 | 23 | 24 | def test_custom_grid(): 25 | geo_model: gp.data.GeoModel = gp.generate_example_model( 26 | example_model=ExampleModel.ANTICLINE, 27 | compute_model=False 28 | ) 29 | 30 | geo_model.interpolation_options.number_octree_levels = 2 31 | 32 | gp.set_custom_grid( 33 | grid=geo_model.grid, 34 | xyz_coord=xyz_coord 35 | ) 36 | 37 | verify_model_serialization( 38 | model=geo_model, 39 | verify_moment="after", 40 | file_name=f"verify/{geo_model.meta.name}" 41 | ) 42 | 43 | sol: gp.data.Solutions = gp.compute_model(geo_model, validate_serialization=True) 44 | np.testing.assert_array_equal( 45 | sol.raw_arrays.custom, 46 | np.array([3., 3., 3., 3., 1., 1., 1., 1.]) 47 | ) 48 | 49 | 50 | def test_compute_at(): 51 | geo_model: gp.data.GeoModel = gp.generate_example_model( 52 | example_model=ExampleModel.ANTICLINE, 53 | compute_model=False 54 | ) 55 | 56 | geo_model.interpolation_options.number_octree_levels = 2 57 | sol: np.ndarray = gp.compute_model_at( 58 | gempy_model=geo_model, 59 | at=xyz_coord 60 | ) 61 | 62 | np.testing.assert_array_equal( 63 | sol, 64 | np.array([3., 3., 3., 3., 1., 1., 1., 1.]) 65 | ) 66 | -------------------------------------------------------------------------------- /test/test_modules/test_grids/test_grids_I.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | import gempy as gp 4 | import gempy_viewer as gpv 5 | from gempy.core.data.enumerators import ExampleModel 6 | from gempy_engine.core.data.output.blocks_value_type import ValueType 7 | from gempy_engine.plugins.plotting.helper_functions import plot_block_and_input_2d 8 | from test.conftest import TEST_SPEED, TestSpeed 9 | 10 | 11 | pytestmark = pytest.mark.skipif(TEST_SPEED.value < TestSpeed.MINUTES.value, reason="Global test speed below this test value.") 12 | 13 | 14 | def test_octree(): 15 | geo_model: gp.data.GeoModel = gp.generate_example_model( 16 | example_model=ExampleModel.ANTICLINE, 17 | compute_model=False 18 | ) 19 | 20 | geo_model.interpolation_options.number_octree_levels = 4 21 | gp.compute_model(geo_model) 22 | 23 | plot_block_and_input_2d( 24 | stack_number=0, 25 | interpolation_input=geo_model.interpolation_input_copy, 26 | outputs=geo_model.solutions.octrees_output, 27 | structure=geo_model.structural_frame.input_data_descriptor.stack_structure, 28 | value_type=ValueType.ids 29 | ) 30 | 31 | gpv.plot_3d(geo_model, show_data=True, show_boundaries=True, show_lith=False, image=True) 32 | 33 | geo_model.interpolation_options.number_octree_levels = 2 34 | gp.compute_model(geo_model) 35 | 36 | plot_block_and_input_2d( 37 | stack_number=0, 38 | interpolation_input=geo_model.interpolation_input_copy, 39 | outputs=geo_model.solutions.octrees_output, 40 | structure=geo_model.structural_frame.input_data_descriptor.stack_structure, 41 | value_type=ValueType.ids 42 | ) 43 | 44 | gpv.plot_3d(geo_model, show_data=True, show_boundaries=True, show_lith=False, image=True) 45 | -------------------------------------------------------------------------------- /test/test_modules/test_marching_cubes.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from gempy_engine.core.data.raw_arrays_solution import RawArraysSolution 3 | 4 | import gempy as gp 5 | from gempy.core.data.enumerators import ExampleModel 6 | from gempy.core.data.grid_modules import RegularGrid 7 | from gempy.modules.mesh_extranction import marching_cubes 8 | from gempy.optional_dependencies import require_gempy_viewer 9 | 10 | PLOT = True 11 | 12 | 13 | def test_marching_cubes_implementation(): 14 | model = gp.generate_example_model(ExampleModel.COMBINATION, compute_model=False) 15 | 16 | # Change the grid to only be the dense grid 17 | dense_grid: RegularGrid = RegularGrid( 18 | extent=model.grid.extent, 19 | resolution=np.array([40, 20, 20]) 20 | ) 21 | 22 | model.grid.dense_grid = dense_grid 23 | gp.set_active_grid( 24 | grid=model.grid, 25 | grid_type=[model.grid.GridTypes.DENSE], 26 | reset=True 27 | ) 28 | 29 | model.interpolation_options = gp.data.InterpolationOptions.init_dense_grid_options() 30 | gp.compute_model(model) 31 | 32 | # Assert 33 | assert model.solutions.block_solution_type == RawArraysSolution.BlockSolutionType.DENSE_GRID 34 | assert model.solutions.dc_meshes is None 35 | arrays = model.solutions.raw_arrays # * arrays is equivalent to gempy v2 solutions 36 | 37 | # assert arrays.scalar_field_matrix.shape == (3, 8_000) # * 3 surfaces, 8000 points 38 | 39 | marching_cubes.set_meshes_with_marching_cubes(model) 40 | 41 | # Assert 42 | assert model.solutions.block_solution_type == RawArraysSolution.BlockSolutionType.DENSE_GRID 43 | assert model.solutions.dc_meshes is None 44 | assert model.structural_frame.structural_groups[0].elements[0].vertices.shape == (600, 3) 45 | assert model.structural_frame.structural_groups[1].elements[0].vertices.shape == (860, 3) 46 | assert model.structural_frame.structural_groups[2].elements[0].vertices.shape == (1_256, 3) 47 | assert model.structural_frame.structural_groups[2].elements[1].vertices.shape == (1_680, 3) 48 | 49 | if PLOT: 50 | gpv = require_gempy_viewer() 51 | gtv: gpv.GemPyToVista = gpv.plot_3d( 52 | model=model, 53 | show_data=True, 54 | image=True, 55 | show=True 56 | ) 57 | -------------------------------------------------------------------------------- /test/test_modules/test_pile/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_modules/test_pile/__init__.py -------------------------------------------------------------------------------- /test/test_private/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_private/__init__.py -------------------------------------------------------------------------------- /test/test_private/test_terranigma/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_private/test_terranigma/__init__.py -------------------------------------------------------------------------------- /test/test_private/test_terranigma/test_nuggets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gempy-project/gempy/1c9500e2003058c26b07cd789c865fb541b7b07d/test/test_private/test_terranigma/test_nuggets/__init__.py --------------------------------------------------------------------------------