Package curlew
A toolkit for building 2- and 3- dimensional geological models using neural fields.
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. Matplotlib is handy too, but not required.
Tutorials
To help get up to speed with curlew
, we maintain a set of CoLab tutorial notebooks here.
Additional examples (used to make figures in the paper listed below) can be found here.
Support
Please use GitHub issues to report bugs.
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.J., Wellmann, R., & Gloaguen, R. Curlew 1.0: Implicit geological modelling with neural fields in python. Geoscientific Model Development (preprint online soon)
2) Star this repository so that we get a rough idea of our user base
3) Leave a GitHub issue if you have questions or comments (Issues do not strictly need to be related to bug reports).
Sub-modules
curlew.core
-
Define several core curlew types for storing data and hyperparameters.
curlew.data
-
Generate synthetic datasets and models for testing purposes.
curlew.fields
-
Import core neural field types from other python files, and define the "base" NF class that these all inherit from.
curlew.geology
-
Functions and objects used for creating and manipulating geological structures in Curlew.
curlew.geometry
-
Utility functions for generating basic geometries (grids, sections, etc.) and performing other simple geometric tasks.
curlew.io
-
Functions for performing common IO operations.
curlew.utils
-
A series of utility functions that can come in handy when using
curlew
. This includes some minimalist(ish) classess for data handling and … curlew.visualise
-
Functions for performing crude 2D plotting using matplotlib. Useful for demonstrations, but will need to be extended at some point to be more usable …
Global variables
var ccmap
-
A colourful (custom) matplotlib colormap taylored for
curlew
. Will only be set ifmatplotlib
is installed. var device
-
The device used to compute operations with pytorch tensors. Change to allow e.g. GPU parallelisation.
var dtype
-
The precision used during pytorch computations. Lower to float32 to save RAM.