Skip to main content

Python interface to TRIPACK and STRIPACK fortran code for triangulation/interpolation in Cartesian coordinates and on a sphere

Project description

Stripy

Docker Cloud Automated build PyPI

pip builds

A Python interface to TRIPACK and STRIPACK Fortran code for (constrained) triangulation in Cartesian coordinates and on a sphere. Stripy is an object-oriented package and includes routines from SRFPACK and SSRFPACK for interpolation (nearest neighbor, linear and hermite cubic) and to evaluate derivatives (Renka 1996a,b and 1997a,b).

stripy is bundled with litho1pt0 which is a python interface to the crust 1.0 dataset and the lithospheric part of the litho 1.0 dataset (Laske et al, 2013 and Pasyanos et al, 2014) which both requires and demonstrates the triangulation / searching and interpolation on the sphere that is provided by stripy.

Examples

Sample images created with stripy illustrating the meshing capability: ocean age data can be triangulated on the sphere with no need for points on land. Once stripy ingests your data points, you can sample another dataset to your grid (bathymetry on the right), smooth, find the derivatives of your data, or interpolate to another set of points.

Binder

Launch the demonstration at links.underworldcode.org/stripy-live (mybinder.org)

Binder

Citation

DOI

Moresi, L. and Mather, B.R., (2019). Stripy: A Python module for (constrained) triangulation in Cartesian coordinates and on a sphere.. Journal of Open Source Software, 4(38), 1410, https://doi.org/10.21105/joss.01410

Navigation / Notebooks

There are two matching sets of stripy notebooks - one set for Cartesian Triangulations and one for Spherical Triangulations. For most geographical applications, the spherical triangulations are the natural choice as they expect longitude and latitude coordinates (admittedly in radians).

Note: the Cartesian and Spherical notebooks can be obtained / installed from stripy itself as follows:

   python -c 'import stripy; stripy.documentation.install_documentation(path="Notebooks")'

Cartesian

Spherical

Examples

Note, these examples are the notebooks from litho1pt0 which are installed from the package itself:

   python -c 'import litho1pt0; litho1pt0.documentation.install_documentation(path="Notebooks")'

The first three notebooks are an introduction to litho1pt0 that does not explicitly mention stripy but the next two worked examples show how to search, interpolate and plot with the help of stripy routines.

Installation

Dependencies

You will need Python 2.7 or 3.5+. Also, the following packages are required:

Recommended Packages for running the notebooks:

Installing using pip

You can install stripy using the pip package manager with either version of Python:

python2 -m pip install stripy
python3 -m pip install stripy

All the dependencies will be automatically installed by pip, except for gfortran (or any Fortran compiler). It must be installed in your system before installing stripy with pip.

If you change the Fortran compiler, you may have to add the flags config_fc --fcompiler=<compiler name> when setup.py is run (see docs for numpy.distutils).

Installing using Docker

A more straightforward installation which does not depend on specific compilers relies on the docker virtualisation system.

To install the docker image and test it is working:

   docker pull underworldcode/stripy:latest
   docker run --rm underworldcode/stripy:latest help

To install the helper scripts for bash:

   docker run --rm underworldcode/stripy:latest bash_utils > bash_utils.sh
   source bash_utils.sh

( you may find it helpful to move/rename this file and source it from your bash profile at login time )

The bash_utils.sh script installs the following functions which are available through the bash command line:

  stripy-docker-help
  stripy-docker-sh
  stripy-docker-nb
  stripy-docker-browse
  stripy-docker-serve
  stripy-docker-terminal

For more information on these functions, run

  source bash_utils.sh
  stripy-docker-help

To use the docker version as you would, say, using ipython to type on the command line:

   source bash_utils.sh  # (only needs to be done once)
   stripy-docker-terminal
   ls
   ipython

To use the docker version to run a script

   source bash_utils.sh  # (only needs to be done once)
   stripy-docker-sh my_python_script.py

To build the dockerfile locally, we provide a script. First ensure you have checked out the source code from github and then run the script in the Docker directory. If you modify the dockerfile and want to push the image to make it publicly available, it will need to be retagged to upload somewhere other than the underworldcode repository.

git checkout https://github.com/underworldcode/stripy.git
cd stripy
source Docker/build-dockerfile.sh

Usage

Two classes are included as part of the Stripy package:

  • sTriangulation (Spherical coordinates)
  • Triangulation (Cartesian coordinates)

These classes share similar methods and can be easily interchanged. In addition, there are many helper functions provided for building meshes.

A series of tests are located in the tests subdirectory. In order to perform these tests clone the repository and run pytest:

git checkout https://github.com/underworldcode/stripy.git
cd stripy
pytest -v

API Documentation

The API for all functions and classes in stripy can be accessed from https://underworldcode.github.io/stripy/.

References

  1. Laske, G., G. Masters, and Z. Ma (2013), Update on CRUST1. 0—A 1-degree global model of Earth's crust, Geophys Research Abstracts, 15, EGU2013–2658.

  2. Pasyanos, M. E., T. G. Masters, G. Laske, and Z. Ma (2014), LITHO1.0: An updated crust and lithospheric model of the Earth, Journal of Geophysical Research-Solid Earth, 119(3), 2153–2173, doi:10.1002/2013JB010626.

  3. R. J. Renka, "ALGORITHM 751: TRIPACK: A Constrained Two- Dimensional Delaunay Triangulation Package" ACM Trans. Math. Software, Vol. 22, No. 1, 1996, pp. 1-8.

  4. R. J. Renka, "ALGORITHM 752: SRFPACK: Software for Scattered Data Fitting with a Constrained Surface under Tension", ACM Trans. Math. Software, Vol. 22, No. 1, 1996, pp. 9-17.

  5. R. J. Renka, "ALGORITHM 772: STRIPACK: Delaunay Triangulation and Voronoi Diagram on the Surface of a Sphere" ACM Trans. Math. Software, Vol. 23, No. 3, 1997, pp. 416-434.

  6. R. J. Renka, "ALGORITHM 773: SSRFPACK: Interpolation of Scattered Data on the Surface of a Sphere with a Surface under Tension", ACM Trans. Math. Software, Vol. 23, No. 3, 1997, pp. 437-439.

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

stripy-2.0.2.tar.gz (13.0 MB view details)

Uploaded Source

Built Distributions

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

stripy-2.0.2-cp38-cp38-manylinux2010_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

stripy-2.0.2-cp38-cp38-macosx_10_14_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

stripy-2.0.2-cp37-cp37m-win_amd64.whl (14.5 MB view details)

Uploaded CPython 3.7mWindows x86-64

stripy-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl (14.6 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

stripy-2.0.2-cp37-cp37m-macosx_10_14_x86_64.whl (14.5 MB view details)

Uploaded CPython 3.7mmacOS 10.14+ x86-64

stripy-2.0.2-cp36-cp36m-win_amd64.whl (14.5 MB view details)

Uploaded CPython 3.6mWindows x86-64

stripy-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl (14.6 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

stripy-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl (14.4 MB view details)

Uploaded CPython 2.7mmanylinux: glibc 2.12+ x86-64

stripy-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl (14.5 MB view details)

Uploaded CPython 2.7mmacOS 10.14+ x86-64

File details

Details for the file stripy-2.0.2.tar.gz.

File metadata

  • Download URL: stripy-2.0.2.tar.gz
  • Upload date:
  • Size: 13.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2.tar.gz
Algorithm Hash digest
SHA256 c1f39f441b3108bc1830c65611553a437154af27e9a484efcb189b3454eddcc7
MD5 9c832f321ab64cecfb4cacf2fde5a31f
BLAKE2b-256 cf80b07b243a2f782aaa73a4a1003e71a6630b626f6b052c3a26f3c8ac19b7d6

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 14.7 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 82503b83376696b266d40e9f36226a44c39bc6a284d04bf646d5e89216cd8666
MD5 8ca8d488178fe2b4b036e00030c267e5
BLAKE2b-256 371a04fe18d82e319077ba02f27b5367ab4c7f42bf035455d8dd5a6b5cf744cf

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 ccd8430f6a61d26245493ae9e9bdee7901aad07ebb85f768db276ed99528ac15
MD5 3424441fd2ecc9f2f5156c113e69860b
BLAKE2b-256 f9af2ed478acaf61a46cef8f922005714c94e33bad5045d13b2cb9d93f4b16fb

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for stripy-2.0.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 4af1b9bf1de34ddfbcc719e225f83fd532ed202ef6cd5d56f64fc3b11f0d7edf
MD5 2c401e6a5b0dd674be4f612b0f2eb0ee
BLAKE2b-256 3438a855b66575f2b8c779f4cbb9a5e78f578f67a93a0716f797ac375550972f

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 14.6 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1f569932bb774fd8558cf5cc49ca57b05b9636cb1eb7cd97c6e89d5276d7a7fd
MD5 82d89daeb0745f3d6562e49a6bd9a732
BLAKE2b-256 87dfdac18454ee14b9f1b866fab4c5f9d2101ef4ddd2ea8cd43266b38fd99899

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9

File hashes

Hashes for stripy-2.0.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 17c90bc7327e3b599384c03e35221447cdf6f99589e529db1484d5b9d7b2fa92
MD5 54ea608ecc659aa3bc6872b29f0fd506
BLAKE2b-256 9fca82561f320b25deaa3298f2c96a32c06103f4256b9c9bd360636fd6ee5d93

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.8

File hashes

Hashes for stripy-2.0.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 7c154000bce3632e576b2f8ede555bf46eb29213a625788cb3b6cdb03adefce2
MD5 3b710a8f4d54f5983d751b1ed5471cb5
BLAKE2b-256 5ca39e4d9dde4d7c6daec084b7fc31054b9138a5e0c97d013d1f2b065bb90ed2

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 14.6 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b59c78b98cc59a77f08dc05ac4403161b2f8a4fb31cffe00b7850ef17722dc4a
MD5 6530f649748603a419206bc4a589a893
BLAKE2b-256 4b78efd558f5d38d1c8769a9bde17ed9a8467cb745904483a2cc325c1dd71834

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 14.4 MB
  • Tags: CPython 2.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for stripy-2.0.2-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 203d31611dd1401884cdcb1c87bf2c3877c9387a2d0a66d1f77799d23986a512
MD5 5d7624305e86917e6aad33d8ff0be450
BLAKE2b-256 fa36e46fa11669cb182ce9f249aa1119130db6d97584f4c47722af9bdb66c72c

See more details on using hashes here.

File details

Details for the file stripy-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: stripy-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 14.5 MB
  • Tags: CPython 2.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/2.7.18

File hashes

Hashes for stripy-2.0.2-cp27-cp27m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 96ce32a4667742f10b8f4633a9a0a78bc5cd7e4c87eb3c362b57c27eefa87736
MD5 adbfc60a079c6dd1c7776663907bd783
BLAKE2b-256 b12ac07de86dc7b94961a838d31252e62ff1a1199c8b9956337aaeae38a44743

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