Fast Barnes Interpolation
Project description
Fast Barnes Interpolation
This Python package provides an implementation of the formal algorithms for fast Barnes interpolation as presented in the corresponding paper published in the GMD journal.
In addition to Barnes interpolation for 2-dimensional applications, this package now also supports Barnes interpolation of 1-dimensional and 3-dimensional data.
Mathematical Background
Barnes interpolation is a method that is widely used in geospatial sciences like meteorology to remodel data values $f_k \in \mathbb{R}$ recorded at irregularly distributed points $\mathbf{x}_k \in \mathbb{R}^2$ into a representative analytical field $f(\mathbf{x}) \in \mathbb{R}$. It is defined as
with Gaussian weights
for a specific Gaussian width parameter $\sigma$.
Naive computation of Barnes interpolation leads to an algorithmic complexity of $\mathcal{O}(N \cdot W \cdot H)$, where $N$ is the number of sample points and $W \times H$ the size of the underlying grid.
As shown in the paper, for sufficiently large $n$ (in general in the range from 3 to 6) a good approximation of Barnes interpolation with a reduced complexity $\mathcal{O}(N + W \cdot H)$ can be obtained by the convolutional expression
where $\delta_{\mathbf{x}_k}$ is the Dirac impulse function at location $\mathbf{x}_k$ and $r_n(.)$ an elementary rectangular function of a specific length that depends on $\sigma$ and $n$.
Example with a Speed-up Factor of more than 1000
The example below is taken from the paper and shows a comparison of the naive Barnes interpolation with the fast Barnes interpolation for $N = 3490$ sample points on a grid with $2400 \times 1200$ points. The test was conducted on a computer with a customary 2.6 GHz Intel i7-6600U processor with two cores (of minor importance since the code is written in sequential manner).
The recorded execution times for the pure interpolation tasks were
- 280.764 s for the naive Barnes interpolation with a 3-fold nested for-loop over $W$, $H$ and $N$
- 0.247 s for the fast Barnes interpolation with a 4-fold convolution
The detail views of the isoline visualizations of the respective Barnes interpolation results agree to a very high degree:
The first image depicts the isoline visualization for the naive approach, the second image that for the convolutional, fast approach.
Further Links
- Minimal Working Examples
To find out how to use the code. - Release Notes
Summary of the recent changes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fast-barnes-py-2.0.0.tar.gz.
File metadata
- Download URL: fast-barnes-py-2.0.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c73afaabb93898af4918f765aa181a269b07a46c71d603be85dbe8102bafd99f
|
|
| MD5 |
ce16784bfc449af82248a94ea9c911ad
|
|
| BLAKE2b-256 |
6b504838910ad1c27865d8d14ca9d6722135cecd491320ba9912889408b7b009
|
File details
Details for the file fast_barnes_py-2.0.0-py3-none-any.whl.
File metadata
- Download URL: fast_barnes_py-2.0.0-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5204f44bf33bf64a423c0ea5d514c6513dd0263c77aaff244a1754fa87f1111
|
|
| MD5 |
c34f38f6603ddbb76048cb7af7b11af0
|
|
| BLAKE2b-256 |
858cf03af9394bc4730bfea67e5d42147b7fb892b10de76caf6c2298edfbf359
|