Source code for nbodykit.filters
from nbodykit.base.mesh import MeshFilter
import numpy
[docs]class TopHat(MeshFilter):
""" A TopHat filter defined in Fourier space.
Notes
-----
A fourier space filter is different from a configuration space
filter. The TopHat in fourier space creates ringing effects
due to the truncation / discretization of modes.
"""
kind = 'wavenumber'
mode = 'complex'
[docs] def __init__(self, r):
"""
Parameters
----------
r : float
radius of the TopHat filter
"""
self.r = r
[docs] def filter(self, k, v):
r = self.r
k = sum(ki ** 2 for ki in k) ** 0.5
kr = k * r
w = 3 * (numpy.sin(kr) / kr **3 - numpy.cos(kr) / kr ** 2)
w[k == 0] = 1.0
return w * v
[docs]class Gaussian(MeshFilter):
""" A gaussian filter
.. math ::
G(r) = exp(-0.5 k^2 r^2)
"""
kind = 'wavenumber'
mode = 'complex'
[docs] def __init__(self, r):
"""
Parameters
----------
r : float
radius of the Gaussian filter
"""
self.r = r
[docs] def filter(self, k, v):
r = self.r
k2 = sum(ki ** 2 for ki in k)
return numpy.exp(- 0.5 * k2 * r**2) * v