Skip to main content

The Python interface for geological point data in The Netherlands

Project description

GeoST - Geological Subsurface Toolbox

PyPI version License: MIT Lifecycle: experimental Build: status codecov Formatting: ruff

The Geological Subsurface Toolbox (GeoST) package is designed to be an easy-to-use Python interface for working with subsurface point data in The Netherlands (boreholes, well logs and CPT's). It provides selection, analysis and export methods that can be applied generically to the loaded data. It is designed to connect with other Deltares developments such as iMod and DataFusionTools.

The internal BoreholeCollection, LogCollection and CptCollection classes use Pandas for storing data and header information. It utilizes a custom, lightweight validation module inspired by the Pandera API. For spatial functions Geopandas is used. The package also supports reading/writing parquet and geoparquet files through Pandas and Geopandas respectively.

GeoST is a work-in-progress and currently supports a limited number of data sources.

Installation (user)

In a Python >= 3.12 environment, install the latest stable release using pip:

pip install geost

Or the latest (experimental) version of the main branch directly from GitHub using:

pip install git+https://github.com/Deltares-research/geost.git

Installation (developer)

We use Pixi for package management and workflows.

With pixi installed, navigate to the folder of the cloned repository and run the following to install all GeoST dependencies:

pixi install

Next install GeoST in editable mode by running the pixi task 'install':

pixi run install

See the Pixi documentation for more information.

Examples

We collect examples that make use of GeoST and other Subsurface Toolbox developments in the Deltares sst-examples repository.

Supported borehole and CPT formats

  • From local files
    • geost .parquet file (complete)
    • Dino csv geological boreholes (complete)
    • Dino XML geological boreholes (planned)
    • BRO XML geotechnical boreholes (planned)
    • BRO XML soil boreholes (planned)
    • GEF boreholes (planned)
    • GEF CPT's (complete)
    • BRO XML CPT's (planned)
    • BRO geopackage CPT's (planned)
    • Well log LAS files (planned)
    • Well log ASCII files (planned)
  • Directly from the BRO (REST API) (all planned)
    • CPT
    • BHR-P
    • BHR-GT
    • BHR-G

Features

After loading data from one of the supported formats it will automatically be validated. If the validation is succesful, a Collection object will be returned depending on your input data type (mixed CPT/well log/borehole collections are not allowed). A collection object consists of two main attributes: the header and data. The header contains a table with one entry per object and provides information about the name, location, surface level, and borehole/log/cpt start and end depths. The data attribute is a table that includes the data for every described layer (boreholes) or measurement (well logs, cpt's).

The collection object comes with a comprehensive set of methods that can be applied generically while ensuring that the header and data remain synchronized:

  • Selection/slicing methods (e.g., objects within bounding box, within or close to geometries, based on depth and other conditions)
  • Export methods (e.g. to csv, parquet, geopackage, VTK, DataFusionTools, Kingdom* , etc)
  • Datafusion methods (e.g. combining collections*, combining with data from maps, conversion of description protocols*)
  • Miscellaneous methods (e.g. changing vertical/horizontal position reference system)

For a better overview of basic functionality, see the Basics Tutorial.

Contributing

You can contribute by testing, raising issues and making pull requests. Some general guidelines:

  • Use new branches for developing new features or bugfixes. Use prefixes such as feature/ bugfix/ experimental/ to indicate the type of branch
  • Add unit tests (and test data) for new methods and functions. We use pytest.
  • Add Numpy-style docstrings
  • Use Black formatting with default line lenght (88 characters)
  • Update requirement.txt en environment.yml files if required

License

MIT license (Note: may change to a copyleft license in the future, depending on Deltares management decisions)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geost-0.2.4.tar.gz (59.9 kB view details)

Uploaded Source

Built Distribution

geost-0.2.4-py3-none-any.whl (52.1 kB view details)

Uploaded Python 3

File details

Details for the file geost-0.2.4.tar.gz.

File metadata

  • Download URL: geost-0.2.4.tar.gz
  • Upload date:
  • Size: 59.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for geost-0.2.4.tar.gz
Algorithm Hash digest
SHA256 6a8058c7c08cd5adf5b44384d99993a20208954cc09e9285c6a2d2d74ab406fc
MD5 84c79fca99e23d29d0096284597b45fe
BLAKE2b-256 d6276577f06f42f3ab2ec777aa811fe1d427f815d3d2491929cd51e12b068db1

See more details on using hashes here.

File details

Details for the file geost-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: geost-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 52.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for geost-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 aab50b5c88954dbe2f8e54bb061d892ee6f8176de249cd4dc4c0463a3b04667e
MD5 daee78714c1c8694802a46a4686ddb67
BLAKE2b-256 e0d4fffbc9ec57ad9d6f9fb0925a1a3c9b88ba50ff77904c6675883852ceb0be

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page