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 atk_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 aBallWindow
and the ambient dimension is even, the estimator will be evaluated on the corresponding set of allowed wavenumbers returned byallowed_k_norm()
. Defaults to None.n_allowed_k_norm (int, optional) – Number of allowed wavenumbers to be used when
k_norm
is None. Seeallowed_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)
DefinitionThe 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
tapered_estimator_isotropic()
allowed_k_norm()
- 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 radiusradius
. Only for even values ofd
.Warning
This method is only available when the ambient dimension is even.
- Parameters
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.
- 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, ) k = allowed_k_norm_bartlett_isotropic(dimension=2, radius=20, nb_values=6) print(k)
[0.1915853 0.35077933 0.50867341 0.6661846 0.8235315 0.98079293]
DefinitionThe 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\}\]See also