Tapered isotropic estimators

Collection of functions used to implement a fast version of Bartlett’s isotropic estimator.

structure_factor.tapered_estimators_isotropic.bartlett_estimator(k_norm, point_pattern)[source]

Compute an estimation of the structure factor of a stationary isotropic point process from one realization encapsulated in point_pattern, evaluated at k_norm.

  • point_pattern (PointPattern) – Realization of the underlying point process.

  • k_norm (numpy.ndarray, optional) – Array of size \(n\) corresponding to the wavenumbers where the estimator is to be evaluated. If None (default) and the observation window point_pattern.window is a BallWindow and the ambient dimension is even, the estimator will be evaluated on the corresponding set of allowed wavenumbers returned by allowed_k_norm(). Defaults to None.

  • n_allowed_k_norm (int, optional) – Number of allowed wavenumbers to be used when k_norm is None. See allowed_k_norm(). Defaults to 60.


  • k_norm: Wavenumber(s) at which the estimator has been evaluated.

  • estimation: Evaluation(s) of the estimator at k_norm.

Return type

tuple(numpy.ndarray, numpy.ndarray)


import numpy as np

from structure_factor.point_processes import HomogeneousPoissonPointProcess
from structure_factor.spatial_windows import BallWindow
from structure_factor.tapered_estimators_isotropic import bartlett_estimator

point_process = HomogeneousPoissonPointProcess(intensity=1 / (4 * np.pi))
window = BallWindow(radius=20, center=[0, 0, 0])
point_pattern = point_process.generate_point_pattern(window=window)

k_norm = np.linspace(1, 5, 3)
k_norm, estimation = bartlett_estimator(k_norm, point_pattern)

The Bartlett’s isotropic estimator \(\widehat{S}_{\mathrm{BI}}\) is constructed from a realization \(\{\mathbf{x}_i\}_{i=1}^N\) of the point process \(\mathcal{X}\) observed in a ball window \(W=B(\mathbf{0}, R)\).

\[\begin{split}\widehat{S}_{\mathrm{BI}}(k) = 1 + \frac{ (2\pi)^{d/2} }{\rho |W| \omega_{d-1}} \sum_{ \substack{j, q =1 \\ j\neq q } }^{N} \frac{1}{(k \|\mathbf{x}_j - \mathbf{x}_q\|_2)^{d/2 - 1}} J_{d/2 - 1}(k \|\mathbf{x}_j - \mathbf{x}_q\|_2).\end{split}\]

For more details, we refer to [HGBLachiezeR22], (Section 3.2).

See also

structure_factor.tapered_estimators_isotropic.allowed_k_norm_bartlett_isotropic(dimension, radius, nb_values=60)[source]

Allowed wavenumbers of the Bartlett isotropic estimator, for a d-dimensional point process observed in a ball window with radius radius. Only for even values of d.


This method is only available when the ambient dimension is even.

  • dimension (int) – Dimension (even number) of the underlying space.

  • radius (float) – Radius of the observation window.

  • nb_values (int) – Number of required allowed wavenumbers. Defaults to 60.


Vector of size nb_values containing the allowed wavenumbers.

Return type



from structure_factor.tapered_estimators_isotropic import (

k = allowed_k_norm_bartlett_isotropic(dimension=2, radius=20, nb_values=6)
[0.1915853  0.35077933 0.50867341 0.6661846  0.8235315  0.98079293]

The allowed wavenumbers of a realization from a point process \(\mathcal{X}\) of \(\mathbb{R}^d\) observed in a ball window \(W=B(\mathbf{0}, R)\) correspond to

\[\left\{ \frac{x}{R} \in \mathbb{R} \text{ s.t. } J_{d/2}(x)=0 \right\}\]