subsurface-terra 2025.1.0rc10__tar.gz → 2025.1.0rc11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface.xml +60 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface_2.xml +37 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/buildTypes/Subsurface_Testing.xml +129 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/project-config.xml +19 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain.xml +17 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1.xml +16 -0
- subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2.xml +16 -0
- {subsurface_terra-2025.1.0rc10/subsurface_terra.egg-info → subsurface_terra-2025.1.0rc11}/PKG-INFO +1 -1
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_wells.txt +1 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/_version.py +1 -1
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/boreholes/survey.py +4 -2
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/_trimesh_reader.py +3 -3
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/volume/read_volume.py +66 -6
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/read_borehole_interface.py +10 -0
- subsurface_terra-2025.1.0rc11/subsurface/modules/tools/mocking_aux.py +104 -0
- subsurface_terra-2025.1.0rc11/subsurface/modules/writer/to_rex/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11/subsurface_terra.egg-info}/PKG-INFO +1 -1
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface_terra.egg-info/SOURCES.txt +9 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/.env.example +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/LICENSE +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/README.rst +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_all.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_dev.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_geospatial.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_mesh.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_opt.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_plot.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_traces.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_volume.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/setup.cfg +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/setup.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/interfaces/README.rst +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/interfaces/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/interfaces/stream.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/reader/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/reader/read_wells.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/boreholes/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/boreholes/_combine_trajectories.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/boreholes/boreholes.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/boreholes/collars.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/geological_formats/fault.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/reader_helpers/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/reader_helpers/reader_unstruct.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/reader_helpers/readers_data.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/reader_helpers/readers_wells.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/README.rst +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/_liquid_earth_mesh.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/_unstructured_data_constructor.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/base_structures_enum.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/structured_data.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/base_structures/unstructured_data.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/structured_elements/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/structured_elements/octree_mesh.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/structured_elements/structured_grid.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/structured_elements/structured_mesh.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/unstructured_elements/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/unstructured_elements/line_set.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/unstructured_elements/point_set.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/unstructured_elements/tetrahedron_mesh.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/unstructured_elements/triangular_surface.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/utils/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/utils/utils_core.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/README.rst +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/faults/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/faults/faults.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/from_binary.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/geo_object/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/NOTES.md +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/_GOCAD_mesh.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/csv_mesh_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/dxf_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/glb_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/mx_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/obj_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/omf_mesh_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/surface_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/mesh/surfaces_api.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/petrel/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/profiles/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/profiles/profiles_core.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/read_netcdf.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/topography/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/topography/topo_core.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/volume/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/volume/segy_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/volume/seismic.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/volume/volume_utils.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/DEP/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/DEP/_well_files_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/DEP/_wells_api.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/DEP/_welly_reader.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/DEP/pandas_to_welly.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/README.rst +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/_read_to_df.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/wells/wells_utils.py +0 -0
- {subsurface_terra-2025.1.0rc10/subsurface/modules/writer/to_liquid_earth → subsurface_terra-2025.1.0rc11/subsurface/modules/tools}/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/visualization/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/visualization/to_pyvista.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_binary.py +0 -0
- {subsurface_terra-2025.1.0rc10/subsurface/modules/writer/to_rex → subsurface_terra-2025.1.0rc11/subsurface/modules/writer/to_liquid_earth}/__init__.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/common.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/data_struct.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/doc/rex-spec-v1.md +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/doc/right-handed.png +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/doc/sketchup_example.jpg +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/gempy_to_rexfile.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/material_encoder.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/mesh_encoder.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/to_rex.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/writer/to_rex/utils.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/optional_requirements.py +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface_terra.egg-info/dependency_links.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface_terra.egg-info/not-zip-safe +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface_terra.egg-info/requires.txt +0 -0
- {subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface_terra.egg-info/top_level.txt +0 -0
subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface.xml
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="671f325d-03f3-4855-994a-eb6080da9084" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>Release Subsurface</name>
|
|
4
|
+
<settings>
|
|
5
|
+
<parameters>
|
|
6
|
+
<param name="env.PACKAGE_VERSION" value="" spec="text description='The version that I want to release' label='Package version' validationMode='any' display='prompt'" />
|
|
7
|
+
<param name="env.TWINE_PASSWORD" value="credentialsJSON:e9a0b402-f8b3-4f86-978c-9c88c456dc9c" spec="password display='normal'" />
|
|
8
|
+
</parameters>
|
|
9
|
+
<build-runners>
|
|
10
|
+
<runner id="Git_Tagging" name="Git Tagging" type="simpleRunner">
|
|
11
|
+
<parameters>
|
|
12
|
+
<param name="script.content"><![CDATA[git tag v%env.PACKAGE_VERSION%
|
|
13
|
+
git push origin v%env.PACKAGE_VERSION%]]></param>
|
|
14
|
+
<param name="teamcity.step.mode" value="default" />
|
|
15
|
+
<param name="use.custom.script" value="true" />
|
|
16
|
+
</parameters>
|
|
17
|
+
</runner>
|
|
18
|
+
<runner id="Build" name="Build" type="simpleRunner">
|
|
19
|
+
<parameters>
|
|
20
|
+
<param name="script.content"><![CDATA[python -m pip install --upgrade build
|
|
21
|
+
python -m build]]></param>
|
|
22
|
+
<param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
|
|
23
|
+
<param name="teamcity.step.mode" value="default" />
|
|
24
|
+
<param name="use.custom.script" value="true" />
|
|
25
|
+
</parameters>
|
|
26
|
+
</runner>
|
|
27
|
+
<runner id="Push_to_PyPi" name="Push to PyPi" type="simpleRunner">
|
|
28
|
+
<parameters>
|
|
29
|
+
<param name="script.content"><![CDATA[python -m pip install --upgrade twine
|
|
30
|
+
python -m twine upload dist/* -u __token__ -p %env.TWINE_PASSWORD%]]></param>
|
|
31
|
+
<param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
|
|
32
|
+
<param name="teamcity.step.mode" value="default" />
|
|
33
|
+
<param name="use.custom.script" value="true" />
|
|
34
|
+
</parameters>
|
|
35
|
+
</runner>
|
|
36
|
+
<runner id="Push_To_GitHub" name="Push To GitHub" type="simpleRunner">
|
|
37
|
+
<parameters>
|
|
38
|
+
<param name="script.content" value="gh release create %env.PACKAGE_VERSION% dist/* --title "%env.PACKAGE_VERSION%" --notes "Release notes here"" />
|
|
39
|
+
<param name="teamcity.kubernetes.executor.pull.policy" value="IfNotPresent" />
|
|
40
|
+
<param name="teamcity.step.mode" value="default" />
|
|
41
|
+
<param name="use.custom.script" value="true" />
|
|
42
|
+
</parameters>
|
|
43
|
+
</runner>
|
|
44
|
+
</build-runners>
|
|
45
|
+
<vcs-settings>
|
|
46
|
+
<vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain" />
|
|
47
|
+
</vcs-settings>
|
|
48
|
+
<requirements />
|
|
49
|
+
<build-triggers />
|
|
50
|
+
<build-extensions>
|
|
51
|
+
<extension id="BUILD_EXT_1" type="perfmon">
|
|
52
|
+
<parameters>
|
|
53
|
+
<param name="teamcity.perfmon.feature.enabled" value="true" />
|
|
54
|
+
</parameters>
|
|
55
|
+
</extension>
|
|
56
|
+
</build-extensions>
|
|
57
|
+
<cleanup />
|
|
58
|
+
</settings>
|
|
59
|
+
</template>
|
|
60
|
+
|
subsurface_terra-2025.1.0rc11/.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface_2.xml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="c15fb876-7044-47cd-a3b0-676767e4ca63" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>Release Subsurface</name>
|
|
4
|
+
<description />
|
|
5
|
+
<settings ref="ReleasePythonPackage">
|
|
6
|
+
<parameters />
|
|
7
|
+
<build-runners order="Git_Tagging, Build, Push_to_PyPi, Push_To_GitHub">
|
|
8
|
+
<runner id="Build" name="Build" type="simpleRunner">
|
|
9
|
+
<parameters>
|
|
10
|
+
<param name="script.content"><![CDATA[echo Cleaning build artifacts...
|
|
11
|
+
rmdir /s /q dist
|
|
12
|
+
rmdir /s /q build
|
|
13
|
+
echo Clean complete.
|
|
14
|
+
|
|
15
|
+
python -m pip install --upgrade build
|
|
16
|
+
python -m build]]></param>
|
|
17
|
+
<param name="teamcity.step.mode" value="default" />
|
|
18
|
+
<param name="use.custom.script" value="true" />
|
|
19
|
+
</parameters>
|
|
20
|
+
</runner>
|
|
21
|
+
<runner id="Push_To_GitHub" name="Push To GitHub" type="simpleRunner">
|
|
22
|
+
<parameters>
|
|
23
|
+
<param name="script.content" value="gh release create %env.PACKAGE_VERSION% dist/* --notes "Release notes here" --repo terranigma-solutions/subsurface" />
|
|
24
|
+
<param name="teamcity.step.mode" value="default" />
|
|
25
|
+
<param name="use.custom.script" value="true" />
|
|
26
|
+
</parameters>
|
|
27
|
+
</runner>
|
|
28
|
+
</build-runners>
|
|
29
|
+
<vcs-settings>
|
|
30
|
+
<vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1" />
|
|
31
|
+
</vcs-settings>
|
|
32
|
+
<requirements />
|
|
33
|
+
<build-triggers />
|
|
34
|
+
<cleanup />
|
|
35
|
+
</settings>
|
|
36
|
+
</build-type>
|
|
37
|
+
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<build-type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="ed495f4f-4df2-4a37-bbfe-2489430a46e8" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>Testing</name>
|
|
4
|
+
<description />
|
|
5
|
+
<settings>
|
|
6
|
+
<parameters>
|
|
7
|
+
<param name="REQUIREMENT_LEVEL" value="READ_MESH" />
|
|
8
|
+
<param name="env.MPLBACKEND" value="Agg" />
|
|
9
|
+
<param name="env.PATH_TO_ASCII_DRILLHOLES" value="%env.TERRA_PATH_DEVOPS%/boreholes/ASCII_drillholes/" />
|
|
10
|
+
<param name="env.PATH_TO_BGR" value="%env.TERRA_PATH_DEVOPS%/boreholes/" />
|
|
11
|
+
<param name="env.PATH_TO_BOLIDEN" value="%env.TERRA_PATH_DEVOPS%/combined/Leapfrog_OMF/Garpenberg_global_20220715.omf" />
|
|
12
|
+
<param name="env.PATH_TO_GLB" value="%env.TERRA_PATH_DEVOPS%/meshes/GLB - GLTF/Duck.glb" />
|
|
13
|
+
<param name="env.PATH_TO_GLB_COMPLEX" value="%env.TERRA_PATH_DEVOPS%/meshes/GLB - GLTF/GlbFile.glb" />
|
|
14
|
+
<param name="env.PATH_TO_INTERPRETATION" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/Anl2-1.tif" />
|
|
15
|
+
<param name="env.PATH_TO_MAGNETIC_INTERPRETATION" value="%env.TERRA_PATH_DEVOPS%/meshes/Magnetic/Plate 2a - Profile 1 2D inversion.pdf" />
|
|
16
|
+
<param name="env.PATH_TO_MTL" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Broadhaven_Obj/model/model.mtl" />
|
|
17
|
+
<param name="env.PATH_TO_OBJ" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Broadhaven_Obj/model/model.obj" />
|
|
18
|
+
<param name="env.PATH_TO_OBJ_FACE_I" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Faces/face1.obj" />
|
|
19
|
+
<param name="env.PATH_TO_OBJ_FACE_II" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Faces/Lapp_458_Rum_19_2_2024-02-21_0820_scan5_geoim4.obj" />
|
|
20
|
+
<param name="env.PATH_TO_OBJ_GALLERIES_I" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Galleries/Solid1.obj" />
|
|
21
|
+
<param name="env.PATH_TO_OBJ_MULTIMATERIAL_II" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/MultiMaterialObj/MultiMaterialObj.obj" />
|
|
22
|
+
<param name="env.PATH_TO_OBJ_SCANS" value="%env.TERRA_PATH_DEVOPS%/meshes/OBJ/Core scans Boliden/rsrbF9l2zc/model.obj" />
|
|
23
|
+
<param name="env.PATH_TO_OMF" value="%env.TERRA_PATH_DEVOPS%/combined/Leapfrog_OMF/Collinstown.omf" />
|
|
24
|
+
<param name="env.PATH_TO_SECTION" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/L1_CDP-Coords.txt" />
|
|
25
|
+
<param name="env.PATH_TO_SEISMIC" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/Linie01.segy" />
|
|
26
|
+
<param name="env.PATH_TO_SEISMIC_FINAL" value="%env.TERRA_PATH_DEVOPS%/meshes/Seismic/L1_final-mig.sgy" />
|
|
27
|
+
<param name="env.PATH_TO_SPREMBERG_ASSAY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_assay.csv" />
|
|
28
|
+
<param name="env.PATH_TO_SPREMBERG_COLLAR" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_collar_updated.csv" />
|
|
29
|
+
<param name="env.PATH_TO_SPREMBERG_STRATIGRAPHY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_stratigraphy.csv" />
|
|
30
|
+
<param name="env.PATH_TO_SPREMBERG_SURVEY" value="%env.TERRA_PATH_DEVOPS%/boreholes/Spremberg/Spremberg_survey.csv" />
|
|
31
|
+
<param name="env.PATH_TO_WEISWEILER" value="%env.TERRA_PATH_DEVOPS%/meshes/Weisweiler/" />
|
|
32
|
+
<param name="env.TERRA_PATH_DEVOPS" value="D:\OneDrive - Terranigma Solutions GmbH/Documents - Terranigma Base/DevOps/SubsurfaceTestData/" />
|
|
33
|
+
</parameters>
|
|
34
|
+
<build-runners>
|
|
35
|
+
<runner id="Setup" name="Setup" type="simpleRunner">
|
|
36
|
+
<parameters>
|
|
37
|
+
<param name="script.content"><![CDATA[@echo on
|
|
38
|
+
python -m venv venv
|
|
39
|
+
call venv\Scripts\activate
|
|
40
|
+
venv\Scripts\python -m pip install --upgrade pip
|
|
41
|
+
|
|
42
|
+
echo Checking directory...
|
|
43
|
+
dir
|
|
44
|
+
dir .requirements
|
|
45
|
+
|
|
46
|
+
venv\Scripts\pip install --verbose -r requirements/requirements_dev.txt
|
|
47
|
+
venv\Scripts\pip install --verbose teamcity-messages]]></param>
|
|
48
|
+
<param name="teamcity.step.mode" value="default" />
|
|
49
|
+
<param name="use.custom.script" value="true" />
|
|
50
|
+
</parameters>
|
|
51
|
+
</runner>
|
|
52
|
+
<runner id="Run_Test" name="Run Test: Core" type="simpleRunner">
|
|
53
|
+
<parameters>
|
|
54
|
+
<param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_plot.txt
|
|
55
|
+
|
|
56
|
+
@echo on
|
|
57
|
+
set REQUIREMENT_LEVEL=READ_MESH
|
|
58
|
+
echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
|
|
59
|
+
venv\Scripts\python -m pytest --teamcity -v -m core]]></param>
|
|
60
|
+
<param name="teamcity.step.mode" value="default" />
|
|
61
|
+
<param name="use.custom.script" value="true" />
|
|
62
|
+
</parameters>
|
|
63
|
+
</runner>
|
|
64
|
+
<runner id="Run_Test_2" name="Run Test: Mesh" type="simpleRunner">
|
|
65
|
+
<parameters>
|
|
66
|
+
<param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_mesh.txt
|
|
67
|
+
|
|
68
|
+
@echo on
|
|
69
|
+
set REQUIREMENT_LEVEL=READ_MESH
|
|
70
|
+
echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
|
|
71
|
+
venv\Scripts\python -m pytest --teamcity -v]]></param>
|
|
72
|
+
<param name="teamcity.step.mode" value="execute_if_failed" />
|
|
73
|
+
<param name="use.custom.script" value="true" />
|
|
74
|
+
</parameters>
|
|
75
|
+
</runner>
|
|
76
|
+
<runner id="Run_Test_wells" name="Run Test: Wells" type="simpleRunner">
|
|
77
|
+
<parameters>
|
|
78
|
+
<param name="script.content"><![CDATA[venv\Scripts\pip install --verbose -r requirements/requirements_wells.txt
|
|
79
|
+
|
|
80
|
+
@echo on
|
|
81
|
+
set REQUIREMENT_LEVEL=READ_WELL
|
|
82
|
+
echo REQUIREMENT_LEVEL is %REQUIREMENT_LEVEL%
|
|
83
|
+
venv\Scripts\python -m pytest --teamcity -v]]></param>
|
|
84
|
+
<param name="teamcity.step.mode" value="execute_if_failed" />
|
|
85
|
+
<param name="use.custom.script" value="true" />
|
|
86
|
+
</parameters>
|
|
87
|
+
</runner>
|
|
88
|
+
</build-runners>
|
|
89
|
+
<vcs-settings>
|
|
90
|
+
<vcs-entry-ref root-id="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2" />
|
|
91
|
+
</vcs-settings>
|
|
92
|
+
<requirements />
|
|
93
|
+
<build-triggers>
|
|
94
|
+
<build-trigger id="TRIGGER_4" type="vcsTrigger">
|
|
95
|
+
<parameters>
|
|
96
|
+
<param name="branchFilter"><![CDATA[+pr:draft=false
|
|
97
|
+
+:refs/heads/main]]></param>
|
|
98
|
+
<param name="enableQueueOptimization" value="true" />
|
|
99
|
+
<param name="quietPeriodMode" value="DO_NOT_USE" />
|
|
100
|
+
</parameters>
|
|
101
|
+
</build-trigger>
|
|
102
|
+
</build-triggers>
|
|
103
|
+
<build-extensions>
|
|
104
|
+
<extension id="perfmon" type="perfmon">
|
|
105
|
+
<parameters>
|
|
106
|
+
<param name="teamcity.perfmon.feature.enabled" value="true" />
|
|
107
|
+
</parameters>
|
|
108
|
+
</extension>
|
|
109
|
+
<extension id="BUILD_EXT_5" type="commit-status-publisher">
|
|
110
|
+
<parameters>
|
|
111
|
+
<param name="github_authentication_type" value="token" />
|
|
112
|
+
<param name="github_host" value="https://api.github.com" />
|
|
113
|
+
<param name="publisherId" value="githubStatusPublisher" />
|
|
114
|
+
<param name="secure:github_access_token" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
|
|
115
|
+
</parameters>
|
|
116
|
+
</extension>
|
|
117
|
+
<extension id="BUILD_EXT_6" type="pullRequests">
|
|
118
|
+
<parameters>
|
|
119
|
+
<param name="authenticationType" value="token" />
|
|
120
|
+
<param name="filterAuthorRole" value="MEMBER" />
|
|
121
|
+
<param name="providerType" value="github" />
|
|
122
|
+
<param name="secure:accessToken" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
|
|
123
|
+
</parameters>
|
|
124
|
+
</extension>
|
|
125
|
+
</build-extensions>
|
|
126
|
+
<cleanup />
|
|
127
|
+
</settings>
|
|
128
|
+
</build-type>
|
|
129
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="02a92682-f6c2-4edf-af46-08d095b0ce77" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>Subsurface</name>
|
|
4
|
+
<parameters />
|
|
5
|
+
<project-extensions>
|
|
6
|
+
<extension id="PROJECT_EXT_15" type="versionedSettings">
|
|
7
|
+
<parameters>
|
|
8
|
+
<param name="buildSettings" value="ALWAYS_USE_CURRENT" />
|
|
9
|
+
<param name="credentialsStorageType" value="credentialsJSON" />
|
|
10
|
+
<param name="enabled" value="true" />
|
|
11
|
+
<param name="ignoreChangesInDependenciesAndVcsSettings" value="false" />
|
|
12
|
+
<param name="rootId" value="Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain" />
|
|
13
|
+
<param name="showChanges" value="false" />
|
|
14
|
+
</parameters>
|
|
15
|
+
</extension>
|
|
16
|
+
</project-extensions>
|
|
17
|
+
<cleanup />
|
|
18
|
+
</project>
|
|
19
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="b5c00aa4-356b-4c94-8113-009cde53f17b" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>https://github.com/terranigma-solutions/subsurface#refs/heads/main</name>
|
|
4
|
+
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
|
|
5
|
+
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
|
|
6
|
+
<param name="authMethod" value="PASSWORD" />
|
|
7
|
+
<param name="branch" value="refs/heads/main" />
|
|
8
|
+
<param name="ignoreKnownHosts" value="true" />
|
|
9
|
+
<param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
|
|
10
|
+
<param name="submoduleCheckout" value="CHECKOUT" />
|
|
11
|
+
<param name="teamcity:branchSpec" value="refs/heads/*" />
|
|
12
|
+
<param name="url" value="https://github.com/terranigma-solutions/subsurface" />
|
|
13
|
+
<param name="useAlternates" value="AUTO" />
|
|
14
|
+
<param name="username" value="Leguark" />
|
|
15
|
+
<param name="usernameStyle" value="USERID" />
|
|
16
|
+
</vcs-root>
|
|
17
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="e9cb014a-3f5f-4e33-8d40-9c5cb180a9d6" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>https://github.com/terranigma-solutions/subsurface#refs/heads/main (1)</name>
|
|
4
|
+
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
|
|
5
|
+
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
|
|
6
|
+
<param name="authMethod" value="PASSWORD" />
|
|
7
|
+
<param name="branch" value="refs/heads/main" />
|
|
8
|
+
<param name="ignoreKnownHosts" value="true" />
|
|
9
|
+
<param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
|
|
10
|
+
<param name="submoduleCheckout" value="CHECKOUT" />
|
|
11
|
+
<param name="url" value="https://github.com/terranigma-solutions/subsurface" />
|
|
12
|
+
<param name="useAlternates" value="AUTO" />
|
|
13
|
+
<param name="username" value="Leguark" />
|
|
14
|
+
<param name="usernameStyle" value="USERID" />
|
|
15
|
+
</vcs-root>
|
|
16
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<vcs-root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="a5d752d7-0d2a-4197-b779-2049040d97ba" type="jetbrains.git" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
|
|
3
|
+
<name>https://github.com/terranigma-solutions/subsurface#refs/heads/main (2)</name>
|
|
4
|
+
<param name="agentCleanFilesPolicy" value="ALL_UNTRACKED" />
|
|
5
|
+
<param name="agentCleanPolicy" value="ON_BRANCH_CHANGE" />
|
|
6
|
+
<param name="authMethod" value="PASSWORD" />
|
|
7
|
+
<param name="branch" value="refs/heads/main" />
|
|
8
|
+
<param name="ignoreKnownHosts" value="true" />
|
|
9
|
+
<param name="secure:password" value="credentialsJSON:4df4bdb0-1278-4834-a702-18ae3a286003" />
|
|
10
|
+
<param name="submoduleCheckout" value="CHECKOUT" />
|
|
11
|
+
<param name="url" value="https://github.com/terranigma-solutions/subsurface" />
|
|
12
|
+
<param name="useAlternates" value="AUTO" />
|
|
13
|
+
<param name="username" value="Leguark" />
|
|
14
|
+
<param name="usernameStyle" value="USERID" />
|
|
15
|
+
</vcs-root>
|
|
16
|
+
|
{subsurface_terra-2025.1.0rc10/subsurface_terra.egg-info → subsurface_terra-2025.1.0rc11}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: subsurface_terra
|
|
3
|
-
Version: 2025.1.
|
|
3
|
+
Version: 2025.1.0rc11
|
|
4
4
|
Summary: Subsurface data types and utilities. This version is the one used by Terranigma Solutions. Please feel free to take anything in this repository for the original one.
|
|
5
5
|
Home-page: https://softwareunderground.github.io/subsurface
|
|
6
6
|
Author: Software Underground
|
|
@@ -111,9 +111,11 @@ def _map_attrs_to_measured_depths(attrs: pd.DataFrame, survey: Survey) -> pd.Dat
|
|
|
111
111
|
|
|
112
112
|
# Start with a copy of the existing attributes DataFrame
|
|
113
113
|
new_attrs = survey.survey_trajectory.data.points_attributes.copy()
|
|
114
|
-
if 'component lith' in attrs.columns:
|
|
114
|
+
if 'component lith' in attrs.columns and 'lith_ids' not in attrs.columns:
|
|
115
115
|
# Factorize lith components directly in-place
|
|
116
116
|
attrs['lith_ids'], _ = pd.factorize(attrs['component lith'], use_na_sentinel=True)
|
|
117
|
+
else:
|
|
118
|
+
pass
|
|
117
119
|
|
|
118
120
|
# Add missing columns from attrs, preserving their dtypes
|
|
119
121
|
for col in attrs.columns.difference(new_attrs.columns):
|
|
@@ -152,7 +154,7 @@ def _map_attrs_to_measured_depths(attrs: pd.DataFrame, survey: Survey) -> pd.Dat
|
|
|
152
154
|
continue
|
|
153
155
|
attr_to_interpolate = attrs_well[col]
|
|
154
156
|
# make sure the attr_to_interpolate is not a string
|
|
155
|
-
if attr_to_interpolate.dtype == 'O':
|
|
157
|
+
if attr_to_interpolate.dtype == 'O' or isinstance(attr_to_interpolate.dtype, pd.CategoricalDtype):
|
|
156
158
|
continue
|
|
157
159
|
if col in ['lith_ids', 'component lith']:
|
|
158
160
|
interp_kind = 'nearest'
|
|
@@ -37,9 +37,9 @@ def load_with_trimesh(path_to_file_or_buffer, file_type: Optional[str] = None,
|
|
|
37
37
|
# Old Z axis → New -Y axis
|
|
38
38
|
# Old X axis → Remains as X axis
|
|
39
39
|
transform = np.array([
|
|
40
|
-
[1, 0, 0, 0],
|
|
41
|
-
[0, 0, 1, 0],
|
|
42
|
-
[0, 1, 0, 0],
|
|
40
|
+
[1, 0, 0, 0],
|
|
41
|
+
[0, 0, -1, 0],
|
|
42
|
+
[0, 1, 0, 0],
|
|
43
43
|
[0, 0, 0, 1]
|
|
44
44
|
])
|
|
45
45
|
|
|
@@ -102,21 +102,81 @@ def read_volumetric_mesh_attr_file(reader_helper: GenericReaderFilesHelper) -> p
|
|
|
102
102
|
return df
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
def pv_cast_to_explicit_structured_grid(pyvista_object):
|
|
106
|
-
|
|
105
|
+
def pv_cast_to_explicit_structured_grid(pyvista_object: 'pv.DataSet') -> 'pv.ExplicitStructuredGrid':
|
|
107
106
|
pv = optional_requirements.require_pyvista()
|
|
108
107
|
|
|
109
108
|
match pyvista_object:
|
|
110
|
-
|
|
111
109
|
case pv.RectilinearGrid() as rectl_grid:
|
|
112
|
-
|
|
113
110
|
return __pv_convert_rectilinear_to_explicit(rectl_grid)
|
|
114
|
-
|
|
111
|
+
case pv.UnstructuredGrid() as unstr_grid:
|
|
112
|
+
return __pv_convert_unstructured_to_explicit(unstr_grid)
|
|
115
113
|
case _:
|
|
116
|
-
|
|
117
114
|
return pyvista_object.cast_to_explicit_structured_grid()
|
|
118
115
|
|
|
119
116
|
|
|
117
|
+
def __pv_convert_unstructured_to_explicit(unstr_grid):
|
|
118
|
+
"""
|
|
119
|
+
Convert a PyVista UnstructuredGrid to an ExplicitStructuredGrid if possible.
|
|
120
|
+
"""
|
|
121
|
+
pv = optional_requirements.require_pyvista()
|
|
122
|
+
|
|
123
|
+
# First check if the grid has the necessary attributes to be treated as structured
|
|
124
|
+
if not hasattr(unstr_grid, 'n_cells') or unstr_grid.n_cells == 0:
|
|
125
|
+
raise ValueError("The unstructured grid has no cells.")
|
|
126
|
+
|
|
127
|
+
# Try to detect if the grid has a structured topology
|
|
128
|
+
# Check if the grid has cell type 11 (VTK_VOXEL) or 12 (VTK_HEXAHEDRON)
|
|
129
|
+
cell_types = unstr_grid.celltypes
|
|
130
|
+
|
|
131
|
+
# Voxels (11) and hexahedra (12) are the cell types used in structured grids
|
|
132
|
+
if not all(ct in [11, 12] for ct in cell_types):
|
|
133
|
+
raise ValueError("The unstructured grid contains non-hexahedral cells and cannot be converted to explicit structured.")
|
|
134
|
+
|
|
135
|
+
# Try to infer dimensions from the grid
|
|
136
|
+
try:
|
|
137
|
+
# Method 1: Try PyVista's built-in conversion if available
|
|
138
|
+
return unstr_grid.cast_to_explicit_structured_grid()
|
|
139
|
+
except (AttributeError, TypeError):
|
|
140
|
+
pass
|
|
141
|
+
|
|
142
|
+
try:
|
|
143
|
+
# Method 2: If the grid has dimensions stored as field data
|
|
144
|
+
if "dimensions" in unstr_grid.field_data:
|
|
145
|
+
dims = unstr_grid.field_data["dimensions"]
|
|
146
|
+
if len(dims) == 3:
|
|
147
|
+
nx, ny, nz = dims
|
|
148
|
+
# Verify that dimensions match the number of cells
|
|
149
|
+
if (nx-1)*(ny-1)*(nz-1) != unstr_grid.n_cells:
|
|
150
|
+
raise ValueError("Stored dimensions do not match the number of cells.")
|
|
151
|
+
|
|
152
|
+
# Extract points and reorder if needed
|
|
153
|
+
points = unstr_grid.points.reshape((nx, ny, nz, 3))
|
|
154
|
+
|
|
155
|
+
# Create explicit structured grid
|
|
156
|
+
explicit_grid = pv.ExplicitStructuredGrid((nx, ny, nz), points.reshape((-1, 3)))
|
|
157
|
+
explicit_grid.compute_connectivity()
|
|
158
|
+
|
|
159
|
+
# Transfer data arrays
|
|
160
|
+
for name, array in unstr_grid.cell_data.items():
|
|
161
|
+
explicit_grid.cell_data[name] = array.copy()
|
|
162
|
+
for name, array in unstr_grid.point_data.items():
|
|
163
|
+
explicit_grid.point_data[name] = array.copy()
|
|
164
|
+
for name, array in unstr_grid.field_data.items():
|
|
165
|
+
if name != "dimensions": # Skip dimensions field
|
|
166
|
+
explicit_grid.field_data[name] = array.copy()
|
|
167
|
+
|
|
168
|
+
return explicit_grid
|
|
169
|
+
except (ValueError, KeyError):
|
|
170
|
+
pass
|
|
171
|
+
|
|
172
|
+
# If none of the above methods work, use PyVista's extract_cells function
|
|
173
|
+
# to reconstruct the structured grid if possible
|
|
174
|
+
try:
|
|
175
|
+
# This is a best-effort approach that tries multiple strategies
|
|
176
|
+
return pv.core.filters.convert_unstructured_to_structured_grid(unstr_grid)
|
|
177
|
+
except Exception as e:
|
|
178
|
+
raise ValueError(f"Failed to convert unstructured grid to explicit structured grid: {e}")
|
|
179
|
+
|
|
120
180
|
def __pv_convert_rectilinear_to_explicit(rectl_grid):
|
|
121
181
|
|
|
122
182
|
pv = optional_requirements.require_pyvista()
|
|
@@ -100,6 +100,16 @@ def _validate_lith_data(d: pd.DataFrame, reader_helper: GenericReaderFilesHelper
|
|
|
100
100
|
raise AttributeError('If wells attributes represent lithology, `component lith` column must be present in the file. '
|
|
101
101
|
'Use columns_map to assign column names to these fields. Maybe you are marking as lithology'
|
|
102
102
|
'the wrong file?')
|
|
103
|
+
else:
|
|
104
|
+
# TODO: Add categories to reader helper
|
|
105
|
+
categories = sorted(d['component lith'].dropna().unique())
|
|
106
|
+
d['component lith'] = pd.Categorical(
|
|
107
|
+
d['component lith'],
|
|
108
|
+
categories=categories,
|
|
109
|
+
ordered=True
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
d['lith_ids'] = d['component lith'].cat.codes + 1
|
|
103
113
|
|
|
104
114
|
given_top = np.isin(['top', 'base'], d.columns).all()
|
|
105
115
|
given_altitude_and_base = np.isin(['altitude', 'base'], d.columns).all()
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
import pyvista as pv
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def transform_gaussian_blur(grid, sigma=20.0):
|
|
6
|
+
"""
|
|
7
|
+
Applies a Gaussian blur to the 'model_name' field of the structured grid.
|
|
8
|
+
|
|
9
|
+
Parameters:
|
|
10
|
+
grid - PyVista grid with 'model_name' field
|
|
11
|
+
sigma - Standard deviation for the Gaussian kernel
|
|
12
|
+
"""
|
|
13
|
+
from scipy.ndimage import gaussian_filter
|
|
14
|
+
|
|
15
|
+
# Get the original dimensions of the grid
|
|
16
|
+
dims = grid.dimensions
|
|
17
|
+
|
|
18
|
+
# Reshape the data to 3D array matching grid dimensions
|
|
19
|
+
values = np.array(grid['model_name'])
|
|
20
|
+
values_3d = values.reshape(dims[2] - 1, dims[1] - 1, dims[0] - 1).transpose(2, 1, 0)
|
|
21
|
+
|
|
22
|
+
# Apply Gaussian filter
|
|
23
|
+
blurred_values = gaussian_filter(values_3d, sigma=sigma, axes=(2,))
|
|
24
|
+
|
|
25
|
+
# Reshape back to 1D array
|
|
26
|
+
grid['model_name'] = blurred_values.transpose(2, 1, 0).flatten()
|
|
27
|
+
return grid
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def transform_sinusoidal(values, amplitude=1.0, frequency=0.01, phase=0):
|
|
31
|
+
"""
|
|
32
|
+
Apply a sinusoidal transformation to the values.
|
|
33
|
+
"""
|
|
34
|
+
return values + amplitude * np.sin(frequency * values + phase)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def obfuscate_model_name(grid, transform_functions, attr):
|
|
38
|
+
"""
|
|
39
|
+
Applies transformation functions to the 'model_name' field.
|
|
40
|
+
Functions can operate on either the grid or the values array.
|
|
41
|
+
"""
|
|
42
|
+
for func in transform_functions:
|
|
43
|
+
if 'grid' in func.__code__.co_varnames:
|
|
44
|
+
# Function expects the full grid
|
|
45
|
+
grid = func(grid)
|
|
46
|
+
else:
|
|
47
|
+
# Function expects just the values array
|
|
48
|
+
values = np.array(grid[attr])
|
|
49
|
+
grid[attr] = func(values)
|
|
50
|
+
|
|
51
|
+
return grid
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# pyvista_struct = transform_xy_to_z_propagation(pyvista_struct, z_factor=0.3, noise_level=0.1)
|
|
55
|
+
def transform_subtract_mean(values):
|
|
56
|
+
"""
|
|
57
|
+
Subtract the mean of the array from each element.
|
|
58
|
+
"""
|
|
59
|
+
return values - np.mean(values)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def transform_scale(values, scale_factor=0.003):
|
|
63
|
+
"""
|
|
64
|
+
Multiply each value by scale_factor.
|
|
65
|
+
"""
|
|
66
|
+
return values * scale_factor
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def update_extent(pyvista_grid, new_extent):
|
|
72
|
+
# new_extent: array-like with 6 elements [xmin, xmax, ymin, ymax, zmin, zmax]
|
|
73
|
+
old_bounds = np.array(pyvista_grid.bounds) # [xmin, xmax, ymin, ymax, zmin, zmax]
|
|
74
|
+
|
|
75
|
+
# Check for valid extents
|
|
76
|
+
if any(new_extent[i] >= new_extent[i + 1] for i in range(0, 6, 2)):
|
|
77
|
+
raise ValueError("Each min value must be less than the corresponding max value in the new extent.")
|
|
78
|
+
|
|
79
|
+
# Compute old ranges and new ranges for each axis
|
|
80
|
+
old_ranges = old_bounds[1::2] - old_bounds[0::2] # [x_range, y_range, z_range]
|
|
81
|
+
new_ranges = np.array([new_extent[1] - new_extent[0],
|
|
82
|
+
new_extent[3] - new_extent[2],
|
|
83
|
+
new_extent[5] - new_extent[4]])
|
|
84
|
+
|
|
85
|
+
# Avoid division by zero if any old range is zero
|
|
86
|
+
if np.any(old_ranges == 0):
|
|
87
|
+
raise ValueError("One of the dimensions in the current grid has zero length.")
|
|
88
|
+
|
|
89
|
+
# Get the old points and reshape for easier manipulation
|
|
90
|
+
old_points = pyvista_grid.points # shape (N, 3)
|
|
91
|
+
|
|
92
|
+
# Compute normalized coordinates within the old extent
|
|
93
|
+
norm_points = (old_points - old_bounds[0::2]) / old_ranges
|
|
94
|
+
|
|
95
|
+
# Compute new points based on new extent
|
|
96
|
+
new_mins = np.array([new_extent[0], new_extent[2], new_extent[4]])
|
|
97
|
+
new_points = new_mins + norm_points * new_ranges
|
|
98
|
+
|
|
99
|
+
# Update the grid's points
|
|
100
|
+
pyvista_grid.points = new_points
|
|
101
|
+
|
|
102
|
+
# Updating bounds is implicit once the points are modified.
|
|
103
|
+
pyvista_grid.Modified()
|
|
104
|
+
return pyvista_grid
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11/subsurface_terra.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: subsurface_terra
|
|
3
|
-
Version: 2025.1.
|
|
3
|
+
Version: 2025.1.0rc11
|
|
4
4
|
Summary: Subsurface data types and utilities. This version is the one used by Terranigma Solutions. Please feel free to take anything in this repository for the original one.
|
|
5
5
|
Home-page: https://softwareunderground.github.io/subsurface
|
|
6
6
|
Author: Software Underground
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
LICENSE
|
|
3
3
|
README.rst
|
|
4
4
|
setup.py
|
|
5
|
+
.teamcity/Subsurface/project-config.xml
|
|
6
|
+
.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface.xml
|
|
7
|
+
.teamcity/Subsurface/buildTypes/Subsurface_ReleaseSubsurface_2.xml
|
|
8
|
+
.teamcity/Subsurface/buildTypes/Subsurface_Testing.xml
|
|
9
|
+
.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain.xml
|
|
10
|
+
.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain1.xml
|
|
11
|
+
.teamcity/Subsurface/vcsRoots/Subsurface_HttpsGithubComTerranigmaSolutionsSubsurfaceRefsHeadsMain2.xml
|
|
5
12
|
requirements/requirements.txt
|
|
6
13
|
requirements/requirements_all.txt
|
|
7
14
|
requirements/requirements_dev.txt
|
|
@@ -92,6 +99,8 @@ subsurface/modules/reader/wells/DEP/_well_files_reader.py
|
|
|
92
99
|
subsurface/modules/reader/wells/DEP/_wells_api.py
|
|
93
100
|
subsurface/modules/reader/wells/DEP/_welly_reader.py
|
|
94
101
|
subsurface/modules/reader/wells/DEP/pandas_to_welly.py
|
|
102
|
+
subsurface/modules/tools/__init__.py
|
|
103
|
+
subsurface/modules/tools/mocking_aux.py
|
|
95
104
|
subsurface/modules/visualization/__init__.py
|
|
96
105
|
subsurface/modules/visualization/to_pyvista.py
|
|
97
106
|
subsurface/modules/writer/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_all.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_dev.txt
RENAMED
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_mesh.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_opt.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_plot.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_traces.txt
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/requirements/requirements_volume.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/interfaces/README.rst
RENAMED
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/interfaces/stream.py
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/reader/__init__.py
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/api/reader/read_wells.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/README.rst
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/structs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/utils/__init__.py
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/core/utils/utils_core.py
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/__init__.py
RENAMED
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/modules/reader/README.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{subsurface_terra-2025.1.0rc10 → subsurface_terra-2025.1.0rc11}/subsurface/optional_requirements.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|