Showing preview only (5,652K chars total). Download the full file or copy to clipboard to get everything.
Repository: gempy-project/gempy
Branch: main
Commit: 61b5af5a7ad3
Files: 423
Total size: 5.3 MB
Directory structure:
gitextract_08koybn1/
├── .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
│ └── source/
│ ├── _static/
│ │ └── nothing.txt
│ ├── _templates/
│ │ ├── base.rst
│ │ ├── class.rst
│ │ └── module.rst
│ ├── api_reference.rst
│ ├── conf.py
│ ├── index.rst
│ ├── installation.rst
│ └── make_external_gallery.py
├── examples/
│ ├── __init__.py
│ ├── data/
│ │ ├── 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
│ │ │ ├── Greenstone.gempy
│ │ │ ├── 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
│ │ ├── tests/
│ │ │ ├── fault_relations_test_ori.csv
│ │ │ └── fault_relations_test_surf.csv
│ │ ├── 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
│ │ └── pflotran_perth_bassin.in
│ └── tutorials/
│ ├── README.rst
│ ├── __init__.py
│ ├── a_getting_started/
│ │ ├── README.rst
│ │ ├── __init__.py
│ │ └── 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
│ │ ├── 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
│ ├── test_cg/
│ │ ├── __init__.py
│ │ └── test_cg_solver.py
│ ├── test_compute_times_for_grids.py
│ ├── test_faults/
│ │ ├── __init__.py
│ │ ├── test_fault_relations.py
│ │ ├── test_finite_faults.py
│ │ └── test_finite_faults.test_finite_fault_scalar_field_on_fault.verify/
│ │ └── fault.approved.txt
│ ├── test_gempy_subsurface.py
│ ├── test_geophysics/
│ │ ├── __init__.py
│ │ ├── test_gravity.py
│ │ └── test_gravity.test_gravity.verify/
│ │ └── 2-layers.approved.txt
│ ├── 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_marching_cubes_pytorch.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
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: Leguark
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is. Include error messages /
tracebacks. If useful include screenshots.
**To Reproduce**
Provide detailed steps to reproduce the behavior:
1.
2.
3.
...
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
* OS: (e.g. iOS)
* GemPy Version
* if installed via pip: provide GemPy version (e.g. 2.0.1)
* if cloned from GitHub: provide Git commit id (e.g. 839bf85f)
* Jupyter Version (if applicable)
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/question.md
================================================
---
name: Question
about: Ask a question about GemPy
title: ''
labels: ''
assignees: ''
---
**What is your question?**
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
# Description
Please include a summary of the changes.
Relates to <issue>
# Checklist
- [ ] My code uses type hinting for function and method arguments and return values.
- [ ] I have created tests which cover my code.
- [ ] The test code either 1. demonstrates at least one valuable use case (e.g. integration tests)
or 2. verifies that outputs are as expected for given inputs (e.g. unit tests).
- [ ] New tests pass locally with my changes.
================================================
FILE: .gitignore
================================================
.vscode
.idea
.DS_Store
.vs
.cache/
GeMpy/__pycache__/__init__.cpython-36.pyc
GeMpy/__pycache__/geomodeller_xml_obj.cpython-36.pyc
GeMpy/geomodeller_xml_obj.py.bak
GeMpy/qgrid/__pycache__/
../gempy_plugins/gempy_plugins/addons/RexCloud_Api_key.txt
docs/source/Notebooks/Erosion.rst
docs/source/Notebooks/Example_1_Sandstone_files/Example_1_Sandstone_39_0.png
docs/source/Notebooks/Example_1_Sandstone_files/Example_1_Sandstone_41_0.png
docs/source/Notebooks/Example_1_Sandstone_files/Example_1_Sandstone_46_1.png
docs/source/Notebooks/Example_2_Simple_PyMC3_files/
docs/source/Notebooks/Example_3_Faults_files/
docs/source/Notebooks/OptimizationNotebook.rst
docs/source/Notebooks/legacy/
docs/source/index_legacy.rst
input_data/Erosion_Foliations.csv
input_data/Erosion_Points.csv
input_data/FabLessPoints_Foliations.csv
input_data/FabLessPoints_Points.csv
input_data/Fab_Model_MorePoints_Foliations.csv
input_data/Fab_Model_MorePoints_Points.csv
input_data/Intrusion-test/
legacy/.ipynb_checkpoints/
test/.ipynb_checkpoints/
test/__pycache__/
test/legacy/
test/log
test/log2
/legacy/geomodeller_xml_obj.py.bak
!/notebooks/input_data/FabLessPoints_Foliations.csv
!/notebooks/input_data/FabLessPoints_Points.csv
### Python template
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
# Rope project settings
.ropeproject
notebooks/prototype notebooks/vtks
notebooks/prototype notebooks/vtk_res_model_adjusted_1
notebooks/prototype notebooks/vtk_exp_smooth_trnasitions
notebooks/prototype notebooks/plots
# Remove the built document files - but not the static ones, which are required for the builds
docs/build
# The following files are generated locally during sphinx updates - they don't have to be part of the repo
docs/source/examples
docs/source/tutorials
docs/source/Modeling\ Classes
docs/source/GemPy\ API
docs/source/Helper\ Classes
docs/source/Plot
docs/source/external
docs/source/sg_execution_times.rst
test/figs
Profiles
examples/data/input_data/Claudius/Results_
/docs/source/gen_modules/
#examples folders
examples/integrations/*.vs
examples/integrations/*.ugi
examples/integrations/*.h5
examples/integrations/*.xmf
examples/integrations/*.ss
examples/integrations/*.out
# Approval tests
*.received.txt
*.Identifier
/.obsidian/app.json
/.obsidian/appearance.json
/.obsidian/core-plugins.json
/.obsidian/core-plugins-migration.json
/.obsidian/hotkeys.json
/.obsidian/workspace.json
# Ignore generated tutorial files
examples/tutorials/z_other_tutorials/json_io/04_simple_layer_stack.py
examples/tutorials/z_other_tutorials/json_io/fault_scalar_field.png
examples/tutorials/z_other_tutorials/json_io/initial_model_y.png
examples/tutorials/z_other_tutorials/json_io/model_with_data.png
examples/tutorials/z_other_tutorials/json_io/multiple_series_faults_computed.json
# Generated JSON files from examples
examples/tutorials/z_other_tutorials/json_io/combination_model.json
examples/tutorials/z_other_tutorials/json_io/combination_model_computed.json
/test/temp/
test/test_modules/run_test.py
================================================
FILE: .teamcity/Gempy/buildTypes/GempyEngine_TestingEngine.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="59aca9bb-65ca-4c5e-8e76-49a6d5136ba1" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>TestingEngine</name>
<description />
<settings>
<options>
<option name="allowExternalStatus" value="true" />
</options>
<disabled-settings>
<setting-ref ref="RQ_11" />
</disabled-settings>
<parameters>
<param name="REQUIREMENT_LEVEL" value="READ_MESH" />
<param name="env.CI" value="None" />
<param name="env.DUAL_CONTOURING_VERTEX_OVERLAP" value="pretty" />
<param name="env.MPLBACKEND" value="Agg" />
</parameters>
<build-runners>
<runner id="Setup" name="Setup" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # enable debug output and exit on error
# Create virtual environment using Python 3
python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Upgrade pip
venv/bin/python -m pip install --upgrade pip
echo "Checking directory contents..."
ls -la
ls -la requirements
# Install requirements and teamcity-messages package
venv/bin/pip install --verbose -r requirements/dev-requirements.txt
venv/bin/pip install --verbose teamcity-messages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # Exit immediately if a command exits with a non-zero status, and print commands
# Run pytest with the teamcity reporter enabled
venv/bin/python -m pytest --teamcity -v]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_11" name="env.WSLENV" />
</requirements>
<build-triggers>
<build-trigger id="TRIGGER_4" type="vcsTrigger">
<parameters>
<param name="branchFilter" value="+pr:draft=false" />
<param name="enableQueueOptimization" value="true" />
<param name="quietPeriodMode" value="DO_NOT_USE" />
</parameters>
</build-trigger>
</build-triggers>
<build-extensions>
<extension id="perfmon" type="perfmon">
<parameters>
<param name="teamcity.perfmon.feature.enabled" value="true" />
</parameters>
</extension>
<extension id="BUILD_EXT_5" type="commit-status-publisher">
<parameters>
<param name="github_authentication_type" value="storedToken" />
<param name="github_host" value="https://api.github.com" />
<param name="publisherId" value="githubStatusPublisher" />
<param name="tokenId" value="tc_token_id:CID_3b89bdfbf109f1ab1de7ca93ee1e7c9f:-1:883b6205-e11c-4802-ba96-a93ee511dafc" />
<param name="vcsRootId" value="GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain" />
</parameters>
</extension>
<extension id="BUILD_EXT_6" type="pullRequests">
<parameters>
<param name="authenticationType" value="token" />
<param name="filterAuthorRole" value="MEMBER" />
<param name="ignoreDrafts" value="true" />
<param name="providerType" value="github" />
<param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="vcsRootId" value="GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain" />
</parameters>
</extension>
</build-extensions>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/Gempy_BuildDocs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="00c27404-7069-4acf-83b9-f1d246fbf0e3" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>BuildDocs</name>
<description />
<settings>
<options>
<option name="allowExternalStatus" value="true" />
<option name="artifactRules" value="docs_site.zip => docs" />
</options>
<disabled-settings>
<setting-ref ref="RQ_4" />
<setting-ref ref="TRIGGER_4" />
</disabled-settings>
<parameters>
<param name="REQUIREMENT_LEVEL" value="READ_MESH" />
<param name="env.LIQUID_EARTH_API_TOKEN" value="credentialsJSON:f48d57e0-a522-475f-a94d-333cbb99703e" spec="password display='normal'" />
<param name="env.MPLBACKEND" value="Agg" />
</parameters>
<build-runners>
<runner id="Setup" name="Setup" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # enable debug output and exit on error
# Create virtual environment using Python 3
python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Upgrade pip
venv/bin/python -m pip install --upgrade pip
echo "Checking directory contents..."
ls -la
ls -la requirements
# Install requirements and teamcity-messages package
venv/bin/pip install --verbose --pre --upgrade -r requirements/docs_requirements.txt
venv/bin/pip install --verbose teamcity-messages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # Exit immediately if a command exits with a non-zero status, and print commands
# Run pytest with the teamcity reporter enabled
venv/bin/python -m sphinx -b html docs/source docs/build/html]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Zip_Docs" name="Zip Docs" type="simpleRunner">
<parameters>
<param name="script.content" value="zip -r docs_site.zip docs/build/html" />
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1" />
</vcs-settings>
<requirements>
<exists id="RQ_4" name="env.WSLENV" />
</requirements>
<build-triggers>
<build-trigger id="TRIGGER_4" type="vcsTrigger">
<parameters>
<param name="branchFilter"><![CDATA[+pr:draft=false
-:refs/heads/main
-:<default>]]></param>
<param name="enableQueueOptimization" value="true" />
<param name="quietPeriodMode" value="DO_NOT_USE" />
</parameters>
</build-trigger>
</build-triggers>
<build-extensions>
<extension id="perfmon" type="perfmon">
<parameters>
<param name="teamcity.perfmon.feature.enabled" value="true" />
</parameters>
</extension>
<extension id="BUILD_EXT_5" type="commit-status-publisher">
<parameters>
<param name="github_authentication_type" value="storedToken" />
<param name="github_host" value="https://api.github.com" />
<param name="publisherId" value="githubStatusPublisher" />
<param name="tokenId" value="tc_token_id:CID_3b89bdfbf109f1ab1de7ca93ee1e7c9f:-1:ca909c18-3845-403b-bf03-43f880307532" />
<param name="vcsRootId" value="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1" />
</parameters>
</extension>
<extension id="BUILD_EXT_6" type="pullRequests">
<parameters>
<param name="authenticationType" value="token" />
<param name="filterAuthorRole" value="EVERYBODY" />
<param name="ignoreDrafts" value="true" />
<param name="providerType" value="github" />
<param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="vcsRootId" value="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1" />
</parameters>
</extension>
</build-extensions>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/Gempy_PublishDocs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="ce84f581-c0f0-4b63-97d5-5343313670e8" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Publish Docs</name>
<description />
<settings>
<disabled-settings>
<setting-ref ref="Push" />
<setting-ref ref="RQ_5" />
</disabled-settings>
<build-runners>
<runner id="Publish_GemPy_Docs" name="Publish GemPy Docs" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/usr/bin/env bash
set -euo pipefail
# 0. Sanity check
echo "Branch:" $(git rev-parse --abbrev-ref HEAD) # should be gh-pages
ls -la # should list docs.zip
# 1. Remove *tracked* files but leave .git/
git rm -rf . # removes tracked files
# remove untracked (including dirs), but leave docs.zip intact
git clean -xfd -e docs_site.zip
# 2. Unzip new HTML over the top
unzip docs_site.zip
# 3. Move the rendered HTML into the root
mv docs/build/html/* . # move all html files & folders
# (if you have hidden files under html, you can optionally do)
# mv build/html/.* . 2>/dev/null || true
# 4. Cleanup build artifacts before commit
rm -rf build docs_site.zip
# 3. Prevent Jekyll from ignoring files
touch .nojekyll
# after mv build/html/* . and before git add
echo "docs.gempy.org" > CNAME
# 4. Commit & push
git add -A
git commit -m "Publish docs from build %build.counter%"
git push origin gh-pages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Push" name="Push" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[# 5. Commit & force-push
git add -A
git commit -m "Update docs from build %teamcity.build.number%"
git push --force origin gh-pages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain2" />
</vcs-settings>
<requirements>
<exists id="RQ_5" name="env.WSLENV" />
</requirements>
<build-extensions>
<extension id="perfmon" type="perfmon">
<parameters>
<param name="teamcity.perfmon.feature.enabled" value="true" />
</parameters>
</extension>
</build-extensions>
<artifact-dependencies>
<dependency id="ARTIFACT_DEPENDENCY_1" sourceBuildTypeId="Gempy_BuildDocs" cleanDestination="false">
<revisionRule name="buildTag" revision="Published.tcbuildtag" />
<artifact sourcePath="docs/docs_site.zip => ." />
</dependency>
</artifact-dependencies>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/Gempy_TestingGemPy.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="9299f984-4bae-4ca7-8bcf-5ccda0e1c79f" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>TestingGemPy</name>
<description />
<settings>
<options>
<option name="allowExternalStatus" value="true" />
</options>
<disabled-settings>
<setting-ref ref="RQ_6" />
</disabled-settings>
<parameters>
<param name="DUAL_CONTOURING_VERTEX_OVERLAP" value="pretty" />
<param name="REQUIREMENT_LEVEL" value="READ_MESH" />
<param name="USE_PRERELEASE" value="true" spec="checkbox checkedValue='true' display='prompt'" />
<param name="env.MPLBACKEND" value="Agg" />
<param name="env.PATH_TO_NUGGET_TEST_MODEL" value="%env.TERRA_PATH_DEVOPS%GemPyTestData/Stonepark" />
<param name="env.PATH_TO_SPREMBERG" value="%env.TERRA_PATH_DEVOPS%SubsurfaceTestData/boreholes/Spremberg/" />
<param name="env.TERRA_PATH_DEVOPS" value="/home/leguark/DevOps/DevOps/" />
<param name="env.VALIDATE_SERIALIZATION" value="True" />
</parameters>
<build-runners>
<runner id="Setup" name="Setup" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # enable debug output and exit on error
# 1. Use the absolute path to the Python binary directly
/home/leguark/.local/share/mise/installs/python/3.13.9/bin/python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Upgrade pip
venv/bin/python -m pip install --upgrade pip
echo "Checking directory contents..."
ls -la
ls -la requirements
# Install requirements and teamcity-messages package
if [ "%USE_PRERELEASE%" = "true" ]; then
echo "Installing pre-release version of gempy_engine"
venv/bin/pip install --pre --upgrade --verbose -r requirements/dev-requirements.txt
else
echo "Installing stable version of gempy_engine"
venv/bin/pip install --verbose -r requirements/dev-requirements.txt
fi
venv/bin/pip install --verbose teamcity-messages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # Exit immediately if a command exits with a non-zero status, and print commands
# Run pytest with the teamcity reporter enabled
venv/bin/python -m pytest --teamcity -v]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_6" name="env.WSL_DISTRO_NAME" />
</requirements>
<build-triggers>
<build-trigger id="TRIGGER_4" type="vcsTrigger">
<parameters>
<param name="branchFilter" value="+pr:draft=false" />
<param name="enableQueueOptimization" value="true" />
<param name="quietPeriodMode" value="DO_NOT_USE" />
</parameters>
</build-trigger>
</build-triggers>
<build-extensions>
<extension id="perfmon" type="perfmon">
<parameters>
<param name="teamcity.perfmon.feature.enabled" value="true" />
</parameters>
</extension>
<extension id="BUILD_EXT_5" type="commit-status-publisher">
<parameters>
<param name="github_authentication_type" value="storedToken" />
<param name="github_host" value="https://api.github.com" />
<param name="publisherId" value="githubStatusPublisher" />
<param name="tokenId" value="tc_token_id:CID_3b89bdfbf109f1ab1de7ca93ee1e7c9f:-1:ca909c18-3845-403b-bf03-43f880307532" />
<param name="vcsRootId" value="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain" />
</parameters>
</extension>
<extension id="BUILD_EXT_6" type="pullRequests">
<parameters>
<param name="authenticationType" value="token" />
<param name="filterAuthorRole" value="EVERYBODY" />
<param name="ignoreDrafts" value="true" />
<param name="providerType" value="github" />
<param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="vcsRootId" value="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain" />
</parameters>
</extension>
</build-extensions>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/Gempy_TestingViewer.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="53a59128-3605-4def-8525-116b4f91fad1" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>TestingViewer</name>
<description />
<settings>
<options>
<option name="allowExternalStatus" value="true" />
</options>
<disabled-settings>
<setting-ref ref="RQ_10" />
</disabled-settings>
<parameters>
<param name="REQUIREMENT_LEVEL" value="READ_MESH" />
<param name="USE_PRERELEASE" value="true" spec="text display='prompt' validationMode='any'" />
<param name="env.MPLBACKEND" value="Agg" />
<param name="env.PATH_TO_NUGGET_TEST_MODEL" value="%env.TERRA_PATH_DEVOPS%GemPyTestData/Stonepark" />
<param name="env.TERRA_PATH_DEVOPS" value="/home/leguark/DevOps/DevOps/" />
</parameters>
<build-runners>
<runner id="Setup" name="Setup" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # enable debug output and exit on error
# Create virtual environment using Python 3
python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Upgrade pip
venv/bin/python -m pip install --upgrade pip
echo "Checking directory contents..."
ls -la
ls -la requirements
# Install requirements and teamcity-messages package
if [ "%USE_PRERELEASE%" = "true" ]; then
echo "Installing pre-release version of gempy_engine"
venv/bin/pip install --pre --upgrade --verbose -r requirements/dev-requirements.txt
else
echo "Installing stable version of gempy_engine"
venv/bin/pip install --verbose -r requirements/dev-requirements.txt
fi
venv/bin/pip install --verbose teamcity-messages]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/bin/bash
set -ex # Exit immediately if a command exits with a non-zero status, and print commands
# Run pytest with the teamcity reporter enabled
venv/bin/python -m pytest --teamcity -v]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_10" name="env.WSLENV" />
</requirements>
<build-triggers>
<build-trigger id="TRIGGER_4" type="vcsTrigger">
<parameters>
<param name="branchFilter" value="+pr:draft=false" />
<param name="enableQueueOptimization" value="true" />
<param name="quietPeriodMode" value="DO_NOT_USE" />
</parameters>
</build-trigger>
</build-triggers>
<build-extensions>
<extension id="perfmon" type="perfmon">
<parameters>
<param name="teamcity.perfmon.feature.enabled" value="true" />
</parameters>
</extension>
<extension id="BUILD_EXT_6" type="pullRequests">
<parameters>
<param name="authenticationType" value="token" />
<param name="filterAuthorRole" value="MEMBER" />
<param name="ignoreDrafts" value="true" />
<param name="providerType" value="github" />
<param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="vcsRootId" value="GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain" />
</parameters>
</extension>
<extension id="BUILD_EXT_13" type="commit-status-publisher">
<parameters>
<param name="github_authentication_type" value="storedToken" />
<param name="github_host" value="https://api.github.com" />
<param name="publisherId" value="githubStatusPublisher" />
<param name="tokenId" value="tc_token_id:CID_3b89bdfbf109f1ab1de7ca93ee1e7c9f:-1:b1a2f310-c65e-473c-9360-1ff732fce4cb" />
<param name="vcsRootId" value="GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain" />
</parameters>
</extension>
</build-extensions>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/ReleaseGemPy.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="59376410-f2be-4cc6-bbc3-080f4a28a88a" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Release GemPy</name>
<description />
<settings ref="ReleasePythonPackage">
<disabled-settings>
<setting-ref ref="RQ_7" />
</disabled-settings>
<parameters>
<param name="env.org/repo" value="gempy-project/gempy" />
</parameters>
<build-runners>
<runner id="Build" name="Build" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[#!/usr/bin/env bash
set -euo pipefail
echo "Cleaning build artifacts..."
rm -rf dist build
echo "Clean complete."
# Check if virtualenv exists, if not create it
if [ ! -d "venv" ]; then
echo "Creating virtual environment..."
python3 -m venv venv
fi
# Activate the virtual environment
source venv/bin/activate
# ensure build tooling is up to date
python3 -m pip install --upgrade build
# run the build
python3 -m build]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<vcs-settings>
<vcs-entry-ref root-id="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_7" name="env.WSLENV" />
</requirements>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/ReleaseGemPyEngine.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="5b8c088b-270d-4839-ae26-d0f4482dd1a9" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Release GemPy Engine</name>
<description />
<settings ref="ReleasePythonPackage">
<disabled-settings>
<setting-ref ref="RQ_9" />
</disabled-settings>
<parameters>
<param name="env.org/repo" value="gempy-project/gempy_engine" />
</parameters>
<vcs-settings>
<vcs-entry-ref root-id="GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_9" name="env.WSLENV" />
</requirements>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/buildTypes/ReleaseGemPyViewer.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="f46e0551-c5cf-4249-97e1-38bb3298a1b6" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Release GemPy Viewer</name>
<description />
<settings ref="ReleasePythonPackage">
<disabled-settings>
<setting-ref ref="RQ_8" />
</disabled-settings>
<parameters>
<param name="env.org/repo" value="gempy-project/gempy_viewer" />
</parameters>
<vcs-settings>
<vcs-entry-ref root-id="GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain" />
</vcs-settings>
<requirements>
<exists id="RQ_8" name="env.WSLENV" />
</requirements>
</settings>
</build-type>
================================================
FILE: .teamcity/Gempy/project-config.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="1f17aa59-a77e-40c1-9d79-271ed47736fb" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Gempy</name>
<parameters>
<param name="foo" value="" />
</parameters>
<project-extensions>
<extension id="PROJECT_EXT_11" type="UntrustedBuildsSettings">
<parameters>
<param name="defaultAction" value="approve" />
<param name="enableLog" value="false" />
<param name="rules" value="user:leguark" />
</parameters>
</extension>
<extension id="PROJECT_EXT_17" type="versionedSettings">
<parameters>
<param name="buildSettings" value="ALWAYS_USE_CURRENT" />
<param name="credentialsStorageType" value="credentialsJSON" />
<param name="enabled" value="true" />
<param name="ignoreChangesInDependenciesAndVcsSettings" value="false" />
<param name="rootId" value="Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain" />
<param name="showChanges" value="false" />
</parameters>
</extension>
<extension id="PROJECT_EXT_9" type="IssueTracker">
<parameters>
<param name="authType" value="anonymous" />
<param name="name" value="gempy-project/gempy_engine" />
<param name="pattern" value="#(\d+)" />
<param name="repository" value="https://github.com/gempy-project/gempy_engine" />
<param name="secure:accessToken" value="" />
<param name="secure:password" value="" />
<param name="tokenId" value="" />
<param name="type" value="GithubIssues" />
<param name="username" value="" />
</parameters>
</extension>
</project-extensions>
</project>
================================================
FILE: .teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="1c4be3ab-0dc7-41bd-a89f-0735ea8f3c38" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>https://github.com/gempy-project/gempy_engine#refs/heads/main</name>
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
<param name="authMethod" value="PASSWORD" />
<param name="branch" value="refs/heads/main" />
<param name="ignoreKnownHosts" value="true" />
<param name="secure:password" value="credentialsJSON:b27e49f2-8756-4fd4-86ae-fdabf1514f42" />
<param name="submoduleCheckout" value="CHECKOUT" />
<param name="url" value="https://github.com/gempy-project/gempy_engine" />
<param name="useAlternates" value="AUTO" />
<param name="username" value="Leguark" />
<param name="usernameStyle" value="USERID" />
</vcs-root>
================================================
FILE: .teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="2d4a2912-6af8-4f11-9997-730c5de2f457" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>https://github.com/gempy-project/gempy_viewer#refs/heads/main</name>
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
<param name="authMethod" value="PASSWORD" />
<param name="branch" value="refs/heads/main" />
<param name="ignoreKnownHosts" value="true" />
<param name="secure:password" value="credentialsJSON:b27e49f2-8756-4fd4-86ae-fdabf1514f42" />
<param name="submoduleCheckout" value="CHECKOUT" />
<param name="url" value="https://github.com/gempy-project/gempy_viewer" />
<param name="useAlternates" value="AUTO" />
<param name="username" value="Leguark" />
<param name="usernameStyle" value="USERID" />
</vcs-root>
================================================
FILE: .teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="a5cdb346-b81a-4f75-85e2-dee393e2c888" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>GemPy Main</name>
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
<param name="authMethod" value="PASSWORD" />
<param name="branch" value="refs/heads/main" />
<param name="ignoreKnownHosts" value="true" />
<param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="submoduleCheckout" value="CHECKOUT" />
<param name="url" value="https://github.com/gempy-project/gempy" />
<param name="useAlternates" value="SHALLOW_CLONE" />
<param name="username" value="Leguark" />
<param name="usernameStyle" value="USERID" />
</vcs-root>
================================================
FILE: .teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="46efada4-e3ad-45ca-8870-324d4f18f972" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>Caching docs vcs</name>
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
<param name="agentCleanPolicy" value="NEVER" />
<param name="authMethod" value="PASSWORD" />
<param name="branch" value="refs/heads/main" />
<param name="ignoreKnownHosts" value="true" />
<param name="secure:password" value="credentialsJSON:b27e49f2-8756-4fd4-86ae-fdabf1514f42" />
<param name="submoduleCheckout" value="CHECKOUT" />
<param name="url" value="https://github.com/gempy-project/gempy" />
<param name="useAlternates" value="SHALLOW_CLONE" />
<param name="username" value="Leguark" />
<param name="usernameStyle" value="USERID" />
</vcs-root>
================================================
FILE: .teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain2.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="f2909be6-0dc0-44c1-b7c0-3a67ceb76163" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2025.3/project-config.xsd">
<name>GemPy - GH Pages</name>
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
<param name="authMethod" value="PASSWORD" />
<param name="branch" value="refs/heads/gh-pages" />
<param name="ignoreKnownHosts" value="true" />
<param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
<param name="submoduleCheckout" value="CHECKOUT" />
<param name="url" value="https://github.com/gempy-project/gempy" />
<param name="useAlternates" value="AUTO" />
<param name="username" value="Leguark" />
<param name="usernameStyle" value="USERID" />
</vcs-root>
================================================
FILE: .travis.yml
================================================
language: python
os: linux
dist: xenial
branches:
only:
- master
- release
python:
- '3.8'
before_install:
# configure a headless display
- git clone --depth 1 git://github.com/pyvista/gl-ci-helpers.git
- source ./gl-ci-helpers/travis/setup_headless_display.sh
install:
- sudo apt-get update
# We do this conditionally because it saves us some downloading if the
# version is the same.
- wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PATH"
- hash -r
- conda config --set always_yes yes --set changeps1 no
- conda update --all
# Useful for debugging any issues with conda
- conda info -a
# Install and activate environment, install packages
- conda create -q -n tenv python=$TRAVIS_PYTHON_VERSION
- source activate tenv
# Installs from conda-forge
- conda install -c conda-forge python-graphviz
- conda install -c conda-forge pip matplotlib ipython six pytest pytest-cov ipywidgets
- conda install -c conda-forge recommonmark networkx panel setuptools mkl-service
# Installs from anaconda
- conda install -c anaconda libffi
- conda install aesara
# Installs from pip
- pip install welly pymc3
- pip install scikit-image>=0.17 sklearn
- pip install pandas seaborn>=0.9 sphinx-gallery
# Install
- pip install -e .
# Pyvista should have been fixed- pip install pyvista
# Arviz broke with xarray update
- pip install git+https://github.com/arviz-devs/arviz --force-reinstall
# Install subsurface
- pip install subsurface
- conda install -c conda-forge gdal
- python -c "import pyvista as pv;print(pv.Report())"
- pip install pooch
stages:
- test
jobs:
include:
- stage: test
script:
- pytest -v
cache: pip
================================================
FILE: AUTHORS.rst
================================================
.. _authors_ref:
Authors
-------
.. image:: https://img.shields.io/github/contributors/gempy-project/gempy_engine.svg?logo=github&logoColor=white
:target: https://github.com/gempy-projects/gempy_engine/graphs/contributors/
The following is a list of authors who have made substantial contributions to
the conception or design of this software; or the creation of new code used in
this software; or have drafted the work or substantively revised it:
- Miguel de la Varga, (`@leguark <https://github.com/leguark/>`_)
- Alexander Zimmerman
- Elisa Heim
- Alexander Schaaf
- Fabian Stamm
- Florian Wellmann
================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
message: "If you use GemPy, please cite it as below."
authors:
- family-names: "de la Varga"
given-names: "Miguel"
orcid: https://orcid.org/0000-0001-6941-2685
- family-names: "Schaaf"
given-names: "Alexander"
- family-names: "Wellmann"
given-names: "Florian"
orcid: https://orcid.org/0000-0003-2552-1876
title: "GemPy 1.0: open-source stochastic geological modeling and inversion"
version: 1.0
doi: https://doi.org/10.5194/gmd-12-1-2019
date-released: 2019-01-02
url: "https://github.com/cgre-aachen/gempy"
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at florian.wellmann@cgre.rwth-aachen.de. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
We welcome and encoruage everyone to contribute to GemPy!
Contributions can be questions, bug reports, feature requests and new code.
Here is how to get started.
## Issues
### Questions
For questions about GemPy (e.g. its applications, functionality, and usage),
please [search the existing issues for related questions](https://github.com/cgre-aachen/gempy/issues).
If your question has not already been asked, then [make a new issue](https://github.com/cgre-aachen/gempy/issues/new/choose).
### Reporting Bugs
Please report bugs on the [issue page using the bug report template](https://github.com/cgre-aachen/gempy/issues/new?assignees=&labels=&template=bug_report.md&title=) and label the issue as a bug.
The template asks essential questions for you to answer so that we can to understand, reproduce, and fix the bug.
Be verbose!
Whenever possible, provide tracebacks and/or error messages, screenshots, and sample code or other files.
### Feature Requests
We encourage users to submit ideas for improvements to the GemPy project. For
this please create an issue on the
[issue page](https://github.com/cgre-aachen/gempy/issues) with the *Feature
Request* template and label. Please make sure to use a descriptive title and to
provide ample background information to help us implement that functionality
in the future.
## Contributing New Code
Any code contributions are welcome,
whether fixing a typo or bug,
adding new post-processing/plotting functionality,
improve core functionality,
or anything that you think should be in the repository.
Contributions should address an open issue (either a bug or a feature request).
If you have found a new bug
or have an idea or a new feature,
then please [open the issue](https://github.com/cgre-aachen/gempy/issues/new/choose)
for discussion and link to that issue in your pull request.
### Python code guidelines
We aim to follow particular Python coding guidelines to improve the sustainability and positive impact of this community project:
- Follow [The Zen of Python](https://www.python.org/dev/peps/pep-0020/), most importantly "readability counts" when writing Python code.
- Adhere to the [Style Guide for Python Code (PEP8)](https://www.python.org/dev/peps/pep-0008/).
- Write thorough and effective documentation:
Make a docstring for each module, function, class, and method,
all following [PEP 257](https://www.python.org/dev/peps/pep-0257/) for high-level guidelines
and [Google Python Style Guidelines](http://google.github.io/styleguide/pyguide.html) for Syntax.
**Example function documentation:**
```python
def func(arg1: int, arg2: float) -> int:
"""A concise one line summary of the function.
Additional information and description of the function, if necessary. This
can be as long and verbose as you think is necessary for other users and
developers to understand your functionality.
Args:
arg1 (int): Description of the first argument.
arg2 (float): Description of the second argument. Please use hanging
indentation for multi-line argument descriptions.
Returns:
(int) Description of the return value(s)
"""
return 42
```
- The code should explain the *what* and *how*. Add inline comments to explain the *why*.
If an inline comment seems to be needed, consider first making the code more readable.
For all comments, follow [PEP 8](https://www.python.org/dev/peps/pep-0008/).
- Test every line of code. Untested code is dead code.
### Licensing
All contributed code will be licensed under
[a EUPL-1.2 license](https://github.com/cgre-aachen/gempy/blob/master/LICENSE).
If you did not write the code yourself,
it is your responsibility to ensure that the existing license is compatible
and included in the contributed files.
In general we discourage contributing third party code.
### Testing
Our test suite uses [`pytest`](https://docs.pytest.org/).
You should be familiar with `pytest` before contributing.
Please run all tests locally before creating a pull request.
You can do this by running `pytest` via your terminal in your GemPy folder:
```bash
cd ./path/to/gempy
pytest
```
All tests are located in the `test` folder and its subfolders.
All contributed code must include test code in the pull request.
### Pull Requests
All contributions are made via pull requests (PR's) to the master branch.
You must complete the checklist in the [PR template](https://github.com/cgre-aachen/gempy/blob/master/.github/PULL_REQUEST_TEMPLATE.md) before we will review the PR and consider merging your contribution.
================================================
FILE: DevelopersGuide.md
================================================
Before a release.
----------------
# set version number in setup.py, also in the config file of the documentation and init of the package
- [ ] setup.py
- [ ] gempy.__init__
> Note: in the config for sphinx~ this is taken from gempy.__init__
Requirements version
--------------------
- requirements.txt, optional_requirements.txt, dev_requirements.txt should either set minimum version and reject versions
Github release
--------------
# add new tag
$ git tag X.X -m "Add X.X tag for PyPI"
# push git tag
$ git push --tags origin master
PyPi release:
------------
New
```
# First create the dist
python -m build
# Second upload the distributions
twine upload dist/*
```
### Type of commits:
- ENH: Enhancement, new functionality
- BUG: Bug fix
- DOC: Additions/updates to documentation
- TST: Additions/updates to tests
- BLD: Updates to the build process/scripts
- PERF: Performance improvement
- CLN: Code cleanup
## Documentation update
The documentation is created using the [Sphinx documentation framework](https://www.sphinx-doc.org/en/master/) and the [Sphinx Gallery extension](https://sphinx-gallery.github.io/stable/index.html), which builds the documentation on basis of the repository code and the added examples. The documentation includes the tutorials and example models, which are part of the main repository, as well as additional external files.
Also, opposed to the standard approach with GitHub Actions, the documentation is created offline, to avoid an unnecessary bloating of the repository and to reduce downtimes during update.
Creating an update of the documentation can therefore be quite involved (depending on the level of changes). Please follow the steps below carefully.
### General case: using a fork
#### Create fork and perform changes
- If you don't already have one, create a fork of the main GemPy repository to your own GitHub account. Make sure to tick the box to fork _all_ branches (not only the _main_ branch).
- Clone the repository to your local computer.
- Create a new branch of the `main` repository for the subsequent pull request.
- Perform the changes, e.g.:
- Update text in the documentation
- Update examples (and/ or add new ones)
- Perform changes in code and/ or function docstrings
- etc.
- If you have performed changes before, then you can also copy these changes into the branch (Note: if you have changes in a separate branch, then they can also be copied with `git restore` or `git checkout` - please see git documentation for details).
#### Update documentation using Sphinx
- Update the documentation using sphinx in the branch where the changes were made (`main` branch or new branch based on `main`):
- Check that you have `sphinx` and `sphinx-gallery` installed;
- Change to folder with documentation from main repo with `cd docs`;
- Run update with `make html`;
- Wait... (can take some hours when run for the first time)
- The updated documentation is now in the subfolder `build/html`. Preview the generated documentation locally: open `build/html/index.html` in a web browser.
#### Add updated documentation to branch `gh-pages`
- If everything is fine, first commit all changes that were made in the main repo:
- `git add .`
- `git commit -m "update message"`
- Copy updated documentation to a temporary directory,for example `/tmp/docs-html` with:
- `mkdir /tmp/docs-html`
- `cp -R docs/build/html/* /tmp/docs-html/`
- checkout the documentation branch: `git checkout gh-pages`
- Copy the updated files into the main folder of the `gh-pages` branch: `cp -R /tmp/docs-html/* .`
- To be sure: check updated documentation, open `index.html`, now in the main folder of the repository.
- Commit all changes:
- `git add .`
- `git commit -m "Updated documentation in gh-pages branch`
#### Contribute updates back to main repository
- Push _both_ branches `main` and `gh-pages` back to your own remote GitHub profile
- Create a pull request for both branches (make sure to create the pull request for the `gh-pages` branch also to the `gh-pages` branch of the original gempy repository)
- Please include meaningful descriptions about your changes (both, in the main repo, as well as in the documnetation).
### Special case: documentation update for maintainers with repository write rights
- `git worktree add ../gempy_docs gh-pages` This will create a new folder called `gempy_docs` in the parent directory of the current repo. This folder will contain the `gh-pages` branch of the repo. This is where the docs will be pushed to.
- `cp -r --force ./docs/build/html/* ../gempy_docs/` This will copy the contents of the `docs/build/html` folder to the `VisualBayesicDocs` folder.
- `cd ../gempy_docs` This will change the current directory to the `gempy_docs` folder.
- `git add .` This will add all the files in the current directory to the staging area.
- `git commit -m "Update docs"` This will commit the changes to the `gh-pages` branch.
- `git push origin gh-pages` This will push the changes to the `gh-pages` branch of the repo.
- `cd ../gempy` This will change the current directory back to the `gempy` folder.
================================================
FILE: LICENSE
================================================
Copyright (c) 2020-2023 The GemPy Engine Developers
EUROPEAN UNION PUBLIC LICENCE v. 1.2
EUPL © the European Union 2007, 2016
This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined
below) which is provided under the terms of this Licence. Any use of the Work,
other than as authorised under this Licence is prohibited (to the extent such
use is covered by a right of the copyright holder of the Work).
The Work is provided under the terms of this Licence when the Licensor (as
defined below) has placed the following notice immediately following the
copyright notice for the Work:
Licensed under the EUPL
or has expressed by any other means his willingness to license under the EUPL.
1. Definitions
In this Licence, the following terms have the following meaning:
- ‘The Licence’: this Licence.
- ‘The Original Work’: the work or software distributed or communicated by the
Licensor under this Licence, available as Source Code and also as Executable
Code as the case may be.
- ‘Derivative Works’: the works or software that could be created by the
Licensee, based upon the Original Work or modifications thereof. This Licence
does not define the extent of modification or dependence on the Original Work
required in order to classify a work as a Derivative Work; this extent is
determined by copyright law applicable in the country mentioned in Article 15.
- ‘The Work’: the Original Work or its Derivative Works.
- ‘The Source Code’: the human-readable form of the Work which is the most
convenient for people to study and modify.
- ‘The Executable Code’: any code which has generally been compiled and which is
meant to be interpreted by a computer as a program.
- ‘The Licensor’: the natural or legal person that distributes or communicates
the Work under the Licence.
- ‘Contributor(s)’: any natural or legal person who modifies the Work under the
Licence, or otherwise contributes to the creation of a Derivative Work.
- ‘The Licensee’ or ‘You’: any natural or legal person who makes any usage of
the Work under the terms of the Licence.
- ‘Distribution’ or ‘Communication’: any act of selling, giving, lending,
renting, distributing, communicating, transmitting, or otherwise making
available, online or offline, copies of the Work or providing access to its
essential functionalities at the disposal of any other natural or legal
person.
2. Scope of the rights granted by the Licence
The Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
sublicensable licence to do the following, for the duration of copyright vested
in the Original Work:
- use the Work in any circumstance and for all usage,
- reproduce the Work,
- modify the Work, and make Derivative Works based upon the Work,
- communicate to the public, including the right to make available or display
the Work or copies thereof to the public and perform publicly, as the case may
be, the Work,
- distribute the Work or copies thereof,
- lend and rent the Work or copies thereof,
- sublicense rights in the Work or copies thereof.
Those rights can be exercised on any media, supports and formats, whether now
known or later invented, as far as the applicable law permits so.
In the countries where moral rights apply, the Licensor waives his right to
exercise his moral right to the extent allowed by law in order to make effective
the licence of the economic rights here above listed.
The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to
any patents held by the Licensor, to the extent necessary to make use of the
rights granted on the Work under this Licence.
3. Communication of the Source Code
The Licensor may provide the Work either in its Source Code form, or as
Executable Code. If the Work is provided as Executable Code, the Licensor
provides in addition a machine-readable copy of the Source Code of the Work
along with each copy of the Work that the Licensor distributes or indicates, in
a notice following the copyright notice attached to the Work, a repository where
the Source Code is easily and freely accessible for as long as the Licensor
continues to distribute or communicate the Work.
4. Limitations on copyright
Nothing in this Licence is intended to deprive the Licensee of the benefits from
any exception or limitation to the exclusive rights of the rights owners in the
Work, of the exhaustion of those rights or of other applicable limitations
thereto.
5. Obligations of the Licensee
The grant of the rights mentioned above is subject to some restrictions and
obligations imposed on the Licensee. Those obligations are the following:
Attribution right: The Licensee shall keep intact all copyright, patent or
trademarks notices and all notices that refer to the Licence and to the
disclaimer of warranties. The Licensee must include a copy of such notices and a
copy of the Licence with every copy of the Work he/she distributes or
communicates. The Licensee must cause any Derivative Work to carry prominent
notices stating that the Work has been modified and the date of modification.
Copyleft clause: If the Licensee distributes or communicates copies of the
Original Works or Derivative Works, this Distribution or Communication will be
done under the terms of this Licence or of a later version of this Licence
unless the Original Work is expressly distributed only under this version of the
Licence — for example by communicating ‘EUPL v. 1.2 only’. The Licensee
(becoming Licensor) cannot offer or impose any additional terms or conditions on
the Work or Derivative Work that alter or restrict the terms of the Licence.
Compatibility clause: If the Licensee Distributes or Communicates Derivative
Works or copies thereof based upon both the Work and another work licensed under
a Compatible Licence, this Distribution or Communication can be done under the
terms of this Compatible Licence. For the sake of this clause, ‘Compatible
Licence’ refers to the licences listed in the appendix attached to this Licence.
Should the Licensee's obligations under the Compatible Licence conflict with
his/her obligations under this Licence, the obligations of the Compatible
Licence shall prevail.
Provision of Source Code: When distributing or communicating copies of the Work,
the Licensee will provide a machine-readable copy of the Source Code or indicate
a repository where this Source will be easily and freely available for as long
as the Licensee continues to distribute or communicate the Work.
Legal Protection: This Licence does not grant permission to use the trade names,
trademarks, service marks, or names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the copyright notice.
6. Chain of Authorship
The original Licensor warrants that the copyright in the Original Work granted
hereunder is owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each Contributor warrants that the copyright in the modifications he/she brings
to the Work are owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each time You accept the Licence, the original Licensor and subsequent
Contributors grant You a licence to their contributions to the Work, under the
terms of this Licence.
7. Disclaimer of Warranty
The Work is a work in progress, which is continuously improved by numerous
Contributors. It is not a finished work and may therefore contain defects or
‘bugs’ inherent to this type of development.
For the above reason, the Work is provided under the Licence on an ‘as is’ basis
and without warranties of any kind concerning the Work, including without
limitation merchantability, fitness for a particular purpose, absence of defects
or errors, accuracy, non-infringement of intellectual property rights other than
copyright as stated in Article 6 of this Licence.
This disclaimer of warranty is an essential part of the Licence and a condition
for the grant of any rights to the Work.
8. Disclaimer of Liability
Except in the cases of wilful misconduct or damages directly caused to natural
persons, the Licensor will in no event be liable for any direct or indirect,
material or moral, damages of any kind, arising out of the Licence or of the use
of the Work, including without limitation, damages for loss of goodwill, work
stoppage, computer failure or malfunction, loss of data or any commercial
damage, even if the Licensor has been advised of the possibility of such damage.
However, the Licensor will be liable under statutory product liability laws as
far such laws apply to the Work.
9. Additional agreements
While distributing the Work, You may choose to conclude an additional agreement,
defining obligations or services consistent with this Licence. However, if
accepting obligations, You may act only on your own behalf and on your sole
responsibility, not on behalf of the original Licensor or any other Contributor,
and only if You agree to indemnify, defend, and hold each Contributor harmless
for any liability incurred by, or claims asserted against such Contributor by
the fact You have accepted any warranty or additional liability.
10. Acceptance of the Licence
The provisions of this Licence can be accepted by clicking on an icon ‘I agree’
placed under the bottom of a window displaying the text of this Licence or by
affirming consent in any other similar way, in accordance with the rules of
applicable law. Clicking on that icon indicates your clear and irrevocable
acceptance of this Licence and all of its terms and conditions.
Similarly, you irrevocably accept this Licence and all of its terms and
conditions by exercising any rights granted to You by Article 2 of this Licence,
such as the use of the Work, the creation by You of a Derivative Work or the
Distribution or Communication by You of the Work or copies thereof.
11. Information to the public
In case of any Distribution or Communication of the Work by means of electronic
communication by You (for example, by offering to download the Work from a
remote location) the distribution channel or media (for example, a website) must
at least provide to the public the information requested by the applicable law
regarding the Licensor, the Licence and the way it may be accessible, concluded,
stored and reproduced by the Licensee.
12. Termination of the Licence
The Licence and the rights granted hereunder will terminate automatically upon
any breach by the Licensee of the terms of the Licence.
Such a termination will not terminate the licences of any person who has
received the Work from the Licensee under the Licence, provided such persons
remain in full compliance with the Licence.
13. Miscellaneous
Without prejudice of Article 9 above, the Licence represents the complete
agreement between the Parties as to the Work.
If any provision of the Licence is invalid or unenforceable under applicable
law, this will not affect the validity or enforceability of the Licence as a
whole. Such provision will be construed or reformed so as necessary to make it
valid and enforceable.
The European Commission may publish other linguistic versions or new versions of
this Licence or updated versions of the Appendix, so far this is required and
reasonable, without reducing the scope of the rights granted by the Licence. New
versions of the Licence will be published with a unique version number.
All linguistic versions of this Licence, approved by the European Commission,
have identical value. Parties can take advantage of the linguistic version of
their choice.
14. Jurisdiction
Without prejudice to specific agreement between parties,
- any litigation resulting from the interpretation of this License, arising
between the European Union institutions, bodies, offices or agencies, as a
Licensor, and any Licensee, will be subject to the jurisdiction of the Court
of Justice of the European Union, as laid down in article 272 of the Treaty on
the Functioning of the European Union,
- any litigation arising between other parties and resulting from the
interpretation of this License, will be subject to the exclusive jurisdiction
of the competent court where the Licensor resides or conducts its primary
business.
15. Applicable Law
Without prejudice to specific agreement between parties,
- this Licence shall be governed by the law of the European Union Member State
where the Licensor has his seat, resides or has his registered office,
- this licence shall be governed by Belgian law if the Licensor has no seat,
residence or registered office inside a European Union Member State.
Appendix
‘Compatible Licences’ according to Article 5 EUPL are:
- GNU General Public License (GPL) v. 2, v. 3
- GNU Affero General Public License (AGPL) v. 3
- Open Software License (OSL) v. 2.1, v. 3.0
- Eclipse Public License (EPL) v. 1.0
- CeCILL v. 2.0, v. 2.1
- Mozilla Public Licence (MPL) v. 2
- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3
- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for
works other than software
- European Union Public Licence (EUPL) v. 1.1, v. 1.2
- Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong
Reciprocity (LiLiQ-R+).
The European Commission may update this Appendix to later versions of the above
licences without producing a new version of the EUPL, as long as they provide
the rights granted in Article 2 of this Licence and protect the covered Source
Code from exclusive appropriation.
All other changes or additions to this Appendix require the production of a new
EUPL version.
================================================
FILE: MANIFEST.in
================================================
exclude notebooks/*
exclude docs/*
exclude examples/*
include LICENSE
================================================
FILE: README.md
================================================
# <p align="center"><img src="https://github.com/gempy-project/gempy/blob/main/docs/readme_images/header_combined_slim.png" width="1000"></p>
[](https://github.com/cgre-aachen/gempy/stargazers)
[](https://github.com/cgre-aachen/gempy/network)
[](http://docs.gempy.org)
[/statusIcon)](http://terranigma-solutions.teamcity.com/viewType.html?buildTypeId=Gempy_TestingGemPy&guest=1)
[](https://www.python.org/downloads/)
[](https://pypi.org/project/gempy/)
[](https://github.com/cgre-aachen/gempy/blob/master/LICENSE)
[](https://zenodo.org/badge/latestdoi/96211155)
## What's New: GemPy 2024.1 (a.k.a GemPy v3) Release!
Welcome to the era of GemPy v3! We are thrilled to announce the release of the latest version, a product of meticulous planning, redesign, and rigorous testing. While the core essence remains intact, v3 brings significant enhancements and novelties that promise to revolutionize your geomodeling experience.
Delve into the exciting new features in the [What's New in GemPy v3](WhatsNewGemPy3.md).
The journey from GemPy v2 to v3 has been transformative. To ensure that our users don't lose out on any previous functionalities, we've shifted v2 to a package named [gempy_legacy](https://github.com/gempy-project/gempy_legacy). While the core team will not develop any new features for this version, we'll continue maintaining it based on community requests.
## Overview
[GemPy](https://www.gempy.org/) is a Python-based, **open-source geomodeling library**. It is
capable of constructing complex **3D geological models** of folded
structures, fault networks and unconformities, based on the underlying
powerful **implicit representation** approach.
## Installation
We provide the latest release version of GemPy via PyPi package services. We highly recommend using PyPi,
`$ pip install gempy[base]`
## Resources
After installation, you can either check the [notebook tutorials](https://docs.gempy.org/getting_started/get_started.html#sphx-glr-getting-started-get-started-py)
or the [video introduction](https://www.youtube.com/watch?v=n0btC5Zilyc) to get started.
Go to the [documentation site](http://docs.gempy.org/) for further information and enjoy the [tutorials and examples](https://www.gempy.org/tutorials).
For questions and support, please use [discussions](https://github.com/cgre-aachen/gempy/discussions).
If you find a bug or have a feature request, create an [issue](https://github.com/cgre-aachen/gempy/issues).
Follow these [guidelines](https://github.com/cgre-aachen/gempy/blob/WIP_readme-update-march21/CONTRIBUTING.md) to contribute to GemPy.
## Gallery
### Geometries
<p>
<table>
<tr>
<td>
<a href="https://docs.gempy.org/examples/geometries/a01_horizontal_stratigraphic.html#sphx-glr-examples-geometries-a01-horizontal-stratigraphic-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model1_nodata.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/geometries/b02_fold.html#sphx-glr-examples-geometries-b02-fold-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model2_nodata.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/geometries/c03_recumbent_fold.html#sphx-glr-examples-geometries-c03-recumbent-fold-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model3_nodata.png" width="300" />
</a>
</td>
</tr>
<tr>
<td>
<a href="https://docs.gempy.org/examples/geometries/d04_pinchout.html#sphx-glr-examples-geometries-d04-pinchout-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model4_nodata.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/geometries/e05_fault.html#sphx-glr-examples-geometries-e05-fault-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model5_nodata.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/geometries/f06_unconformity.html#sphx-glr-examples-geometries-f06-unconformity-py">
<img alt="colormapped image plot thumbnail" src="docs/readme_images/model6_nodata.png" width="300" />
</a>
</td>
</tr>
</table>
</p>
### Features
<p>
<table>
<tr>
<td>
<a href="https://docs.gempy.org/tutorials/ch1_fundamentals/ch1_3b_cross_sections.html#sphx-glr-tutorials-ch1-fundamentals-ch1-3b-cross-sections-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_ch1_3b_cross_sections_004.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/tutorials/ch1_fundamentals/ch1_4_onlap_relations.html#sphx-glr-tutorials-ch1-fundamentals-ch1-4-onlap-relations-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_ch1_4_onlap_relations_002.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/geometries/g07_combination.html#sphx-glr-examples-geometries-g07-combination-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_g07_combination_005.png" width="300" />
</a>
</td>
</tr>
<tr>
<td>
<a href="https://docs.gempy.org/tutorials/ch3-Interpolations/ch3_1_kriging_interpolation_and_simulation.html#sphx-glr-tutorials-ch3-interpolations-ch3-1-kriging-interpolation-and-simulation-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_ch3_1_kriging_interpolation_and_simulation_003.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/tutorials/ch4-Topology/ch4-1-Topology.html#sphx-glr-tutorials-ch4-topology-ch4-1-topology-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_ch4-1-Topology_005.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/tutorials/ch4-Topology/ch4-1-Topology.html#sphx-glr-tutorials-ch4-topology-ch4-1-topology-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_ch4-1-Topology_004.png" width="300" />
</a>
</td>
</tr>
</table>
### Case studies
<p>
<table>
<tr>
<td>
<a href="https://docs.gempy.org/examples/real/Alesmodel.html#sphx-glr-examples-real-alesmodel-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_Alesmodel_008.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/real/Perth_basin.html#sphx-glr-examples-real-perth-basin-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_Perth_basin_006.png" width="300" />
</a>
</td>
<td>
<a href="https://docs.gempy.org/examples/real/Greenstone.html#sphx-glr-examples-real-greenstone-py">
<img alt="colormapped image plot thumbnail" src="https://docs.gempy.org/_images/sphx_glr_Greenstone_004.png" width="300" />
</a>
</td>
</tr>
</table>
<a name="ref"></a>
## Publications using GemPy
* Marquetto, L., Jüstel, A., Troian, G.C., Reginato, P.A.R & Simões, J.C. (2024). [Developing a 3D hydrostratigraphical model of the emerged part of the Pelotas Basin along the northern coast of Rio Grande do Sul state, Brazil](https://link.springer.com/article/10.1007/s12665-024-11609-y). Environmental Earth Sciences, 83, 329.
* Brisson, S., Wellmann, F., Chudalla, N., von Harten, J., & von Hagke, C. (2023). [Estimating uncertainties in 3-D models of complex fold-and-thrust belts: A case study of the Eastern Alps triangle zone](https://www.sciencedirect.com/science/article/pii/S2590197423000046). Applied Computing and Geosciences, 18, 100115.
* Liang, Z., de la Varga, M., & Wellmann, F. (2023). [Kernel method for gravity forward simulation in implicit probabilistic geologic modeling](https://pubs.geoscienceworld.org/geophysics/article/88/3/G43/621596/Kernel-method-for-gravity-forward-simulation-in?casa_token=VjCR7rYOkKoAAAAA:W81L1AXgW_j9GiYPciBvLIdL8Zo66IzYVYiU6Ri8xLgIjbzTmpcDE74rzmAwnokX_71_XKg). Geophysics, 88(3), G43-G55.
* Kong, S., Oh, J., Yoon, D., Ryu, D. W., & Kwon, H. S. (2023). [Integrating Deep Learning and Deterministic Inversion for Enhancing Fault Detection in Electrical Resistivity Surveys](https://www.mdpi.com/2076-3417/13/10/6250). Applied Sciences, 13(10), 6250.
* Thomas, A. T., Micallef, A., Duan, S., & Zou, Z. (2023). [Characteristics and controls of an offshore freshened groundwater system in the Shengsi region, East China Sea](https://www.frontiersin.org/articles/10.3389/feart.2023.1198215/full). Frontiers in Earth Science, 11, 1198215.
* Haehnel, P., Freund, H., Greskowiak, J. & Massmann, G. (2023) [Development of a three-dimensional hydrogeological model for the island of Norderney (Germany) using GemPy](https://doi.org/10.1002/gdj3.208). Geoscience Data Journal, 00, 1–17.
* Jüstel, A., de la Varga, M., Chudalla, N., Wagner, J. D., Back, S., & Wellmann, F. (2023). [From Maps to Models-Tutorials for structural geological modeling using GemPy and GemGIS](https://jose.theoj.org/papers/10.21105/jose.00185). Journal of Open Source Education, 6(66), 185.
* Thomas, A. T., von Harten, J., Jusri, T., Reiche, S., Wellmann, F. (2022). [An integrated modeling scheme for characterizing 3D hydrogeological heterogeneity of the New Jersey shelf](https://link.springer.com/article/10.1007/s11001-022-09475-z). Marine Geophysical Research, 43, 11.
* Sehsah, H., Eldosouky, A. M., & Pham, L. T. (2022). [Incremental Emplacement of the Sierra Nevada Batholith Constrained by U-Pb Ages and Potential Field Data](https://www.journals.uchicago.edu/doi/full/10.1086/722724?casa_token=pkl8XXrtyokAAAAA:YeIh1t-qwt6AT8yz_vTj4OQapaR1_nZUjS3Az_77VZXlpyfGu0cN5DSzrz6NNjoj4Qv5iud4rdc). The Journal of Geology, 130(5), 381-391.
* von Harten, J., de la Varga, M., Hillier, M., Wellmann, F. (2021). [Informed Local Smoothing in 3D Implicit Geological Modeling](https://www.mdpi.com/2075-163X/11/11/1281). Minerals 2021, 11, 1281.
* Schaaf, A., de la Varga, M., Wellmann, F., & Bond, C. E. (2021). [Constraining stochastic 3-D structural geological models with topology information using approximate Bayesian computation in GemPy 2.1](https://gmd.copernicus.org/articles/14/3899/2021/gmd-14-3899-2021.html). Geosci. Model Dev., 14(6), 3899-3913. doi:10.5194/gmd-14-3899-2021
* Güdük, N., de la Varga, M. Kaukolinna, J. and Wellmann, F. (2021). [Model-Based Probabilistic Inversion Using Magnetic Data: A Case Study on the Kevitsa Deposit](https://www.mdpi.com/2076-3263/11/4/150), _Geosciences_, 11(4):150.
* Wu, J., & Sun, B. (2021). [Discontinuous mechanical analysis of manifold element strain of rock slope based on open source Gempy](https://www.e3s-conferences.org/articles/e3sconf/abs/2021/24/e3sconf_caes2021_03084/e3sconf_caes2021_03084.html). In E3S Web of Conferences (Vol. 248, p. 03084). EDP Sciences.
* Stamm, F. A., de la Varga, M., and Wellmann, F. (2019). [Actors, actions, and uncertainties: optimizing decision-making based on 3-D structural geological models](https://se.copernicus.org/articles/10/2015/2019/se-10-2015-2019.html), Solid Earth, 10, 2015–2043.
* Wellmann, F., Schaaf, A., de la Varga, M., & von Hagke, C. (2019). [From Google Earth to 3D Geology Problem 2: Seeing Below the Surface of the Digital Earth](
https://www.sciencedirect.com/science/article/pii/B9780128140482000156).
In Developments in Structural Geology and Tectonics (Vol. 5, pp. 189-204). Elsevier.
Please let us know if your publication is missing!
A continuously growing list of gempy-applications (e.g. listing real-world models) can be found [here](https://hackmd.io/@Japhiolite/B1juPvCxc).
## References
* de la Varga, M., Schaaf, A., and Wellmann, F. (2019). [GemPy 1.0: open-source stochastic geological modeling and inversion](https://gmd.copernicus.org/articles/12/1/2019/gmd-12-1-2019.pdf), Geosci. Model Dev., 12, 1-32.
* Wellmann, F., & Caumon, G. (2018). [3-D Structural geological models: Concepts, methods, and uncertainties.](https://hal.univ-lorraine.fr/hal-01921494/file/structural_models_for_geophysicsHAL.pdf) In Advances in Geophysics (Vol. 59, pp. 1-121). Elsevier.
* Calcagno, P., Chilès, J. P., Courrioux, G., & Guillen, A. (2008). [Geological modelling from field data and geological knowledge: Part I. Modelling method coupling 3D potential-field interpolation and geological rules](https://www.sciencedirect.com/science/article/abs/pii/S0031920108001258). Physics of the Earth and Planetary Interiors, 171(1-4), 147-157.
* Lajaunie, C., Courrioux, G., & Manuel, L. (1997). [Foliation fields and 3D cartography in geology: principles of a method based on potential interpolation](https://link.springer.com/article/10.1007/BF02775087). Mathematical Geology, 29(4), 571-584.
================================================
FILE: WhatsNewGemPy3.md
================================================
## **What's New: GemPy v3 Release!**
**Introducing GemPy Version 3: Future-Proofing GemPy and its Role in the Open-Source Geoscience Ecosystem**
We are excited to announce the release of GemPy v3, which has been meticulously reworked to enhance robustness, reliability, and ease of installation. With this release, we aim to strengthen GemPy’s position as one of the cornerstones in the open-source geoscience ecosystem. Our ongoing commitment is to develop and provide a reliable and essential tool that promotes transparency and openness in geological modeling and beyond - thereby empowering users to realize their projects and implement novel scientific approaches.
**1. Transition from GemPy v2 to v3: Significant Changes**
While the core essence of GemPy remains unchanged, the upgrade from v2 to v3 introduces substantial changes to workflow steps and function names, potentially affecting familiar processes. To ensure that our users retain full access to previous functionalities and can continue running their existing GemPy v2-based projects, we have transitioned v2 to a package named [gempy_legacy](https://github.com/gempy-project/gempy_legacy).
We have updated our documentation and tutorials to reflect the changes in GemPy v3 and are preparing additional support materials, including short videos that showcase key functionalities of the new version.
Although the core GemPy team will not develop new features for the legacy version, we are committed to maintaining it based on community requests.
**2. Refined API**
The GemPy API has been extensively reworked to increase robustness and readiness for production environments. We've redesigned the API and data classes to optimize utility, minimize code repetition, and boost performance.
**3. Transitioning from Theano/Aesara to NumPy & PyTorch**
Due to discontinued support and frequent dependency issues with Theano/Aesara, we have decisively moved away from using these frameworks in GemPy (this transition also means that PyMC is no longer supported). Instead, to ensure GemPy's future-proofness, v3 incorporates a flexible tensor library framework that currently utilizes **`numpy`** and has optional dependencies on **`PyTorch`**. Our restructured code makes it easy to integrate additional tensor libraries in the backend. Additionally, similar functionalities to those provided by PyMC will be part of the upcoming **`gempy_probability`** module, which will enhance GemPy’s capabilities in probabilistic modeling.
**4. General Refactoring for Greater Robustness**
We've undertaken a refactoring of GemPy to enhance its robustness and reliability. Key improvements include:
- **Enhanced State Management:** We’ve made improvements to ensure consistently valid states in GemPy. Before, invalid states could arise during data adjustments.
- **Optimized Dependency Management:** We've streamlined the handling of dependencies. Most dependencies are now optional, which simplifies setup and integration for users.
- **Modular Design:** We've divided GemPy into several distinct libraries. This modular approach allows users to leverage specific functionalities according to their needs:
- **`gempy_engine`** [here](https://github.com/gempy-project/gempy_engine): Handles core computational algorithms.
- **`gempy_viewer`** [here](https://github.com/gempy-project/gempy_viewer): Provides visualization capabilities.
- **`gempy_plugins`** [here](https://github.com/gempy-project/gempy_plugins): Supports additional functionalities through plugins.
- **`gempy_probability`**: Focuses on probabilistic modeling and uncertainty analysis (Coming soon).
- **`gempy`**: Now leaner and primarily focused on documentation and managing the API.
**5. Octree Implementation for Efficient Model Computation**
We have introduced an octree-based approach in GemPy v3 to optimize model computation and iteration times.
**6. Dual Contouring for High-Quality Meshing**
To ensure compatibility with our new octree approach, we have implemented dual contouring in GemPy v3. This method guarantees high-quality mesh generation, enhancing both the precision and visual appeal of 3D geological models.
**7. Initial Steps in LiquidEarth Integration**
We have begun integrating GemPy with the [LiquidEarth app](https://www.terranigma-solutions.com/liquid-earth-one) to significantly extend GemPy's applicability in practical scenarios, enhancing workflow integration and data visualization capabilities. LiquidEarth, developed by the same main developers as GemPy, is a commercial, cloud-based software solution. It empowers experts to visualize, edit, and communicate geological data and models in intuitive 3D, facilitating real-time collaboration across multiple devices, independent of location.
This integration aims to leverage LiquidEarth's commercial platform, which utilizes emerging technologies to provide novel environments for working with 3D geoscience data and focuses on ease of use and on offering a low entry barrier. Simultaneously, GemPy will continue to serve as a completely free and open-source tool, offering a flexible, reliable, and transparent solution for 3D geological modeling. Together, this direct integration between GemPy and LiquidEarth is designed to maximize the strengths of both systems: enhancing the visual representation of 3D geoscience projects, connecting them to the broader open-source geoscience ecosystem, and enhancing the utility of GemPy for companies and industry applications.
1. **Other Changes, Prototypes, and Future Developments**
GemPy v3 introduces numerous other smaller changes and feature prototypes. These include optimizations to the nugget effect for improved model stability, the inclusion of external implicit functions for modeling features such as dykes, and a prototype to accommodate fault zone thickness. Additionally, improved caching mechanisms have been implemented to enhance performance. One of the most requested features, which we plan to address in the near future, is the implementation of finite faults. Stay tuned for future updates as we continue to expand the GemPy documentation, publish additional examples, and progress with developments.
---
**In Conclusion**
With the release of v3, we are reinforcing the role of GemPy as a key contributing piece within the larger open-source geoscience ecosystem. This update not only improves core functionalities but also introduces important integrations and enhancements that make it more robust and pave the way for future developments. Dedicated to advancing GemPy as a valuable tool for both academic research and industry applications, our team values your ongoing support and feedback. We invite you to explore the new features and join us in shaping the future of open-source geosciences. Looking forward to the results and innovative applications you achieve with this new version of GemPy!
================================================
FILE: docs/.buildinfo
================================================
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 6b4aef288104d0a5b66327c5a7278fec
tags: 645f666f9bcd5a90fca523b33c5a78b7
================================================
FILE: docs/.nojekyll
================================================
================================================
FILE: docs/CNAME
================================================
gempy.rocks
================================================
FILE: docs/Makefile
================================================
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SPHINXPROJ = gempy
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
html-noplot: export SPHX_GLR_THEME = $(theme)
html-noplot:
$(SPHINXBUILD) -D plot_gallery=0 -b html $(ALLSPHINXOPTS) $(SOURCEDIR) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
================================================
FILE: docs/__init__.py
================================================
================================================
FILE: docs/developers_notes/dev_log/2022-2023.md
================================================
## Refactoring for v3 notes:
- I want to make proper subpackages of the library
- Once the subpackages are done we can start moving them out to different repos
- First proposition:
- integration tests
- notebooks
- scripts
- examples
- GemPy
- Plugins:
- Addons
- Assets
- Bayesian
- API
- API Modules
- gempy_api
- Plotting
- Core
- Data
- Interpolation
- Theano
- GemPy Engine
> I think Pluggins and addons have to be split depending on how couple are they to the interpolator?
## Refactoring notes:
Doing:
- [-] Refactoring interpolation (Aug-Sep 2023)
- TODO:
- [ ] Saving and loading models (Sep-Oct 2023)
- [ ] Refactoring Geophysics (Oct-Nov 2023)
- [ ] Refactoring topology
- [ ] Orientations from surface points - Move to gempy_plugins
================================================
FILE: docs/developers_notes/dev_log/2025_05.md
================================================
### From gempy_prob notes:
**Saving models**
- ? 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?
- A way to save the model already with the correct **nugget effects** instead of having to "load nuggets"
# TODO:
-[ ] Saving and loading models
- [x] Make tests passing for InterpOptions serializable
- [x] Dealing with large numpy arrays
- [x] Trying to have a better implementation for deserializing complex fields
- [ ] Make save and load function
-[ ] Better api for nugget effect optimization
## Saving models
- From gempy
- StructuralFrame
- OrientationsTable
- SurfacePointsTable
- From Engine
- Input
- EngineGrid
- GeophysicsInput
- InterpolationOptions
- InputDataDescriptor
- InterpolatorInput
- Solutions (Not sure if I want to save them)
- RawArraysSolutions
- Solutions
- Testing
- [ ] 10 Test to go in modules
- [ ] test api
## What do I have in the engine server logic?
================================================
FILE: docs/developers_notes/dev_log/log_2024-05.md
================================================
## Optimizing solver
### Debugging Vector model 1
#### Questions
- [x] How many times do the system of equations gets solved?
- Without caching is 1 per scalar field x 2 (centers and corners) x n_octree levels
- [x] How many iterations we need to reach the solution?
- Model 1 takes 5000 iterations (actually starts to diverge after 4k)
- [ ] Has Pykeops become slower with the latest additions to the gradient?
- [x] Is the Jacobi pre-conditioner bad for all cases?
- Model 1:
- Numpy Jacobi: Converge in
- 1602 iterations and reach 5000
- time 150 sec
- More or less good results: Mesh closed
- Numpy No jacobi
- 1018 iterations and reach 5000
- time 150 sec too
- Results similar? I would say maybe a bit worse
- Pykeosp No jacobi
- 92 iterations and reach 5000
- time 324 (all on running the solver)
- [ ] Can be that pykeops is faster than invert the matrix but still slower that any other CG
- Since the matrix is already constructed, it makes sense
- [ ] Then which cases is worth using pykeops? The number of iterations will need to be rather small
Will it make sense on edits reusing the previous weights? This is going to need a hell of orchestrator
- [ ] How much memory takes numpy direct, numpy cg and pykeops cg
- numpy direct: 1.5 or so
- numpy cg: 1.25
- pykeops cg: 1.1
- **Note** Now the exporting takes quite a lot of memory
### Experiments conclusions
- Using pykeops CG to solve a ill posed problem is not realistic
- if the model fits in memory probably the best thing to do is make the first run in torch an use the weights as initial point
- if the model does not fit in memory we should try to construct the sparse version of it and try to run the incomplete cholesky decomposition
- I didn't find any improvement using the Jacobi pre-conditioner. Mostly the opposite
- With ichol we get different results with numpy or pykeops
- Pykeops
- ichol does not give super good results either at least before the convergence happens
- Model 1 converge **without** ichol on 1290 and 8518
- Model 1 converge **With** ichol 496 (506 in pykeops) 5080 (4995 in pykeops)
### TODO:
- [x] Clean solver interface
- [ ] Add citation for pymatting
### Things to try:
- [x] Pykeops as linear operator to use exact solver
- Does not look good. Probably is not even possible mathematically
- [x] Falkon
### Optimal solver
- Tools we have:
- keops
- CG
- Incomplete cholesky decomposition
- passing the weights as initial point
- Variables to choose what to use:
- Size of the covariance matrix
- Number of CG iterations we are going to need. This depends on:
- Conditional number
- Do we have weights
- **Strategy**:
- If the Number of CG iterations is a handful -> **use keops**
- If the number of CG iterations is large:
- Use **direct solver** if the matrix fits in memory
- Then for changes hopefully we can use the weights as initial point and use **keops**
- If the matrix does not fit in memory:
- Construct the sparse version of the matrix
- Use **incomplete cholesky decomposition**
- Once we have the decomposition is better to use **keops** to solve the system (except if the number of iterations has to be very large)
- Optimizing nugget effects still seems the best way to do this
- If memory is not an issue. **Direct solver with torch and keops for exporting seems to be the best option**
#### Notes
- [ ] I need to make similar default env file for gempy itself and using the default when we call the engine or whatever
================================================
FILE: docs/developers_notes/dev_log/log_2024-06-25.md
================================================
## Goals
- [ ] 1. Fixing 2024.2.0 for whatever version of python that is not working
## TODO:
- [x] Analyze error:
- [x] Set up environment 3.11
- [x] Fixing the lines of code
- [x] Test the code
- [ ] Release hot fix
## Extra points:
- [ ] Setting up github actions
- [ ] Categories for the tests like I did in subsurface
- [ ] Run tests in python 3.10, 3.11 and 3.12
================================================
FILE: docs/developers_notes/dev_log/log_2024-06.md
================================================
# Refactoring grid to add transform
## TODO:
- [x] Rotation of pyvista grid
- [x] Rotation of pyvista meshes
- [ ] Run something with octrees again
- [ ] **We do need settings presets**
## Release Notes:
- (Beta) Pivot grids
- Analysis tools:
- Eigenvalues and condition numbers
- Transformed data plots
- Octree refinement evaluation
- Improved octree testing
- LiquidEarth integration
- Chunking for large grids
## Notes:
### Optimizing interpolation June 2024
- Create_grad_kernel is call 27 times
### Wholes issue
- Spremberg with 1.5 std of extra refinement:
Number of voxels marked by stats: 424 of torch.Size([512]).
Number of voxels marked total by corners: 281
Dense Grid would be 512 voxels
Number of voxels marked by stats: 2535 of torch.Size([3568]).
Number of voxels marked total by corners: 1492
Dense Grid would be 4096 voxels
Number of voxels marked by stats: 12148 of torch.Size([21152]).
Number of voxels marked total by corners: 7614
Dense Grid would be 32768 voxels
Number of voxels marked by stats: 69619 of torch.Size([101432]).
Number of voxels marked total by corners: 37423
Dense Grid would be 262144 voxels
Chunking done: 12 chunks
- Spremberg with 1
Number of voxels marked by stats: 408 of torch.Size([512]).
Number of voxels marked total by corners: 281
Dense Grid would be 512 voxels
Number of voxels marked by stats: 1953 of torch.Size([3504]).
Number of voxels marked total by corners: 1492
Dense Grid would be 4096 voxels
Number of voxels marked by stats: 8632 of torch.Size([16856]).
Number of voxels marked total by corners: 7612
Dense Grid would be 32768 voxels
Chunking done: 13 chunks
Number of voxels marked by stats: 47653 of torch.Size([79080]).
Number of voxels marked total by corners: 37408
Dense Grid would be 262144 voxels
Chunking done: 10 chunks
### Other:
{'_cached_pivot': [200, 200, 0],
'_is_default_transform': False,
'position': array([0., 0., 0.]),
'rotation': array([ 0., -0., -45.]),
'scale': array([1., 1., 1.])}
## Questions:
================================================
FILE: docs/index.html
================================================
<!DOCTYPE html>
<meta http-equiv="refresh" content="0; url=./build/html/index.html" />
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>
================================================
FILE: docs/main_docstrings
================================================
:class:`gempy.interpolator.InterpolatorData`
:class:`gempy.data_management.InputData`
:class:`gempy.data_management.GridClass`
:class:`_pn.core.frame.DataFrame`
:class:`_np.ndarray`
:class:`matplotlib.pyplot.Figure`
:class:`DataFrame`
:class:`ndarray`
itype(str {'all', 'interfaces', 'orientaions', 'formations', 'series', 'faults', 'fautls_relations'}): input
data type to be retrieved.
================================================
FILE: docs/source/_static/nothing.txt
================================================
================================================
FILE: docs/source/_templates/base.rst
================================================
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. auto{{ objtype }}:: {{ objname }}
.. include:: ../gen_modules/backreferences/{{fullname}}.{{item}}examples
.. raw:: html
<div class="sphx-glr-clear"></div>
================================================
FILE: docs/source/_templates/class.rst
================================================
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:no-undoc-members:
{% block examples%}
.. include:: ../gen_modules/backreferences/{{fullname}}.examples
.. raw:: html
<div class="sphx-glr-clear"></div>
{% endblock %}
{% block methods %}
{% if methods %}
.. rubric:: Methods
.. autosummary::
{% for item in methods %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block attributes %}
{% if attributes %}
.. rubric:: Attributes
.. autosummary::
{% for item in attributes %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
================================================
FILE: docs/source/_templates/module.rst
================================================
{{ fullname | escape | underline}}
.. automodule:: {{ fullname }}
{% block functions %}
{% if functions %}
.. rubric:: Functions
.. autosummary::
{% for item in functions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block classes %}
{% if classes %}
.. rubric:: Classes
.. autosummary::
{% for item in classes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block exceptions %}
{% if exceptions %}
.. rubric:: Exceptions
.. autosummary::
{% for item in exceptions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
================================================
FILE: docs/source/api_reference.rst
================================================
Code
====
.. toctree::
:maxdepth: 3
GemPy API
---------
.. currentmodule:: gempy
.. autosummary::
:toctree: GemPy API
:template: base.rst
compute_model
create_geomodel
map_stack_to_surfaces
structural_elements_from_borehole_set
set_section_grid
set_active_grid
set_topography_from_random
set_topography_from_file
set_topography_from_subsurface_structured_grid
set_topography_from_arrays
set_custom_grid
set_centered_grid
generate_example_model
set_fault_relation
set_is_fault
set_is_finite_fault
add_surface_points
add_orientations
delete_surface_points
delete_orientations
create_orientations_from_surface_points_coords
modify_surface_points
modify_orientations
add_structural_group
remove_structural_group_by_index
remove_structural_group_by_name
remove_element_by_name
calculate_gravity_gradient
Plot
----
.. currentmodule:: gempy_viewer
.. autosummary::
:toctree: Plot
:template: base.rst
plot_2d
plot_3d
Data Classes
============
.. toctree::
:maxdepth: 3
Modeling Classes
----------------
.. module:: gempy.core.data
.. autosummary::
:toctree: Modeling Classes
:template: class.rst
GeoModel
StructuralFrame
StructuralGroup
StructuralElement
SurfacePointsTable
OrientationsTable
InterpolationOptions
Grid
Topography
Solutions
RawArraysSolution
FaultsData
GeophysicsInput
Transform
Helper Classes
--------------
.. currentmodule:: gempy.core.data
.. autosummary::
:toctree: Helper Classes
:template: class.rst
ImporterHelper
GemPyEngineConfig
ColorsGenerator
Enumerators
-----------
.. currentmodule:: gempy.core.data
.. autosummary::
:toctree: Modeling Classes
:template: class.rst
StackRelationType
GlobalAnisotropy
AvailableBackends
FaultsRelationSpecialCase
================================================
FILE: docs/source/conf.py
================================================
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# GemPy documentation build configuration file, created by
# sphinx-quickstart on Tue Jul 4 10:28:52 2017.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import datetime
import os
import sys
import warnings
import pyvista
from sphinx_gallery.sorting import FileNameSortKey
import gempy
# External examples:
sys.path.insert(0, os.path.abspath('.'))
import make_external_gallery
make_external_gallery.make_example_gallery()
# region PyVista Configuration
pyvista.set_error_output_file('errors.txt')
pyvista.OFF_SCREEN = True # Not necessary - simply an insurance policy. Ensure that offscreen rendering is used for docs generation
pyvista.set_plot_theme('document') # Preferred plotting style for documentation
pyvista.FIGURE_PATH = os.path.join(os.path.abspath('_images/'), 'auto-generated/') # Save figures in specified directory
pyvista.BUILDING_GALLERY = True
if not os.path.exists(pyvista.FIGURE_PATH):
os.makedirs(pyvista.FIGURE_PATH)
sys.path.insert(0, os.path.abspath('.'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.mathjax',
'sphinx.ext.viewcode',
'sphinx.ext.githubpages',
'sphinx.ext.napoleon',
'sphinx_gallery.gen_gallery',
"pyvista.ext.plot_directive",
"sphinx_design",
'sphinx_automodapi.automodapi',
'sphinx_automodapi.smart_resolver',
]
if run_intersphinx := False: # Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {
'numpy' : ('https://numpy.org/doc/stable/', None),
'python' : ('https://docs.python.org/{.major}'.format(sys.version_info), None),
'matplotlib': ('https://matplotlib.org/stable/', None),
'mayavi' : ('http://docs.enthought.com/mayavi/mayavi', None),
'sklearn' : ('https://scikit-learn.org/stable', None),
'skimage' : ('https://scikit-image.org/docs/dev/', None),
'pyvista' : ('https://docs.pyvista.org/', None),
'sphinx' : ('https://www.sphinx-doc.org/en/master/', None),
'pandas' : ('https://pandas.pydata.org/pandas-docs/stable/', None),
}
napoleon_google_docstring = True
autodoc_default_options = {
'autodoc_default_flags': ['members'],
'members' : None,
'member-order' : 'bysource',
'special-members' : '__init__',
'undoc-members' : True,
'exclude-members' : '__weakref__'
}
autosummary_generate = True
autosummary_imported_members = True
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
source_suffix = ['.rst']
# The master toctree document.
master_doc = 'index'
# region General information about the project.
project = 'GemPy'
year = datetime.date.today().year
copyright = u'2017-{}, Gempy Developers'.format(year)
with open(os.path.join(os.path.dirname(__file__), '../../AUTHORS.rst'), 'r') as f:
author = f.read()
version = gempy.__version__
release = gempy.__version__ # The full version, including alpha/beta/rc tags.
today_fmt = '%d %B %Y'
language = 'en'
# endregion
# region building the documentation configuration
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', '**.ipynb_checkpoints', 'Thumbs.db', '.DS_Store', 'errors.txt', '../test']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
highlight_language = 'python3'
todo_include_todos = True # If true, `todo` and `todoList` produce output, else they produce nothing.
linkcheck_retries = 3
linkcheck_timeout = 500
# * -- Sphinx Gallery Options
sphinx_gallery_conf = {
# path to your examples scripts
"examples_dirs" : [
"../../examples/tutorials",
"../../examples/examples",
# "../../examples/integrations",
],
# path where to save gallery generated examples
"gallery_dirs" : [
'tutorials',
"examples",
# 'integrations'
],
"filename_pattern" : r"\.py",
# "ignore_pattern": r"(__init__\.py|ch1_7_3d_visualization\.py|mik\.py)$", # Exclude specific files: uncomment for faster build as long as examples are broken
"download_all_examples" : False, # Remove the "Download all examples" button from the top level gallery
"within_subsection_order": FileNameSortKey, # Sort gallery example by file name instead of number of lines (default)
"backreferences_dir" : 'gen_modules/backreferences', # directory where function granular galleries are stored
"doc_module" : ("gempy", "gempy_viewer", 'numpy', 'pandas', 'matplotlib'), # Modules for which function level galleries are created. In
"image_scrapers" : ('pyvista', 'matplotlib'),
'first_notebook_cell' : ("%matplotlib inline\n"
"from pyvista import set_plot_theme\n"
"set_plot_theme('document')"),
'reference_url' : {
'gempy': None, # The module you locally document uses None
'numpy': 'https://numpy.org/doc/stable/'
},
}
# endregion
# region -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'
html_theme_options = {
'github_user' : 'gempy-project',
'github_repo' : 'gempy',
'github_type' : 'star',
'logo' : 'logos/gempy.png',
'logo_name' : False,
'travis_button' : False,
'page_width' : '1200px',
'fixed_sidebar' : False,
'show_related' : True,
'sidebar_collapse': True,
}
# Custom sidebar templates, maps document names to template names.
# html_sidebars = { '**': ['globaltoc.html', 'relations.html', 'sourcelink.html', 'searchbox.html']}
html_sidebars = {'**': ['about.html', 'navigation.html',
'relations.html',
'searchbox.html',
'donate.html', ]}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_favicon = '_static/logos/favicon.ico'
# endregion
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'GemPydoc'
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [(master_doc, 'gempy', 'GemPy Documentation', [author], 1)]
# region other options
# Remove matplotlib agg warnings from generated doc when using plt.show
warnings.filterwarnings("ignore", category=UserWarning,
message='Matplotlib is currently using agg, which is a'
' non-GUI backend, so cannot show the figure.')
# endregion
================================================
FILE: docs/source/index.rst
================================================
.. GeMpy documentation master file, created by
sphinx-quickstart on Wed Dec 14 12:44:40 2016.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
.. ../logos/gempy1.png
:width: 30%
About
=====
Open-source software for implicit 3D structural geological modeling in Python.
******************************************************************************
Overview
--------
``GemPy`` is a Python-based, community-driven, **open-source geomodeling library**. It is
capable of constructing complex **3D geological models** including various features such as
fold structures, fault networks and unconformities, based on an underlying
powerful **implicit** approach. From the ground up, ``GemPy`` was designed to be easily embedded in probabilistic frameworks for conducting
uncertainty analysis regarding subsurface structures.
.. Check out the documentation either in `gempy.org <https://www.gempy.org/>`_
(better option), or `read the docs <http://gempy.readthedocs.io/>`_.
3D models created with GemPy may look like this:
.. image:: ./_images/AlesModel_example.png
Contents:
.. toctree::
:maxdepth: 1
self
installation
.. toctree::
:maxdepth: 1
tutorials/index
examples/index
.. toctree::
:maxdepth: 1
external/external_examples
.. toctree::
:maxdepth: 1
api_reference
Features
--------
Geological features
^^^^^^^^^^^^^^^^^^^
``GemPy`` is capable of modeling complex 3D geological scenarios, including:
* Multiple conformal layers (e.g. sequences of sedimentary layers)
* Several sequences of layers, with conformal continuation or unconformities
* Magmatic bodies of (almost) arbitrary shapes
* Faults (offset calculated automatically from affected geological objects)
* Full fault networks (faults affecting faults)
* Folds (affecting single layers or entire layer stacks, including overturned and recumbent folds)
Combining these elements in GemPy allows for the generation of realistic
3D geological models, on a par with most commercial geomodeling software.
Interpolation approach
^^^^^^^^^^^^^^^^^^^^^^
The generation of complex structural settings is based on the powerful
interpolation algorithm underlying ``GemPy``\ , a unviersal cokriging method
devised by `Lajaunie et al. (1997)` and extended by `Calcagno et al. (2008)`\ .
This method is used to interpolate a 3D scalar field, such that geologically
significant interfaces are isosurfces in this field.
The algorithm allows for a direct integration of two of the most relevant
geological input data types:
* **Surface contact points**\ : 3D coordinates of points marking the boundaries
between different features (e.g. layer interfaces, fault planes, unconformities).
* **Orientation measurements**\ : Orientation of the poles perpendicular to
the dipping of surfaces at any point in 3D space.
``GemPy`` also allows for the definition of topological elements such as
combining multiple stratigraphic sequences and
complex fault networks to be considered in the modeling process.
.. image:: ./_images/data_to_model.png
Integrated visualization
^^^^^^^^^^^^^^^^^^^^^^^^
Models generated with ``GemPy`` can be visualized in several ways:
* direct visualization of 2D model sections (or geological maps) using
`matplotlib <https://matplotlib.org/stable/index.html>`_, including hillshading and other options for intuitive
representation of results;
* 3D visualization using `Pyvista <https://www.pyvista.org>`_, including interactive plots
.. image:: _images/3D_view_pyvista_example.png
:target: https://cgre-aachen.github.io/gempy/_images/sphx_glr_ch1_1_basics_009.png
:width: 70%
For a more detailed elaboration of the theory behind ``GemPy``\ , we refer to the
**open access scientific publication**\ :
`\ "GemPy 1.0: open-source stochastic geological modeling and inversion"
by de la Varga et al. (2019) <https://www.geosci-model-dev.net/12/1/2019/gmd-12-1-2019.pdf>`_.
Publications using GemPy
------------------------
- Marquetto, L., Jüstel, A., Troian, G.C., Reginato, P.A.R & Simões, J.C. (2024). `Developing a 3D hydrostratigraphical model of the emerged part of the Pelotas Basin along the northern coast of Rio Grande do Sul state, Brazil <https://link.springer.com/article/10.1007/s12665-024-11609-y>`_. Environmental Earth Sciences, 83, 329.
- Brisson, S., Wellmann, F., Chudalla, N., von Harten, J., & von Hagke, C. (2023). `Estimating uncertainties in 3-D models of complex fold-and-thrust belts: A case study of the Eastern Alps triangle zone <https://www.sciencedirect.com/science/article/pii/S2590197423000046>`_. Applied Computing and Geosciences, 18, 100115.
- Liang, Z., de la Varga, M., & Wellmann, F. (2023). `Kernel method for gravity forward simulation in implicit probabilistic geologic modeling <https://pubs.geoscienceworld.org/geophysics/article/88/3/G43/621596/Kernel-method-for-gravity-forward-simulation-in?casa_token=VjCR7rYOkKoAAAAA:W81L1AXgW_j9GiYPciBvLIdL8Zo66IzYVYiU6Ri8xLgIjbzTmpcDE74rzmAwnokX_71_XKg>`_. Geophysics, 88(3), G43-G55.
- Kong, S., Oh, J., Yoon, D., Ryu, D. W., & Kwon, H. S. (2023). `Integrating Deep Learning and Deterministic Inversion for Enhancing Fault Detection in Electrical Resistivity Surveys <https://www.mdpi.com/2076-3417/13/10/6250>`_. Applied Sciences, 13(10), 6250.
- Thomas, A. T., Micallef, A., Duan, S., & Zou, Z. (2023). `Characteristics and controls of an offshore freshened groundwater system in the Shengsi region, East China Sea <https://www.frontiersin.org/articles/10.3389/feart.2023.1198215/full>`_. Frontiers in Earth Science, 11, 1198215.
- Haehnel, P., Freund, H., Greskowiak, J., & Massmann, G. (2023). `Development of a three-dimensional hydrogeological model for the island of Norderney (Germany) using GemPy <https://doi.org/10.1002/gdj3.208>`_. Geoscience Data Journal, 00, 1–17.
- Jüstel, A., de la Varga, M., Chudalla, N., Wagner, J. D., Back, S., & Wellmann, F. (2023). `From Maps to Models-Tutorials for structural geological modeling using GemPy and GemGIS <https://jose.theoj.org/papers/10.21105/jose.00185>`_. Journal of Open Source Education, 6(66), 185.
- Thomas, A. T., von Harten, J., Jusri, T., Reiche, S., & Wellmann, F. (2022). `An integrated modeling scheme for characterizing 3D hydrogeological heterogeneity of the New Jersey shelf <https://link.springer.com/article/10.1007/s11001-022-09475-z>`_. Marine Geophysical Research, 43, 11.
- Sehsah, H., Eldosouky, A. M., & Pham, L. T. (2022). `Incremental Emplacement of the Sierra Nevada Batholith Constrained by U-Pb Ages and Potential Field Data <https://www.journals.uchicago.edu/doi/full/10.1086/722724?casa_token=pkl8XXrtyokAAAAA:YeIh1t-qwt6AT8yz_vTj4OQapaR1_nZUjS3Az_77VZXlpyfGu0cN5DSzrz6NNjoj4Qv5iud4rdc>`_. The Journal of Geology, 130(5), 381-391.
- von Harten, J., de la Varga, M., Hillier, M., & Wellmann, F. (2021). `Informed Local Smoothing in 3D Implicit Geological Modeling <https://www.mdpi.com/2075-163X/11/11/1281>`_. Minerals 2021, 11, 1281.
- Schaaf, A., de la Varga, M., Wellmann, F., & Bond, C. E. (2021). `Constraining stochastic 3-D structural geological models with topology information using approximate Bayesian computation in GemPy 2.1 <https://gmd.copernicus.org/articles/14/3899/2021/gmd-14-3899-2021.html>`_. Geosci. Model Dev., 14(6), 3899-3913. doi:10.5194/gmd-14-3899-2021.
- Güdük, N., de la Varga, M., Kaukolinna, J., & Wellmann, F. (2021). `Model-Based Probabilistic Inversion Using Magnetic Data: A Case Study on the Kevitsa Deposit <https://www.mdpi.com/2076-3263/11/4/150>`_. Geosciences, 11(4):150.
- Wu, J., & Sun, B. (2021). `Discontinuous mechanical analysis of manifold element strain of rock slope based on open source Gempy <https://www.e3s-conferences.org/articles/e3sconf/abs/2021/24/e3sconf_caes2021_03084/e3sconf_caes2021_03084.html>`_. In E3S Web of Conferences (Vol. 248, p. 03084). EDP Sciences.
- Stamm, F. A., de la Varga, M., & Wellmann, F. (2019). `Actors, actions, and uncertainties: optimizing decision-making based on 3-D structural geological models <https://se.copernicus.org/articles/10/2015/2019/se-10-2015-2019.html>`_. Solid Earth, 10, 2015–2043.
- Wellmann, F., Schaaf, A., de la Varga, M., & von Hagke, C. (2019). `From Google Earth to 3D Geology Problem 2: Seeing Below the Surface of the Digital Earth <https://www.sciencedirect.com/science/article/pii/B9780128140482000156>`_. In Developments in Structural Geology and Tectonics (Vol. 5, pp. 189-204). Elsevier.
References
----------
* de la Varga, M., Schaaf, A., and Wellmann, F.: GemPy 1.0: `open-source stochastic geological modeling and inversion,` Geosci. Model Dev., 12, 1–32, https://doi.org/10.5194/gmd-12-1-2019, 2019.
* Calcagno, P., Chilès, J. P., Courrioux, G., & Guillen, A. (2008). `Geological modelling from field data and geological knowledge: Part I. Modelling method coupling 3D potential-field interpolation and geological rules.` Physics of the Earth and Planetary Interiors, 171(1-4), 147-157.
* `Lajaunie, C., Courrioux, G., & Manuel, L. (1997). `Foliation fields and 3D cartography in geology: principles of a method based on potential interpolation.` Mathematical Geology, 29(4), 571-584.
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`
.. image:: _static/logos/logo_CGRE.png
:width: 40%
.. image:: _static/logos/Terranigma.png
:width: 40%
================================================
FILE: docs/source/installation.rst
================================================
.. role:: raw-html-m2r(raw)
:format: html
Installation
------------
Installing ``GemPy``
^^^^^^^^^^^^^^^^^^^^
The latest release version of ``GemPy`` is available via **PyPi**. To install the core version, simply use pip:
.. code-block:: bash
$ pip install gempy
This will install ``GemPy`` with the minimal required dependencies.
GemPy viewer
^^^^^^^^^^^^
For visualization in 2-D and 3-D, the additional package ``gempy-viewer`` can be used and installed with:
.. code-block:: bash
$ pip install gempy-viewer
The 3-D visualization is based on `pyvista`. This package needs to be installed separately. Please check:
- PyVista: Installation guide available on the `PyVista installation page <https://docs.pyvista.org/getting-started/installation.html>`_.
Enhanced Installation Options
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For additional features, ``GemPy`` offers enhanced installation options:
- Base Features: For the majority of functionalities, install with base dependencies:
.. code-block:: bash
$ pip install gempy[base]
- Optional Features: To access optional features such as data download support, install with optional dependencies:
.. code-block:: bash
$ pip install gempy[opt]
- Development Version: For development purposes, including testing tools:
.. code-block:: bash
$ pip install gempy[dev]
Note: Some advanced functionalities in ``GemPy`` require `PyTorch`. For installation, please follow the
instructions on the `PyTorch installation page <https://pytorch.org/get-started/locally/>`_.
Manual Installation
^^^^^^^^^^^^^^^^^^^
For the latest, cutting-edge version of ``GemPy``, you can clone the repository and install it manually:
1. Clone the repository:
.. code-block:: bash
$ git clone https://github.com/cgre-aachen/gempy.git
2. Navigate to the root of the cloned repository and install using pip:
.. code-block:: bash
$ pip install -e .
Dependencies
^^^^^^^^^^^^
``GemPy`` relies on numerous open-source libraries. Core dependencies are automatically installed with the package. Enhanced functionalities require additional dependencies, structured as follows:
- Core Dependencies: Installed with the basic package.
- Base Dependencies: Additional libraries for extended functionalities (`base-requirements.txt`).
- Optional Dependencies: Libraries for optional features (`optional-requirements.txt`).
- Development Dependencies: Tools needed for development (`dev-requirements.txt`).
================================================
FILE: docs/source/make_external_gallery.py
================================================
"""
Modified after https://github.com/pyvista/pyvista/blob/ab70c26edbcfb107286c827bd4914562056219fb/docs/make_external_gallery.py
A helper script to generate the external 2-examples gallery.
"""
import os
from io import StringIO
def format_icon(title, description, link, image):
body = r"""
.. grid-item-card:: {}
:link: {}
:text-align: center
:class-title: pyvista-card-title
.. image:: {}
"""
content = body.format(title, link, image)
return content
class Example():
def __init__(self, title, description, link, image):
self.title = title
self.description = description
self.link = link
self.image = image
def format(self):
return format_icon(self.title, self.description, self.link, self.image)
###############################################################################
articles = dict(
_1=Example(
title="Vector Model 1: Construction",
description="Build a basic structural model",
link="https://vector-raw-materials.github.io/vector-geology/examples/02_structural_modeling/01_model_1_gempy_step_by_step.html#sphx-glr-examples-02-structural-modeling-01-model-1-gempy-step-by-step-py",
image="https://vector-raw-materials.github.io/vector-geology/_images/sphx_glr_01_model_1_gempy_step_by_step_001.png",
),
_2=Example(
title="Vector Model 1: Forward Gravity",
description="Get the gravity response of the model",
link="https://vector-raw-materials.github.io/vector-geology/examples/03_forward_engines/02_model_1_gempy_fw_gravity.html#sphx-glr-examples-03-forward-engines-02-model-1-gempy-fw-gravity-py",
image="https://vector-raw-materials.github.io/vector-geology/_images/sphx_glr_02_model_1_gempy_fw_gravity_003.png",
),
_3=Example(
title="Spremberg: Importing Boreholes",
description="Import data from well csv files",
link="https://vector-raw-materials.github.io/vector-geology/examples/02_structural_modeling/03_model_spremberg_import.html#sphx-glr-examples-02-structural-modeling-03-model-spremberg-import-py",
image="https://vector-raw-materials.github.io/vector-geology/_images/sphx_glr_03_model_spremberg_import_003.png",
),
_4=Example(
title="Spremberg: Constructing the Model",
description="Build a structural model from borehole data",
link="https://vector-raw-materials.github.io/vector-geology/examples/02_structural_modeling/04_model_spremberg_building.html#sphx-glr-examples-02-structural-modeling-04-model-spremberg-building-py",
image="https://vector-raw-materials.github.io/vector-geology/_images/sphx_glr_04_model_spremberg_building_008.png",
),
)
###############################################################################
def make_example_gallery():
"""Make the example gallery."""
path = "./external/external_examples.rst"
with StringIO() as new_fid:
new_fid.write(
"""
.. _external_examples:
External Examples
==================
Vector Examples
---------------
These are examples from the Vector project.
.. grid:: 3
:gutter: 1
"""
)
# Reverse to put the latest items at the top
for example in list(articles.values())[::-1]:
new_fid.write(example.format())
new_fid.write(
"""
.. raw:: html
<div class="sphx-glr-clear"></div>
"""
)
new_fid.seek(0)
new_text = new_fid.read()
# check if it's necessary to overwrite the table
existing = ""
if os.path.exists(path):
with open(path) as existing_fid:
existing = existing_fid.read()
# write if different or does not exist
if new_text != existing:
with open(path, "w", encoding="utf-8") as fid:
fid.write(new_text)
return
================================================
FILE: examples/__init__.py
================================================
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_faults.csv
================================================
,isFault,isFinite
EarlyGranite_Series,False,False
BIF_Series,False,False
SimpleMafic_Series,False,False
Basement,False,False
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_faults_relations.csv
================================================
,EarlyGranite_Series,BIF_Series,SimpleMafic_Series,Basement
EarlyGranite_Series,False,False,False,False
BIF_Series,False,False,False,False
SimpleMafic_Series,False,False,False,False
Basement,False,False,False,False
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_kriging_data.csv
================================================
,range,$C_o$,drift equations,nugget grad,nugget scalar
values,86591.22357375486,178524761.9047619,[3 3 3 0],0.01,1e-06
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_options.csv
================================================
,dtype,output,aesara_optimizer,device,verbosity
values,float64,geology,fast_compile,cpu,[]
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_orientations.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series,smooth
15,743403.6875,6877878.25,454.74995199999995,0.7289193836681321,0.3393090442016824,0.5454662898901393,0.17435731030158103,-0.9692501424997381,0.17364817766793042,80.0,169.802194,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
16,738704.4065,6877046.0,458.14874000000003,0.6805345417666262,0.33074001317916457,0.5455012845669923,0.17005791273562937,-0.9700137198552169,0.17364817766793042,80.0,170.056246,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
17,735326.7815,6875283.75,452.96645599999994,0.6457577638664378,0.31259549540273673,0.5454479266188236,0.8938984296759075,-0.4132697760747355,0.17364817766793042,80.0,114.81218500000001,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
18,734151.969,6874304.75,448.179887,0.6336616331867841,0.30251549375534115,0.5453986430402685,-0.4396965705831378,-0.8811998843666176,0.17364817766793042,80.0,206.51804199999998,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
19,734200.938,6875724.5,461.98580400000003,0.6341658288973772,0.31713355538852794,0.5455407918309771,-0.857926514169013,0.4835373891210603,0.17364817766793042,80.0,299.406115,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
20,735082.063,6879102.25,480.551436,0.6432380877855911,0.35191162031650586,0.5457319477054868,-0.9791340537242994,0.10555953404893238,0.17364817766793042,80.0,276.153239,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
21,734592.563,6882039.25,487.287083,0.6381980869618933,0.38215162525869256,0.5458012994244411,-0.6723043953762564,-0.7196201153024675,0.17364817766793042,80.0,223.05309300000002,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
22,732683.469,6882332.75,481.71195199999994,0.6185416307156908,0.38517356650844803,0.5457438966362241,0.3108420554206961,-0.9344642994644278,0.17364817766793042,80.0,161.600709,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
23,730627.5315,6880472.5,477.40265800000003,0.5973732411478233,0.36602001894504904,0.545699527187175,0.8442658343469975,-0.5070123384573562,0.17364817766793042,80.0,120.98634799999999,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
24,728767.4065,6878759.25,470.031623,0.5782209806122138,0.3483800160621068,0.5456236333721157,0.23857012308693834,-0.9554740220235208,0.17364817766793042,80.0,165.980598,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
25,728571.594,6879934.25,472.536776,0.5762048515799557,0.3604780772834447,0.5456494269843395,-0.8624104574918853,0.4754939675756334,0.17364817766793042,80.0,298.87034700000004,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
26,729256.9065,6882724.5,471.72292400000003,0.5832609814359115,0.38920711160075366,0.5456410473832151,-0.9822538012829838,-0.07087863046064441,0.17364817766793042,80.0,265.87273700000003,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
27,727739.4375,6884242.0,474.25872599999997,0.567636783254224,0.4048316289653326,0.5456671565643565,-0.10193532939980383,-0.9795179932042825,0.17364817766793042,80.0,185.941204,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
28,724802.4065,6883312.0,473.707869,0.5373964591291459,0.39525614221142263,0.5456614848182202,0.5700993409362939,-0.8030149761097184,0.17364817766793042,80.0,144.627207,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
29,722403.813,6880913.25,470.70706500000006,0.5127000072073552,0.37055807893084025,0.5456305878731094,0.8192953473908405,-0.5464443650887268,0.17364817766793042,80.0,123.702047,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
30,721229.0005,6880766.25,477.680894,0.5006038765277017,0.3690445342503835,0.5457023919668873,-0.955039237532274,-0.24030473396155966,0.17364817766793042,80.0,255.876557,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
31,720690.563,6882822.25,489.90942300000006,0.495060004324413,0.39021356733214585,0.5458282996200694,-0.9487350298778479,-0.26409875704593466,0.17364817766793042,80.0,254.444427,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
32,718928.344,6883605.5,509.462245,0.4769158057308778,0.3982780834611781,0.5460296198222871,0.06399643026772625,-0.9827261914206341,0.17364817766793042,80.0,176.27408400000002,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
33,715991.2815,6882773.25,505.16586399999994,0.4466751572747963,0.3897090524386603,0.5459853833283568,0.4523816530880285,-0.8747554803151861,0.17364817766793042,80.0,152.65415900000002,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
34,712907.3755,6880766.25,512.582136,0.41492257549704975,0.3690445342503835,0.546061742913625,0.5981974408083341,-0.7823082079353031,0.17364817766793042,80.0,142.59641100000002,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
35,710459.844,6880521.5,511.839758,0.38972224704755865,0.36652453383853467,0.5460540992246945,-0.7829565734412656,-0.5973485703467495,0.17364817766793042,80.0,232.658556,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
36,709970.344,6882724.5,532.9679150000001,0.3846822462238609,0.38920711160075366,0.5462716394262945,-0.9555635021311216,0.23821146862908438,0.17364817766793042,80.0,283.99789599999997,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
37,709089.2505,6883312.0,519.457428,0.37561031166664915,0.39525614221142263,0.5461325324485446,0.4394815627262955,-0.8813071351213059,0.17364817766793042,80.0,153.495937,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
38,705858.5005,6880032.25,494.307044,0.34234579141912796,0.36148710707041587,0.545873578503547,0.7823117472581675,-0.5981928121393597,0.17364817766793042,80.0,127.40325,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
39,701844.5315,6875137.25,476.658525,0.3010170742254671,0.311087098833438,0.5456918654283743,0.7357966048102152,-0.6545606669689805,0.17364817766793042,80.0,131.656118,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
40,698466.9375,6871074.25,463.972201,0.26624061550817,0.269253547563399,0.5455612442160971,0.7825830449493052,-0.5978378443618282,0.17364817766793042,80.0,127.377257,1.0,EarlyGranite,EarlyGranite_Series,1,1,0.01
0,739426.6276840001,6891935.451483999,75.422691,0.6879706916384385,0.48404511582219845,0.5415606520803518,-0.6040227735540536,-0.7198463103919542,0.3420201433266688,70.0,220.0,1.0,SimpleBIF,BIF_Series,3,2,0.01
1,717311.112372,6891940.971392999,-1497.488309,0.4602644293524706,0.48410195003242695,0.5253656107410191,0.8660254037854386,1.0000530287619361e-12,0.5000000000010001,60.0,90.0,1.0,SimpleBIF,BIF_Series,3,2,0.01
2,723415.321182,6891939.447817,-5298.1543090000005,0.5231147203237131,0.4840862629552179,0.4862331086560341,0.0593911746148847,0.33682408883446513,0.9396926207869084,20.0,10.0,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
3,742907.686575,6891934.582632001,-2786.869309,0.7238124478753751,0.48403616992885884,0.5120898573149512,-0.8137976813483737,-0.29619813272502366,0.5000000000010001,60.0,250.0,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
4,712584.536312,6891942.15112,-582.769334,0.4115985514450749,0.48411409676389305,0.5347837606643122,0.8660253779324091,-0.00021160992272160206,0.5000000000010001,60.0,90.014,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
5,724309.279198,6905712.031145,-3763.8629950000004,0.532319110797648,0.625891842766388,0.5020305131225353,0.766044443119978,1.0000469066937634e-12,0.6427876096875393,50.0,90.0,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
6,728653.9332569999,6905714.891064,-4196.807995,0.5770526348753636,0.6259212891282221,0.49757281515192076,-0.1579856938790021,-0.00010478009447487647,0.9874413955027208,9.09,269.962,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
7,732788.182361,6905717.612482001,-1680.306995,0.6196197827600052,0.6259493094529728,0.5234832689064383,-0.8660252133152075,-0.0005743697555669816,0.5000000000010001,60.0,269.962,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
8,727261.874621,6877214.496202,-5666.992176,0.5627196896821558,0.33247488753436794,0.48243547197883097,9.999162292252465e-13,0.3420201433266687,0.9396926207869084,20.0,360.0,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
9,718902.5312979999,6900478.748653,-1882.8952969999998,0.4766500324125068,0.5720088027861601,0.5213973747104187,0.35135316564372676,0.042375304195105545,0.9352835327263932,20.726,83.12299999999999,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
10,733335.732778,6903150.931884,-1538.6292970000002,0.625257483582673,0.5995221954017079,0.5249420139822699,-0.7587575629491816,-0.19754255501034038,0.6206963022499282,51.633,255.407,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
11,730820.452963,6902599.428688001,-3825.776297,0.5993596034204055,0.593843795887698,0.5013930400008237,-0.36419606058097953,-0.07271406390723276,0.9284793451490311,21.801,258.709,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
12,725461.656,6915002.0,510.686328,0.5441842385428782,0.7215434274064846,0.5460422232529885,0.8435050562949495,-0.19621218108503954,0.5000000000010001,60.0,103.095,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
13,726102.312,6917775.5,499.040304,0.5507805751469789,0.7501,0.5459223132007867,1e-12,-0.8660254037834386,0.5000000000010001,-60.0,0.0,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
14,727390.156,6913486.75,517.5692429999999,0.5640405032793464,0.7059420765421167,0.5461130912760108,-0.8215644704637983,-0.2739193692847363,0.5000000000010001,-60.0,71.561,1.0,SimpleMafic1,SimpleMafic_Series,4,3,0.01
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_rescaling_data.csv
================================================
,rescaling factor,centers
values,97123.0,[ 7.21180062e+05 6.89349475e+06 -3.95136022e+03]
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_series.csv
================================================
,order_series,BottomRelation,isActive
EarlyGranite_Series,1,Erosion,True
BIF_Series,2,Erosion,True
SimpleMafic_Series,3,Erosion,True
Basement,4,Erosion,False
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_surface_points.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series,smooth
43,745312.75,6878221.0,452.733051,0.7485755155833325,0.34283807440050246,0.5454455234290538,EarlyGranite,EarlyGranite_Series,1,1,1e-06
44,741494.625,6877535.5,460.20235,0.7092632517529318,0.33578001400286234,0.5455224289921028,EarlyGranite,EarlyGranite_Series,1,1,1e-06
45,735914.188,6876556.5,456.48238899999996,0.6518058317803195,0.32570001235546675,0.5454841274466398,EarlyGranite,EarlyGranite_Series,1,1,1e-06
46,734739.375,6874011.0,446.031913,0.639709695952555,0.2994909784500067,0.5453765270224354,EarlyGranite,EarlyGranite_Series,1,1,1e-06
47,733564.563,6874598.5,452.620638,0.6276135704210122,0.30554000906067563,0.5454443659998147,EarlyGranite,EarlyGranite_Series,1,1,1e-06
48,734837.313,6876850.5,469.89565,0.6407180873737421,0.32872710171638025,0.5456222333638788,EarlyGranite,EarlyGranite_Series,1,1,1e-06
49,735326.813,6881354.0,492.347775,0.64575808819744,0.3750961389166315,0.5458534054343461,EarlyGranite,EarlyGranite_Series,1,1,1e-06
50,733858.313,6882724.5,486.360734,0.6306380857263466,0.38920711160075366,0.545791761529195,EarlyGranite,EarlyGranite_Series,1,1,1e-06
51,731508.625,6881941.0,476.162317,0.6064451757050338,0.3811400214161424,0.5456867563604914,EarlyGranite,EarlyGranite_Series,1,1,1e-06
52,729746.438,6879004.0,468.440123,0.5883013065906115,0.3509000164739557,0.5456072469342998,EarlyGranite,EarlyGranite_Series,1,1,1e-06
53,727788.375,6878514.5,465.16227599999996,0.5681406546338148,0.3458600156502579,0.5455734974928699,EarlyGranite,EarlyGranite_Series,1,1,1e-06
54,729354.813,6881354.0,469.46642099999997,0.5842690485260954,0.3750961389166315,0.5456178139266703,EarlyGranite,EarlyGranite_Series,1,1,1e-06
55,729159.0,6884095.0,480.639992,0.5822529143457266,0.40331808428487587,0.5457328594977503,EarlyGranite,EarlyGranite_Series,1,1,1e-06
56,726319.875,6884389.0,472.41144699999995,0.5530206521627214,0.40634517364578937,0.5456481365690928,EarlyGranite,EarlyGranite_Series,1,1,1e-06
57,723284.938,6882235.0,475.41346100000004,0.5217722660955691,0.3841671107770559,0.5456790459726326,EarlyGranite,EarlyGranite_Series,1,1,1e-06
58,721522.688,6879591.5,471.253042,0.5036277483191414,0.3569490470846246,0.5456362093736807,EarlyGranite,EarlyGranite_Series,1,1,1e-06
59,720935.313,6881941.0,492.156175,0.4975800047362619,0.3811400214161424,0.5458514326781504,EarlyGranite,EarlyGranite_Series,1,1,1e-06
60,720445.813,6883703.5,498.30804000000006,0.49254000391256414,0.39928711324814925,0.5459147736478486,EarlyGranite,EarlyGranite_Series,1,1,1e-06
61,717410.875,6883507.5,507.58461900000003,0.4612916075491902,0.39726905367420695,0.5460102873675649,EarlyGranite,EarlyGranite_Series,1,1,1e-06
62,714571.688,6882039.0,506.53461200000004,0.43205870700040117,0.3821490512031136,0.5459994762620595,EarlyGranite,EarlyGranite_Series,1,1,1e-06
63,711243.063,6879493.5,505.437117,0.39778644399369834,0.35594001729765345,0.5459881762095488,EarlyGranite,EarlyGranite_Series,1,1,1e-06
64,709676.625,6881549.5,515.202397,0.3816580501014178,0.3771090503794158,0.546088721703407,EarlyGranite,EarlyGranite_Series,1,1,1e-06
65,710264.063,6883899.5,524.0556650000001,0.3877064423463028,0.40130517282209155,0.5461798769189584,EarlyGranite,EarlyGranite_Series,1,1,1e-06
66,707914.438,6882724.5,507.24563600000005,0.3635141809869955,0.38920711160075366,0.5460067971232355,EarlyGranite,EarlyGranite_Series,1,1,1e-06
67,703802.563,6877340.0,483.05280700000003,0.3211774018512604,0.333767102540078,0.5457577023773977,EarlyGranite,EarlyGranite_Series,1,1,1e-06
68,699886.5,6872934.5,470.146586,0.2808567465996726,0.28840709512679796,0.5456248170567218,EarlyGranite,EarlyGranite_Series,1,1,1e-06
69,697047.375,6869214.0,456.299059,0.2516244844166675,0.2501,0.5454822398402026,EarlyGranite,EarlyGranite_Series,1,1,1e-06
0,735484.817806,6891936.435338001,-1819.319309,0.647384940807018,0.4840552458017232,0.5220519672168281,SimpleMafic2,BIF_Series,2,2,1e-06
1,729854.915982,6891937.840530001,-1432.263309,0.5894182200096779,0.4840697139709505,0.5260371818415823,SimpleMafic2,BIF_Series,2,2,1e-06
2,724084.2671609999,6891939.280852,-4739.830309,0.5300023368409125,0.4840845438464651,0.4919817366844105,SimpleMafic2,BIF_Series,2,2,1e-06
3,733521.625,6895282.5,521.55524,0.6271714712272067,0.5185070714454867,0.5461541319872738,SimpleMafic2,BIF_Series,2,2,1e-06
4,721933.375,6884591.5,496.66929500000003,0.507856272973446,0.4084301586647859,0.5458979007650093,SimpleMafic2,BIF_Series,2,2,1e-06
5,724251.0,6886909.0,484.550926,0.5317190552186403,0.4322916538821906,0.5457731273436776,SimpleMafic2,BIF_Series,2,2,1e-06
6,727316.313,6886460.5,478.25442300000003,0.5632801993348637,0.42767379817345014,0.5457082971489761,SimpleMafic2,BIF_Series,2,2,1e-06
7,729858.25,6887133.5,484.25957400000004,0.5894525478002121,0.4346031557921399,0.5457701275187133,SimpleMafic2,BIF_Series,2,2,1e-06
8,732699.25,6885040.0,494.52648099999993,0.6187041154000597,0.41304801437352634,0.5458758378756834,SimpleMafic2,BIF_Series,2,2,1e-06
9,716849.5,6887358.0,508.98189400000007,0.45551156574652757,0.4369146577020891,0.5460246740216015,SimpleMafic2,BIF_Series,2,2,1e-06
10,719017.625,6892217.5,508.179387,0.477835062755475,0.4869491500468478,0.5460164112311193,SimpleMafic2,BIF_Series,2,2,1e-06
11,739179.440691,6891935.513181,-552.591309,0.685425599404878,0.4840457510682332,0.535094480318771,SimpleBIF,BIF_Series,3,2,1e-06
12,735564.599804,6891936.415425,-2652.196309,0.6482063939952432,0.4840550407730381,0.5134764804629182,SimpleBIF,BIF_Series,3,2,1e-06
13,730009.0099770001,6891937.802069,-2088.409309,0.5910048060397647,0.48406931796793723,0.519281356753807,SimpleBIF,BIF_Series,3,2,1e-06
14,718795.791326,6891940.600826,-2773.169309,0.47555101393078886,0.4840981345922167,0.5122309155606808,SimpleBIF,BIF_Series,3,2,1e-06
15,724143.38616,6891939.266096001,-5569.907309,0.5306110391977182,0.48408439191541197,0.48343507935298535,SimpleBIF,BIF_Series,3,2,1e-06
16,723877.188,6899768.5,529.1521690000001,0.5278702037622393,0.5646959247552072,0.546232351657177,SimpleBIF,BIF_Series,3,2,1e-06
17,732998.313,6898049.0,521.619609,0.6217833345345589,0.5469915704827899,0.5461547947448081,SimpleBIF,BIF_Series,3,2,1e-06
18,743689.438,6891769.0,512.811278,0.7318615343430492,0.48233129433810734,0.546064102210599,SimpleBIF,BIF_Series,3,2,1e-06
19,712961.813,6882722.5,547.826016,0.4154830760993788,0.3891865191561216,0.5464246217373845,SimpleBIF,BIF_Series,3,2,1e-06
20,716284.875,6891346.5,515.58686,0.4496980612213379,0.4779811404095837,0.5460926802199273,SimpleBIF,BIF_Series,3,2,1e-06
21,718942.875,6897600.5,538.490136,0.4770654201373516,0.5423737147740494,0.5463284974413888,SimpleBIF,BIF_Series,3,2,1e-06
22,722157.625,6882947.0,481.747055,0.5101652008278162,0.39149802106607084,0.5457442580645161,SimpleBIF,BIF_Series,3,2,1e-06
23,723952.0,6885488.5,480.122832,0.5286404847461467,0.4176658700822668,0.5457275347034173,SimpleBIF,BIF_Series,3,2,1e-06
24,728736.813,6885488.5,477.929009,0.5779059831347875,0.4176658700822668,0.5457049466140873,SimpleBIF,BIF_Series,3,2,1e-06
25,738829.813,6878087.0,470.08143099999995,0.6818257549705009,0.3414583806101541,0.5456241462063569,SimpleBIF,BIF_Series,3,2,1e-06
26,715522.708428,6891941.417769,-2810.185309,0.4418506247541775,0.48410654601896497,0.5118497905954306,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
27,722100.017223,6891939.776110001,-5640.110309000001,0.5095720583486912,0.4840896431329439,0.48271225365773296,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
28,728133.723035,6891938.27013,-8458.173309,0.57169643477858,0.4840741372280518,0.4536968505091482,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
29,733022.378883,6891937.049949001,-7358.592309000001,0.6220311222161589,0.4840615739732153,0.4650183809396332,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
30,737972.021729,6891935.814546,-5589.549309,0.6729937453435337,0.4840488539892735,0.4832328409542539,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
31,726443.009736,6905713.435698,-5023.656995,0.5542884747794032,0.6259063043563294,0.4890593940261318,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
32,727109.3352020001,6886862.614432001,-6720.406176,0.5611491099121743,0.4318140577618129,0.47158928724401017,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
33,726266.236469,6901753.8156550005,-5708.065297,0.5524683779228401,0.5851371761065918,0.48201257399380165,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
34,732617.810926,6902964.017319,-3068.116297,0.617865600588944,0.5975976814863659,0.5091940758007887,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
35,709728.25,6885850.5,532.9365769999999,0.38218959257848295,0.4213931025606705,0.5462713167632796,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
36,714271.063,6897386.0,536.8312540000001,0.428963405166644,0.5401651750872605,0.5463114172235207,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
37,722693.188,6907492.5,555.452867,0.5156794765400571,0.6442239459242404,0.5465031494908518,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
38,725092.188,6913005.0,514.864987,0.5403801138762184,0.7009818714413681,0.5460852476550353,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
39,744692.688,6890291.0,496.01971100000003,0.7421912193816085,0.46711347775501166,0.5458912125037324,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
40,738924.813,6900193.5,551.633725,0.682803896090524,0.569071819239521,0.5464638267557633,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
41,729430.813,6908717.5,517.178069,0.5850515614221139,0.6568368182613799,0.5461090636615425,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
42,726929.75,6916017.0,502.161614,0.5593000607477117,0.7319940930572573,0.5459544509024639,SimpleMafic1,SimpleMafic_Series,4,3,1e-06
================================================
FILE: examples/data/gempy_models/Greenstone/Greenstone_surfaces.csv
================================================
,surface,series,order_surfaces,isBasement,isFault,isActive,color,vertices,edges,id,value_0
3,EarlyGranite,EarlyGranite_Series,1,False,False,True,#728f02,"[[ 6.96913326e+05 6.86300000e+06 -1.47480000e+04]
[ 6.97020000e+05 6.86309351e+06 -1.47480000e+04]
[ 6.97020000e+05 6.86300000e+06 -1.49709013e+04]
...
[ 7.45781532e+05 6.87774000e+06 -2.04000000e+02]
[ 7.45980000e+05 6.87774000e+06 -5.31339188e+02]
[ 7.45980000e+05 6.87779400e+06 -2.04000000e+02]]","[[ 2 1 0]
[ 0 1 3]
[ 3 1 4]
...
[3577 3634 3635]
[3576 3634 3577]
[3636 3637 3635]]",1,2.61
0,SimpleMafic2,BIF_Series,1,False,False,True,#015482,"[[ 7.17372390e+05 6.88444000e+06 -2.04000000e+02]
[ 7.17420000e+05 6.88444000e+06 -2.19525421e+02]
[ 7.17420000e+05 6.88416750e+06 -2.04000000e+02]
...
[ 7.45980000e+05 6.89022786e+06 -1.01200000e+03]
[ 7.45980000e+05 6.89058852e+06 -6.08000000e+02]
[ 7.45980000e+05 6.89094654e+06 -2.04000000e+02]]","[[ 2 1 0]
[ 0 1 3]
[ 3 1 4]
...
[1049 1050 990]
[ 991 1051 992]
[1050 1051 991]]",2,2.92
1,SimpleBIF,BIF_Series,2,False,False,True,#9f0052,"[[ 7.14839407e+05 6.88042000e+06 -2.04000000e+02]
[ 7.15380000e+05 6.88042000e+06 -2.72209213e+02]
[ 7.15380000e+05 6.87984794e+06 -2.04000000e+02]
...
[ 7.45980000e+05 6.89114000e+06 -6.54912231e+02]
[ 7.45980000e+05 6.89117842e+06 -6.08000000e+02]
[ 7.45980000e+05 6.89150733e+06 -2.04000000e+02]]","[[ 2 1 0]
[ 0 1 3]
[ 3 1 4]
...
[1332 1334 1265]
[1334 1266 1265]
[1334 1335 1266]]",3,3.1
2,SimpleMafic1,SimpleMafic_Series,1,False,False,True,#ffbe00,"[[ 6.96000000e+05 6.86300000e+06 -2.45178632e+03]
[ 6.97020000e+05 6.86393305e+06 -2.22400000e+03]
[ 6.97020000e+05 6.86300000e+06 -2.48451546e+03]
...
[ 7.45267801e+05 6.88176000e+06 -2.04000000e+02]
[ 7.45222338e+05 6.88310000e+06 -2.04000000e+02]
[ 7.45091231e+05 6.88444000e+06 -2.04000000e+02]]","[[ 2 1 0]
[ 0 1 3]
[ 4 3 1]
...
[3030 3018 3029]
[3029 3018 3014]
[3030 3021 3018]]",4,2.92
4,basement,Basement,1,True,False,True,#443988,,,5,2.61
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults.csv
================================================
,isFault,isFinite
Fault_Series,True,False
Strat_Series,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults_relations.csv
================================================
,Fault_Series,Strat_Series
Fault_Series,False,True
Strat_Series,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_kriging_data.csv
================================================
,range,$C_o$,drift equations
values,3464.1016151377544,285714.2857142857,[3 3]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_options.csv
================================================
,dtype,output,aesara_optimizer,device,verbosity
values,float64,geology,fast_compile,cpu,[]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_orientations.csv
================================================
,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,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
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
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
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_rescaling_data.csv
================================================
,rescaling factor,centers
values,3800,[ 850. 1000. 900.]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_series.csv
================================================
,order_series,BottomRelation,isActive
Fault_Series,1,Fault,True
Strat_Series,2,Erosion,True
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_surface_points.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series,smooth
52,700,1000,900,0.46062631578947366,0.5001,0.5001,Main_Fault,Fault_Series,1,1,2e-06
53,600,1000,600,0.4343105263157895,0.5001,0.42115263157894733,Main_Fault,Fault_Series,1,1,2e-06
54,500,1000,300,0.40799473684210524,0.5001,0.34220526315789473,Main_Fault,Fault_Series,1,1,2e-06
55,800,1000,1200,0.4869421052631579,0.5001,0.5790473684210526,Main_Fault,Fault_Series,1,1,2e-06
56,900,1000,1500,0.5132578947368421,0.5001,0.6579947368421053,Main_Fault,Fault_Series,1,1,2e-06
44,0,1000,1500,0.27641578947368417,0.5001,0.6579947368421053,Sandstone_2,Strat_Series,2,2,2e-06
45,300,1000,1400,0.3553631578947368,0.5001,0.631678947368421,Sandstone_2,Strat_Series,2,2,2e-06
46,600,1000,1300,0.4343105263157895,0.5001,0.6053631578947368,Sandstone_2,Strat_Series,2,2,2e-06
47,1100,1000,1300,0.5658894736842105,0.5001,0.6053631578947368,Sandstone_2,Strat_Series,2,2,2e-06
48,1400,1000,1250,0.6448368421052632,0.5001,0.5922052631578947,Sandstone_2,Strat_Series,2,2,2e-06
49,1700,1000,1300,0.7237842105263158,0.5001,0.6053631578947368,Sandstone_2,Strat_Series,2,2,2e-06
50,1500,500,1200,0.6711526315789473,0.36852105263157897,0.5790473684210526,Sandstone_2,Strat_Series,2,2,2e-06
51,1500,1500,1150,0.6711526315789473,0.631678947368421,0.5658894736842105,Sandstone_2,Strat_Series,2,2,2e-06
31,900,150,920,0.5132578947368421,0.27641578947368417,0.5053631578947368,Siltstone,Strat_Series,3,2,2e-06
32,900,300,920,0.5132578947368421,0.3158894736842105,0.5053631578947368,Siltstone,Strat_Series,3,2,2e-06
33,900,1500,920,0.5132578947368421,0.631678947368421,0.5053631578947368,Siltstone,Strat_Series,3,2,2e-06
34,900,1700,820,0.5132578947368421,0.6843105263157895,0.4790473684210526,Siltstone,Strat_Series,3,2,2e-06
35,900,1950,870,0.5132578947368421,0.7501,0.4922052631578947,Siltstone,Strat_Series,3,2,2e-06
36,0,1000,1300,0.27641578947368417,0.5001,0.6053631578947368,Siltstone,Strat_Series,3,2,2e-06
37,300,1000,1200,0.3553631578947368,0.5001,0.5790473684210526,Siltstone,Strat_Series,3,2,2e-06
38,600,1000,1100,0.4343105263157895,0.5001,0.5527315789473684,Siltstone,Strat_Series,3,2,2e-06
39,1100,1000,1100,0.5658894736842105,0.5001,0.5527315789473684,Siltstone,Strat_Series,3,2,2e-06
40,1400,1000,1050,0.6448368421052632,0.5001,0.5395736842105263,Siltstone,Strat_Series,3,2,2e-06
41,1700,1000,1100,0.7237842105263158,0.5001,0.5527315789473684,Siltstone,Strat_Series,3,2,2e-06
42,1500,500,1000,0.6711526315789473,0.36852105263157897,0.5264157894736842,Siltstone,Strat_Series,3,2,2e-06
43,1500,1500,950,0.6711526315789473,0.631678947368421,0.5132578947368421,Siltstone,Strat_Series,3,2,2e-06
0,800,50,750,0.4869421052631579,0.2501,0.46062631578947366,Shale,Strat_Series,4,2,2e-06
1,800,150,700,0.4869421052631579,0.27641578947368417,0.44746842105263157,Shale,Strat_Series,4,2,2e-06
2,800,300,700,0.4869421052631579,0.3158894736842105,0.44746842105263157,Shale,Strat_Series,4,2,2e-06
3,800,500,800,0.4869421052631579,0.36852105263157897,0.4737842105263158,Shale,Strat_Series,4,2,2e-06
4,800,1000,1000,0.4869421052631579,0.5001,0.5264157894736842,Shale,Strat_Series,4,2,2e-06
5,800,1500,700,0.4869421052631579,0.631678947368421,0.44746842105263157,Shale,Strat_Series,4,2,2e-06
6,800,1700,600,0.4869421052631579,0.6843105263157895,0.42115263157894733,Shale,Strat_Series,4,2,2e-06
7,800,1950,650,0.4869421052631579,0.7501,0.4343105263157895,Shale,Strat_Series,4,2,2e-06
8,0,1000,1100,0.27641578947368417,0.5001,0.5527315789473684,Shale,Strat_Series,4,2,2e-06
9,300,1000,1000,0.3553631578947368,0.5001,0.5264157894736842,Shale,Strat_Series,4,2,2e-06
10,450,1000,950,0.39483684210526315,0.5001,0.5132578947368421,Shale,Strat_Series,4,2,2e-06
11,1100,1000,900,0.5658894736842105,0.5001,0.5001,Shale,Strat_Series,4,2,2e-06
12,1400,1000,850,0.6448368421052632,0.5001,0.4869421052631579,Shale,Strat_Series,4,2,2e-06
13,1700,1000,900,0.7237842105263158,0.5001,0.5001,Shale,Strat_Series,4,2,2e-06
14,1500,500,800,0.6711526315789473,0.36852105263157897,0.4737842105263158,Shale,Strat_Series,4,2,2e-06
15,1500,1500,750,0.6711526315789473,0.631678947368421,0.46062631578947366,Shale,Strat_Series,4,2,2e-06
16,800,50,450,0.4869421052631579,0.2501,0.38167894736842106,Sandstone_1,Strat_Series,5,2,2e-06
17,800,150,400,0.4869421052631579,0.27641578947368417,0.36852105263157897,Sandstone_1,Strat_Series,5,2,2e-06
18,800,300,400,0.4869421052631579,0.3158894736842105,0.36852105263157897,Sandstone_1,Strat_Series,5,2,2e-06
19,800,500,500,0.4869421052631579,0.36852105263157897,0.39483684210526315,Sandstone_1,Strat_Series,5,2,2e-06
20,800,1000,700,0.4869421052631579,0.5001,0.44746842105263157,Sandstone_1,Strat_Series,5,2,2e-06
21,800,1500,400,0.4869421052631579,0.631678947368421,0.36852105263157897,Sandstone_1,Strat_Series,5,2,2e-06
22,800,1700,300,0.4869421052631579,0.6843105263157895,0.34220526315789473,Sandstone_1,Strat_Series,5,2,2e-06
23,800,1950,350,0.4869421052631579,0.7501,0.3553631578947368,Sandstone_1,Strat_Series,5,2,2e-06
24,0,1000,800,0.27641578947368417,0.5001,0.4737842105263158,Sandstone_1,Strat_Series,5,2,2e-06
25,300,1000,700,0.3553631578947368,0.5001,0.44746842105263157,Sandstone_1,Strat_Series,5,2,2e-06
26,1100,1000,600,0.5658894736842105,0.5001,0.42115263157894733,Sandstone_1,Strat_Series,5,2,2e-06
27,1400,1000,550,0.6448368421052632,0.5001,0.40799473684210524,Sandstone_1,Strat_Series,5,2,2e-06
28,1700,1000,600,0.7237842105263158,0.5001,0.42115263157894733,Sandstone_1,Strat_Series,5,2,2e-06
29,1500,500,500,0.6711526315789473,0.36852105263157897,0.39483684210526315,Sandstone_1,Strat_Series,5,2,2e-06
30,1500,1500,450,0.6711526315789473,0.631678947368421,0.38167894736842106,Sandstone_1,Strat_Series,5,2,2e-06
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_surfaces.csv
================================================
,surface,series,order_surfaces,isBasement,isFault,isActive,color,vertices,edges,sfai,id
4,Main_Fault,Fault_Series,1,False,True,True,#527682,"[[ 400. 0. 40. ]
[ 386.66667938 0. 0. ]
[ 400. 40. 40. ]
...
[1013.33335876 1960. 1880. ]
[1026.66664124 1960. 1920. ]
[1040. 1960. 1960. ]]","[[ 2 1 0]
[ 3 1 2]
[ 0 5 4]
...
[3297 3294 3298]
[3299 3295 3296]
[3298 3295 3299]]",-0.55768591019109,1
3,Sandstone_2,Strat_Series,1,False,False,True,#728f02,"[[ 0. 0. 1399.34921265]
[ 0. 40. 1399.55947876]
[ 40. 0. 1383.18862915]
...
[1960. 1880. 1193.70231628]
[1960. 1920. 1189.24514771]
[1960. 1960. 1185.27381897]]","[[ 2 1 0]
[ 3 1 2]
[ 5 1 4]
...
[3763 3696 3762]
[3763 3697 3696]
[3764 3697 3763]]",0.8179798867858623,2
2,Siltstone,Strat_Series,2,False,False,True,#ffbe00,"[[ 31.40995264 40. 1160. ]
[ 40. 0. 1156.60209656]
[ 32.15043068 0. 1160. ]
...
[1960. 1880. 983.82293701]
[1960. 1920. 978.76838684]
[1960. 1960. 974.21592712]]","[[ 2 1 0]
[ 0 1 3]
[ 0 5 4]
...
[3905 3836 3904]
[3905 3838 3836]
[3906 3838 3905]]",0.730487102963508,3
0,Shale,Strat_Series,3,False,False,True,#015482,"[[ 0. 0. 949.93782043]
[ 0. 40. 949.11277771]
[ 40. 0. 931.37695312]
...
[1960. 1880. 781.52374268]
[1960. 1920. 776.03805542]
[1960. 1960. 771.07551575]]","[[ 2 1 0]
[ 3 1 2]
[ 3 4 1]
...
[4047 3978 4046]
[4047 3980 3978]
[4048 3980 4047]]",0.6496588766460675,4
1,Sandstone_1,Strat_Series,4,False,False,True,#9f0052,"[[ 11.65150642 40. 640. ]
[ 40. 0. 628.33042145]
[ 17.65681148 0. 640. ]
...
[1960. 1880. 512.40386963]
[1960. 1920. 507.28397369]
[1960. 1960. 502.67974854]]","[[ 2 1 0]
[ 0 1 3]
[ 0 5 4]
...
[4128 4061 4127]
[4128 4062 4061]
[4129 4062 4128]]",0.5520920084971302,5
5,basement,Strat_Series,5,True,False,True,#ff3f20,,,,6
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults.csv
================================================
,isFault,isFinite
seafloor_series,False,False
right_series,False,False
onlap_series,False,False
left_series,False,False
basement,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults_relations.csv
================================================
,seafloor_series,right_series,onlap_series,left_series,basement
seafloor_series,False,False,False,False,False
right_series,False,False,False,False,False
onlap_series,False,False,False,False,False
left_series,False,False,False,False,False
basement,False,False,False,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_kriging_data.csv
================================================
,range,$C_o$,drift equations,nugget grad,nugget scalar
values,1854.7236990991407,81904.76190476191,[3 3 3 3],0.01,1e-06
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_options.csv
================================================
,dtype,output,aesara_optimizer,device,verbosity
values,float64,geology,fast_compile,cpu,[]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_orientations.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series
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
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
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
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
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
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
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
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
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
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
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
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
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
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_rescaling_data.csv
================================================
,rescaling factor,centers
values,1600.0,[ 500. 50. -600.]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_series.csv
================================================
,order_series,BottomRelation
seafloor_series,1,Erosion
right_series,2,Onlap
onlap_series,3,Erosion
left_series,4,Erosion
basement,5,Erosion
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_surface_points.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series
0,200.0,0.0,-200.0,0.3126,0.46885,0.7501,seafloor,seafloor_series,6,1
1,200.0,100.0,-200.0,0.3126,0.53135,0.7501,seafloor,seafloor_series,6,1
2,500.0,0.0,-200.0,0.5001,0.46885,0.7501,seafloor,seafloor_series,6,1
3,500.0,100.0,-200.0,0.5001,0.53135,0.7501,seafloor,seafloor_series,6,1
4,800.0,0.0,-200.0,0.6876,0.46885,0.7501,seafloor,seafloor_series,6,1
5,800.0,100.0,-200.0,0.6876,0.53135,0.7501,seafloor,seafloor_series,6,1
7,700.0,0.0,-450.0,0.6251,0.46885,0.59385,rock1,right_series,4,2
6,700.0,100.0,-450.0,0.6251,0.53135,0.59385,rock1,right_series,4,2
8,900.0,0.0,-450.0,0.7501,0.46885,0.59385,rock1,right_series,4,2
9,900.0,100.0,-450.0,0.7501,0.53135,0.59385,rock1,right_series,4,2
13,700.0,0.0,-700.0,0.6251,0.46885,0.4376,rock2,right_series,5,2
12,700.0,100.0,-700.0,0.6251,0.53135,0.4376,rock2,right_series,5,2
11,900.0,0.0,-700.0,0.7501,0.46885,0.4376,rock2,right_series,5,2
10,900.0,100.0,-700.0,0.7501,0.53135,0.4376,rock2,right_series,5,2
14,300.0,0.0,-200.0,0.3751,0.46885,0.7501,onlap_surface,onlap_series,3,3
15,300.0,100.0,-200.0,0.3751,0.53135,0.7501,onlap_surface,onlap_series,3,3
16,700.0,0.0,-1000.0,0.6251,0.46885,0.2501,onlap_surface,onlap_series,3,3
17,700.0,100.0,-1000.0,0.6251,0.53135,0.2501,onlap_surface,onlap_series,3,3
18,550.0,0.0,-500.0,0.53135,0.46885,0.5626,onlap_surface,onlap_series,3,3
19,550.0,100.0,-500.0,0.53135,0.53135,0.5626,onlap_surface,onlap_series,3,3
20,100.0,0.0,-400.0,0.2501,0.46885,0.6251,rock3,left_series,2,4
21,100.0,100.0,-400.0,0.2501,0.53135,0.6251,rock3,left_series,2,4
22,450.0,0.0,-1000.0,0.46885,0.46885,0.2501,rock3,left_series,2,4
23,450.0,100.0,-1000.0,0.46885,0.53135,0.2501,rock3,left_series,2,4
24,300.0,0.0,-500.0,0.3751,0.46885,0.5626,rock3,left_series,2,4
25,300.0,100.0,-500.0,0.3751,0.53135,0.5626,rock3,left_series,2,4
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_surfaces.csv
================================================
,surface,series,order_surfaces,isBasement,color,vertices,edges,id
4,basement,basement,1,False,#ff3f20,"[[-200. -500. -210.]
[-200. -480. -210.]
[-176. -500. -210.]
...
[ 976. 440. -210.]
[ 976. 460. -210.]
[ 976. 480. -210.]]","[[ 2 1 0]
[ 3 1 2]
[ 3 4 1]
...
[2498 2448 2497]
[2498 2449 2448]
[2499 2449 2498]]",1
3,rock3,left_series,1,False,#9f0052,"[[ 400. -500. -460.00003815]
[ 400. -480. -460.00003815]
[ 424. -500. -460.00003815]
...
[ 976. 440. -460.00003815]
[ 976. 460. -460.00003815]
[ 976. 480. -460.00003815]]","[[ 2 1 0]
[ 3 1 2]
[ 3 4 1]
...
[1111 1061 1110]
[1111 1062 1061]
[1112 1062 1111]]",2
5,onlap_surface,onlap_series,1,False,#ffbe00,"[[ 544. -500. -710.]
[ 544. -480. -710.]
[ 568. -500. -710.]
...
[ 976. 440. -710.]
[ 976. 460. -710.]
[ 976. 480. -710.]]","[[ 2 1 0]
[ 3 1 2]
[ 3 4 1]
...
[842 792 841]
[842 793 792]
[843 793 842]]",3
1,rock1,right_series,1,False,#728f02,"[[ 52.39768219 -480. -220. ]
[ 64. -500. -227.81341553]
[ 45.62319183 -500. -220. ]
...
[ 688.02554321 40. -980. ]
[ 688.29644775 40. -1000. ]
[ 688.20480347 60. -1000. ]]","[[ 2 1 0]
[ 0 1 3]
[ 0 3 4]
...
[3321 3322 3320]
[3320 3173 3161]
[3322 3185 3172]]",4
2,rock2,right_series,2,False,#443988,"[[ -184.16520214 -480. -420. ]
[ -176. -500. -425.53325653]
[ -192.13578463 -500. -420. ]
...
[ 427.72203064 280. -1000. ]
[ 424.01483154 280. -960. ]
[ 425.82922363 300. -1000. ]]","[[ 2 1 0]
[ 0 1 3]
[ 0 5 4]
...
[3199 2969 3201]
[3201 2969 2958]
[3202 2978 2967]]",5
0,seafloor,seafloor_series,1,True,#015482,"[[-200. -500. -210.]
[-200. -480. -210.]
[-176. -500. -210.]
...
[ 976. 440. -210.]
[ 976. 460. -210.]
[ 976. 480. -210.]]","[[ 2 1 0]
[ 3 1 2]
[ 3 4 1]
...
[2498 2448 2497]
[2498 2449 2448]
[2499 2449 2498]]",6
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults.csv
================================================
,isFault,isFinite
fault_series1,True,False
series2,False,False
series1,False,False
basement_series,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults_relations.csv
================================================
,fault_series1,series2,series1,basement_series
fault_series1,False,False,True,True
series2,False,False,False,False
series1,False,False,False,False
basement_series,False,False,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_kriging_data.csv
================================================
,range,$C_o$,drift equations,nugget grad,nugget scalar
values,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_options.csv
================================================
,dtype,output,aesara_optimizer,device,verbosity
values,float64,geology,fast_compile,cpu,[0]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_orientations.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series
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
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
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
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,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
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
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
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
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
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
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
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_rescaling_data.csv
================================================
,rescaling factor,centers
values,1600.0,[ 500. 500. -550.]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_series.csv
================================================
,order_series,BottomRelation
fault_series1,1,Fault
series2,2,Erosion
series1,3,Erosion
basement_series,4,Erosion
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_surface_points.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series
57,450.0,200.0,-500.0,0.46885,0.3126,0.53135,fault1,fault_series1,2,1
58,450.0,500.0,-500.0,0.46885,0.5001,0.53135,fault1,fault_series1,2,1
59,450.0,800.0,-500.0,0.46885,0.6876,0.53135,fault1,fault_series1,2,1
62,500.0,800.0,-600.0,0.5001,0.6876,0.46885,fault1,fault_series1,2,1
61,500.0,500.0,-600.0,0.5001,0.5001,0.46885,fault1,fault_series1,2,1
63,500.0,800.0,-600.0,0.5001,0.6876,0.46885,fault1,fault_series1,2,1
64,550.0,800.0,-700.0,0.53135,0.6876,0.40635,fault1,fault_series1,2,1
65,550.0,500.0,-700.0,0.53135,0.5001,0.40635,fault1,fault_series1,2,1
60,550.0,200.0,-700.0,0.53135,0.3126,0.40635,fault1,fault_series1,2,1
56,900.0,800.0,-425.0,0.7501,0.6876,0.578225,rock5,series2,6,2
55,900.0,500.0,-425.0,0.7501,0.5001,0.578225,rock5,series2,6,2
54,900.0,200.0,-425.0,0.7501,0.3126,0.578225,rock5,series2,6,2
53,800.0,800.0,-425.0,0.6876,0.6876,0.578225,rock5,series2,6,2
52,800.0,500.0,-425.0,0.6876,0.5001,0.578225,rock5,series2,6,2
51,800.0,200.0,-425.0,0.6876,0.3126,0.578225,rock5,series2,6,2
50,200.0,800.0,-400.0,0.3126,0.6876,0.59385,rock5,series2,6,2
49,200.0,500.0,-400.0,0.3126,0.5001,0.59385,rock5,series2,6,2
48,200.0,200.0,-400.0,0.3126,0.3126,0.59385,rock5,series2,6,2
47,100.0,800.0,-400.0,0.2501,0.6876,0.59385,rock5,series2,6,2
46,100.0,500.0,-400.0,0.2501,0.5001,0.59385,rock5,series2,6,2
45,100.0,200.0,-400.0,0.2501,0.3126,0.59385,rock5,series2,6,2
34,100.0,500.0,-450.0,0.2501,0.5001,0.5626,rock4,series2,7,2
35,100.0,800.0,-450.0,0.2501,0.6876,0.5626,rock4,series2,7,2
33,100.0,200.0,-450.0,0.2501,0.3126,0.5626,rock4,series2,7,2
36,200.0,200.0,-450.0,0.3126,0.3126,0.5626,rock4,series2,7,2
37,200.0,500.0,-450.0,0.3126,0.5001,0.5626,rock4,series2,7,2
38,200.0,800.0,-450.0,0.3126,0.6876,0.5626,rock4,series2,7,2
39,800.0,200.0,-525.0,0.6876,0.3126,0.515725,rock4,series2,7,2
40,800.0,500.0,-525.0,0.6876,0.5001,0.515725,rock4,series2,7,2
41,800.0,800.0,-525.0,0.6876,0.6876,0.515725,rock4,series2,7,2
42,900.0,200.0,-525.0,0.7501,0.3126,0.515725,rock4,series2,7,2
43,900.0,500.0,-525.0,0.7501,0.5001,0.515725,rock4,series2,7,2
44,900.0,800.0,-525.0,0.7501,0.6876,0.515725,rock4,series2,7,2
66,900.0,500.0,-575.0,0.7501,0.5001,0.484475,rock3,series1,3,3
25,100.0,200.0,-500.0,0.2501,0.3126,0.53135,rock3,series1,3,3
26,100.0,500.0,-500.0,0.2501,0.5001,0.53135,rock3,series1,3,3
24,100.0,800.0,-500.0,0.2501,0.6876,0.53135,rock3,series1,3,3
27,200.0,200.0,-500.0,0.3126,0.3126,0.53135,rock3,series1,3,3
28,200.0,500.0,-500.0,0.3126,0.5001,0.53135,rock3,series1,3,3
29,200.0,800.0,-500.0,0.3126,0.6876,0.53135,rock3,series1,3,3
30,800.0,200.0,-575.0,0.6876,0.3126,0.484475,rock3,series1,3,3
31,800.0,500.0,-575.0,0.6876,0.5001,0.484475,rock3,series1,3,3
32,800.0,800.0,-575.0,0.6876,0.6876,0.484475,rock3,series1,3,3
67,900.0,500.0,-575.0,0.7501,0.5001,0.484475,rock3,series1,3,3
68,900.0,200.0,-575.0,0.7501,0.3126,0.484475,rock3,series1,3,3
69,900.0,800.0,-575.0,0.7501,0.6876,0.484475,rock3,series1,3,3
17,200.0,800.0,-550.0,0.3126,0.6876,0.5001,rock2,series1,4,3
16,200.0,500.0,-550.0,0.3126,0.5001,0.5001,rock2,series1,4,3
15,200.0,200.0,-550.0,0.3126,0.3126,0.5001,rock2,series1,4,3
13,100.0,500.0,-550.0,0.2501,0.5001,0.5001,rock2,series1,4,3
14,100.0,800.0,-550.0,0.2501,0.6876,0.5001,rock2,series1,4,3
12,100.0,200.0,-550.0,0.2501,0.3126,0.5001,rock2,series1,4,3
18,900.0,200.0,-625.0,0.7501,0.3126,0.453225,rock2,series1,4,3
19,900.0,500.0,-625.0,0.7501,0.5001,0.453225,rock2,series1,4,3
20,900.0,800.0,-625.0,0.7501,0.6876,0.453225,rock2,series1,4,3
21,800.0,200.0,-625.0,0.6876,0.3126,0.453225,rock2,series1,4,3
22,800.0,500.0,-625.0,0.6876,0.5001,0.453225,rock2,series1,4,3
23,800.0,800.0,-625.0,0.6876,0.6876,0.453225,rock2,series1,4,3
0,100.0,200.0,-600.0,0.2501,0.3126,0.46885,rock1,series1,5,3
1,100.0,500.0,-600.0,0.2501,0.5001,0.46885,rock1,series1,5,3
2,100.0,800.0,-600.0,0.2501,0.6876,0.46885,rock1,series1,5,3
3,200.0,200.0,-600.0,0.3126,0.3126,0.46885,rock1,series1,5,3
4,200.0,500.0,-600.0,0.3126,0.5001,0.46885,rock1,series1,5,3
5,200.0,800.0,-600.0,0.3126,0.6876,0.46885,rock1,series1,5,3
6,900.0,200.0,-675.0,0.7501,0.3126,0.421975,rock1,series1,5,3
7,900.0,500.0,-675.0,0.7501,0.5001,0.421975,rock1,series1,5,3
8,900.0,800.0,-675.0,0.7501,0.6876,0.421975,rock1,series1,5,3
9,800.0,200.0,-675.0,0.6876,0.3126,0.421975,rock1,series1,5,3
10,800.0,500.0,-675.0,0.6876,0.5001,0.421975,rock1,series1,5,3
11,800.0,800.0,-675.0,0.6876,0.6876,0.421975,rock1,series1,5,3
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_surfaces.csv
================================================
,surface,series,order_surfaces,isBasement,color,vertices,edges,id
4,basement,basement_series,1,False,#325916,,,1
5,fault1,fault_series1,1,False,#015482,,,2
0,rock3,series1,1,False,#728f02,,,3
3,rock2,series1,2,False,#443988,,,4
1,rock1,series1,3,False,#ff3f20,,,5
7,rock5,series2,1,False,#9f0052,,,6
6,rock4,series2,2,True,#ffbe00,,,7
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults.csv
================================================
,isFault,isFinite
fault_series2,True,False
fault_series1,True,False
series1,False,False
basement_series,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults_relations.csv
================================================
,fault_series2,fault_series1,series1,basement_series
fault_series2,False,True,True,True
fault_series1,False,False,True,True
series1,False,False,False,False
basement_series,False,False,False,False
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_kriging_data.csv
================================================
,range,$C_o$,drift equations,nugget grad,nugget scalar
values,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_options.csv
================================================
,dtype,output,aesara_optimizer,device,verbosity
values,float64,geology,fast_compile,cpu,[0]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_orientations.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series
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
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
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
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,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
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
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
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
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
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
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
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
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_rescaling_data.csv
================================================
,rescaling factor,centers
values,1600.0,[ 500. 500. -650.]
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_series.csv
================================================
,order_series,BottomRelation
fault_series2,1,Fault
fault_series1,2,Fault
series1,3,Erosion
basement_series,4,Erosion
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_surface_points.csv
================================================
,X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series
71,500.0,500.0,-700.0,0.5001,0.5001,0.46885,fault2,fault_series2,3,1
66,500.0,200.0,-700.0,0.5001,0.3126,0.46885,fault2,fault_series2,3,1
72,500.0,800.0,-700.0,0.5001,0.6876,0.46885,fault2,fault_series2,3,1
73,550.0,200.0,-600.0,0.53135,0.3126,0.53135,fault2,fault_series2,3,1
74,550.0,500.0,-600.0,0.53135,0.5001,0.53135,fault2,fault_series2,3,1
75,550.0,800.0,-600.0,0.53135,0.6876,0.53135,fault2,fault_series2,3,1
76,600.0,200.0,-500.0,0.5626,0.3126,0.59385,fault2,fault_series2,3,1
77,600.0,500.0,-500.0,0.5626,0.5001,0.59385,fault2,fault_series2,3,1
78,600.0,800.0,-500.0,0.5626,0.6876,0.59385,fault2,fault_series2,3,1
57,300.0,200.0,-600.0,0.3751,0.3126,0.53135,fault1,fault_series1,2,2
58,300.0,500.0,-600.0,0.3751,0.5001,0.53135,fault1,fault_series1,2,2
59,300.0,800.0,-600.0,0.3751,0.6876,0.53135,fault1,fault_series1,2,2
62,350.0,200.0,-700.0,0.40635,0.3126,0.46885,fault1,fault_series1,2,2
61,350.0,500.0,-700.0,0.40635,0.5001,0.46885,fault1,fault_series1,2,2
63,350.0,800.0,-700.0,0.40635,0.6876,0.46885,fault1,fault_series1,2,2
64,400.0,800.0,-800.0,0.4376,0.6876,0.40635,fault1,fault_series1,2,2
65,400.0,500.0,-800.0,0.4376,0.5001,0.40635,fault1,fault_series1,2,2
60,400.0,200.0,-800.0,0.4376,0.3126,0.40635,fault1,fault_series1,2,2
79,400.0,200.0,-625.0,0.4376,0.3126,0.515725,rock4,series1,4,3
34,100.0,500.0,-550.0,0.2501,0.5001,0.5626,rock4,series1,4,3
35,100.0,800.0,-550.0,0.2501,0.6876,0.5626,rock4,series1,4,3
33,100.0,200.0,-550.0,0.2501,0.3126,0.5626,rock4,series1,4,3
36,200.0,200.0,-550.0,0.3126,0.3126,0.5626,rock4,series1,4,3
37,200.0,500.0,-550.0,0.3126,0.5001,0.5626,rock4,series1,4,3
38,200.0,800.0,-550.0,0.3126,0.6876,0.5626,rock4,series1,4,3
39,800.0,200.0,-525.0,0.6876,0.3126,0.578225,rock4,series1,4,3
40,800.0,500.0,-525.0,0.6876,0.5001,0.578225,rock4,series1,4,3
41,800.0,800.0,-525.0,0.6876,0.6876,0.578225,rock4,series1,4,3
42,900.0,200.0,-525.0,0.7501,0.3126,0.578225,rock4,series1,4,3
43,900.0,500.0,-525.0,0.7501,0.5001,0.578225,rock4,series1,4,3
44,900.0,800.0,-525.0,0.7501,0.6876,0.578225,rock4,series1,4,3
80,400.0,500.0,-625.0,0.4376,0.5001,0.515725,rock4,series1,4,3
81,400.0,800.0,-625.0,0.4376,0.6876,0.515725,rock4,series1,4,3
82,400.0,800.0,-675.0,0.4376,0.6876,0.484475,rock3,series1,5,3
25,100.0,200.0,-600.0,0.2501,0.3126,0.53135,rock3,series1,5,3
26,100.0,500.0,-600.0,0.2501,0.5001,0.53135,rock3,series1,5,3
24,100.0,800.0,-600.0,0.2501,0.6876,0.53135,rock3,series1,5,3
27,200.0,200.0,-600.0,0.3126,0.3126,0.53135,rock3,series1,5,3
28,200.0,500.0,-600.0,0.3126,0.5001,0.53135,rock3,series1,5,3
29,200.0,800.0,-600.0,0.3126,0.6876,0.53135,rock3,series1,5,3
30,800.0,200.0,-575.0,0.6876,0.3126,0.546975,rock3,series1,5,3
31,800.0,500.0,-575.0,0.6876,0.5001,0.546975,rock3,series1,5,3
32,800.0,800.0,-575.0,0.6876,0.6876,0.546975,rock3,series1,5,3
67,900.0,500.0,-575.0,0.7501,0.5001,0.546975,rock3,series1,5,3
68,900.0,200.0,-575.0,0.7501,0.3126,0.546975,rock3,series1,5,3
69,900.0,800.0,-575.0,0.7501,0.6876,0.546975,rock3,series1,5,3
83,400.0,200.0,-675.0,0.4376,0.3126,0.484475,rock3,series1,5,3
84,400.0,500.0,-675.0,0.4376,0.5001,0.484475,rock3,series1,5,3
17,200.0,800.0,-650.0,0.3126,0.6876,0.5001,rock2,series1,6,3
16,200.0,500.0,-650.0,0.3126,0.5001,0.5001,rock2,series1,6,3
15,200.0,200.0,-650.0,0.3126,0.3126,0.5001,rock2,series1,6,3
13,100.0,500.0,-650.0,0.2501,0.5001,0.5001,rock2,series1,6,3
14,100.0,800.0,-650.0,0.2501,0.6876,0.5001,rock2,series1,6,3
12,100.0,200.0,-650.0,0.2501,0.3126,0.5001,rock2,series1,6,3
18,900.0,200.0,-625.0,0.7501,0.3126,0.515725,rock2,series1,6,3
19,900.0,500.0,-625.0,0.7501,0.5001,0.515725,rock2,series1,6,3
20,900.0,800.0,-625.0,0.7501,0.6876,0.515725,rock2,series1,6,3
21,800.0,200.0,-625.0,0.6876,0.3126,0.515725,rock2,series1,6,3
22,800.0,500.0,-625.0,0.6876,0.5001,0.515725,rock2,series1,6,3
23,800.0,800.0,-625.0,0.6876,0.6876,0.515725,rock2,series1,6,3
0,100.0,200.0,-700.0,0.2501,0.3126,0.46885,rock1,series1,7,3
1,100.0,500.0,-700.0,0.2501,0.5001,0.46885,rock1,series1,7,3
2,100.0,800.0,-700.0,0.2501,0.6876,0.46885,rock1,series1,7,3
3,200.0,200.0,-700.0,0.3126,0.3126,0.46885,rock1,series1,7,3
4,200.0,500.0,-700.0,0.3126,0.5001,0.46885,rock1,series1,7,3
5,200.0,800.0,-700.0,0.3126,0.6876,0.46885,rock1,series1,7,3
6,900.0,200.0,-675.0,0.7501,0.3126,0.484475,rock1,series1,7,3
7,900.0,500.0,-675.0,0.7501,0.5001,0.484475,rock1,series1,7,3
8,900.0,800.0,-675.0,0.7501,0.6876,0.484475,rock1,series1,7,3
9,800.0,200.0,-675.0,0.6876,0.3126,0.484475,rock1,series1,7,3
10,800.0,500.0,-675.0,0.6876,0.5001,0.484475,rock1,series1,7,3
11,800.0,800.0,-675.0,0.6876,0.6876,0.484475,rock1,series1,7,3
================================================
FILE: examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_surfaces.csv
================================================
,surface,series,order_surfaces,isBasement,color,vertices,edges,id
4,basement,basement_series,1,False,#325916,,,1
5,fault1,fault_series1,1,False,#9f0052,,,2
7,fault2,fault_series2,1,False,#015482,,,3
6,rock4,series1,1,False,#ffbe00,,,4
0,rock3,series1,2,False,#728f02,,,5
3,rock2,series1,3,False,#443988,,,6
1,rock1,series1,4,True,#ff3f20,,,7
================================================
FILE: examples/data/input_data/AlesModel/2018_interf.csv
================================================
X,Y,Z,X_r,Y_r,Z_r,formation,series,id,order_series,smooth
737866.44,1916440.94,408.293632,0.4736471608999658,0.4589280664098209,0.4929178917721893,fault_left,fault_left,1,1,1e-08
737393.89,1917771.71,321.804233,0.4598361365138869,0.4978219335609481,0.4903901016997599,fault_left,fault_left,1,1,1e-08
737824.59,1917182.81,345.54013599999996,0.4724240281720912,0.4806103956052571,0.4910838211689349,fault_left,fault_left,1,1,1e-08
739063.13,1914761.51,356.96948399999997,0.5086223270677365,0.4098440569193649,0.4914178620195221,fault_left,fault_left,1,1,1e-08
738479.04,1915276.11,377.76717,0.4915513690026311,0.42488405935101975,0.4920257074295741,fault_left,fault_left,1,1,1e-08
738375.75,1915524.08,379.181089,0.4885325546785621,0.4321313764963295,0.4920670314583308,fault_left,fault_left,1,1,1e-08
737590.48,1917621.64,314.629286,0.4655817915431097,0.4934358994277979,0.4901804024764273,fault_left,fault_left,1,1,1e-08
737692.8,1917370.45,344.002004,0.4685722560763542,0.4860944726675845,0.4910388668179434,fault_left,fault_left,1,1,1e-08
737973.38,1916306.72,407.53772299999997,0.4767726522719865,0.4550052737040767,0.4928957991309181,fault_left,fault_left,1,1,1e-08
736659.33,1919824.65,409.42467999999997,0.4383674536802389,0.5578223661144561,0.492950948446636,fault_left,fault_left,1,1,1e-08
736175.65,1921407.13,617.1316879999998,0.4242311373643809,0.6040728578518069,0.4990215156938012,fault_left,fault_left,1,1,1e-08
742298.34,1916230.43,227.104821,0.6031764783831367,0.4527755772689595,0.4876223609559666,fault_lr,fault_lr,2,2,1e-08
743019.23,1915920.01,346.222435,0.624245633752266,0.4437030596730941,0.4911037624410281,fault_lr,fault_lr,2,2,1e-08
743444.65,1915465.78,442.65879299999995,0.6366792090233,0.43042746638796175,0.4939222681907748,fault_lr,fault_lr,2,2,1e-08
743159.56,1915758.03,352.647665,0.628347000913624,0.4389689368711533,0.4912915499941254,fault_lr,fault_lr,2,2,1e-08
742804.77,1916009.65,285.059311,0.6179776995869113,0.4463229310644111,0.4893161729857473,fault_lr,fault_lr,2,2,1e-08
739523.11,1918881.5,272.56482,0.5220659732366271,0.5302573091898324,0.4889510016390271,fault_right,fault_right,3,3,1e-08
739523.11,1918881.5,272.56482,0.5220659732366271,0.5302573091898324,0.4889510016390271,fault_right,fault_right,3,3,1e-08
739337.25,1919764.72,328.226726,0.5166339195017909,0.5560708166668697,0.4905778092596846,fault_right,fault_right,3,3,1e-08
739368.8,1920230.31,412.295905,0.5175560183683268,0.5696784239971344,0.4930348645581437,fault_right,fault_right,3,3,1e-08
739523.11,1918881.5,272.56482,0.5220659732366271,0.5302573091898324,0.4889510016390271,fault_right,fault_right,3,3,1e-08
739520.42,1918475.21,293.752678,0.5219873537136184,0.5183828385564151,0.4895702504455593,fault_right,fault_right,3,3,1e-08
739432.91,1921404.27,307.2002950000001,0.5194297349557597,0.6039892698087587,0.4899632784136509,fault_right,fault_right,3,3,1e-08
739630.11,1922747.93,315.142413,0.5251932182039547,0.6432598676853862,0.4901953994280941,fault_right,fault_right,3,3,1e-08
740296.43,1921980.39,362.909221,0.5446674786397484,0.6208272919636784,0.4915914602684988,TRIAS,Trias_Series,4,4,1e-08
740508.41,1918165.96,285.94569,0.5508629308656741,0.5093445160690687,0.4893420788200174,TRIAS,Trias_Series,4,4,1e-08
740514.08,1918162.75,286.344702,0.5510286456223519,0.50925069872005,0.4893537405795398,TRIAS,Trias_Series,4,4,1e-08
740669.86,1917432.62,263.89051,0.5555815635757199,0.4879114896733719,0.4886974811503118,TRIAS,Trias_Series,4,4,1e-08
740635.79,1917668.07,253.27375899999998,0.5545858137062181,0.4947928899309153,0.4883871897378433,TRIAS,Trias_Series,4,4,1e-08
742991.43,1917577.86,294.191288,0.6234331345925325,0.4921563593841629,0.4895830695195324,TRIAS,Trias_Series,4,4,1e-08
740634.56,1917780.73,240.40215800000001,0.5545498650023886,0.4980855573890355,0.4880109967523414,TRIAS,Trias_Series,4,4,1e-08
740486.85,1918229.12,293.930121,0.5502328056180502,0.5111904673974508,0.4895754364990989,TRIAS,Trias_Series,4,4,1e-08
738689.37,1913266.01,228.512532,0.4976985973575646,0.3661356938479776,0.4876635035460619,TRIAS,Trias_Series,4,4,1e-08
736436.36,1914663.25,275.063473,0.4318508012469217,0.4069722523353495,0.4890240287420116,TRIAS,Trias_Series,4,4,1e-08
739480.9,1914378.88,397.960997,0.5208323189369002,0.3986610873693748,0.4926159041011333,TRIAS,Trias_Series,4,4,1e-08
739010.32,1913618.88,289.093957,0.5070788709301219,0.3764488801248049,0.4894340919240506,TRIAS,Trias_Series,4,4,1e-08
737664.53,1915280.47,392.885671,0.4677460204200326,0.42501148727678745,0.492467569636731,TRIAS,Trias_Series,4,4,1e-08
739235.16,1913852.37,341.805969,0.5136501770838996,0.3832729962689359,0.4909746842067114,TRIAS,Trias_Series,4,4,1e-08
738837.12,1913660.75,277.421806,0.5020168258054398,0.37767259738445297,0.4890929547701007,TRIAS,Trias_Series,4,4,1e-08
739393.81,1914213.3,388.044555,0.5182869753462043,0.3938217488489112,0.4923260803316165,TRIAS,Trias_Series,4,4,1e-08
734994.57,1914860.35,319.97495499999997,0.3897121982427779,0.4127328129247005,0.49033663814443895,TRIAS,Trias_Series,4,4,1e-08
734969.6,1914830.89,312.390252,0.3889824103284407,0.41187179762808296,0.4901149631511172,TRIAS,Trias_Series,4,4,1e-08
735293.07,1915162.86,383.20226,0.3984363349039675,0.4215741482056941,0.4921845565683543,TRIAS,Trias_Series,4,4,1e-08
736383.76,1914654.5,285.911443,0.4303134826928903,0.4067165196861522,0.4893410778970417,TRIAS,Trias_Series,4,4,1e-08
744631.28,1915597.24,237.51625099999998,0.6713603557109633,0.4342695937095017,0.4879266515360618,TRIAS,Trias_Series,4,4,1e-08
743326.24,1917494.53,284.65094,0.6332184886814182,0.4897209077661475,0.4893042376945833,TRIAS,Trias_Series,4,4,1e-08
743962.83,1917976.36,380.284645,0.6518238426417077,0.5038031548933222,0.49209928463540703,TRIAS,Trias_Series,4,4,1e-08
744599.59,1917804.1,378.553655,0.6704341651220399,0.4987685827618093,0.4920486937030146,TRIAS,Trias_Series,4,4,1e-08
744779.37,1917816.16,352.115701,0.6756885211989208,0.4991210554188693,0.4912760025012114,TRIAS,Trias_Series,4,4,1e-08
743882.54,1918004.3,354.08227,0.649477239852675,0.5046197457754433,0.4913334786040913,TRIAS,Trias_Series,4,4,1e-08
744383.16,1917954.25,404.866132,0.6641086545773809,0.5031569550220331,0.4928177176401751,TRIAS,Trias_Series,4,4,1e-08
742547.93,1917432.62,258.595194,0.6104711426017868,0.4879114896733719,0.4885427171287098,TRIAS,Trias_Series,4,4,1e-08
744897.72,1915938.38,216.479536,0.6791474879454922,0.44423995210346257,0.4873118201237921,TRIAS,Trias_Series,4,4,1e-08
742951.88,1917594.1,297.1717470000001,0.6222772230181591,0.4926309991810729,0.489670178168206,TRIAS,Trias_Series,4,4,1e-08
742988.98,1917578.29,294.372889,0.6233615294507552,0.4921689268172072,0.4895883770972269,TRIAS,Trias_Series,4,4,1e-08
743621.68,1917245.1,310.120003,0.6418531919818616,0.4824309198016585,0.4900486115178478,TRIAS,Trias_Series,4,4,1e-08
743554.29,1916129.0,333.121762,0.6398836121842144,0.44981112439946574,0.4907208744624499,TRIAS,Trias_Series,4,4,1e-08
744213.33,1917981.47,417.092773,0.6591451030558718,0.5039525027604497,0.4931750606451711,TRIAS,Trias_Series,4,4,1e-08
744096.32,1916643.18,252.89897799999997,0.6557252999378622,0.4648388516639546,0.4883762361677863,TRIAS,Trias_Series,4,4,1e-08
740283.5,1922177.04,318.029812,0.5442895788507045,0.6265747005882149,0.4902797882504438,TRIAS,Trias_Series,4,4,1e-08
740026.49,1919226.66,393.828972,0.5367780533455372,0.5403451584694822,0.4924951391068705,TRIAS,Trias_Series,4,4,1e-08
740198.96,1921924.73,340.36240899999996,0.5418187630606298,0.6192005400489008,0.4909324938726457,TRIAS,Trias_Series,4,4,1e-08
740622.56,1920430.02,263.877564,0.5541991459406322,0.5755152659824136,0.4886971027828973,LIAS,Trias_Series,5,4,1e-08
742338.68,1916021.86,279.57762
gitextract_08koybn1/
├── .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
│ └── source/
│ ├── _static/
│ │ └── nothing.txt
│ ├── _templates/
│ │ ├── base.rst
│ │ ├── class.rst
│ │ └── module.rst
│ ├── api_reference.rst
│ ├── conf.py
│ ├── index.rst
│ ├── installation.rst
│ └── make_external_gallery.py
├── examples/
│ ├── __init__.py
│ ├── data/
│ │ ├── 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
│ │ │ ├── Greenstone.gempy
│ │ │ ├── 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
│ │ ├── tests/
│ │ │ ├── fault_relations_test_ori.csv
│ │ │ └── fault_relations_test_surf.csv
│ │ ├── 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
│ │ └── pflotran_perth_bassin.in
│ └── tutorials/
│ ├── README.rst
│ ├── __init__.py
│ ├── a_getting_started/
│ │ ├── README.rst
│ │ ├── __init__.py
│ │ └── 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
│ │ ├── 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
│ ├── test_cg/
│ │ ├── __init__.py
│ │ └── test_cg_solver.py
│ ├── test_compute_times_for_grids.py
│ ├── test_faults/
│ │ ├── __init__.py
│ │ ├── test_fault_relations.py
│ │ ├── test_finite_faults.py
│ │ └── test_finite_faults.test_finite_fault_scalar_field_on_fault.verify/
│ │ └── fault.approved.txt
│ ├── test_gempy_subsurface.py
│ ├── test_geophysics/
│ │ ├── __init__.py
│ │ ├── test_gravity.py
│ │ └── test_gravity.test_gravity.verify/
│ │ └── 2-layers.approved.txt
│ ├── 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_marching_cubes_pytorch.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
SYMBOL INDEX (567 symbols across 83 files)
FILE: docs/source/make_external_gallery.py
function format_icon (line 10) | def format_icon(title, description, link, image):
class Example (line 23) | class Example():
method __init__ (line 24) | def __init__(self, title, description, link, image):
method format (line 30) | def format(self):
function make_example_gallery (line 66) | def make_example_gallery():
FILE: examples/examples/geometries/a01_horizontal_stratigraphic.py
function generate_normals (line 108) | def generate_normals(polydata):
function get_vertices_and_normals (line 126) | def get_vertices_and_normals(mesh):
function save_to_excel (line 154) | def save_to_excel(vertices, normals, vertices_file, normals_file):
function dataframe_to_xyz (line 199) | def dataframe_to_xyz(df, filename):
FILE: examples/examples/geometries/h08_more_examples.py
function create_example (line 45) | def create_example(name_model, plot_section=True):
FILE: examples/integrations/gempy_subsurface.py
function get_interface_coord_from_surfaces (line 98) | def get_interface_coord_from_surfaces(surface_names: list, verbose=False):
FILE: gempy/API/compute_API.py
function compute_model (line 20) | def compute_model(gempy_model: GeoModel, engine_config: Optional[GemPyEn...
function compute_model_at (line 68) | def compute_model_at(gempy_model: GeoModel, at: np.ndarray,
function optimize_nuggets (line 95) | def optimize_nuggets(geo_model: GeoModel, engine_config: GemPyEngineConf...
function optimize_and_compute (line 114) | def optimize_and_compute(geo_model: GeoModel, engine_config: GemPyEngine...
FILE: gempy/API/examples_generator.py
function generate_example_model (line 10) | def generate_example_model(example_model: ExampleModel, compute_model: b...
function _generate_2_5d_model (line 34) | def _generate_2_5d_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_horizontal_stratigraphic_model (line 132) | def _generate_horizontal_stratigraphic_model(compute_model: bool) -> gp....
function _generate_anticline_model (line 165) | def _generate_anticline_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_one_fault_model (line 198) | def _generate_one_fault_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_combination_model (line 244) | def _generate_combination_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_one_fault_model_gravity (line 296) | def _generate_one_fault_model_gravity(compute_model):
function _generate_graben_model (line 451) | def _generate_graben_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_greenstone_model (line 489) | def _generate_greenstone_model(compute_model: bool) -> gp.data.GeoModel:
function _generate_fault_relation_model (line 511) | def _generate_fault_relation_model(compute_model: bool) -> gp.data.GeoMo...
FILE: gempy/API/faults_API.py
function set_is_fault (line 9) | def set_is_fault(frame: Union[GeoModel, StructuralFrame], fault_groups: ...
function unset_is_fault (line 40) | def unset_is_fault(frame: Union[GeoModel, StructuralFrame], fault_groups...
function set_fault_relation (line 65) | def set_fault_relation(frame: Union[GeoModel, StructuralFrame], rel_matr...
function set_is_finite_fault (line 84) | def set_is_finite_fault(self, series_fault=None, toggle: bool = True):
function _find_and_set_fields (line 95) | def _find_and_set_fields(frame: StructuralFrame, fault_groups: list[Stru...
FILE: gempy/API/gp2_gp3_compatibility/gp3_to_gp2_input.py
function gempy3_to_gempy2 (line 7) | def gempy3_to_gempy2(geo_model: GeoModel) -> "gempy_legacy.Project":
FILE: gempy/API/gp2_gp3_compatibility/gp3_to_gp2_output.py
function set_gp3_solutions_to_gp2_solution (line 10) | def set_gp3_solutions_to_gp2_solution(gp3_solution: Solutions, geo_model...
function _set_surfaces_meshes (line 32) | def _set_surfaces_meshes(geo_model: Project, meshes: list[DualContouring...
function _set_block_matrix (line 55) | def _set_block_matrix(geo_model: Project, octree_output: OctreeLevel) ->...
function _set_scalar_field (line 65) | def _set_scalar_field(geo_model: Project, octree_output: OctreeLevel) ->...
function _set_scalar_field_at_surface_points (line 75) | def _set_scalar_field_at_surface_points(geo_model: Project, octree_outpu...
function _set_lith_block (line 84) | def _set_lith_block(geo_model: Project, octree_output: OctreeLevel) -> P...
FILE: gempy/API/grid_API.py
function set_section_grid (line 12) | def set_section_grid(grid: Grid, section_dict: dict):
function set_topography_from_random (line 26) | def set_topography_from_random(grid: Grid, fractal_dimension: float = 2....
function set_topography_from_subsurface_structured_grid (line 70) | def set_topography_from_subsurface_structured_grid(grid: Grid, struct: "...
function set_topography_from_arrays (line 76) | def set_topography_from_arrays(grid: Grid, xyz_vertices: np.ndarray):
function set_topography_from_file (line 82) | def set_topography_from_file(grid: Grid, filepath: str, crop_to_extent: ...
function set_custom_grid (line 91) | def set_custom_grid(grid: Grid, xyz_coord: np.ndarray, reset: bool = Fal...
function set_centered_grid (line 99) | def set_centered_grid(grid: Grid, centers: np.ndarray, resolution: Seque...
function set_topography_from_gdal (line 111) | def set_topography_from_gdal():
function set_topography_from_array (line 115) | def set_topography_from_array():
function set_active_grid (line 119) | def set_active_grid(grid: Grid, grid_type: list[Grid.GridTypes], reset: ...
FILE: gempy/API/initialization_API.py
function create_geomodel (line 21) | def create_geomodel(
function structural_elements_from_borehole_set (line 107) | def structural_elements_from_borehole_set(
function create_data_legacy (line 156) | def create_data_legacy(
function _initialize_structural_frame (line 176) | def _initialize_structural_frame(importer_helper: ImporterHelper) -> Str...
function _read_input_points (line 182) | def _read_input_points(importer_helper: ImporterHelper) -> (SurfacePoint...
function _fetch_data_with_pooch (line 215) | def _fetch_data_with_pooch(orientations_hash, orientations_path, surface...
FILE: gempy/API/io_API.py
function read_surface_points (line 10) | def read_surface_points(path: str,
function read_orientations (line 37) | def read_orientations(
function _standardize (line 87) | def _standardize(df: 'pandas.DataFrame'):
function _add_gradient_columns (line 96) | def _add_gradient_columns(df):
FILE: gempy/API/map_stack_to_surfaces_API.py
function map_stack_to_surfaces (line 9) | def map_stack_to_surfaces(gempy_model: GeoModel, mapping_object: Union[d...
function _move_element (line 82) | def _move_element(structural_groups: list[StructuralGroup], element_name...
FILE: gempy/core/color_generator.py
class ColorsGenerator (line 10) | class ColorsGenerator:
method __post_init__ (line 38) | def __post_init__(self):
method _random_hexcolor (line 42) | def _random_hexcolor() -> str:
method regenerate_color_palette (line 46) | def regenerate_color_palette(self, seaborn_palettes: Optional[list[str...
method __iter__ (line 65) | def __iter__(self) -> 'ColorsGenerator':
method __next__ (line 69) | def __next__(self) -> str:
method up_next (line 76) | def up_next(self) -> str:
method _next_color (line 81) | def _next_color(self) -> str:
FILE: gempy/core/data/DEP_xsolution.py
class XSolution (line 19) | class XSolution(object):
method __init__ (line 53) | def __init__(self, grid: Grid,
method set_meshes (line 72) | def set_meshes(self, surfaces: Surfaces = None):
method extract_each_surface_representations (line 98) | def extract_each_surface_representations(ids, last_idx, simplex,
method set_values (line 110) | def set_values(self,
method prepare_common_args (line 146) | def prepare_common_args(self, active_features, surf_properties):
method set_values_to_centered (line 162) | def set_values_to_centered(self):
method set_values_to_surface_points_ (line 165) | def set_values_to_surface_points_(self, values, l0, coords_base, xyz=N...
method create_struc_xarrays (line 177) | def create_struc_xarrays(values, l0, l1, res: Union[list, np.ndarray]):
method create_unstruct_xarray (line 228) | def create_unstruct_xarray(values, l0, l1, xyz):
method set_values_to_custom_grid (line 274) | def set_values_to_custom_grid(self, values: list, l0, l1,
method set_values_to_regular_grid_ (line 290) | def set_values_to_regular_grid_(self, values: list, l0, l1,
method add_cartesian_coords (line 300) | def add_cartesian_coords(self, coords_base):
method set_values_to_topography (line 307) | def set_values_to_topography(self,
method set_values_to_sections (line 320) | def set_values_to_sections(self,
method data_structures (line 341) | def data_structures(self):
method to_netcdf (line 347) | def to_netcdf(self, path, name, **kwargs):
FILE: gempy/core/data/_data_points_helpers.py
function structural_element_hasher (line 9) | def structural_element_hasher(i: int, name: str, hash_length: int = 8) -...
function generate_ids_from_names (line 15) | def generate_ids_from_names(name_id_map, names, x):
FILE: gempy/core/data/core_utils.py
function calculate_line_coordinates_2points (line 6) | def calculate_line_coordinates_2points(p1, p2, res):
function distance_2_points (line 19) | def distance_2_points(p1, p2):
function interpolate_zvals_at_xy (line 23) | def interpolate_zvals_at_xy(xy, topography, method='DEP'):
FILE: gempy/core/data/encoders/binary_encoder.py
function deserialize_input_data_tables (line 7) | def deserialize_input_data_tables(binary_array: bytes, name_id_map: dict,
function deserialize_grid (line 42) | def deserialize_grid(binary_array:bytes, custom_grid_length: int, topogr...
FILE: gempy/core/data/encoders/converters.py
function convert_to_arrays (line 11) | def convert_to_arrays(values, keys):
function validate_numpy_array (line 18) | def validate_numpy_array(v):
function instantiate_if_necessary (line 25) | def instantiate_if_necessary(data: dict, key: str, type: type) -> None:
function loading_model_from_binary (line 55) | def loading_model_from_binary(input_binary: bytes, grid_binary: bytes):
FILE: gempy/core/data/encoders/json_geomodel_encoder.py
function encode_numpy_array (line 4) | def encode_numpy_array(array: np.ndarray):
FILE: gempy/core/data/enumerators.py
class ExampleModel (line 4) | class ExampleModel(Enum):
FILE: gempy/core/data/gempy_engine_config.py
class GemPyEngineConfig (line 9) | class GemPyEngineConfig:
FILE: gempy/core/data/geo_model.py
class GeoModelMeta (line 36) | class GeoModelMeta:
class GeoModel (line 53) | class GeoModel(BaseModel):
method __repr__ (line 77) | def __repr__(self):
method interpolation_options (line 85) | def interpolation_options(self) -> InterpolationOptions:
method interpolation_options (line 91) | def interpolation_options(self, value):
method solutions (line 95) | def solutions(self) -> Solutions:
method solutions (line 99) | def solutions(self, value: Solutions):
method surface_points_copy (line 128) | def surface_points_copy(self):
method surface_points_copy_transformed (line 134) | def surface_points_copy_transformed(self) -> SurfacePointsTable:
method surface_points (line 142) | def surface_points(self):
method surface_points (line 147) | def surface_points(self, value):
method orientations_copy (line 151) | def orientations_copy(self) -> OrientationsTable:
method orientations_copy_transformed (line 157) | def orientations_copy_transformed(self) -> OrientationsTable:
method regular_grid_coordinates (line 169) | def regular_grid_coordinates(self) -> np.ndarray:
method regular_grid_coordinates_transformed (line 173) | def regular_grid_coordinates_transformed(self) -> np.ndarray:
method orientations (line 179) | def orientations(self) -> OrientationsTable:
method orientations (line 184) | def orientations(self, value):
method project_bounds (line 188) | def project_bounds(self) -> np.ndarray:
method extent_transformed_transformed_by_input (line 192) | def extent_transformed_transformed_by_input(self) -> np.ndarray:
method interpolation_input_copy (line 200) | def interpolation_input_copy(self):
method input_data_descriptor (line 214) | def input_data_descriptor(self) -> InputDataDescriptor:
method taped_interpolation_input (line 219) | def taped_interpolation_input(self) -> InterpolationInput:
method taped_interpolation_input (line 223) | def taped_interpolation_input(self, value: InterpolationInput):
method from_args (line 229) | def from_args(cls, name: str, structural_frame: StructuralFrame, grid:...
method update_transform (line 260) | def update_transform(self, auto_anisotropy: GlobalAnisotropy = GlobalA...
method add_surface_points (line 279) | def add_surface_points(self, X: Sequence[float], Y: Sequence[float], Z...
method deserialize_properties (line 297) | def deserialize_properties(cls, data: Union["GeoModel", dict], constru...
method _infer_dense_grid_solution (line 322) | def _infer_dense_grid_solution(self):
FILE: gempy/core/data/grid.py
class Grid (line 18) | class Grid:
class GridTypes (line 19) | class GridTypes(enum.Flag):
method __init__ (line 45) | def __init__(self, extent=None, resolution=None):
method __setattr__ (line 54) | def __setattr__(self, name, value):
method deserialize_properties (line 63) | def deserialize_properties(cls, data: Union["Grid", dict], constructor...
method grid_binary (line 105) | def grid_binary(self):
method binary_meta_data (line 111) | def binary_meta_data(self) -> dict:
method active_grids (line 119) | def active_grids(self) -> GridTypes:
method active_grids (line 123) | def active_grids(self, value: GridTypes):
method init_octree_grid (line 128) | def init_octree_grid(cls, extent, octree_levels, legacy: bool = False):
method init_dense_grid (line 154) | def init_dense_grid(cls, extent, resolution):
method __str__ (line 157) | def __str__(self):
method transform (line 166) | def transform(self) -> Transform:
method transform (line 175) | def transform(self, value: Transform):
method extent (line 179) | def extent(self):
method corner_min (line 188) | def corner_min(self):
method corner_max (line 192) | def corner_max(self):
method bounding_box (line 196) | def bounding_box(self):
method dense_grid (line 210) | def dense_grid(self) -> RegularGrid:
method dense_grid (line 214) | def dense_grid(self, value):
method octree_grid (line 220) | def octree_grid(self):
method octree_grid (line 224) | def octree_grid(self, value):
method set_octree_grid (line 227) | def set_octree_grid(self, regular_grid: RegularGrid):
method set_octree_grid_by_levels (line 232) | def set_octree_grid_by_levels(self, octree_levels: int, evaluation_opt...
method octree_levels (line 245) | def octree_levels(self):
method octree_levels (line 249) | def octree_levels(self, value):
method custom_grid (line 253) | def custom_grid(self):
method custom_grid (line 257) | def custom_grid(self, value):
method topography (line 263) | def topography(self):
method topography (line 267) | def topography(self, value):
method sections (line 273) | def sections(self):
method sections (line 277) | def sections(self, value):
method centered_grid (line 283) | def centered_grid(self):
method centered_grid (line 287) | def centered_grid(self, value):
method regular_grid (line 293) | def regular_grid(self):
method _update_values (line 307) | def _update_values(self):
method get_section_args (line 337) | def get_section_args(self, section_name: str):
FILE: gempy/core/data/grid_modules/custom_grid.py
class CustomGrid (line 7) | class CustomGrid:
method __post_init__ (line 24) | def __post_init__(self):
method length (line 32) | def length(self):
FILE: gempy/core/data/grid_modules/diamond_square.py
class DiaomondSquare (line 49) | class DiaomondSquare(object):
method __init__ (line 51) | def __init__(self, size: tuple = (16, 16), roughness: float = 0.5, z_m...
method random_func (line 87) | def random_func(self, i, level_shape):
method random_initialization (line 121) | def random_initialization(self, level='highest', verbose: bool=False):
method interpolate (line 144) | def interpolate(self, level='highest'):
method reset_grid (line 166) | def reset_grid(self):
method perform_diamond_step (line 170) | def perform_diamond_step(self, i: int, m_pow: int):
method perform_square_step (line 198) | def perform_square_step(self, i: int, m_pow: int):
method get_selection_diamond (line 256) | def get_selection_diamond(self, m_pow: int):
method get_selection_square (line 283) | def get_selection_square(self, m_pow: int):
method plot_diamond_and_square (line 332) | def plot_diamond_and_square(self, pad=False):
FILE: gempy/core/data/grid_modules/regular_grid.py
class RegularGrid (line 14) | class RegularGrid:
method __init__ (line 26) | def __init__(self, extent: np.ndarray, resolution: np.ndarray, transfo...
method octree_init (line 36) | def octree_init(cls, extent: np.ndarray, octree_levels: int, base_reso...
method base_resolution (line 46) | def base_resolution(self):
method base_resolution (line 50) | def base_resolution(self, value):
method _validate_regular_grid (line 54) | def _validate_regular_grid(self):
method _create_regular_grid_3d (line 58) | def _create_regular_grid_3d(self):
method set_regular_grid (line 73) | def set_regular_grid(self, extent: Sequence[float], resolution: Sequen...
method transform (line 93) | def transform(self) -> Transform:
method transform (line 99) | def transform(self, value: Transform):
method from_corners_box (line 103) | def from_corners_box(cls, pivot: tuple, point_x_axis: tuple, distance_...
method bounding_box (line 178) | def bounding_box(self) -> np.ndarray:
method x_coord (line 192) | def x_coord(self):
method y_coord (line 196) | def y_coord(self):
method z_coord (line 200) | def z_coord(self):
method dx_dy_dz (line 204) | def dx_dy_dz(self):
method dx (line 211) | def dx(self):
method dy (line 215) | def dy(self):
method dz (line 219) | def dz(self):
method values_vtk_format (line 223) | def values_vtk_format(self) -> np.ndarray:
method get_values_vtk_format (line 226) | def get_values_vtk_format(self, orthogonal: bool = False) -> np.ndarray:
method plot_rotation (line 246) | def plot_rotation(regular_grid, pivot, point_x_axis, point_y_axis):
FILE: gempy/core/data/grid_modules/sections_grid.py
class Sections (line 14) | class Sections:
method __post_init__ (line 50) | def __post_init__(self):
method initialize_computations (line 54) | def initialize_computations(self):
method _repr_html_ (line 75) | def _repr_html_(self):
method __repr__ (line 78) | def __repr__(self):
method show (line 81) | def show(self):
method set_sections (line 84) | def set_sections(self, section_dict, regular_grid=None, z_ext=None):
method _get_section_params (line 92) | def _get_section_params(self):
method _calculate_all_distances (line 108) | def _calculate_all_distances(self):
method _compute_section_coordinates (line 114) | def _compute_section_coordinates(self):
method generate_axis_coord (line 129) | def generate_axis_coord(self):
method get_section_args (line 138) | def get_section_args(self, section_name: str):
method get_section_grid (line 142) | def get_section_grid(self, section_name: str):
FILE: gempy/core/data/grid_modules/topography.py
class Topography (line 17) | class Topography:
method __post_init__ (line 37) | def __post_init__(self):
method from_subsurface_structured_data (line 44) | def from_subsurface_structured_data(cls, structured_data: 'subsurface....
method from_unstructured_mesh (line 64) | def from_unstructured_mesh(cls, regular_grid, xyz_vertices):
method from_arrays (line 101) | def from_arrays(cls, regular_grid, x_coordinates, y_coordinates, heigh...
method extent (line 112) | def extent(self):
method regular_grid_resolution (line 116) | def regular_grid_resolution(self):
method x (line 120) | def x(self):
method y (line 129) | def y(self):
method set_values (line 137) | def set_values(self, values_2d: np.ndarray):
method set_values2d (line 157) | def set_values2d(self, values: np.ndarray) -> "Topography":
method set_values2d_ (line 181) | def set_values2d_(self, values: np.ndarray):
method topography_mask (line 186) | def topography_mask(self):
method resize_topo (line 224) | def resize_topo(self):
method load_random_hills (line 234) | def load_random_hills(self, **kwargs):
method save (line 248) | def save(self, path):
method load (line 251) | def load(self, path):
method load_from_saved (line 256) | def load_from_saved(self, *args, **kwargs):
class _LoadDEMArtificial (line 260) | class _LoadDEMArtificial: # * Cannot think of a good reason to be a class
method __init__ (line 262) | def __init__(self, grid=None, fd=2.0, extent=None, resolution=None, d_...
method fractalGrid (line 290) | def fractalGrid(fd, n=256):
method create_topo_array (line 351) | def create_topo_array(self):
method get_values (line 360) | def get_values(self):
FILE: gempy/core/data/importer_helper.py
class ImporterHelper (line 6) | class ImporterHelper:
FILE: gempy/core/data/options.py
class InterpolationOptionsType (line 2) | class InterpolationOptionsType(enum.Enum):
FILE: gempy/core/data/orientations.py
class OrientationsTable (line 18) | class OrientationsTable:
method __post_init__ (line 35) | def __post_init__(self):
method from_arrays (line 41) | def from_arrays(cls, x: np.ndarray, y: np.ndarray, z: np.ndarray,
method _data_from_arrays (line 67) | def _data_from_arrays(cls, x, y, z, G_x, G_y, G_z, names, nugget, name...
method initialize_empty (line 80) | def initialize_empty(cls) -> 'OrientationsTable':
method xyz (line 84) | def xyz(self) -> np.ndarray:
method xyz_view (line 93) | def xyz_view(self) -> np.ndarray:
method xyz_view (line 102) | def xyz_view(self, value: np.ndarray):
method grads (line 111) | def grads(self) -> np.ndarray:
method grads_view (line 120) | def grads_view(self) -> np.ndarray:
method grads_view (line 129) | def grads_view(self, value: np.ndarray):
method nugget (line 138) | def nugget(self) -> np.ndarray:
method ids (line 147) | def ids(self) -> np.ndarray:
method get_orientations_by_name (line 155) | def get_orientations_by_name(self, name: str) -> 'OrientationsTable':
method get_orientations_by_id (line 166) | def get_orientations_by_id(self, id: int) -> 'OrientationsTable':
method get_orientations_by_id_groups (line 177) | def get_orientations_by_id_groups(self) -> list['OrientationsTable']:
method fill_missing_orientations_groups (line 187) | def fill_missing_orientations_groups(cls, orientations_groups: list['O...
method empty_orientation (line 214) | def empty_orientation(cls, id: int) -> 'OrientationsTable':
method id (line 220) | def id(self) -> int:
method model_transform (line 230) | def model_transform(self) -> Transform:
method model_transform (line 236) | def model_transform(self, value: Transform):
method df (line 240) | def df(self) -> 'pd.DataFrame':
method __str__ (line 244) | def __str__(self):
method __repr__ (line 247) | def __repr__(self):
method _repr_html_ (line 250) | def _repr_html_(self):
method __len__ (line 266) | def __len__(self):
FILE: gempy/core/data/structural_element.py
class StructuralElement (line 19) | class StructuralElement:
method __init__ (line 39) | def __init__(self, name: str, surface_points: SurfacePointsTable, orie...
method id (line 52) | def id(self):
method __repr__ (line 58) | def __repr__(self):
method _repr_html_ (line 63) | def _repr_html_(self):
method _repr_html_2 (line 72) | def _repr_html_2(self):
method number_of_points (line 82) | def number_of_points(self) -> int:
method number_of_orientations (line 86) | def number_of_orientations(self) -> int:
method color (line 90) | def color(self):
method color (line 94) | def color(self, value):
method is_basement (line 100) | def is_basement(self):
method has_data (line 105) | def has_data(self):
method index (line 109) | def index(self):
method structural_group (line 113) | def structural_group(self):
FILE: gempy/core/data/structural_frame.py
class StructuralFrame (line 24) | class StructuralFrame:
method __init__ (line 42) | def __init__(self, structural_groups: list[StructuralGroup], color_gen...
method __post_init__ (line 46) | def __post_init__(self):
method from_data_tables (line 50) | def from_data_tables(cls, surface_points: SurfacePointsTable, orientat...
method initialize_default_structure (line 85) | def initialize_default_structure(cls) -> 'StructuralFrame':
method get_element_by_name (line 125) | def get_element_by_name(self, element_name: str) -> StructuralElement:
method get_group_by_name (line 133) | def get_group_by_name(self, group_name: str) -> StructuralGroup:
method get_group_by_element (line 140) | def get_group_by_element(self, element: StructuralElement) -> Structur...
method append_group (line 147) | def append_group(self, group: StructuralGroup):
method insert_group (line 150) | def insert_group(self, index: int, group: StructuralGroup):
method __repr__ (line 153) | def __repr__(self):
method _repr_html_ (line 161) | def _repr_html_(self):
method structural_elements (line 197) | def structural_elements(self) -> list[StructuralElement]:
method n_elements (line 206) | def n_elements(self) -> int:
method _basement_element (line 212) | def _basement_element(self) -> StructuralElement:
method fault_relations (line 244) | def fault_relations(self) -> np.ndarray:
method fault_relations (line 276) | def fault_relations(self, matrix: np.ndarray):
method group_is_fault (line 296) | def group_is_fault(self) -> list[bool]:
method group_is_lithology (line 301) | def group_is_lithology(self) -> list[bool]:
method input_data_descriptor (line 306) | def input_data_descriptor(self):
method faults_input_data (line 320) | def faults_input_data(self):
method groups_structural_relation (line 326) | def groups_structural_relation(self) -> list[StackRelationType]:
method number_of_points_per_element (line 333) | def number_of_points_per_element(self) -> np.ndarray:
method number_of_points_per_group (line 338) | def number_of_points_per_group(self) -> np.ndarray:
method number_of_orientations_per_group (line 343) | def number_of_orientations_per_group(self) -> np.ndarray:
method number_of_elements_per_group (line 348) | def number_of_elements_per_group(self) -> np.ndarray:
method surfaces (line 353) | def surfaces(self) -> list[StructuralElement]:
method number_of_elements (line 358) | def number_of_elements(self) -> int:
method elements_names (line 363) | def elements_names(self) -> list[str]:
method elements_ids (line 368) | def elements_ids(self) -> np.ndarray:
method surface_points_copy (line 373) | def surface_points_copy(self) -> SurfacePointsTable:
method surface_points (line 379) | def surface_points(self):
method surface_points (line 384) | def surface_points(self, modified_surface_points: SurfacePointsTable) ...
method orientations_copy (line 390) | def orientations_copy(self) -> OrientationsTable:
method orientations (line 396) | def orientations(self) -> OrientationsTable:
method orientations (line 401) | def orientations(self, modified_orientations: OrientationsTable) -> None:
method input_tables_binary (line 407) | def input_tables_binary(self):
method element_id_name_map (line 411) | def element_id_name_map(self) -> dict[int, str]:
method element_name_id_map (line 416) | def element_name_id_map(self) -> dict[str, int]:
method elements_colors (line 421) | def elements_colors(self) -> list[str]:
method elements_colors_volumes (line 427) | def elements_colors_volumes(self) -> list[str]:
method elements_colors_contacts (line 432) | def elements_colors_contacts(self) -> list[str]:
method elements_colors_orientations (line 438) | def elements_colors_orientations(self) -> list[str]:
method surface_points_colors_per_item (line 446) | def surface_points_colors_per_item(self) -> list[str]:
method orientations_colors_per_item (line 452) | def orientations_colors_per_item(self) -> list[str]:
method groups_to_mapper (line 458) | def groups_to_mapper(self) -> dict[str, list[str]]:
method surfaces_df (line 468) | def surfaces_df(self) -> 'pd.DataFrame':
method deserialize_binary (line 482) | def deserialize_binary(cls, data: Union["StructuralFrame", dict], cons...
method binary_meta_data (line 508) | def binary_meta_data(self) -> dict:
method _validate_faults_relations (line 516) | def _validate_faults_relations(self):
FILE: gempy/core/data/structural_group.py
class FaultsRelationSpecialCase (line 13) | class FaultsRelationSpecialCase(Enum):
class StructuralGroup (line 20) | class StructuralGroup(ABC):
method __post_init__ (line 37) | def __post_init__(self):
method __repr__ (line 44) | def __repr__(self):
method _repr_html_ (line 51) | def _repr_html_(self):
method append_element (line 63) | def append_element(self, element: StructuralElement):
method remove_element (line 66) | def remove_element(self, element: StructuralElement):
method id (line 70) | def id(self):
method is_fault (line 74) | def is_fault(self)-> bool:
method is_lithology (line 78) | def is_lithology(self)-> bool:
method number_of_points (line 82) | def number_of_points(self) -> int:
method number_of_orientations (line 86) | def number_of_orientations(self) -> int:
method number_of_elements (line 90) | def number_of_elements(self) -> int:
method get_element_by_name (line 93) | def get_element_by_name(self, element_name: str) -> StructuralElement ...
class Stack (line 100) | class Stack(StructuralGroup):
method __int__ (line 101) | def __int__(self, name: str, elements: list[StructuralElement]):
method __repr__ (line 104) | def __repr__(self):
class Fault (line 109) | class Fault(StructuralGroup):
FILE: gempy/core/data/surface_points.py
class SurfacePointsTable (line 20) | class SurfacePointsTable:
method __post_init__ (line 35) | def __post_init__(self):
method __str__ (line 40) | def __str__(self):
method __repr__ (line 43) | def __repr__(self):
method _repr_html_ (line 46) | def _repr_html_(self):
method from_arrays (line 63) | def from_arrays(cls, x: np.ndarray, y: np.ndarray, z: np.ndarray,
method _data_from_arrays (line 85) | def _data_from_arrays(cls, x: np.ndarray, y: np.ndarray, z: np.ndarray,
method initialize_empty (line 101) | def initialize_empty(cls) -> 'SurfacePointsTable':
method id_to_name (line 109) | def id_to_name(self, id: int) -> str:
method xyz (line 121) | def xyz(self) -> np.ndarray:
method xyz_view (line 125) | def xyz_view(self) -> np.ndarray:
method xyz_view (line 129) | def xyz_view(self, value: np.ndarray):
method nugget (line 133) | def nugget(self) -> np.ndarray:
method nugget (line 137) | def nugget(self, value: np.ndarray):
method model_transform (line 141) | def model_transform(self) -> Transform:
method model_transform (line 147) | def model_transform(self, value: Transform):
method __len__ (line 150) | def __len__(self):
method get_surface_points_by_name (line 153) | def get_surface_points_by_name(self, name: str) -> 'SurfacePointsTable':
method get_surface_points_by_id (line 164) | def get_surface_points_by_id(self, id: int) -> 'SurfacePointsTable':
method get_surface_points_by_id_groups (line 175) | def get_surface_points_by_id_groups(self) -> list['SurfacePointsTable']:
method ids (line 185) | def ids(self) -> np.ndarray:
method id (line 189) | def id(self) -> int:
method df (line 199) | def df(self) -> 'pd.DataFrame':
FILE: gempy/modules/custom_implicit_functions/ellipsoid_implicit_function.py
function ellipsoid_3d_factory (line 5) | def ellipsoid_3d_factory(center: np.ndarray, radius: np.ndarray, max_slo...
function ellipsoid_scalar_field (line 20) | def ellipsoid_scalar_field(xyz, center, radii, k_factors):
function sigmoid (line 40) | def sigmoid(x):
function _implicit_3d_ellipsoid_to_slope_ (line 45) | def _implicit_3d_ellipsoid_to_slope_(xyz: np.ndarray, center: np.ndarray...
FILE: gempy/modules/data_manipulation/_engine_factory.py
function interpolation_input_from_structural_frame (line 14) | def interpolation_input_from_structural_frame(geo_model: "gempy.data.Geo...
function _apply_input_transform_to_grids (line 61) | def _apply_input_transform_to_grids(grid: Grid, input_transform: Transfo...
FILE: gempy/modules/data_manipulation/manipulate_points.py
function add_surface_points (line 10) | def add_surface_points(
function delete_surface_points (line 88) | def delete_surface_points():
function add_orientations (line 92) | def add_orientations(geo_model: GeoModel,
function modify_orientations (line 192) | def modify_orientations(geo_model: GeoModel, slice: Optional[Union[int, ...
function modify_surface_points (line 269) | def modify_surface_points(geo_model: GeoModel,
function delete_orientations (line 312) | def delete_orientations():
function convert_orientation_to_pole_vector (line 316) | def convert_orientation_to_pole_vector(azimuth: Sequence[float], dip: Se...
function compute_adp_from_gradients (line 333) | def compute_adp_from_gradients(G_x: np.ndarray, G_y: np.ndarray, G_z: np...
function _validate_args (line 352) | def _validate_args(elements_names, *args):
FILE: gempy/modules/data_manipulation/manipulate_structural_frame.py
function add_structural_group (line 5) | def add_structural_group(
function remove_structural_group_by_index (line 25) | def remove_structural_group_by_index(model: GeoModel, group_index: int) ...
function remove_structural_group_by_name (line 30) | def remove_structural_group_by_name(model: GeoModel, group_name: str) ->...
function remove_element_by_name (line 37) | def remove_element_by_name(model: GeoModel, element_name: str) -> Struct...
FILE: gempy/modules/data_manipulation/orientations_from_surface_points.py
function create_orientations_from_surface_points_coords (line 9) | def create_orientations_from_surface_points_coords(xyz_coords: np.ndarray,
function _plane_fit (line 34) | def _plane_fit(point_list):
FILE: gempy/modules/grids/create_topography.py
function create_random_topography (line 15) | def create_random_topography(extent: np.array, resolution: np.array, dz:...
FILE: gempy/modules/json_io/json_operations.py
class JsonIO (line 15) | class JsonIO:
method _numpy_to_list (line 19) | def _numpy_to_list(obj):
method _create_id_to_name (line 30) | def _create_id_to_name(name_to_id: Dict[str, int]) -> Dict[int, str]:
method _calculate_default_range (line 35) | def _calculate_default_range(grid_extent: List[float]) -> float:
method _calculate_default_grid_settings (line 46) | def _calculate_default_grid_settings(surface_points: List[SurfacePoint...
method load_model_from_json (line 86) | def load_model_from_json(file_path: str):
method _load_surface_points (line 214) | def _load_surface_points(surface_points_data: List[SurfacePoint], id_t...
method _load_orientations (line 267) | def _load_orientations(orientations_data: List[Orientation], id_to_nam...
method save_model_to_json (line 335) | def save_model_to_json(model, file_path: str) -> None:
method _validate_json_schema (line 428) | def _validate_json_schema(data: Dict) -> None:
FILE: gempy/modules/json_io/schema.py
class SurfacePoint (line 14) | class SurfacePoint(TypedDict):
class Orientation (line 21) | class Orientation(TypedDict):
class Surface (line 32) | class Surface(TypedDict, total=False):
class Fault (line 38) | class Fault(TypedDict, total=False):
class Series (line 44) | class Series(TypedDict, total=False):
class GridSettings (line 55) | class GridSettings(TypedDict, total=False):
class ModelMetadata (line 60) | class ModelMetadata(TypedDict, total=False):
class IdNameMapping (line 66) | class IdNameMapping(TypedDict, total=False):
class GemPyModelJson (line 69) | class GemPyModelJson(TypedDict):
FILE: gempy/modules/mesh_extranction/marching_cubes.py
function set_meshes_with_marching_cubes (line 12) | def set_meshes_with_marching_cubes(model: GeoModel) -> None:
function extract_mesh_for_element (line 59) | def extract_mesh_for_element(structural_element: StructuralElement,
FILE: gempy/modules/optimize_nuggets/_ops.py
function run_optimization (line 6) | def run_optimization(lr, max_epochs, min_impr, model, nugget, patience, ...
function _mask_iqr (line 52) | def _mask_iqr(grads, multiplier: float = 1.5) -> "torch.BoolTensor":
function _apply_outlier_gradients (line 57) | def _apply_outlier_gradients(
function _gradient_masking (line 68) | def _gradient_masking(nugget, focus=0.01):
function _has_converged (line 79) | def _has_converged(
FILE: gempy/modules/optimize_nuggets/_optimizer.py
function nugget_optimizer (line 9) | def nugget_optimizer(
FILE: gempy/modules/serialization/save_load.py
function save_model (line 14) | def save_model(model: GeoModel, path: str | None = None, validate_serial...
function model_to_binary (line 66) | def model_to_binary(model: GeoModel) -> bytes:
function load_model (line 95) | def load_model(path: str) -> GeoModel:
function model_to_bytes (line 137) | def model_to_bytes(model: GeoModel) -> bytes:
function _load_model_from_bytes (line 172) | def _load_model_from_bytes(data: bytes) -> GeoModel:
function _deserialize_binary_file (line 191) | def _deserialize_binary_file(binary_file):
function _to_binary (line 220) | def _to_binary(header_json, body_input, body_grid) -> bytes:
function _validate_serialization (line 228) | def _validate_serialization(original_model, model_deserialized):
FILE: gempy/optional_dependencies.py
function require_pandas (line 1) | def require_pandas():
function require_pooch (line 9) | def require_pooch():
function require_gempy_legacy (line 17) | def require_gempy_legacy():
function require_gempy_viewer (line 25) | def require_gempy_viewer():
function require_matplotlib (line 32) | def require_matplotlib():
function require_skimage (line 40) | def require_skimage():
function require_scipy (line 48) | def require_scipy():
function require_subsurface (line 56) | def require_subsurface():
function require_zlib (line 63) | def require_zlib():
function require_torch (line 70) | def require_torch():
FILE: setup.py
function read_requirements (line 7) | def read_requirements(file_name, base_path=""):
FILE: test/conftest.py
class TestSpeed (line 11) | class TestSpeed(enum.Enum):
class Requirements (line 18) | class Requirements(enum.Enum):
FILE: test/test_api/test_backends.py
class TestBackends (line 12) | class TestBackends:
method geo_model (line 14) | def geo_model(self):
method test_backends_numpy (line 23) | def test_backends_numpy(self, geo_model):
method test_numpy_pykeops (line 34) | def test_numpy_pykeops(self, geo_model):
method test_backends_legacy (line 52) | def test_backends_legacy(self, geo_model):
FILE: test/test_api/test_fault_api.py
function test_fault_api (line 7) | def test_fault_api():
function test_fault_api_setter (line 31) | def test_fault_api_setter():
function _create_structural_frame (line 52) | def _create_structural_frame():
FILE: test/test_api/test_gempy_legacy_comp.py
function test_compare_numpy_with_legacy (line 17) | def test_compare_numpy_with_legacy():
FILE: test/test_api/test_initialization_and_compute_api.py
function test_api_create_data (line 10) | def test_api_create_data():
function _create_data (line 15) | def _create_data():
function test_map_stack_to_surfaces (line 29) | def test_map_stack_to_surfaces():
function test_api_compute_model (line 40) | def test_api_compute_model():
FILE: test/test_api/test_model_construction_granular.py
function test_read_input_points (line 25) | def test_read_input_points():
function _read_data (line 29) | def _read_data() -> tuple[SurfacePointsTable, OrientationsTable]:
function test_create_grid (line 50) | def test_create_grid():
function _generate_grid (line 54) | def _generate_grid():
function test_create_structural_frame (line 62) | def test_create_structural_frame():
function _create_structural_frame (line 67) | def _create_structural_frame():
function test_create_interpolation_options (line 97) | def test_create_interpolation_options():
function _generate_interpolation_options (line 101) | def _generate_interpolation_options():
function _create_geomodel (line 110) | def _create_geomodel() -> GeoModel:
function test_structural_frame_surface_points (line 121) | def test_structural_frame_surface_points():
function _interpolate_numpy (line 127) | def _interpolate_numpy() -> GeoModel:
function test_interpolate_aesara (line 154) | def test_interpolate_aesara():
function test_plot_input (line 158) | def test_plot_input():
function test_plot_results (line 171) | def test_plot_results():
FILE: test/test_api/test_modify_input_data.py
function test_modify_surface_point_by_name_and_index (line 7) | def test_modify_surface_point_by_name_and_index():
function test_modify_surface_point_by_global_index (line 30) | def test_modify_surface_point_by_global_index():
FILE: test/test_api/test_show_input_data.py
function test_print_structural_frame (line 5) | def test_print_structural_frame():
FILE: test/test_core/test_color_generator.py
function test_color_generator (line 4) | def test_color_generator():
FILE: test/test_core/test_installation.py
function test_installation (line 1) | def test_installation():
FILE: test/test_core/test_transfoms.py
function test_transform_1 (line 8) | def test_transform_1():
function plot_points (line 18) | def plot_points(points, title):
function test_transform_operations_scale_move (line 29) | def test_transform_operations_scale_move():
function test_transform_operations_rotate (line 60) | def test_transform_operations_rotate():
FILE: test/test_model_types/test_example_models_I.py
function _verify_scalar_field (line 24) | def _verify_scalar_field(model, name):
function test_generate_horizontal_stratigraphic_model (line 31) | def test_generate_horizontal_stratigraphic_model():
function test_generate_fold_model (line 46) | def test_generate_fold_model():
function test_generate_fault_model (line 60) | def test_generate_fault_model():
function test_generate_combination_model (line 74) | def test_generate_combination_model():
function test_generate_greenstone_model (line 96) | def test_generate_greenstone_model():
FILE: test/test_model_types/test_subduction.py
function test_subduction (line 7) | def test_subduction():
FILE: test/test_modules/test_cg/test_cg_solver.py
function test_solve_with_cg (line 15) | def test_solve_with_cg():
function test_save_weights (line 36) | def test_save_weights():
function test_keops_x_torch (line 69) | def test_keops_x_torch():
FILE: test/test_modules/test_compute_times_for_grids.py
function test_compute_time_dense_dense (line 10) | def test_compute_time_dense_dense():
function test_compute_time_topo_dense_grid (line 34) | def test_compute_time_topo_dense_grid():
function test_compute_time_custom_dense_grid (line 68) | def test_compute_time_custom_dense_grid():
function _setup_model (line 86) | def _setup_model():
FILE: test/test_modules/test_faults/test_fault_relations.py
function test_fault_relations_implementation (line 9) | def test_fault_relations_implementation():
FILE: test/test_modules/test_faults/test_finite_faults.py
function test_finite_fault_scalar_field_on_fault (line 19) | def test_finite_fault_scalar_field_on_fault():
function test_finite_fault_scalar_field (line 83) | def test_finite_fault_scalar_field():
function test_finite_fault_scalar_field_on_fault_ZERO (line 118) | def test_finite_fault_scalar_field_on_fault_ZERO():
function _apply (line 157) | def _apply(regular_grid, scalar_funtion, transform):
function _plot_scalar_field (line 166) | def _plot_scalar_field(regular_grid, scalar_block, plotter=None, backgro...
FILE: test/test_modules/test_gempy_subsurface.py
function test_gempy_to_subsurface (line 21) | def test_gempy_to_subsurface():
function test_gempy_to_subsurface_II (line 54) | def test_gempy_to_subsurface_II():
function test_gempy_to_subsurface_III (line 65) | def test_gempy_to_subsurface_III():
FILE: test/test_modules/test_geophysics/test_gravity.py
function test_gravity (line 10) | def test_gravity():
FILE: test/test_modules/test_grids/test_custom_grid.py
function test_custom_grid (line 24) | def test_custom_grid():
function test_compute_at (line 50) | def test_compute_at():
FILE: test/test_modules/test_grids/test_diamond_square.py
function test_class_nocrash (line 6) | def test_class_nocrash():
function test_grid_generation (line 11) | def test_grid_generation():
function test_diamond_selection (line 19) | def test_diamond_selection():
function test_square_selection (line 36) | def test_square_selection():
function test_random_initialization (line 59) | def test_random_initialization():
function test_random_initialization_level (line 70) | def test_random_initialization_level():
function test_reset_grid (line 83) | def test_reset_grid():
function test_random_func (line 95) | def test_random_func():
function test_random_func_raises_error (line 117) | def test_random_func_raises_error():
function test_interpolate (line 126) | def test_interpolate():
FILE: test/test_modules/test_grids/test_grids_I.py
function test_octree (line 14) | def test_octree():
FILE: test/test_modules/test_grids/test_grids_sections.py
function test_section_grids (line 13) | def test_section_grids():
function test_topography_II (line 68) | def test_topography_II():
FILE: test/test_modules/test_json_io.py
function sample_surface_points (line 17) | def sample_surface_points():
function sample_orientations (line 37) | def sample_orientations():
function sample_json_data (line 63) | def sample_json_data(sample_surface_points, sample_orientations):
function test_surface_points_loading (line 122) | def test_surface_points_loading():
function test_orientations_loading (line 143) | def test_orientations_loading():
function test_surface_points_saving (line 171) | def test_surface_points_saving(tmp_path):
function test_invalid_surface_points_data (line 208) | def test_invalid_surface_points_data():
function test_missing_surface_points_data (line 219) | def test_missing_surface_points_data():
function test_invalid_orientations_data (line 228) | def test_invalid_orientations_data():
function test_missing_orientations_data (line 239) | def test_missing_orientations_data():
function test_invalid_orientation_polarity (line 248) | def test_invalid_orientation_polarity():
function test_default_nugget_values (line 269) | def test_default_nugget_values(tmp_path):
function test_default_series_values (line 312) | def test_default_series_values(tmp_path):
function test_default_interpolation_options (line 358) | def test_default_interpolation_options():
function test_default_metadata (line 371) | def test_default_metadata(tmp_path):
function test_optional_series_colors (line 418) | def test_optional_series_colors():
function sample_model_with_series (line 435) | def sample_model_with_series():
function test_metadata_handling (line 519) | def test_metadata_handling(tmp_path, sample_model_with_series):
function test_grid_settings_handling (line 539) | def test_grid_settings_handling(tmp_path, sample_model_with_series):
function test_interpolation_options_handling (line 565) | def test_interpolation_options_handling(tmp_path, sample_model_with_seri...
function test_fault_relationships (line 589) | def test_fault_relationships(tmp_path):
function test_multiple_series_relationships (line 659) | def test_multiple_series_relationships(tmp_path):
function test_combination_model (line 739) | def test_combination_model(tmp_path):
FILE: test/test_modules/test_marching_cubes.py
function test_marching_cubes_implementation (line 13) | def test_marching_cubes_implementation():
FILE: test/test_modules/test_marching_cubes_pytorch.py
function test_marching_cubes_implementation (line 21) | def test_marching_cubes_implementation():
FILE: test/test_modules/test_outliers.py
function test_outliers_model_1 (line 10) | def test_outliers_model_1():
FILE: test/test_modules/test_pile/test_stratigraphic_pile.py
class TestStratigraphicPile (line 22) | class TestStratigraphicPile:
method borehole_set (line 24) | def borehole_set(self):
method test_structural_elements_from_borehole_set (line 73) | def test_structural_elements_from_borehole_set(self, borehole_set: Bor...
FILE: test/test_modules/test_serialize_model.py
function test_generate_horizontal_stratigraphic_model (line 16) | def test_generate_horizontal_stratigraphic_model():
function test_save_model_to_disk (line 44) | def test_save_model_to_disk():
function test_interpolation_options (line 69) | def test_interpolation_options():
function _validate_serialization (line 83) | def _validate_serialization(original_model, model_deserialized):
FILE: test/test_modules/test_transformed_space.py
function test_plot_transformed_data_only_transform_input (line 10) | def test_plot_transformed_data_only_transform_input():
function test_plot_transformed_data_including_grid_transform (line 40) | def test_plot_transformed_data_including_grid_transform():
function test_plot_transformed_data_including_grid_transform_octree (line 85) | def test_plot_transformed_data_including_grid_transform_octree():
FILE: test/test_private/test_terranigma/test_nuggets/_aux_func.py
function process_file (line 7) | def process_file(filename, global_extent, color_generator: gp.data.Color...
function initialize_geo_model (line 17) | def initialize_geo_model(structural_elements: list[gp.data.StructuralEle...
function _calculate_extent (line 76) | def _calculate_extent(dataset):
function _extract_surface_points_and_orientations (line 84) | def _extract_surface_points_and_orientations(dataset, name, color_genera...
function _update_global_extent (line 141) | def _update_global_extent(global_extent, file_extent):
FILE: test/test_private/test_terranigma/test_nuggets/test_nugget_effect_optimization.py
function test_optimize_nugget_effect (line 31) | def test_optimize_nugget_effect():
FILE: test/verify_helper.py
class WSLWindowsDiffReporter (line 18) | class WSLWindowsDiffReporter(GenericDiffReporter):
method get_command (line 19) | def get_command(self, received, approved):
class LinuxDiffReporter (line 28) | class LinuxDiffReporter(GenericDiffReporter):
function verify_json (line 32) | def verify_json(item, name: str):
function gempy_verify_array (line 51) | def gempy_verify_array(item, name: str, rtol: float = 1e-5, atol: float ...
class ArrayComparator (line 70) | class ArrayComparator(Comparator):
method __init__ (line 75) | def __init__(self, rtol: float = 1e-05, atol: float = 1e-05):
method compare (line 79) | def compare(self, received_path: str, approved_path: str) -> bool:
class JsonSerializer (line 106) | class JsonSerializer:
method get_default_extension (line 109) | def get_default_extension(self) -> str:
method write (line 112) | def write(self, received, received_path: str) -> None:
function verify_model_serialization (line 117) | def verify_model_serialization(model: GeoModel, verify_moment: Literal["...
Condensed preview — 423 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,127K chars).
[
{
"path": ".github/FUNDING.yml",
"chars": 63,
"preview": "# These are supported funding model platforms\n\ngithub: Leguark\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 824,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 595,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
},
{
"path": ".github/ISSUE_TEMPLATE/question.md",
"chars": 121,
"preview": "---\nname: Question\nabout: Ask a question about GemPy\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**What is your question?**"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 449,
"preview": "# Description\nPlease include a summary of the changes.\n\nRelates to <issue>\n\n# Checklist\n- [ ] My code uses type hinting "
},
{
"path": ".gitignore",
"chars": 3976,
"preview": ".vscode\n.idea\n.DS_Store\n.vs\n.cache/\nGeMpy/__pycache__/__init__.cpython-36.pyc\nGeMpy/__pycache__/geomodeller_xml_obj.cpyt"
},
{
"path": ".teamcity/Gempy/buildTypes/GempyEngine_TestingEngine.xml",
"chars": 4036,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"59aca9bb-"
},
{
"path": ".teamcity/Gempy/buildTypes/Gempy_BuildDocs.xml",
"chars": 4546,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"00c27404-"
},
{
"path": ".teamcity/Gempy/buildTypes/Gempy_PublishDocs.xml",
"chars": 3018,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"ce84f581-"
},
{
"path": ".teamcity/Gempy/buildTypes/Gempy_TestingGemPy.xml",
"chars": 4753,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"9299f984-"
},
{
"path": ".teamcity/Gempy/buildTypes/Gempy_TestingViewer.xml",
"chars": 4458,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"53a59128-"
},
{
"path": ".teamcity/Gempy/buildTypes/ReleaseGemPy.xml",
"chars": 1525,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"59376410-"
},
{
"path": ".teamcity/Gempy/buildTypes/ReleaseGemPyEngine.xml",
"chars": 782,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"5b8c088b-"
},
{
"path": ".teamcity/Gempy/buildTypes/ReleaseGemPyViewer.xml",
"chars": 782,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<build-type xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"f46e0551-"
},
{
"path": ".teamcity/Gempy/project-config.xml",
"chars": 1801,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"1f17aa59-a77"
},
{
"path": ".teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyEngineRefsHeadsMain.xml",
"chars": 995,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<vcs-root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"1c4be3ab-0d"
},
{
"path": ".teamcity/Gempy/vcsRoots/GempyEngine_HttpsGithubComGempyProjectGempyViewerRefsHeadsMain.xml",
"chars": 995,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<vcs-root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"2d4a2912-6a"
},
{
"path": ".teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain.xml",
"chars": 946,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<vcs-root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"a5cdb346-b8"
},
{
"path": ".teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain1.xml",
"chars": 941,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<vcs-root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"46efada4-e3"
},
{
"path": ".teamcity/Gempy/vcsRoots/Gempy_HttpsGithubComGempyProjectGempyRefsHeadsMain2.xml",
"chars": 947,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<vcs-root xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" uuid=\"f2909be6-0d"
},
{
"path": ".travis.yml",
"chars": 1869,
"preview": "language: python\nos: linux\ndist: xenial\n\nbranches:\n only:\n - master\n - release\n\npython:\n - '3.8'\n\nbefo"
},
{
"path": "AUTHORS.rst",
"chars": 611,
"preview": ".. _authors_ref:\n\nAuthors\n-------\n\n.. image:: https://img.shields.io/github/contributors/gempy-project/gempy_engine.svg?"
},
{
"path": "CITATION.cff",
"chars": 553,
"preview": "cff-version: 1.2.0\nmessage: \"If you use GemPy, please cite it as below.\"\nauthors:\n - family-names: \"de la Varga\"\n gi"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3368,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 4626,
"preview": "# Contributing\n\nWe welcome and encoruage everyone to contribute to GemPy! \nContributions can be questions, bug reports, "
},
{
"path": "DevelopersGuide.md",
"chars": 5199,
"preview": "Before a release.\n----------------\n# set version number in setup.py, also in the config file of the documentation and in"
},
{
"path": "LICENSE",
"chars": 13797,
"preview": "Copyright (c) 2020-2023 The GemPy Engine Developers\n\n EUROPEAN UNION PUBLIC LICENCE v. 1.2\n "
},
{
"path": "MANIFEST.in",
"chars": 70,
"preview": "exclude notebooks/*\nexclude docs/*\nexclude examples/*\ninclude LICENSE\n"
},
{
"path": "README.md",
"chars": 13346,
"preview": "# <p align=\"center\"><img src=\"https://github.com/gempy-project/gempy/blob/main/docs/readme_images/header_combined_slim.p"
},
{
"path": "WhatsNewGemPy3.md",
"chars": 6920,
"preview": "## **What's New: GemPy v3 Release!**\n\n**Introducing GemPy Version 3: Future-Proofing GemPy and its Role in the Open-Sou"
},
{
"path": "docs/.buildinfo",
"chars": 230,
"preview": "# Sphinx build info version 1\n# This file hashes the configuration used when building these files. When it is not found,"
},
{
"path": "docs/.nojekyll",
"chars": 0,
"preview": ""
},
{
"path": "docs/CNAME",
"chars": 11,
"preview": "gempy.rocks"
},
{
"path": "docs/Makefile",
"chars": 829,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHI"
},
{
"path": "docs/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "docs/developers_notes/dev_log/2022-2023.md",
"chars": 847,
"preview": "## Refactoring for v3 notes:\n\n- I want to make proper subpackages of the library\n- Once the subpackages are done we can "
},
{
"path": "docs/developers_notes/dev_log/2025_05.md",
"chars": 1008,
"preview": "### From gempy_prob notes:\n**Saving models**\n- ? Do we want to try to save the full input as versioning so that we can j"
},
{
"path": "docs/developers_notes/dev_log/log_2024-05.md",
"chars": 3618,
"preview": "## Optimizing solver\n\n### Debugging Vector model 1\n\n#### Questions\n\n- [x] How many times do the system of equations gets"
},
{
"path": "docs/developers_notes/dev_log/log_2024-06-25.md",
"chars": 382,
"preview": "## Goals\n\n- [ ] 1. Fixing 2024.2.0 for whatever version of python that is not working\n\n\n## TODO:\n\n- [x] Analyze error:\n "
},
{
"path": "docs/developers_notes/dev_log/log_2024-06.md",
"chars": 2193,
"preview": "# Refactoring grid to add transform\n\n## TODO:\n- [x] Rotation of pyvista grid\n- [x] Rotation of pyvista meshes\n- [ ] Run "
},
{
"path": "docs/index.html",
"chars": 195,
"preview": "<!DOCTYPE html>\n<meta http-equiv=\"refresh\" content=\"0; url=./build/html/index.html\" />\n<html lang=\"en\">\n<head>\n <meta"
},
{
"path": "docs/main_docstrings",
"chars": 402,
"preview": ":class:`gempy.interpolator.InterpolatorData`\n:class:`gempy.data_management.InputData`\n:class:`gempy.data_management.Grid"
},
{
"path": "docs/source/_static/nothing.txt",
"chars": 0,
"preview": ""
},
{
"path": "docs/source/_templates/base.rst",
"chars": 232,
"preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n.. auto{{ objtype }}:: {{ objname }}\n\n.. include:: "
},
{
"path": "docs/source/_templates/class.rst",
"chars": 696,
"preview": "{{ fullname | escape | underline}}\n\n.. currentmodule:: {{ module }}\n\n\n.. autoclass:: {{ objname }}\n :no-undoc-members:"
},
{
"path": "docs/source/_templates/module.rst",
"chars": 639,
"preview": "{{ fullname | escape | underline}}\n\n.. automodule:: {{ fullname }}\n\n {% block functions %}\n {% if functions %}\n .."
},
{
"path": "docs/source/api_reference.rst",
"chars": 1936,
"preview": "Code\n====\n\n.. toctree::\n :maxdepth: 3\n\n\nGemPy API\n---------\n.. currentmodule:: gempy\n.. autosummary::\n :toctree: Ge"
},
{
"path": "docs/source/conf.py",
"chars": 8579,
"preview": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# GemPy documentation build configuration file, created by\n# sphinx-qui"
},
{
"path": "docs/source/index.rst",
"chars": 9585,
"preview": ".. GeMpy documentation master file, created by\r\n sphinx-quickstart on Wed Dec 14 12:44:40 2016.\r\n You can adapt this"
},
{
"path": "docs/source/installation.rst",
"chars": 2498,
"preview": ".. role:: raw-html-m2r(raw)\n :format: html\n\nInstallation\n------------\n\nInstalling ``GemPy``\n^^^^^^^^^^^^^^^^^^^^\n\nThe "
},
{
"path": "docs/source/make_external_gallery.py",
"chars": 3855,
"preview": "\"\"\"\nModified after https://github.com/pyvista/pyvista/blob/ab70c26edbcfb107286c827bd4914562056219fb/docs/make_external_g"
},
{
"path": "examples/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_faults.csv",
"chars": 125,
"preview": ",isFault,isFinite\nEarlyGranite_Series,False,False\nBIF_Series,False,False\nSimpleMafic_Series,False,False\nBasement,False,F"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_faults_relations.csv",
"chars": 215,
"preview": ",EarlyGranite_Series,BIF_Series,SimpleMafic_Series,Basement\nEarlyGranite_Series,False,False,False,False\nBIF_Series,False"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_kriging_data.csv",
"chars": 119,
"preview": ",range,$C_o$,drift equations,nugget grad,nugget scalar\nvalues,86591.22357375486,178524761.9047619,[3 3 3 0],0.01,1e-06\n"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_options.csv",
"chars": 91,
"preview": ",dtype,output,aesara_optimizer,device,verbosity\nvalues,float64,geology,fast_compile,cpu,[]\n"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_orientations.csv",
"chars": 9132,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series,smooth\n15,743403.6875,6877878.25,454."
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_rescaling_data.csv",
"chars": 91,
"preview": ",rescaling factor,centers\nvalues,97123.0,[ 7.21180062e+05 6.89349475e+06 -3.95136022e+03]\n"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_series.csv",
"chars": 158,
"preview": ",order_series,BottomRelation,isActive\nEarlyGranite_Series,1,Erosion,True\nBIF_Series,2,Erosion,True\nSimpleMafic_Series,3,"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_surface_points.csv",
"chars": 9559,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series,smooth\n43,745312.75,6878221.0,452.733051,0.7485755155833325,0.34283807"
},
{
"path": "examples/data/gempy_models/Greenstone/Greenstone_surfaces.csv",
"chars": 2119,
"preview": ",surface,series,order_surfaces,isBasement,isFault,isActive,color,vertices,edges,id,value_0\n3,EarlyGranite,EarlyGranite_S"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults.csv",
"chars": 67,
"preview": ",isFault,isFinite\nFault_Series,True,False\nStrat_Series,False,False\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_faults_relations.csv",
"chars": 76,
"preview": ",Fault_Series,Strat_Series\nFault_Series,False,True\nStrat_Series,False,False\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_kriging_data.csv",
"chars": 79,
"preview": ",range,$C_o$,drift equations\nvalues,3464.1016151377544,285714.2857142857,[3 3]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_options.csv",
"chars": 91,
"preview": ",dtype,output,aesara_optimizer,device,verbosity\nvalues,float64,geology,fast_compile,cpu,[]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_orientations.csv",
"chars": 609,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series,smooth\n2,500,1000,864.602,0.407994736"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_rescaling_data.csv",
"chars": 58,
"preview": ",rescaling factor,centers\nvalues,3800,[ 850. 1000. 900.]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_series.csv",
"chars": 92,
"preview": ",order_series,BottomRelation,isActive\nFault_Series,1,Fault,True\nStrat_Series,2,Erosion,True\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_surface_points.csv",
"chars": 5665,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series,smooth\n52,700,1000,900,0.46062631578947366,0.5001,0.5001,Main_Fault,Fa"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-1_Basics/Tutorial_ch1-1_Basics_surfaces.csv",
"chars": 2476,
"preview": ",surface,series,order_surfaces,isBasement,isFault,isActive,color,vertices,edges,sfai,id\n4,Main_Fault,Fault_Series,1,Fals"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults.csv",
"chars": 141,
"preview": ",isFault,isFinite\nseafloor_series,False,False\nright_series,False,False\nonlap_series,False,False\nleft_series,False,False\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_faults_relations.csv",
"chars": 277,
"preview": ",seafloor_series,right_series,onlap_series,left_series,basement\nseafloor_series,False,False,False,False,False\nright_seri"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_kriging_data.csv",
"chars": 120,
"preview": ",range,$C_o$,drift equations,nugget grad,nugget scalar\nvalues,1854.7236990991407,81904.76190476191,[3 3 3 3],0.01,1e-06\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_options.csv",
"chars": 91,
"preview": ",dtype,output,aesara_optimizer,device,verbosity\nvalues,float64,geology,fast_compile,cpu,[]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_orientations.csv",
"chars": 1649,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series\n0,200.0,50.0,-200.0,0.3126,0.5001,0.7"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_rescaling_data.csv",
"chars": 60,
"preview": ",rescaling factor,centers\nvalues,1600.0,[ 500. 50. -600.]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_series.csv",
"chars": 140,
"preview": ",order_series,BottomRelation\nseafloor_series,1,Erosion\nright_series,2,Onlap\nonlap_series,3,Erosion\nleft_series,4,Erosion"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_surface_points.csv",
"chars": 1846,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series\n0,200.0,0.0,-200.0,0.3126,0.46885,0.7501,seafloor,seafloor_series,6,1\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-8_Onlap_relations/Tutorial_ch1-8_Onlap_relations_surfaces.csv",
"chars": 2261,
"preview": ",surface,series,order_surfaces,isBasement,color,vertices,edges,id\n4,basement,basement,1,False,#ff3f20,\"[[-200. -500. -21"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults.csv",
"chars": 111,
"preview": ",isFault,isFinite\nfault_series1,True,False\nseries2,False,False\nseries1,False,False\nbasement_series,False,False\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_faults_relations.csv",
"chars": 187,
"preview": ",fault_series1,series2,series1,basement_series\nfault_series1,False,False,True,True\nseries2,False,False,False,False\nserie"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_kriging_data.csv",
"chars": 118,
"preview": ",range,$C_o$,drift equations,nugget grad,nugget scalar\nvalues,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_options.csv",
"chars": 92,
"preview": ",dtype,output,aesara_optimizer,device,verbosity\nvalues,float64,geology,fast_compile,cpu,[0]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_orientations.csv",
"chars": 1240,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series\n10,500.0,500.0,-600.0,0.5001,0.5001,0"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_rescaling_data.csv",
"chars": 60,
"preview": ",rescaling factor,centers\nvalues,1600.0,[ 500. 500. -550.]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_series.csv",
"chars": 113,
"preview": ",order_series,BottomRelation\nfault_series1,1,Fault\nseries2,2,Erosion\nseries1,3,Erosion\nbasement_series,4,Erosion\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_surface_points.csv",
"chars": 4468,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series\n57,450.0,200.0,-500.0,0.46885,0.3126,0.53135,fault1,fault_series1,2,1\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9a_Fault_relations/Tutorial_ch1-9a_Fault_relations_surfaces.csv",
"chars": 335,
"preview": ",surface,series,order_surfaces,isBasement,color,vertices,edges,id\n4,basement,basement_series,1,False,#325916,,,1\n5,fault"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults.csv",
"chars": 116,
"preview": ",isFault,isFinite\nfault_series2,True,False\nfault_series1,True,False\nseries1,False,False\nbasement_series,False,False\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_faults_relations.csv",
"chars": 196,
"preview": ",fault_series2,fault_series1,series1,basement_series\nfault_series2,False,True,True,True\nfault_series1,False,False,True,T"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_kriging_data.csv",
"chars": 118,
"preview": ",range,$C_o$,drift equations,nugget grad,nugget scalar\nvalues,1732.0508075688772,71428.57142857142,[3 3 3],0.01,1e-06\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_options.csv",
"chars": 92,
"preview": ",dtype,output,aesara_optimizer,device,verbosity\nvalues,float64,geology,fast_compile,cpu,[0]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_orientations.csv",
"chars": 1401,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series\n13,550.0,500.0,-600.0,0.53135,0.5001,"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_rescaling_data.csv",
"chars": 60,
"preview": ",rescaling factor,centers\nvalues,1600.0,[ 500. 500. -650.]\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_series.csv",
"chars": 117,
"preview": ",order_series,BottomRelation\nfault_series2,1,Fault\nfault_series1,2,Fault\nseries1,3,Erosion\nbasement_series,4,Erosion\n"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_surface_points.csv",
"chars": 4654,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series\n71,500.0,500.0,-700.0,0.5001,0.5001,0.46885,fault2,fault_series2,3,1\n6"
},
{
"path": "examples/data/gempy_models/Tutorial_ch1-9b_Fault_relations/Tutorial_ch1-9b_Fault_relations_surfaces.csv",
"chars": 342,
"preview": ",surface,series,order_surfaces,isBasement,color,vertices,edges,id\n4,basement,basement_series,1,False,#325916,,,1\n5,fault"
},
{
"path": "examples/data/input_data/AlesModel/2018_interf.csv",
"chars": 15193,
"preview": "X,Y,Z,X_r,Y_r,Z_r,formation,series,id,order_series,smooth\n737866.44,1916440.94,408.293632,0.4736471608999658,0.458928066"
},
{
"path": "examples/data/input_data/AlesModel/2018_orient_clust_n_init5_0.csv",
"chars": 30484,
"preview": "G_x,G_y,G_z,X,Y,Z,azimuth,beta,dip,formation,kappa,n_points,polarity\n-0.08919935074047941,-0.0073888885276777215,0.99598"
},
{
"path": "examples/data/input_data/Claudius/APoints.csv",
"chars": 251511,
"preview": "X;Y;Z;Strati;Cutoff\n550464.3105;7817886.25;-8833.120117;0;0.46661092\n549339.3105;7817886.25;-8864.879883;0;0.210270623\n5"
},
{
"path": "examples/data/input_data/Claudius/BPoints.csv",
"chars": 256503,
"preview": "X;Y;Z;Strati;Cutoff\n549151.8105;7819763.25;-9153.959961;60;0.655819609\n551451.8105;7818430.578;-9022.740234;60;0.5008774"
},
{
"path": "examples/data/input_data/Claudius/CPoints.csv",
"chars": 261543,
"preview": "X;Y;Z;Strati;Cutoff\n550439.3105;7820270.039;-9380.080078;250;0.972202819\n549876.8105;7818805.98;-9571.379883;250;0.74604"
},
{
"path": "examples/data/input_data/Claudius/DPoints.csv",
"chars": 255415,
"preview": "X;Y;Z;Strati;Cutoff\n550914.3105;7819594.32;-10263.5;330;0.432785006\n550176.8105;7819706.938;-10137.7002;330;0.858020738\n"
},
{
"path": "examples/data/input_data/Claudius/Dips.csv",
"chars": 1979,
"preview": "X;Y;Z;OrientX;OrientY;OrientZ;Cutoff\n552189.3105;7819406.617;-9797.297852;-0.076036;0.041318;-0.996249;0.014754793\n55220"
},
{
"path": "examples/data/input_data/Claudius/Fault.csv",
"chars": 6095,
"preview": "X,Y,Z,surface\n551308.0638427734,7817436.131347656,-9982.79296875,Claudius_fault\n551332.5639648438,7817579.006347656,-990"
},
{
"path": "examples/data/input_data/Hecho/Dips.csv",
"chars": 3206,
"preview": "X;Y;Z;OrientX;OrientZ;PART_ID\n7.527000;-0.068673;3.01688;-0.959273;0.282481;1\n7.453056;-0.219004;2.76577;-99999.000000;-"
},
{
"path": "examples/data/input_data/Hecho/F1Line.csv",
"chars": 296,
"preview": "X;Y;Z\n6.424469;0.203543;1.20437\n6.693804;-0.036842;0.995854\n6.912352;0.340509;0.826699\n7.121053;0.377681;0.665257\n7.3062"
},
{
"path": "examples/data/input_data/Hecho/F2Line.csv",
"chars": 417,
"preview": "X;Y;Z\n11.090211;0.154567;1.28784\n11.223454;-0.301787;1.37682\n11.346533;-0.458967;1.4914\n11.49791;-0.250198;1.69684\n11.59"
},
{
"path": "examples/data/input_data/Hecho/F3Line.csv",
"chars": 308,
"preview": "X;Y;Z\n11.15029;-0.073352;0.719278\n11.066742;-0.133512;0.855967\n11.023535;0.194252;0.972789\n11.037835;-0.373243;1.0978\n11"
},
{
"path": "examples/data/input_data/Hecho/H1.csv",
"chars": 1405,
"preview": "X;Y;Z;Strati;PART_ID\n1.505406;0.29554;3.32516;0;1\n1.710851;0.284936;3.24865;0;1\n1.851495;-0.00339;3.19537;0;1\n2.240846;-"
},
{
"path": "examples/data/input_data/Hecho/H2.csv",
"chars": 3262,
"preview": "X;Y;Z;Strati;PART_ID\n1.171598;-0.134880;2.70886;0.780000;1\n1.274289;0.028307;2.67915;0.780000;1\n1.376980;0.191494;2.6494"
},
{
"path": "examples/data/input_data/Hecho/H3.csv",
"chars": 3134,
"preview": "X;Y;Z;Strati;PART_ID\n5.782996;0.236769;4.34537;1.15;1\n5.717078;-0.013247;4.28677;1.15;1\n5.651161;-0.263263;4.22818;1.15;"
},
{
"path": "examples/data/input_data/Hecho/H4.csv",
"chars": 2842,
"preview": "X;Y;Z;Strati;PART_ID\n6.182864;0.108160;1.71132;1.900000;1\n6.313992;-0.006166;1.80967;1.900000;1\n6.364257;-0.092770;1.936"
},
{
"path": "examples/data/input_data/Hecho/H5.csv",
"chars": 3998,
"preview": "X;Y;Z;Strati;PART_ID\n8.204730;0.310298;0.882512;2.500000;1\n8.186468;0.074862;0.938652;2.500000;1\n8.168205;-0.160573;0.99"
},
{
"path": "examples/data/input_data/Hecho/H6.csv",
"chars": 3563,
"preview": "X;Y;Z;Strati;PART_ID\n8.952921;-0.084143;0.969662;3.100000;1\n8.911087;-0.204162;1.15795;3.100000;1\n8.871284;0.215760;1.31"
},
{
"path": "examples/data/input_data/Hecho/H7.csv",
"chars": 3526,
"preview": "X;Y;Z;Strati;PART_ID\n15.289856;0.038925;1.15377;3.900000;1\n15.238041;-0.221445;1.16369;3.900000;1\n15.186225;-0.481815;1."
},
{
"path": "examples/data/input_data/Hecho/H8.csv",
"chars": 3283,
"preview": "X;Y;Z;Strati;PART_ID\n9.861884;-0.362561;1.5302;4.400000;1\n9.864935;-0.228321;1.62629;4.400000;1\n9.867985;-0.094081;1.722"
},
{
"path": "examples/data/input_data/Hecho/H9.csv",
"chars": 2042,
"preview": "X;Y;Z;Strati;PART_ID\n10.295227;0.182503;1.25328;5.200000;1\n10.308938;0.395599;1.42489;5.200000;1\n10.332090;0.147206;1.55"
},
{
"path": "examples/data/input_data/Moureze/Moureze_Points.csv",
"chars": 204949,
"preview": "X;Y;Z;OrientX;OrientY;OrientZ;Cutoff\n272;86;-149.12;-99999;-99999;-99999;0.455221388\n256.198395;344;-100;0.671273;0.6412"
},
{
"path": "examples/data/input_data/Moureze/Sections_EW.csv",
"chars": 435790,
"preview": "X;Y;0;PART_ID;Cutoff\n298;372;-158.251;1;0.384161599\n296.226807;372;-158.147;1;0.823710832\n296.1362;372;-158.136;1;0.0396"
},
{
"path": "examples/data/input_data/Moureze/Sections_NS.csv",
"chars": 297933,
"preview": "X;Y;Z;PART_ID;Cutoff\n162;397.742584;-150;1;0.319533724\n162;397.323975;-150.019;1;0.277706768\n162;396.549408;-150.026;1;0"
},
{
"path": "examples/data/input_data/jan_models/fixture_model_orientations.csv",
"chars": 139,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n0,500,450,90,330,1,rock2\n0,500,250,90,345,1,rock1\n500,500,800,90,0,1,rock3\n2000,500"
},
{
"path": "examples/data/input_data/jan_models/fixture_model_surfaces.csv",
"chars": 1856,
"preview": "X,Y,Z,formation\n0,0,800,rock3\n0,500,800,rock3\n0,1000,800,rock3\n500,0,800,rock3\n500,500,800,rock3\n500,1000,800,rock3\n1000"
},
{
"path": "examples/data/input_data/jan_models/model1_orientations.csv",
"chars": 87,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n500,500,600,90,0,1,rock2\n500,500,400,90,0,1,rock1\n"
},
{
"path": "examples/data/input_data/jan_models/model1_surface_points.csv",
"chars": 232,
"preview": "X,Y,Z,formation\n100,200,600,rock2\n500,200,600,rock2\n900,200,600,rock2\n100,800,600,rock2\n500,800,600,rock2\n900,800,600,ro"
},
{
"path": "examples/data/input_data/jan_models/model2_orientations.csv",
"chars": 87,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n500,500,820,90,0,1,rock2\n500,500,620,90,0,1,rock1\n"
},
{
"path": "examples/data/input_data/jan_models/model2_surface_points.csv",
"chars": 659,
"preview": "X,Y,Z,formation\n0,100,200,rock1\n0,500,200,rock1\n0,900,200,rock1\n400,100,600,rock1\n400,500,600,rock1\n400,900,600,rock1\n20"
},
{
"path": "examples/data/input_data/jan_models/model3_orientations.csv",
"chars": 97,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n200,500,780,90,185.73,1,rock1\n200,500,220,90,354.27,1,rock1\n"
},
{
"path": "examples/data/input_data/jan_models/model3_surface_points.csv",
"chars": 1845,
"preview": "X,Y,Z,formation\n0,200,800,rock1\n0,200,200,rock1\n100,200,790,rock1\n100,200,210,rock1\n200,200,780,rock1\n200,200,220,rock1\n"
},
{
"path": "examples/data/input_data/jan_models/model4_orientations.csv",
"chars": 211,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n500,500,625,90,8.54,1,rock2\n500,200,625,90,8.54,1,rock2\n500,800,625,90,8.54,1,rock2"
},
{
"path": "examples/data/input_data/jan_models/model4_surface_points.csv",
"chars": 227,
"preview": "X,Y,Z,formation\n0,200,300,rock1\n0,800,300,rock1\n500,200,375,rock1\n500,800,375,rock1\n1000,200,450,rock1\n1000,800,450,rock"
},
{
"path": "examples/data/input_data/jan_models/model5_orientations.csv",
"chars": 163,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n100,500,800,90,0,1,rock2\n100,500,600,90,0,1,rock1\n900,500,400,90,0,1,rock2\n900,500,"
},
{
"path": "examples/data/input_data/jan_models/model5_surface_points.csv",
"chars": 480,
"preview": "X,Y,Z,formation\n0,200,600,rock1\n0,500,600,rock1\n0,800,600,rock1\n200,200,600,rock1\n200,500,600,rock1\n200,800,600,rock1\n80"
},
{
"path": "examples/data/input_data/jan_models/model6_orientations.csv",
"chars": 168,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n100,500,700,90,315,1,rock2\n900,500,700,90,45,1,rock2\n100,500,500,90,315,1,rock1\n900"
},
{
"path": "examples/data/input_data/jan_models/model6_surface_points.csv",
"chars": 715,
"preview": "X,Y,Z,formation\n0,200,400,rock1\n0,500,400,rock1\n0,800,400,rock1\n100,200,500,rock1\n100,500,500,rock1\n100,800,500,rock1\n20"
},
{
"path": "examples/data/input_data/jan_models/model7_orientations.csv",
"chars": 237,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n0,500,450,90,335,1,rock2\n0,500,250,90,335,1,rock1\n0,0,450,90,335,1,rock2\n0,0,250,90"
},
{
"path": "examples/data/input_data/jan_models/model7_surface_points.csv",
"chars": 1853,
"preview": "X,Y,Z,formation\n0,0,800,rock3\n0,500,800,rock3\n0,1000,800,rock3\n500,0,800,rock3\n500,500,800,rock3\n500,1000,800,rock3\n1000"
},
{
"path": "examples/data/input_data/jan_models/tutorial_model_orientations.csv",
"chars": 210,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n0,500,450,90,335,1,rock2\n0,500,250,90,335,1,rock1\n0,0,450,90,335,1,rock2\n0,0,250,90"
},
{
"path": "examples/data/input_data/jan_models/tutorial_model_surface_points.csv",
"chars": 1573,
"preview": "X,Y,Z,formation\n0,0,800,rock3\n0,500,800,rock3\n0,1000,800,rock3\n500,0,800,rock3\n500,500,800,rock3\n500,1000,800,rock3\n1000"
},
{
"path": "examples/data/input_data/lisa_models/foliations1.csv",
"chars": 1019,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations2.csv",
"chars": 779,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations3.csv",
"chars": 663,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations5.csv",
"chars": 887,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations6.csv",
"chars": 478,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,annotations,formation_val"
},
{
"path": "examples/data/input_data/lisa_models/foliations7.csv",
"chars": 2927,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations8.csv",
"chars": 1356,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,formation_value,annotatio"
},
{
"path": "examples/data/input_data/lisa_models/foliations9.csv",
"chars": 678,
"preview": ",X,Y,Z,G_x,G_y,G_z,dip,azimuth,polarity,formation,series,formation_number,order_series,isFault,Unnamed: 0,formation_valu"
},
{
"path": "examples/data/input_data/lisa_models/interfaces1.csv",
"chars": 1212,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n0,500.0,1000.0,1500.0,Sandston"
},
{
"path": "examples/data/input_data/lisa_models/interfaces2.csv",
"chars": 1178,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n2,1500.0,1000.0,1500.0,Sandsto"
},
{
"path": "examples/data/input_data/lisa_models/interfaces3.csv",
"chars": 1224,
"preview": ",Unnamed: 0,X,Y,Z,annotations,formation,formation_number,formation_value,isFault,order_series,series\n0,11.0,2000.0,2000."
},
{
"path": "examples/data/input_data/lisa_models/interfaces5.csv",
"chars": 1608,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n0,600.0,1000.0,600.0,Main_Faul"
},
{
"path": "examples/data/input_data/lisa_models/interfaces6.csv",
"chars": 1742,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n46,500.0,1000.0,1500.0,Sandsto"
},
{
"path": "examples/data/input_data/lisa_models/interfaces7.csv",
"chars": 2070,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n0,750.0,1500.0,500.0,Fault_1,F"
},
{
"path": "examples/data/input_data/lisa_models/interfaces8.csv",
"chars": 2540,
"preview": ",X,Y,Z,formation,series,formation_number,order_series,isFault,annotations,formation_value\n1,700.0,1000.0,900.0,Main_Faul"
},
{
"path": "examples/data/input_data/lisa_models/interfaces9.csv",
"chars": 1311,
"preview": ",Unnamed: 0,Unnamed: 0.1,X,Y,Z,annotations,formation,formation_number,formation_value,isFault,order_series,series\n10,10."
},
{
"path": "examples/data/input_data/perth_basin/Paper_GU2F_sc_faults_topo_Foliations.csv",
"chars": 2072,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n393936.142320,6693632.776940,957.702303,263.276747,1.193492,1,Permian\n396918.892567"
},
{
"path": "examples/data/input_data/perth_basin/Paper_GU2F_sc_faults_topo_Points.csv",
"chars": 5345,
"preview": "X,Y,Z,formation\n383267.125849,6692375.065706,42.347303,Lesueur\n385656.999410,6692656.794658,42.347303,Lesueur\n388158.029"
},
{
"path": "examples/data/input_data/striplog_integration/alpha_strip.tops",
"chars": 72,
"preview": "top, comp lith\n0, overburden\n50, miguel\n75, evan\n100, brian\n120, dieter\n"
},
{
"path": "examples/data/input_data/striplog_integration/beta_strip.tops",
"chars": 72,
"preview": "top, comp lith\n0, overburden\n50, miguel\n80, evan\n100, brian\n130, dieter\n"
},
{
"path": "examples/data/input_data/striplog_integration/epsilon_strip.tops",
"chars": 62,
"preview": "top, comp lith\n0, overburden\n50, miguel\n75, brian\n110, dieter\n"
},
{
"path": "examples/data/input_data/striplog_integration/gamma_strip.tops",
"chars": 72,
"preview": "top, comp lith\n0, overburden\n50, miguel\n75, evan\n100, brian\n130, dieter\n"
},
{
"path": "examples/data/input_data/tests/fault_relations_test_ori.csv",
"chars": 761,
"preview": "X,Y,Z,G_x,G_y,G_z,id,nugget,formation\n350.0,500.0,-700.0,0.8949343616020251,5.4798925069145e-17,0.4461978131098087,26244"
},
{
"path": "examples/data/input_data/tests/fault_relations_test_surf.csv",
"chars": 2987,
"preview": "X,Y,Z,id,nugget,formation\n300.0,200.0,-600.0,26244822,2e-05,fault1\n300.0,500.0,-600.0,26244822,2e-05,fault1\n300.0,800.0,"
},
{
"path": "examples/data/input_data/tut-ch1-4/tut_ch1-4_orientations.csv",
"chars": 1649,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series\n0,200.0,50.0,-200.0,0.3126,0.5001,0.7"
},
{
"path": "examples/data/input_data/tut-ch1-4/tut_ch1-4_points.csv",
"chars": 1846,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series\n0,200.0,0.0,-200.0,0.3126,0.46885,0.7501,seafloor,seafloor_series,6,1\n"
},
{
"path": "examples/data/input_data/tut-ch1-5/tut_ch1-5_orientations.csv",
"chars": 1401,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,G_x,G_y,G_z,dip,azimuth,polarity,surface,series,id,order_series\n13,550.0,500.0,-600.0,0.53135,0.5001,"
},
{
"path": "examples/data/input_data/tut-ch1-5/tut_ch1-5_points.csv",
"chars": 4654,
"preview": ",X,Y,Z,X_r,Y_r,Z_r,surface,series,id,order_series\n71,500.0,500.0,-700.0,0.5001,0.5001,0.46885,fault2,fault_series2,3,1\n6"
},
{
"path": "examples/data/input_data/tut-ch1-7/onelayer_interfaces.csv",
"chars": 115,
"preview": "X,Y,Z,formation\n450000,79300,205,layer1\n458000,79300,-402.,layer1\n450760,70668,205,layer1\n460000,70668,-402.,layer1"
},
{
"path": "examples/data/input_data/tut-ch1-7/onelayer_orient.csv",
"chars": 97,
"preview": "X,Y,Z,formation,azimuth,dip,polarity\n450760,75484,205,layer1,0,0,1\n455000,75484,-402,layer1,0,0,1"
},
{
"path": "examples/data/input_data/tut_SandStone/SandStone_Foliations.csv",
"chars": 2602,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n739426.627684,6891935.451484,75.422691,220,70,1,SimpleBIF\n717311.112372,6891940.971"
},
{
"path": "examples/data/input_data/tut_SandStone/SandStone_Points.csv",
"chars": 3212,
"preview": "X,Y,Z,formation\n735484.817806,6891936.435338,-1819.319309,SimpleMafic2\n729854.915982,6891937.84053,-1432.263309,SimpleMa"
},
{
"path": "examples/data/input_data/tut_SandStone/Sst_grav_1000.xyz",
"chars": 121905,
"preview": " 705000 6863000 1 -723.8629\n 706000 6863000 2 -725.2547\n 707000 6863000 "
},
{
"path": "examples/data/input_data/tut_SandStone/Sst_grav_2000.xyz",
"chars": 29295,
"preview": " 706000 6864000 1 -730.6081\n 708000 6864000 2 -729.78\n 710000 6864000 "
},
{
"path": "examples/data/input_data/tut_SandStone/Sst_grav_500.xyz",
"chars": 478125,
"preview": " 705000 6863000 1 -723.8629\n 705500 6863000 2 -724.3991\n 706000 6863000 "
},
{
"path": "examples/data/input_data/tut_chapter1/.~lock.fault_unconformity_model_orientations.csv#",
"chars": 65,
"preview": ",bl9,bl9,24.01.2018 18:51,file:///home/bl9/.config/libreoffice/4;"
},
{
"path": "examples/data/input_data/tut_chapter1/.~lock.fault_unconformity_model_points.csv#",
"chars": 65,
"preview": ",bl9,bl9,24.01.2018 18:39,file:///home/bl9/.config/libreoffice/4;"
},
{
"path": "examples/data/input_data/tut_chapter1/fault_unconformity_model_orientations.csv",
"chars": 182,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n1000,1000,950,90,18.435,1,Shale\n400,1000,1400,90,18.435,1,Sandstone_2\n1000,1500,160"
},
{
"path": "examples/data/input_data/tut_chapter1/fault_unconformity_model_points.csv",
"chars": 1451,
"preview": "X,Y,Z,formation\n800,50,750,Shale\n800,150,700,Shale\n800,300,700,Shale\n800,500,800,Shale\n800,1000,1000,Shale\n800,1500,700,"
},
{
"path": "examples/data/input_data/tut_chapter1/simple_fault_model_orientations.csv",
"chars": 148,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n1000,1000,950,90,18.435,1,Shale\n400,1000,1400,90,18.435,1,Sandstone_2\n500,1000,864."
},
{
"path": "examples/data/input_data/tut_chapter1/simple_fault_model_orientations_geophy.csv",
"chars": 145,
"preview": "X,Y,Z,azimuth,dip,polarity,formation\n1000,1000,-1050,90,18.435,1,target\n400,1000,-600,90,18.435,1,seawater\n500,1000,-113"
},
{
"path": "examples/data/input_data/tut_chapter1/simple_fault_model_points.csv",
"chars": 1330,
"preview": "X,Y,Z,formation\n800,50,750,Shale\n800,150,700,Shale\n800,300,700,Shale\n800,500,800,Shale\n800,1000,1000,Shale\n800,1500,700,"
},
{
"path": "examples/data/input_data/tut_chapter1/simple_fault_model_points_geophy.csv",
"chars": 1387,
"preview": "X,Y,Z,formation\n800,50,-1250,target\n800,150,-1300,target\n800,300,-1300,target\n800,500,-1200,target\n800,1000,-1000,target"
},
{
"path": "examples/data/input_data/tut_chapter6/ch6_data_fol.csv",
"chars": 686,
"preview": "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,inde"
},
{
"path": "examples/data/input_data/tut_chapter6/ch6_data_interf.csv",
"chars": 1054,
"preview": "X,X_std,Y,Y_std,Z,Z_std,annotations,formation,formation_number,group_id,isFault,order_series,series\n1700,0.0,0,0.0,640,0"
},
{
"path": "examples/examples/README.rst",
"chars": 228,
"preview": "Examples\n========\n\nThis examples intend to be a gallery of what other people has done with GemPy.\nHopefully with the hel"
},
{
"path": "examples/examples/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "examples/examples/geometries/README.rst",
"chars": 59,
"preview": "Simple geometries\n-----------------\nSome simple geometries."
},
{
"path": "examples/examples/geometries/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "examples/examples/geometries/a01_horizontal_stratigraphic.py",
"chars": 8130,
"preview": "\"\"\"\nModel 1 - Horizontal Stratigraphy\n===================================\n\nThis example demonstrates how to build a basi"
},
{
"path": "examples/examples/geometries/b02_fold.py",
"chars": 1476,
"preview": "\"\"\"\nModel 2 - Anticline\n===================\n\nSimple model of an anticline\n\nThis script demonstrates how to create a geol"
},
{
"path": "examples/examples/geometries/c03_recumbent_fold.py",
"chars": 1420,
"preview": "\"\"\"\nModel 3 - Recumbent Fold\n========================\n\nModeling a recumbent fold\n\nThis script demonstrates how to create"
},
{
"path": "examples/examples/geometries/d04_pinchout.py",
"chars": 1515,
"preview": "\"\"\"\nModel 4 - Pinchout\n==================\n\nModeling of a pinchout: combining scalar fields\n\nThis script demonstrates how"
},
{
"path": "examples/examples/geometries/e05_fault.py",
"chars": 1771,
"preview": "\"\"\"\nModel 5 - Fault\n===============\n\nModeling a fault\n\nThis script demonstrates how to create a simple fault model with "
},
{
"path": "examples/examples/geometries/f06_unconformity.py",
"chars": 1689,
"preview": "\"\"\"\nModel 6 - Unconformity\n======================\n\nModeling unconformities through the combination of scalar fields\n\nThi"
},
{
"path": "examples/examples/geometries/g07_combination.py",
"chars": 2222,
"preview": "\"\"\"\nModel 7 - Combination\n======================\n\nCombining faults and unconformities\n\nThis script creates a folded doma"
},
{
"path": "examples/examples/geometries/h08_more_examples.py",
"chars": 5272,
"preview": "\"\"\"\nGemPy Models - Some More Complex Examples\n-----------------------------------------\n\nA set of more complex examples\n"
},
{
"path": "examples/examples/real/Alesmodel.py",
"chars": 5328,
"preview": "\"\"\"\nModel of Ales, France: Plotting Sections and Maps\n======================================\n\"\"\"\n\n# %%\n# .. admonition::"
},
{
"path": "examples/examples/real/Claudius.py",
"chars": 6294,
"preview": "\"\"\"\nGeomodeling benchmark: the \"Claudius\"-Model\n========\n\nThis model is part of a geomodeling benchmaring effort. More i"
},
{
"path": "examples/examples/real/Greenstone.py",
"chars": 1359,
"preview": "\"\"\"\nGreenstone.\n===========\n\"\"\"\nimport os\n\n# Importing gempy\nimport gempy as gp\nimport gempy_viewer as gpv\n\nprint(gp.__v"
},
{
"path": "examples/examples/real/Hecho.py",
"chars": 6366,
"preview": "\"\"\"\nGeomodeling benchmark: the \"Hecho\"-Model\n========\n\nThis model is part of a geomodeling benchmaring effort. More info"
}
]
// ... and 223 more files (download for full content)
About this extraction
This page contains the full source code of the gempy-project/gempy GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 423 files (5.3 MB), approximately 1.4M tokens, and a symbol index with 567 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.