subsurface-terra 2025.1.0rc15__py3-none-any.whl → 2025.1.0rc17__py3-none-any.whl
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/__init__.py +31 -31
- subsurface/_version.py +34 -21
- subsurface/api/__init__.py +13 -13
- subsurface/api/interfaces/__init__.py +3 -3
- subsurface/api/interfaces/stream.py +136 -136
- subsurface/api/reader/read_wells.py +78 -78
- subsurface/core/geological_formats/boreholes/_combine_trajectories.py +117 -117
- subsurface/core/geological_formats/boreholes/_map_attrs_to_survey.py +236 -234
- subsurface/core/geological_formats/boreholes/_survey_to_unstruct.py +163 -163
- subsurface/core/geological_formats/boreholes/boreholes.py +140 -140
- subsurface/core/geological_formats/boreholes/collars.py +26 -26
- subsurface/core/geological_formats/boreholes/survey.py +86 -86
- subsurface/core/geological_formats/fault.py +47 -47
- subsurface/core/reader_helpers/reader_unstruct.py +11 -11
- subsurface/core/reader_helpers/readers_data.py +130 -130
- subsurface/core/reader_helpers/readers_wells.py +13 -13
- subsurface/core/structs/__init__.py +3 -3
- subsurface/core/structs/base_structures/__init__.py +2 -2
- subsurface/core/structs/base_structures/_aux.py +69 -0
- subsurface/core/structs/base_structures/_liquid_earth_mesh.py +121 -121
- subsurface/core/structs/base_structures/_unstructured_data_constructor.py +70 -70
- subsurface/core/structs/base_structures/base_structures_enum.py +6 -6
- subsurface/core/structs/base_structures/structured_data.py +282 -282
- subsurface/core/structs/base_structures/unstructured_data.py +338 -319
- subsurface/core/structs/structured_elements/octree_mesh.py +10 -10
- subsurface/core/structs/structured_elements/structured_grid.py +59 -59
- subsurface/core/structs/structured_elements/structured_mesh.py +9 -9
- subsurface/core/structs/unstructured_elements/__init__.py +3 -3
- subsurface/core/structs/unstructured_elements/line_set.py +72 -72
- subsurface/core/structs/unstructured_elements/point_set.py +43 -43
- subsurface/core/structs/unstructured_elements/tetrahedron_mesh.py +35 -35
- subsurface/core/structs/unstructured_elements/triangular_surface.py +62 -62
- subsurface/core/utils/utils_core.py +38 -38
- subsurface/modules/reader/__init__.py +13 -13
- subsurface/modules/reader/faults/faults.py +80 -80
- subsurface/modules/reader/from_binary.py +46 -46
- subsurface/modules/reader/mesh/_GOCAD_mesh.py +82 -82
- subsurface/modules/reader/mesh/_trimesh_reader.py +447 -447
- subsurface/modules/reader/mesh/csv_mesh_reader.py +53 -53
- subsurface/modules/reader/mesh/dxf_reader.py +177 -177
- subsurface/modules/reader/mesh/glb_reader.py +30 -30
- subsurface/modules/reader/mesh/mx_reader.py +232 -232
- subsurface/modules/reader/mesh/obj_reader.py +53 -53
- subsurface/modules/reader/mesh/omf_mesh_reader.py +43 -43
- subsurface/modules/reader/mesh/surface_reader.py +56 -56
- subsurface/modules/reader/mesh/surfaces_api.py +41 -41
- subsurface/modules/reader/profiles/__init__.py +3 -3
- subsurface/modules/reader/profiles/profiles_core.py +197 -197
- subsurface/modules/reader/read_netcdf.py +38 -38
- subsurface/modules/reader/topography/__init__.py +7 -7
- subsurface/modules/reader/topography/topo_core.py +100 -100
- subsurface/modules/reader/volume/read_grav3d.py +447 -428
- subsurface/modules/reader/volume/read_volume.py +327 -230
- subsurface/modules/reader/volume/segy_reader.py +105 -105
- subsurface/modules/reader/volume/seismic.py +173 -173
- subsurface/modules/reader/volume/volume_utils.py +43 -43
- subsurface/modules/reader/wells/DEP/__init__.py +43 -43
- subsurface/modules/reader/wells/DEP/_well_files_reader.py +167 -167
- subsurface/modules/reader/wells/DEP/_wells_api.py +61 -61
- subsurface/modules/reader/wells/DEP/_welly_reader.py +180 -180
- subsurface/modules/reader/wells/DEP/pandas_to_welly.py +212 -212
- subsurface/modules/reader/wells/_read_to_df.py +57 -57
- subsurface/modules/reader/wells/read_borehole_interface.py +148 -148
- subsurface/modules/reader/wells/wells_utils.py +68 -68
- subsurface/modules/tools/mocking_aux.py +104 -104
- subsurface/modules/visualization/__init__.py +2 -2
- subsurface/modules/visualization/to_pyvista.py +320 -320
- subsurface/modules/writer/to_binary.py +12 -12
- subsurface/modules/writer/to_rex/common.py +78 -78
- subsurface/modules/writer/to_rex/data_struct.py +74 -74
- subsurface/modules/writer/to_rex/gempy_to_rexfile.py +791 -791
- subsurface/modules/writer/to_rex/material_encoder.py +44 -44
- subsurface/modules/writer/to_rex/mesh_encoder.py +152 -152
- subsurface/modules/writer/to_rex/to_rex.py +115 -115
- subsurface/modules/writer/to_rex/utils.py +15 -15
- subsurface/optional_requirements.py +116 -116
- {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/METADATA +194 -194
- subsurface_terra-2025.1.0rc17.dist-info/RECORD +99 -0
- {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/WHEEL +1 -1
- {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/licenses/LICENSE +203 -203
- subsurface_terra-2025.1.0rc15.dist-info/RECORD +0 -98
- {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/top_level.txt +0 -0
|
@@ -1,117 +1,117 @@
|
|
|
1
|
-
def require_omf():
|
|
2
|
-
try:
|
|
3
|
-
import omfvista
|
|
4
|
-
except ImportError:
|
|
5
|
-
raise ImportError("The omfvista package is required to run this function.")
|
|
6
|
-
return omfvista
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def require_rasterio():
|
|
10
|
-
try:
|
|
11
|
-
import rasterio
|
|
12
|
-
except ImportError:
|
|
13
|
-
raise ImportError("The rasterio package is required to run this function.")
|
|
14
|
-
return rasterio
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def require_pyvista():
|
|
18
|
-
try:
|
|
19
|
-
import pyvista
|
|
20
|
-
except ImportError:
|
|
21
|
-
raise ImportError("The pyvista package is required to run this function.")
|
|
22
|
-
return pyvista
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def require_imageio():
|
|
26
|
-
try:
|
|
27
|
-
import imageio
|
|
28
|
-
except ImportError:
|
|
29
|
-
raise ImportError("The imageio package is required to run this function.")
|
|
30
|
-
return imageio
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
def require_geopandas():
|
|
34
|
-
try:
|
|
35
|
-
import geopandas as gpd
|
|
36
|
-
except ImportError:
|
|
37
|
-
raise ImportError("The geopandas package is required to run this function.")
|
|
38
|
-
return gpd
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def require_segyio():
|
|
42
|
-
try:
|
|
43
|
-
import segyio
|
|
44
|
-
except ImportError:
|
|
45
|
-
raise ImportError("The segyio package is required to run this function.")
|
|
46
|
-
return segyio
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def require_welly():
|
|
50
|
-
try:
|
|
51
|
-
import welly
|
|
52
|
-
except ImportError:
|
|
53
|
-
raise ImportError("The welly package is required to run this function.")
|
|
54
|
-
return welly
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def require_striplog():
|
|
58
|
-
try:
|
|
59
|
-
import striplog
|
|
60
|
-
except ImportError:
|
|
61
|
-
raise ImportError("The striplog package is required to run this function.")
|
|
62
|
-
return striplog
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def require_ezdxf():
|
|
66
|
-
try:
|
|
67
|
-
import ezdxf
|
|
68
|
-
except ImportError:
|
|
69
|
-
raise ImportError("The ezdxf package is required to run this function.")
|
|
70
|
-
return ezdxf
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def require_trimesh():
|
|
74
|
-
try:
|
|
75
|
-
import trimesh
|
|
76
|
-
except ImportError:
|
|
77
|
-
raise ImportError("The trimesh package is required to run this function.")
|
|
78
|
-
return trimesh
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def require_scipy():
|
|
82
|
-
try:
|
|
83
|
-
import scipy
|
|
84
|
-
except ImportError:
|
|
85
|
-
raise ImportError("The scipy package is required to run this function.")
|
|
86
|
-
return scipy
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
def require_pandas():
|
|
90
|
-
try:
|
|
91
|
-
import pandas as pd
|
|
92
|
-
except ImportError:
|
|
93
|
-
raise ImportError("The pandas package is required to run this function.")
|
|
94
|
-
return pd
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def require_wellpathpy():
|
|
98
|
-
try:
|
|
99
|
-
import wellpathpy
|
|
100
|
-
except ImportError:
|
|
101
|
-
raise ImportError("The wellpathpy package is required to run this function.")
|
|
102
|
-
return wellpathpy
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def require_subsurface():
|
|
106
|
-
try:
|
|
107
|
-
import subsurface
|
|
108
|
-
except ImportError:
|
|
109
|
-
raise ImportError("The subsurface package is required to run this function.")
|
|
110
|
-
return subsurface
|
|
111
|
-
|
|
112
|
-
def require_matplotlib():
|
|
113
|
-
try:
|
|
114
|
-
import matplotlib
|
|
115
|
-
except ImportError:
|
|
116
|
-
raise ImportError("The matplotlib package is required to run this function.")
|
|
1
|
+
def require_omf():
|
|
2
|
+
try:
|
|
3
|
+
import omfvista
|
|
4
|
+
except ImportError:
|
|
5
|
+
raise ImportError("The omfvista package is required to run this function.")
|
|
6
|
+
return omfvista
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def require_rasterio():
|
|
10
|
+
try:
|
|
11
|
+
import rasterio
|
|
12
|
+
except ImportError:
|
|
13
|
+
raise ImportError("The rasterio package is required to run this function.")
|
|
14
|
+
return rasterio
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def require_pyvista():
|
|
18
|
+
try:
|
|
19
|
+
import pyvista
|
|
20
|
+
except ImportError:
|
|
21
|
+
raise ImportError("The pyvista package is required to run this function.")
|
|
22
|
+
return pyvista
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def require_imageio():
|
|
26
|
+
try:
|
|
27
|
+
import imageio
|
|
28
|
+
except ImportError:
|
|
29
|
+
raise ImportError("The imageio package is required to run this function.")
|
|
30
|
+
return imageio
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def require_geopandas():
|
|
34
|
+
try:
|
|
35
|
+
import geopandas as gpd
|
|
36
|
+
except ImportError:
|
|
37
|
+
raise ImportError("The geopandas package is required to run this function.")
|
|
38
|
+
return gpd
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def require_segyio():
|
|
42
|
+
try:
|
|
43
|
+
import segyio
|
|
44
|
+
except ImportError:
|
|
45
|
+
raise ImportError("The segyio package is required to run this function.")
|
|
46
|
+
return segyio
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def require_welly():
|
|
50
|
+
try:
|
|
51
|
+
import welly
|
|
52
|
+
except ImportError:
|
|
53
|
+
raise ImportError("The welly package is required to run this function.")
|
|
54
|
+
return welly
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def require_striplog():
|
|
58
|
+
try:
|
|
59
|
+
import striplog
|
|
60
|
+
except ImportError:
|
|
61
|
+
raise ImportError("The striplog package is required to run this function.")
|
|
62
|
+
return striplog
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def require_ezdxf():
|
|
66
|
+
try:
|
|
67
|
+
import ezdxf
|
|
68
|
+
except ImportError:
|
|
69
|
+
raise ImportError("The ezdxf package is required to run this function.")
|
|
70
|
+
return ezdxf
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def require_trimesh():
|
|
74
|
+
try:
|
|
75
|
+
import trimesh
|
|
76
|
+
except ImportError:
|
|
77
|
+
raise ImportError("The trimesh package is required to run this function.")
|
|
78
|
+
return trimesh
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def require_scipy():
|
|
82
|
+
try:
|
|
83
|
+
import scipy
|
|
84
|
+
except ImportError:
|
|
85
|
+
raise ImportError("The scipy package is required to run this function.")
|
|
86
|
+
return scipy
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def require_pandas():
|
|
90
|
+
try:
|
|
91
|
+
import pandas as pd
|
|
92
|
+
except ImportError:
|
|
93
|
+
raise ImportError("The pandas package is required to run this function.")
|
|
94
|
+
return pd
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def require_wellpathpy():
|
|
98
|
+
try:
|
|
99
|
+
import wellpathpy
|
|
100
|
+
except ImportError:
|
|
101
|
+
raise ImportError("The wellpathpy package is required to run this function.")
|
|
102
|
+
return wellpathpy
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def require_subsurface():
|
|
106
|
+
try:
|
|
107
|
+
import subsurface
|
|
108
|
+
except ImportError:
|
|
109
|
+
raise ImportError("The subsurface package is required to run this function.")
|
|
110
|
+
return subsurface
|
|
111
|
+
|
|
112
|
+
def require_matplotlib():
|
|
113
|
+
try:
|
|
114
|
+
import matplotlib
|
|
115
|
+
except ImportError:
|
|
116
|
+
raise ImportError("The matplotlib package is required to run this function.")
|
|
117
117
|
return matplotlib
|
{subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/METADATA
RENAMED
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: subsurface_terra
|
|
3
|
-
Version: 2025.1.
|
|
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
|
-
Home-page: https://softwareunderground.github.io/subsurface
|
|
6
|
-
Author: Software Underground
|
|
7
|
-
Author-email: hello@softwareunderground.org
|
|
8
|
-
License: Apache-2.0
|
|
9
|
-
Classifier: Development Status :: 3 - Alpha
|
|
10
|
-
Classifier: Intended Audience :: Science/Research
|
|
11
|
-
Classifier: Natural Language :: English
|
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
-
Classifier: Operating System :: OS Independent
|
|
14
|
-
Description-Content-Type: text/markdown
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
Requires-Dist: xarray
|
|
17
|
-
Requires-Dist: netcdf4
|
|
18
|
-
Requires-Dist: python-dotenv
|
|
19
|
-
Requires-Dist: pydantic
|
|
20
|
-
Provides-Extra: plog
|
|
21
|
-
Requires-Dist: xarray; extra == "plog"
|
|
22
|
-
Requires-Dist: netcdf4; extra == "plog"
|
|
23
|
-
Requires-Dist: python-dotenv; extra == "plog"
|
|
24
|
-
Requires-Dist: pydantic; extra == "plog"
|
|
25
|
-
Requires-Dist: matplotlib; extra == "plog"
|
|
26
|
-
Requires-Dist: pyvista; extra == "plog"
|
|
27
|
-
Provides-Extra: opt
|
|
28
|
-
Requires-Dist: xarray; extra == "opt"
|
|
29
|
-
Requires-Dist: netcdf4; extra == "opt"
|
|
30
|
-
Requires-Dist: python-dotenv; extra == "opt"
|
|
31
|
-
Requires-Dist: pydantic; extra == "opt"
|
|
32
|
-
Requires-Dist: xarray; extra == "opt"
|
|
33
|
-
Requires-Dist: netcdf4; extra == "opt"
|
|
34
|
-
Requires-Dist: python-dotenv; extra == "opt"
|
|
35
|
-
Requires-Dist: pydantic; extra == "opt"
|
|
36
|
-
Requires-Dist: matplotlib; extra == "opt"
|
|
37
|
-
Requires-Dist: pyvista; extra == "opt"
|
|
38
|
-
Requires-Dist: ezdxf; extra == "opt"
|
|
39
|
-
Requires-Dist: trimesh; extra == "opt"
|
|
40
|
-
Requires-Dist: networkx; extra == "opt"
|
|
41
|
-
Requires-Dist: imageio; extra == "opt"
|
|
42
|
-
Requires-Dist: omfvista; extra == "opt"
|
|
43
|
-
Requires-Dist: tifffile; extra == "opt"
|
|
44
|
-
Requires-Dist: pdf2image; extra == "opt"
|
|
45
|
-
Requires-Dist: imagecodecs; extra == "opt"
|
|
46
|
-
Requires-Dist: segyio; extra == "opt"
|
|
47
|
-
Requires-Dist: segyio; extra == "opt"
|
|
48
|
-
Requires-Dist: imageio; extra == "opt"
|
|
49
|
-
Requires-Dist: scipy; extra == "opt"
|
|
50
|
-
Requires-Dist: geopandas; extra == "opt"
|
|
51
|
-
Requires-Dist: pooch; extra == "opt"
|
|
52
|
-
Provides-Extra: dev
|
|
53
|
-
Requires-Dist: xarray; extra == "dev"
|
|
54
|
-
Requires-Dist: netcdf4; extra == "dev"
|
|
55
|
-
Requires-Dist: python-dotenv; extra == "dev"
|
|
56
|
-
Requires-Dist: pydantic; extra == "dev"
|
|
57
|
-
Requires-Dist: numpy; extra == "dev"
|
|
58
|
-
Requires-Dist: pandas; extra == "dev"
|
|
59
|
-
Requires-Dist: netCDF4; extra == "dev"
|
|
60
|
-
Requires-Dist: sphinx~=3.5; extra == "dev"
|
|
61
|
-
Requires-Dist: sphinx_gallery; extra == "dev"
|
|
62
|
-
Requires-Dist: sphinx_rtd_theme; extra == "dev"
|
|
63
|
-
Requires-Dist: sphinx_automodapi; extra == "dev"
|
|
64
|
-
Requires-Dist: pytest; extra == "dev"
|
|
65
|
-
Requires-Dist: pytest-cov; extra == "dev"
|
|
66
|
-
Requires-Dist: teamcity-messages; extra == "dev"
|
|
67
|
-
Provides-Extra: all
|
|
68
|
-
Requires-Dist: xarray; extra == "all"
|
|
69
|
-
Requires-Dist: netcdf4; extra == "all"
|
|
70
|
-
Requires-Dist: python-dotenv; extra == "all"
|
|
71
|
-
Requires-Dist: pydantic; extra == "all"
|
|
72
|
-
Requires-Dist: xarray; extra == "all"
|
|
73
|
-
Requires-Dist: netcdf4; extra == "all"
|
|
74
|
-
Requires-Dist: python-dotenv; extra == "all"
|
|
75
|
-
Requires-Dist: pydantic; extra == "all"
|
|
76
|
-
Requires-Dist: matplotlib; extra == "all"
|
|
77
|
-
Requires-Dist: pyvista; extra == "all"
|
|
78
|
-
Requires-Dist: ezdxf; extra == "all"
|
|
79
|
-
Requires-Dist: trimesh; extra == "all"
|
|
80
|
-
Requires-Dist: networkx; extra == "all"
|
|
81
|
-
Requires-Dist: imageio; extra == "all"
|
|
82
|
-
Requires-Dist: omfvista; extra == "all"
|
|
83
|
-
Requires-Dist: tifffile; extra == "all"
|
|
84
|
-
Requires-Dist: pdf2image; extra == "all"
|
|
85
|
-
Requires-Dist: imagecodecs; extra == "all"
|
|
86
|
-
Requires-Dist: segyio; extra == "all"
|
|
87
|
-
Requires-Dist: segyio; extra == "all"
|
|
88
|
-
Requires-Dist: imageio; extra == "all"
|
|
89
|
-
Requires-Dist: scipy; extra == "all"
|
|
90
|
-
Requires-Dist: geopandas; extra == "all"
|
|
91
|
-
Requires-Dist: rasterio; extra == "all"
|
|
92
|
-
Requires-Dist: xarray; extra == "all"
|
|
93
|
-
Requires-Dist: netcdf4; extra == "all"
|
|
94
|
-
Requires-Dist: python-dotenv; extra == "all"
|
|
95
|
-
Requires-Dist: pydantic; extra == "all"
|
|
96
|
-
Requires-Dist: numpy; extra == "all"
|
|
97
|
-
Requires-Dist: pandas; extra == "all"
|
|
98
|
-
Requires-Dist: netCDF4; extra == "all"
|
|
99
|
-
Requires-Dist: sphinx~=3.5; extra == "all"
|
|
100
|
-
Requires-Dist: sphinx_gallery; extra == "all"
|
|
101
|
-
Requires-Dist: sphinx_rtd_theme; extra == "all"
|
|
102
|
-
Requires-Dist: sphinx_automodapi; extra == "all"
|
|
103
|
-
Requires-Dist: pytest; extra == "all"
|
|
104
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
105
|
-
Requires-Dist: teamcity-messages; extra == "all"
|
|
106
|
-
Dynamic: author
|
|
107
|
-
Dynamic: author-email
|
|
108
|
-
Dynamic: classifier
|
|
109
|
-
Dynamic: description
|
|
110
|
-
Dynamic: description-content-type
|
|
111
|
-
Dynamic: home-page
|
|
112
|
-
Dynamic: license
|
|
113
|
-
Dynamic: license-file
|
|
114
|
-
Dynamic: provides-extra
|
|
115
|
-
Dynamic: requires-dist
|
|
116
|
-
Dynamic: summary
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
subsurface
|
|
122
|
-
==========
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
DataHub for geoscientific data in Python. Two main purposes:
|
|
126
|
-
|
|
127
|
-
+ Unify geometric data into data objects (using numpy arrays as memory representation) that all the packages of the stack understand
|
|
128
|
-
|
|
129
|
-
+ Basic interactions with those data objects:
|
|
130
|
-
+ Write/Read
|
|
131
|
-
+ Categorized/Meta data
|
|
132
|
-
+ Visualization
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
Data Levels
|
|
136
|
-
-----------
|
|
137
|
-
|
|
138
|
-
The difference between data levels is **not** which data they store but which data they **parse and understand**. The rationale for this is to be able to pass along any object while keeping the I/O in subsurface::
|
|
139
|
-
|
|
140
|
-
HUMAN
|
|
141
|
-
|
|
142
|
-
\‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾/\
|
|
143
|
-
\= = = = = = = = = = = = = = /. \ -> Additional context/meta information about the data
|
|
144
|
-
\= = = = geo_format= = = = /. . \
|
|
145
|
-
\= = = = = = = = = = = = /. . . \ -> Elements that represent some
|
|
146
|
-
\= = = geo_object= = = /. . . . \ geological concept. E.g: faults, seismic
|
|
147
|
-
\= = = = = = = = = = /. . . . ./
|
|
148
|
-
\= = element = = = /. . . . / -> type of geometric object: PointSet,
|
|
149
|
-
\= = = = = = = = /. . . ./ TriSurf, LineSet, Tetramesh
|
|
150
|
-
\primary_struct/. . . / -> Set of arrays that define a geometric object:
|
|
151
|
-
\= = = = = = /. . ./ e.g. *StructuredData*, *UnstructuredData*
|
|
152
|
-
\DF/Xarray /. . / -> Label numpy.arrays
|
|
153
|
-
\= = = = /. ./
|
|
154
|
-
\array /. / -> Memory allocation
|
|
155
|
-
\= = /./
|
|
156
|
-
\= //
|
|
157
|
-
\/
|
|
158
|
-
|
|
159
|
-
COMPUTER
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
Documentation (WIP)
|
|
163
|
-
-------------------
|
|
164
|
-
|
|
165
|
-
Note that ``subsurface`` is still in early days; do expect things to change. We
|
|
166
|
-
welcome contributions very much, please get in touch if you would like to add
|
|
167
|
-
support for subsurface in your package.
|
|
168
|
-
|
|
169
|
-
An early version of the documentation can be found here:
|
|
170
|
-
|
|
171
|
-
https://softwareunderground.github.io/subsurface/
|
|
172
|
-
|
|
173
|
-
Direct links:
|
|
174
|
-
|
|
175
|
-
- `Developers-guide <https://softwareunderground.github.io/subsurface/maintenance.html>`_
|
|
176
|
-
- `Changelog <https://softwareunderground.github.io/subsurface/changelog.html>`_
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
Installation
|
|
180
|
-
------------
|
|
181
|
-
|
|
182
|
-
.. code-block:: console
|
|
183
|
-
|
|
184
|
-
pip install subsurface
|
|
185
|
-
|
|
186
|
-
or
|
|
187
|
-
|
|
188
|
-
.. code-block:: console
|
|
189
|
-
|
|
190
|
-
conda install -c conda-forge subsurface
|
|
191
|
-
|
|
192
|
-
Be aware that to read different formats you will need to manually install the
|
|
193
|
-
specific dependency (e.g. ``welly`` to read well data).
|
|
194
|
-
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: subsurface_terra
|
|
3
|
+
Version: 2025.1.0rc17
|
|
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
|
+
Home-page: https://softwareunderground.github.io/subsurface
|
|
6
|
+
Author: Software Underground
|
|
7
|
+
Author-email: hello@softwareunderground.org
|
|
8
|
+
License: Apache-2.0
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Science/Research
|
|
11
|
+
Classifier: Natural Language :: English
|
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: xarray
|
|
17
|
+
Requires-Dist: netcdf4
|
|
18
|
+
Requires-Dist: python-dotenv
|
|
19
|
+
Requires-Dist: pydantic
|
|
20
|
+
Provides-Extra: plog
|
|
21
|
+
Requires-Dist: xarray; extra == "plog"
|
|
22
|
+
Requires-Dist: netcdf4; extra == "plog"
|
|
23
|
+
Requires-Dist: python-dotenv; extra == "plog"
|
|
24
|
+
Requires-Dist: pydantic; extra == "plog"
|
|
25
|
+
Requires-Dist: matplotlib; extra == "plog"
|
|
26
|
+
Requires-Dist: pyvista; extra == "plog"
|
|
27
|
+
Provides-Extra: opt
|
|
28
|
+
Requires-Dist: xarray; extra == "opt"
|
|
29
|
+
Requires-Dist: netcdf4; extra == "opt"
|
|
30
|
+
Requires-Dist: python-dotenv; extra == "opt"
|
|
31
|
+
Requires-Dist: pydantic; extra == "opt"
|
|
32
|
+
Requires-Dist: xarray; extra == "opt"
|
|
33
|
+
Requires-Dist: netcdf4; extra == "opt"
|
|
34
|
+
Requires-Dist: python-dotenv; extra == "opt"
|
|
35
|
+
Requires-Dist: pydantic; extra == "opt"
|
|
36
|
+
Requires-Dist: matplotlib; extra == "opt"
|
|
37
|
+
Requires-Dist: pyvista; extra == "opt"
|
|
38
|
+
Requires-Dist: ezdxf; extra == "opt"
|
|
39
|
+
Requires-Dist: trimesh; extra == "opt"
|
|
40
|
+
Requires-Dist: networkx; extra == "opt"
|
|
41
|
+
Requires-Dist: imageio; extra == "opt"
|
|
42
|
+
Requires-Dist: omfvista; extra == "opt"
|
|
43
|
+
Requires-Dist: tifffile; extra == "opt"
|
|
44
|
+
Requires-Dist: pdf2image; extra == "opt"
|
|
45
|
+
Requires-Dist: imagecodecs; extra == "opt"
|
|
46
|
+
Requires-Dist: segyio; extra == "opt"
|
|
47
|
+
Requires-Dist: segyio; extra == "opt"
|
|
48
|
+
Requires-Dist: imageio; extra == "opt"
|
|
49
|
+
Requires-Dist: scipy; extra == "opt"
|
|
50
|
+
Requires-Dist: geopandas; extra == "opt"
|
|
51
|
+
Requires-Dist: pooch; extra == "opt"
|
|
52
|
+
Provides-Extra: dev
|
|
53
|
+
Requires-Dist: xarray; extra == "dev"
|
|
54
|
+
Requires-Dist: netcdf4; extra == "dev"
|
|
55
|
+
Requires-Dist: python-dotenv; extra == "dev"
|
|
56
|
+
Requires-Dist: pydantic; extra == "dev"
|
|
57
|
+
Requires-Dist: numpy; extra == "dev"
|
|
58
|
+
Requires-Dist: pandas; extra == "dev"
|
|
59
|
+
Requires-Dist: netCDF4; extra == "dev"
|
|
60
|
+
Requires-Dist: sphinx~=3.5; extra == "dev"
|
|
61
|
+
Requires-Dist: sphinx_gallery; extra == "dev"
|
|
62
|
+
Requires-Dist: sphinx_rtd_theme; extra == "dev"
|
|
63
|
+
Requires-Dist: sphinx_automodapi; extra == "dev"
|
|
64
|
+
Requires-Dist: pytest; extra == "dev"
|
|
65
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
66
|
+
Requires-Dist: teamcity-messages; extra == "dev"
|
|
67
|
+
Provides-Extra: all
|
|
68
|
+
Requires-Dist: xarray; extra == "all"
|
|
69
|
+
Requires-Dist: netcdf4; extra == "all"
|
|
70
|
+
Requires-Dist: python-dotenv; extra == "all"
|
|
71
|
+
Requires-Dist: pydantic; extra == "all"
|
|
72
|
+
Requires-Dist: xarray; extra == "all"
|
|
73
|
+
Requires-Dist: netcdf4; extra == "all"
|
|
74
|
+
Requires-Dist: python-dotenv; extra == "all"
|
|
75
|
+
Requires-Dist: pydantic; extra == "all"
|
|
76
|
+
Requires-Dist: matplotlib; extra == "all"
|
|
77
|
+
Requires-Dist: pyvista; extra == "all"
|
|
78
|
+
Requires-Dist: ezdxf; extra == "all"
|
|
79
|
+
Requires-Dist: trimesh; extra == "all"
|
|
80
|
+
Requires-Dist: networkx; extra == "all"
|
|
81
|
+
Requires-Dist: imageio; extra == "all"
|
|
82
|
+
Requires-Dist: omfvista; extra == "all"
|
|
83
|
+
Requires-Dist: tifffile; extra == "all"
|
|
84
|
+
Requires-Dist: pdf2image; extra == "all"
|
|
85
|
+
Requires-Dist: imagecodecs; extra == "all"
|
|
86
|
+
Requires-Dist: segyio; extra == "all"
|
|
87
|
+
Requires-Dist: segyio; extra == "all"
|
|
88
|
+
Requires-Dist: imageio; extra == "all"
|
|
89
|
+
Requires-Dist: scipy; extra == "all"
|
|
90
|
+
Requires-Dist: geopandas; extra == "all"
|
|
91
|
+
Requires-Dist: rasterio; extra == "all"
|
|
92
|
+
Requires-Dist: xarray; extra == "all"
|
|
93
|
+
Requires-Dist: netcdf4; extra == "all"
|
|
94
|
+
Requires-Dist: python-dotenv; extra == "all"
|
|
95
|
+
Requires-Dist: pydantic; extra == "all"
|
|
96
|
+
Requires-Dist: numpy; extra == "all"
|
|
97
|
+
Requires-Dist: pandas; extra == "all"
|
|
98
|
+
Requires-Dist: netCDF4; extra == "all"
|
|
99
|
+
Requires-Dist: sphinx~=3.5; extra == "all"
|
|
100
|
+
Requires-Dist: sphinx_gallery; extra == "all"
|
|
101
|
+
Requires-Dist: sphinx_rtd_theme; extra == "all"
|
|
102
|
+
Requires-Dist: sphinx_automodapi; extra == "all"
|
|
103
|
+
Requires-Dist: pytest; extra == "all"
|
|
104
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
105
|
+
Requires-Dist: teamcity-messages; extra == "all"
|
|
106
|
+
Dynamic: author
|
|
107
|
+
Dynamic: author-email
|
|
108
|
+
Dynamic: classifier
|
|
109
|
+
Dynamic: description
|
|
110
|
+
Dynamic: description-content-type
|
|
111
|
+
Dynamic: home-page
|
|
112
|
+
Dynamic: license
|
|
113
|
+
Dynamic: license-file
|
|
114
|
+
Dynamic: provides-extra
|
|
115
|
+
Dynamic: requires-dist
|
|
116
|
+
Dynamic: summary
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
subsurface
|
|
122
|
+
==========
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
DataHub for geoscientific data in Python. Two main purposes:
|
|
126
|
+
|
|
127
|
+
+ Unify geometric data into data objects (using numpy arrays as memory representation) that all the packages of the stack understand
|
|
128
|
+
|
|
129
|
+
+ Basic interactions with those data objects:
|
|
130
|
+
+ Write/Read
|
|
131
|
+
+ Categorized/Meta data
|
|
132
|
+
+ Visualization
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
Data Levels
|
|
136
|
+
-----------
|
|
137
|
+
|
|
138
|
+
The difference between data levels is **not** which data they store but which data they **parse and understand**. The rationale for this is to be able to pass along any object while keeping the I/O in subsurface::
|
|
139
|
+
|
|
140
|
+
HUMAN
|
|
141
|
+
|
|
142
|
+
\‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾/\
|
|
143
|
+
\= = = = = = = = = = = = = = /. \ -> Additional context/meta information about the data
|
|
144
|
+
\= = = = geo_format= = = = /. . \
|
|
145
|
+
\= = = = = = = = = = = = /. . . \ -> Elements that represent some
|
|
146
|
+
\= = = geo_object= = = /. . . . \ geological concept. E.g: faults, seismic
|
|
147
|
+
\= = = = = = = = = = /. . . . ./
|
|
148
|
+
\= = element = = = /. . . . / -> type of geometric object: PointSet,
|
|
149
|
+
\= = = = = = = = /. . . ./ TriSurf, LineSet, Tetramesh
|
|
150
|
+
\primary_struct/. . . / -> Set of arrays that define a geometric object:
|
|
151
|
+
\= = = = = = /. . ./ e.g. *StructuredData*, *UnstructuredData*
|
|
152
|
+
\DF/Xarray /. . / -> Label numpy.arrays
|
|
153
|
+
\= = = = /. ./
|
|
154
|
+
\array /. / -> Memory allocation
|
|
155
|
+
\= = /./
|
|
156
|
+
\= //
|
|
157
|
+
\/
|
|
158
|
+
|
|
159
|
+
COMPUTER
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
Documentation (WIP)
|
|
163
|
+
-------------------
|
|
164
|
+
|
|
165
|
+
Note that ``subsurface`` is still in early days; do expect things to change. We
|
|
166
|
+
welcome contributions very much, please get in touch if you would like to add
|
|
167
|
+
support for subsurface in your package.
|
|
168
|
+
|
|
169
|
+
An early version of the documentation can be found here:
|
|
170
|
+
|
|
171
|
+
https://softwareunderground.github.io/subsurface/
|
|
172
|
+
|
|
173
|
+
Direct links:
|
|
174
|
+
|
|
175
|
+
- `Developers-guide <https://softwareunderground.github.io/subsurface/maintenance.html>`_
|
|
176
|
+
- `Changelog <https://softwareunderground.github.io/subsurface/changelog.html>`_
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
Installation
|
|
180
|
+
------------
|
|
181
|
+
|
|
182
|
+
.. code-block:: console
|
|
183
|
+
|
|
184
|
+
pip install subsurface
|
|
185
|
+
|
|
186
|
+
or
|
|
187
|
+
|
|
188
|
+
.. code-block:: console
|
|
189
|
+
|
|
190
|
+
conda install -c conda-forge subsurface
|
|
191
|
+
|
|
192
|
+
Be aware that to read different formats you will need to manually install the
|
|
193
|
+
specific dependency (e.g. ``welly`` to read well data).
|
|
194
|
+
|