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 if matplotlib 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.