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-1.3.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-1.3-cp38-cp38-manylinux2010_x86_64.whl (14.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.8macOS 10.14+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

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

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.7mmacOS 10.14+ x86-64

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

Uploaded CPython 3.6mWindows x86-64

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

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

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

Uploaded CPython 2.7mmanylinux: glibc 2.12+ x86-64

stripy-1.3-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-1.3.tar.gz.

File metadata

  • Download URL: stripy-1.3.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-1.3.tar.gz
Algorithm Hash digest
SHA256 237ebc140d39fe1c09017464d923086ea494fee54380f6f7bf732bd702d21fa1
MD5 04126579c7cdc288201acdf988544942
BLAKE2b-256 cf9cc92a98aed3593e7d14b663762bbe17c129d2d7b11b23416192955192e44e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 f7aa53e3edd4c81d44f87eee85c49b3721857425d39a8efa5787f7fd8f915e62
MD5 e70c3bcff6f252f60581d7aaf73850a7
BLAKE2b-256 20cb59e3734d7d7edccd7dbc674852f166f74c4d6527a04288932b2b20788481

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 1f19cfcbd663f6bdfb5554b2586e9f211a3526b87eaee9810ce4d7ea2abcf273
MD5 c3973224cfdb6745c536ee2ad785fe18
BLAKE2b-256 26b25917b7ee90a26f6e540c66f4aa1b2e74430a4e5fd22ffa3efc3b929c9358

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 034f9ec7580fbbdeb4b0fa46a398ed4563da72e1a4a4285fe62b4e59ac12786b
MD5 d2f1a4f885e67a4fa423dbd432c92e40
BLAKE2b-256 c35d9141c41ce8aef280ed9ed32b009b559ebf7d97ac9b801eaf15fcfadefb23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d495a14de450364d8fa762b96054a33e32d0e47bab53fa67df6ef03f7153aad2
MD5 60a128154711fc1c9758c4659360e8e2
BLAKE2b-256 ec235439c55956d919e2a837abbe44a6c99f7c22c027797e318a30a804a156b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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.8

File hashes

Hashes for stripy-1.3-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 ec8e50e097368f1db5321ce72ea9be9bf200450a8a4a21259f582fe9406d04b3
MD5 8173fccddf7cc9fb0a59363ea7cdca4e
BLAKE2b-256 4e5443973d43e3a50cfb32efc780f27f94bb8caf03d7b503d7204fe2f8c817c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 9feaf455a7cfc2cb3f19dc9c81f1dcd531a61740ef47c93b6ec46c37e788ffff
MD5 38a06e14fd5d7af12e70a1e22558c3c8
BLAKE2b-256 f049e5db6bf38e41077eacbe151f300874462404eb03d20736ed2110af03c5bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c0b4272f91fbe97739941d57a160aa626d967a8041c642c9331a0b53dab1156e
MD5 47b8e0042c526e8bdb143f92a2e6db91
BLAKE2b-256 9e6c90c3ee9b75f274c7a9067c988586399a2ad1a01f431f28b6f4e07e7810da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp27-cp27m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 3f1aefd4ae6327418229e5ccfe2d50be9e7aecac93d72cf4b129587d88bc4f6c
MD5 5765f1ce4994253515c80bf18ecadc7e
BLAKE2b-256 2b7a38abbe2b4c028572b7d0bca5f986d7f6eda6201980384f827e9b116467d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stripy-1.3-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-1.3-cp27-cp27m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 4910e7918755361eb1fab8846a294b5a5bf3b9574555ae3921e52aa4a83b4c5a
MD5 e53d30b53ac3a4cce72abd3621e7b663
BLAKE2b-256 fe70e3b448968134508a350def321145f1af7d6d6a230345779aef7fd8b59efb

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