Metadata-Version: 2.4
Name: subsurface_terra
Version: 2025.0.1rc2
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.
Home-page: https://softwareunderground.github.io/subsurface
Author: Software Underground
Author-email: hello@softwareunderground.org
License: Apache-2.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: xarray
Requires-Dist: netcdf4
Requires-Dist: python-dotenv
Requires-Dist: pydantic
Provides-Extra: plog
Requires-Dist: xarray; extra == "plog"
Requires-Dist: netcdf4; extra == "plog"
Requires-Dist: python-dotenv; extra == "plog"
Requires-Dist: pydantic; extra == "plog"
Requires-Dist: matplotlib; extra == "plog"
Requires-Dist: pyvista; extra == "plog"
Provides-Extra: opt
Requires-Dist: xarray; extra == "opt"
Requires-Dist: netcdf4; extra == "opt"
Requires-Dist: python-dotenv; extra == "opt"
Requires-Dist: pydantic; extra == "opt"
Requires-Dist: xarray; extra == "opt"
Requires-Dist: netcdf4; extra == "opt"
Requires-Dist: python-dotenv; extra == "opt"
Requires-Dist: pydantic; extra == "opt"
Requires-Dist: matplotlib; extra == "opt"
Requires-Dist: pyvista; extra == "opt"
Requires-Dist: ezdxf; extra == "opt"
Requires-Dist: trimesh; extra == "opt"
Requires-Dist: networkx; extra == "opt"
Requires-Dist: imageio; extra == "opt"
Requires-Dist: omfvista; extra == "opt"
Requires-Dist: tifffile; extra == "opt"
Requires-Dist: pdf2image; extra == "opt"
Requires-Dist: imagecodecs; extra == "opt"
Requires-Dist: segyio; extra == "opt"
Requires-Dist: segyio; extra == "opt"
Requires-Dist: imageio; extra == "opt"
Requires-Dist: scipy; extra == "opt"
Requires-Dist: geopandas; extra == "opt"
Requires-Dist: pooch; extra == "opt"
Provides-Extra: dev
Requires-Dist: xarray; extra == "dev"
Requires-Dist: netcdf4; extra == "dev"
Requires-Dist: python-dotenv; extra == "dev"
Requires-Dist: pydantic; extra == "dev"
Requires-Dist: numpy; extra == "dev"
Requires-Dist: pandas; extra == "dev"
Requires-Dist: netCDF4; extra == "dev"
Requires-Dist: sphinx~=3.5; extra == "dev"
Requires-Dist: sphinx_gallery; extra == "dev"
Requires-Dist: sphinx_rtd_theme; extra == "dev"
Requires-Dist: sphinx_automodapi; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: teamcity-messages; extra == "dev"
Provides-Extra: all
Requires-Dist: xarray; extra == "all"
Requires-Dist: netcdf4; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: pydantic; extra == "all"
Requires-Dist: xarray; extra == "all"
Requires-Dist: netcdf4; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: pydantic; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: pyvista; extra == "all"
Requires-Dist: ezdxf; extra == "all"
Requires-Dist: trimesh; extra == "all"
Requires-Dist: networkx; extra == "all"
Requires-Dist: imageio; extra == "all"
Requires-Dist: omfvista; extra == "all"
Requires-Dist: tifffile; extra == "all"
Requires-Dist: pdf2image; extra == "all"
Requires-Dist: imagecodecs; extra == "all"
Requires-Dist: segyio; extra == "all"
Requires-Dist: segyio; extra == "all"
Requires-Dist: imageio; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: geopandas; extra == "all"
Requires-Dist: rasterio; extra == "all"
Requires-Dist: xarray; extra == "all"
Requires-Dist: netcdf4; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: pydantic; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: netCDF4; extra == "all"
Requires-Dist: sphinx~=3.5; extra == "all"
Requires-Dist: sphinx_gallery; extra == "all"
Requires-Dist: sphinx_rtd_theme; extra == "all"
Requires-Dist: sphinx_automodapi; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: pytest-cov; extra == "all"
Requires-Dist: teamcity-messages; extra == "all"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary




subsurface
==========


DataHub for geoscientific data in Python. Two main purposes:

+ Unify geometric data into data objects (using numpy arrays as memory representation) that all the packages of the stack understand

+ Basic interactions with those data objects:
    + Write/Read
    + Categorized/Meta data
    + Visualization


Data Levels
-----------

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::

                HUMAN

   \‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾/\
    \= = = = = = = = = = = = = = /. \     -> Additional context/meta information about the data
     \= = = = geo_format= = = = /. . \
      \= = = = = = = = = = = = /. . . \   -> Elements that represent some
       \= = = geo_object= = = /. . . . \     geological concept. E.g: faults, seismic
        \= = = = = = = = = = /. . . . ./
         \= = element = = = /. . . . /    -> type of geometric object: PointSet,
          \= = = = = = = = /. . . ./         TriSurf, LineSet, Tetramesh
           \primary_struct/. . . /        -> Set of arrays that define a geometric object:
            \= = = = = = /. . ./             e.g. *StructuredData*, *UnstructuredData*
             \DF/Xarray /. . /            -> Label numpy.arrays
              \= = = = /. ./
               \array /. /                -> Memory allocation
                \= = /./
                 \= //
                  \/

               COMPUTER


Documentation (WIP)
-------------------

Note that ``subsurface`` is still in early days; do expect things to change. We
welcome contributions very much, please get in touch if you would like to add
support for subsurface in your package.

An early version of the documentation can be found here:

https://softwareunderground.github.io/subsurface/

Direct links:

- `Developers-guide <https://softwareunderground.github.io/subsurface/maintenance.html>`_
- `Changelog <https://softwareunderground.github.io/subsurface/changelog.html>`_


Installation
------------

.. code-block:: console

    pip install subsurface

or

.. code-block:: console

    conda install -c conda-forge subsurface

Be aware that to read different formats you will need to manually install the
specific dependency (e.g. ``welly`` to read well data).

