subsurface Documentation

Release

0.2.9

Date

12 November 2021

Source

github.com/softwareunderground/subsurface


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:

Installation

pip install subsurface

or

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).

Requirements

The only requirement for subsurface is xarray (which, in turn, requires pandas and numpy).

Optional requirements

There are many optional requirements, depending on the data format you want to read/write. Currently, the requierements_opt.txt reads like:

openpyxl

welly == 0.4.8

# There is an open PR for striplog
git+https://github.com/Leguark/striplog.git

segyio
matplotlib
pyvista

imageio
scipy
shapely
requests
ezdxf

# Importing dxf
trimesh # to fix dxf meshes
networkx

pooch
netcdf4
scooby

# Geospatial libraries
geopandas
rasterio