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:
- 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
- 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
- Leave a GitHub issue if you have questions or comments (Issues do not strictly need to be related to bug reports).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d37724e970d2e2c25a3110e00c7988a95e94d120a141ec9a689c3c4370fc1d1
|
|
| MD5 |
7788e0abe72199989b0eadc15fef71be
|
|
| BLAKE2b-256 |
1f1fda8fbc1e28136193ebcd11adf8bdfd1490c09199e058005589e49a8d124e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89d75c1eb9b29b915f5cacba30a37a6492ef7af35b40c618726f75a025a5655
|
|
| MD5 |
b1a14b247a7ca25cd066be7a3e2f0098
|
|
| BLAKE2b-256 |
9b94e28ef15a458c8c2f4959b96aed6d692535bbeb5844d72a07932233ce6dd5
|