Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Short paper for submission to JOSS #134

Merged
merged 3 commits into from Sep 14, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
92 changes: 92 additions & 0 deletions paper/paper.bib
@@ -0,0 +1,92 @@
@article{smith1990,
title = {Gridding with Continuous Curvature Splines in Tension},
volume = {55},
issn = {0016-8033},
doi = {10.1190/1.1442837},
number = {3},
journal = {Geophysics},
author = {Smith, W. and Wessel, P.},
month = mar,
year = {1990},
pages = {293-305},
}

@article{wessel2013a,
title = {Generic {{Mapping Tools}}: {{Improved Version Released}}},
volume = {94},
issn = {2324-9250},
shorttitle = {Generic {{Mapping Tools}}},
doi = {10.1002/2013EO450001},
language = {en},
number = {45},
journal = {Eos, Transactions American Geophysical Union},
author = {Wessel, Paul and Smith, Walter H. F. and Scharroo, Remko and Luis, Joaquim and Wobbe, Florian},
month = nov,
year = {2013},
keywords = {1926 Geospatial,1928 GIS science,1976 Software tools and services,mapping,scientific software},
pages = {409-410},
}

@article{sandwell1987,
title = {Biharmonic Spline Interpolation of {{GEOS}}-3 and {{SEASAT}} Altimeter Data},
volume = {14},
issn = {1944-8007},
doi = {10.1029/GL014i002p00139},
language = {en},
number = {2},
journal = {Geophysical Research Letters},
author = {Sandwell, David T.},
month = feb,
year = {1987},
keywords = {1214 Geodesy and Gravity: Geopotential theory and determination,1234 Geodesy and Gravity: Regional and global gravity anomalies and earth structure,1294 Geodesy and Gravity: Instruments and techniques,3010 Marine Geology and Geophysics: Gravity},
pages = {139-142},
}

@article{pedregosa2011,
title = {Scikit-Learn: {{Machine Learning}} in {{Python}}},
volume = {12},
issn = {ISSN 1533-7928},
shorttitle = {Scikit-Learn},
number = {Oct},
journal = {Journal of Machine Learning Research},
author = {Pedregosa, Fabian and Varoquaux, Ga\"el and Gramfort, Alexandre and Michel, Vincent and Thirion, Bertrand and Grisel, Olivier and Blondel, Mathieu and Prettenhofer, Peter and Weiss, Ron and Dubourg, Vincent and Vanderplas, Jake and Passos, Alexandre and Cournapeau, David and Brucher, Matthieu and Perrot, Matthieu and Duchesnay, \'Edouard},
year = {2011},
pages = {2825-2830},
}

@article{franke1982,
title = {Smooth Interpolation of Scattered Data by Local Thin Plate Splines},
volume = {8},
issn = {0898-1221},
doi = {10.1016/0898-1221(82)90009-8},
number = {4},
journal = {Computers \& Mathematics with Applications},
author = {Franke, Richard},
month = jan,
year = {1982},
pages = {273-281},
}

@article{uieda2018,
title = {Presentation: {{Joint Interpolation}} of 3-Component {{GPS Velocities Constrained}} by {{Elasticity}}},
shorttitle = {Presentation},
doi = {10.6084/m9.figshare.6387467},
author = {Uieda, Leonardo and Sandwell, David and Wessel, Paul},
year = {2018},
journal = {figshare},
}

@article{sandwell2016,
title = {Interpolation of 2-{{D}} Vector Data Using Constraints from Elasticity},
volume = {43},
issn = {1944-8007},
doi = {10.1002/2016GL070340},
language = {en},
number = {20},
journal = {Geophysical Research Letters},
author = {Sandwell, David T. and Wessel, Paul},
month = oct,
year = {2016},
keywords = {1209 Tectonic deformation,1910 Data assimilation; integration and fusion,1976 Software tools and services,3252 Spatial analysis,GPS velocities,vector interpolation},
pages = {2016GL070340},
}
67 changes: 67 additions & 0 deletions paper/paper.md
@@ -0,0 +1,67 @@
---
title: "Verde: Processing and gridding spatial data using Green's functions"
tags:
- python
- geophysics
- geospatial
authors:
- name: Leonardo Uieda
orcid: 0000-0001-6123-9515
affiliation: 1
affiliations:
- name: Department of Geology and Geophysics, SOEST, University of Hawai'i at Mānoa, Honolulu, Hawaii, USA
index: 1
date: 13 September 2018
bibliography: paper.bib
---

# Summary

Measurements made on the surface of the Earth are often sparse and unevenly distributed.
For example, GPS displacement measurements are limited by the availability of ground
stations and airborne geophysical measurements are highly sampled along flight lines but
there is often a large gap between lines. Many data processing methods require data
distributed on a uniform regular grid, particularly methods involving the Fourier
transform or the computation of directional derivatives. Hence, the interpolation of
sparse measurements onto a regular grid (known as *gridding*) is a prominent problem in
the Earth Sciences.

Popular gridding methods include kriging, minimum curvature with tension [@smith1990],
and bi-harmonic splines [@sandwell1987]. The latter belongs to a group of methods often
called *radial basis functions* and is similar to the *thin-plate spline* [@franke1982].
In these methods, the data are assumed to be represented by a linear combination of
Green's functions,

$$ d_i = \sum\limits_{j=1}^M p_j G_{j}(\mathbf{x}_i, \mathbf{x}_j) , $$

in which $d_i$ is the $i$th datum, $p_j$ is a scalar coefficient, $G_{j}$ is a Green's
function, and $\mathbf{x}_i$ and $\mathbf{x}_j$ are the position vectors for the datum
and the point defining the Green's function, respectively. Interpolation is done by
estimating the $M$ $p_j$ coefficients through linear least-squares and using them to
predict data values at new locations on a grid. Essentially, these methods are linear
models used for prediction. As such, many of the model selection and evaluation
techniques used in machine learning can be applied to griding problems as well.

*Verde* is a Python library for gridding spatial data using different Green's functions.
It differs from the radial basis functions in `scipy.interpolate` by providing an API
inspired by scikit-learn [@pedregosa2011]. The *Verde* API should be familiar to
scikit-learn users but is tweaked to work with spatial data, which has Cartesian or
geographic coordinates and multiple data components instead of an `X` feature matrix and
`y` label vector. The library also includes more specialized Green's functions
[@sandwell2016], utilities for trend estimation and data decimation (which are often
required prior to gridding [@smith1990]), and more. Some of these interpolation and data
processing methods already exist in the Generic Mapping Tools (GMT) [@wessel2013a], a
command-line program popular in the Earth Sciences. However, there are no model
selection tools in GMT and it can be difficult to separate parts of the processing that
are done internally by its modules. *Verde* is designed to be modular, easily extended,
and integrated into the scientific Python ecosystem. It can be used to implement new
interpolation methods by subclassing the `verde.base.BaseGridder` class, requiring only
the implementation of the new Green's function. For example, it is currently being used
to develop a method for interpolation of 3-component GPS data [@uieda2018].

# Acknowledgements

I would like to thank Paul Wessel and David Hoese for helpful discussions and
contributions to this project.

# References