Skip to main content

A python package for constructing complex geological models using neural networks (neural fields).

Project description

curlew

A toolkit for building 2- and 3- dimensional geological models using neural fields.

This approach allows the inclusion of diverse geological data, while the overarching graph-based modelling framework allows complex structures (unconformities, folds, faults, intrusions, etc.) to be constructed sequentially based on a geological history.

As well interpolation-based 3D modelling, curlew can build complex synthetic geology models in which the neural fields are replaced by simple mathematical functions. These synthetic models can then be sampled to create datasets for testing, benchmarking and algorithm development.

Everything is implemented in a differentiable way using pytorch to facilitate inversion frameworks and perform optimisation tasks.

Getting started

Installation

To install directly from github try:

pip install git+https://github.com/samthiele/curlew.git

This should run on most systems: numpy, pytorch and tqdm are the only required dependencies. Other recommended (but optional) dependencies include matplotlib (for 2D plotting), plyfile(for IO with 3D PLY files), and napari (for 3D visualisation).

To install all dependencies, including the optional ones, use:

pip install curlew[all]

Tutorials

Quickly get up to speed with curlew using these CoLab tutorials.

Documentation

Documentation is automatically built and served through GitHub pages.

Support and feedback

Please use GitHub issues to report bugs. For broader ideas or questions, don't hesitate to use the discussions page.

Contributing and appreciation

Please star this repository if you found it useful. If you have fixed bugs or added new features then we welcome pull requests.

Authors and acknowledgment

curlew has been developed by Sam Thiele and Akshay Kamath, with valuable input from Mike Hillier, Lachlan Grose, Richard Gloaguen and Florian Wellmann.

If you use curlew we would appreciate it if you:

  1. Cite the following paper (for academic work)
Kamath, A. V., Thiele, S. T., Moulard, M., Grose, L., Tolosana-Delgado, R., Hillier, M., and Gloaguen, R. (2026). Curlew 1.0: Spatio-temporal implicit geological modelling with neural fields in python. Solid Earth. doi:10.31223/X5KX81
  1. Star this repository so that we get a rough idea of our user base :star:

Versions and change log

v1.1 - major restructure, introduced napari-based 3D viewer

Upgrades to the geology/modeling core, especially an improved structure for the GeoField class and associated deformation events. Added new field types, including Fourier series fields, which tend to converge faster and better than Fourier neural fields. Also included a prototype napari-based 3D visualization tool that runs nicely in parallel to jupyter notebook environments.

v1.0 - initial release

  1. Leave a GitHub issue if you have questions or comments (Issues do not strictly need to be related to bug reports).

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

curlew-1.1.tar.gz (112.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

curlew-1.1-py3-none-any.whl (105.8 kB view details)

Uploaded Python 3

File details

Details for the file curlew-1.1.tar.gz.

File metadata

  • Download URL: curlew-1.1.tar.gz
  • Upload date:
  • Size: 112.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curlew-1.1.tar.gz
Algorithm Hash digest
SHA256 0d37724e970d2e2c25a3110e00c7988a95e94d120a141ec9a689c3c4370fc1d1
MD5 7788e0abe72199989b0eadc15fef71be
BLAKE2b-256 1f1fda8fbc1e28136193ebcd11adf8bdfd1490c09199e058005589e49a8d124e

See more details on using hashes here.

File details

Details for the file curlew-1.1-py3-none-any.whl.

File metadata

  • Download URL: curlew-1.1-py3-none-any.whl
  • Upload date:
  • Size: 105.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curlew-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a89d75c1eb9b29b915f5cacba30a37a6492ef7af35b40c618726f75a025a5655
MD5 b1a14b247a7ca25cd066be7a3e2f0098
BLAKE2b-256 9b94e28ef15a458c8c2f4959b96aed6d692535bbeb5844d72a07932233ce6dd5

See more details on using hashes here.

Supported by

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