# 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.

Parameters
• 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.

Returns

• 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)

Example

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)

Definition

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 , (Section 3.2).

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.

Warning

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

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

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

Returns

Vector of size nb_values containing the allowed wavenumbers.

Return type

numpy.ndarray

Example

from structure_factor.tapered_estimators_isotropic import (
allowed_k_norm_bartlett_isotropic,
)


[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\}$