Skip to main content

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

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

fast-barnes-py-2.0.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

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

fast_barnes_py-2.0.0-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

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

Hashes for fast-barnes-py-2.0.0.tar.gz
Algorithm Hash digest
SHA256 c73afaabb93898af4918f765aa181a269b07a46c71d603be85dbe8102bafd99f
MD5 ce16784bfc449af82248a94ea9c911ad
BLAKE2b-256 6b504838910ad1c27865d8d14ca9d6722135cecd491320ba9912889408b7b009

See more details on using hashes here.

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

Hashes for fast_barnes_py-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5204f44bf33bf64a423c0ea5d514c6513dd0263c77aaff244a1754fa87f1111
MD5 c34f38f6603ddbb76048cb7af7b11af0
BLAKE2b-256 858cf03af9394bc4730bfea67e5d42147b7fb892b10de76caf6c2298edfbf359

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