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.
Files changed (82) hide show
  1. subsurface/__init__.py +31 -31
  2. subsurface/_version.py +34 -21
  3. subsurface/api/__init__.py +13 -13
  4. subsurface/api/interfaces/__init__.py +3 -3
  5. subsurface/api/interfaces/stream.py +136 -136
  6. subsurface/api/reader/read_wells.py +78 -78
  7. subsurface/core/geological_formats/boreholes/_combine_trajectories.py +117 -117
  8. subsurface/core/geological_formats/boreholes/_map_attrs_to_survey.py +236 -234
  9. subsurface/core/geological_formats/boreholes/_survey_to_unstruct.py +163 -163
  10. subsurface/core/geological_formats/boreholes/boreholes.py +140 -140
  11. subsurface/core/geological_formats/boreholes/collars.py +26 -26
  12. subsurface/core/geological_formats/boreholes/survey.py +86 -86
  13. subsurface/core/geological_formats/fault.py +47 -47
  14. subsurface/core/reader_helpers/reader_unstruct.py +11 -11
  15. subsurface/core/reader_helpers/readers_data.py +130 -130
  16. subsurface/core/reader_helpers/readers_wells.py +13 -13
  17. subsurface/core/structs/__init__.py +3 -3
  18. subsurface/core/structs/base_structures/__init__.py +2 -2
  19. subsurface/core/structs/base_structures/_aux.py +69 -0
  20. subsurface/core/structs/base_structures/_liquid_earth_mesh.py +121 -121
  21. subsurface/core/structs/base_structures/_unstructured_data_constructor.py +70 -70
  22. subsurface/core/structs/base_structures/base_structures_enum.py +6 -6
  23. subsurface/core/structs/base_structures/structured_data.py +282 -282
  24. subsurface/core/structs/base_structures/unstructured_data.py +338 -319
  25. subsurface/core/structs/structured_elements/octree_mesh.py +10 -10
  26. subsurface/core/structs/structured_elements/structured_grid.py +59 -59
  27. subsurface/core/structs/structured_elements/structured_mesh.py +9 -9
  28. subsurface/core/structs/unstructured_elements/__init__.py +3 -3
  29. subsurface/core/structs/unstructured_elements/line_set.py +72 -72
  30. subsurface/core/structs/unstructured_elements/point_set.py +43 -43
  31. subsurface/core/structs/unstructured_elements/tetrahedron_mesh.py +35 -35
  32. subsurface/core/structs/unstructured_elements/triangular_surface.py +62 -62
  33. subsurface/core/utils/utils_core.py +38 -38
  34. subsurface/modules/reader/__init__.py +13 -13
  35. subsurface/modules/reader/faults/faults.py +80 -80
  36. subsurface/modules/reader/from_binary.py +46 -46
  37. subsurface/modules/reader/mesh/_GOCAD_mesh.py +82 -82
  38. subsurface/modules/reader/mesh/_trimesh_reader.py +447 -447
  39. subsurface/modules/reader/mesh/csv_mesh_reader.py +53 -53
  40. subsurface/modules/reader/mesh/dxf_reader.py +177 -177
  41. subsurface/modules/reader/mesh/glb_reader.py +30 -30
  42. subsurface/modules/reader/mesh/mx_reader.py +232 -232
  43. subsurface/modules/reader/mesh/obj_reader.py +53 -53
  44. subsurface/modules/reader/mesh/omf_mesh_reader.py +43 -43
  45. subsurface/modules/reader/mesh/surface_reader.py +56 -56
  46. subsurface/modules/reader/mesh/surfaces_api.py +41 -41
  47. subsurface/modules/reader/profiles/__init__.py +3 -3
  48. subsurface/modules/reader/profiles/profiles_core.py +197 -197
  49. subsurface/modules/reader/read_netcdf.py +38 -38
  50. subsurface/modules/reader/topography/__init__.py +7 -7
  51. subsurface/modules/reader/topography/topo_core.py +100 -100
  52. subsurface/modules/reader/volume/read_grav3d.py +447 -428
  53. subsurface/modules/reader/volume/read_volume.py +327 -230
  54. subsurface/modules/reader/volume/segy_reader.py +105 -105
  55. subsurface/modules/reader/volume/seismic.py +173 -173
  56. subsurface/modules/reader/volume/volume_utils.py +43 -43
  57. subsurface/modules/reader/wells/DEP/__init__.py +43 -43
  58. subsurface/modules/reader/wells/DEP/_well_files_reader.py +167 -167
  59. subsurface/modules/reader/wells/DEP/_wells_api.py +61 -61
  60. subsurface/modules/reader/wells/DEP/_welly_reader.py +180 -180
  61. subsurface/modules/reader/wells/DEP/pandas_to_welly.py +212 -212
  62. subsurface/modules/reader/wells/_read_to_df.py +57 -57
  63. subsurface/modules/reader/wells/read_borehole_interface.py +148 -148
  64. subsurface/modules/reader/wells/wells_utils.py +68 -68
  65. subsurface/modules/tools/mocking_aux.py +104 -104
  66. subsurface/modules/visualization/__init__.py +2 -2
  67. subsurface/modules/visualization/to_pyvista.py +320 -320
  68. subsurface/modules/writer/to_binary.py +12 -12
  69. subsurface/modules/writer/to_rex/common.py +78 -78
  70. subsurface/modules/writer/to_rex/data_struct.py +74 -74
  71. subsurface/modules/writer/to_rex/gempy_to_rexfile.py +791 -791
  72. subsurface/modules/writer/to_rex/material_encoder.py +44 -44
  73. subsurface/modules/writer/to_rex/mesh_encoder.py +152 -152
  74. subsurface/modules/writer/to_rex/to_rex.py +115 -115
  75. subsurface/modules/writer/to_rex/utils.py +15 -15
  76. subsurface/optional_requirements.py +116 -116
  77. {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/METADATA +194 -194
  78. subsurface_terra-2025.1.0rc17.dist-info/RECORD +99 -0
  79. {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/WHEEL +1 -1
  80. {subsurface_terra-2025.1.0rc15.dist-info → subsurface_terra-2025.1.0rc17.dist-info}/licenses/LICENSE +203 -203
  81. subsurface_terra-2025.1.0rc15.dist-info/RECORD +0 -98
  82. {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
@@ -1,194 +1,194 @@
1
- Metadata-Version: 2.4
2
- Name: subsurface_terra
3
- Version: 2025.1.0rc15
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
+