Foreground Filtering

Foreground Filtering

API

foreground_filter!(output_mmodes, output_transfermatrix, output_covariance,
                   output_foreground_filter, output_noise_whitener,
                   input_mmodes, input_transfermatrix, input_noisematrix,
                   input_signalmatrix, input_foregroundmatrix;
                   threshold=0.1, tempdir="/tmp", cleanup=true)

Filter foreground emission from the dataset and whiten the noise.

Arguments:

  • output_mmodes will be populated with the foreground filtered $m$-modes

  • output_transfermatrix will be populated with the foreground-filtered transfer-matrix

  • output_covariance will be populated with the covariance matrix of the output $m$-modes

  • output_foreground_filter is the matrix used to filter foreground emission

  • output_noise_whitener is the matrix used to whiten the noise covariance (the thermal noise and the foreground contribution)

  • input_mmodes is the measured input $m$-modes

  • input_transfermatrix is the transfer matrix describing the response of the interferometer

  • input_noisematrix is the thermal noise covariance matrix

  • input_signalmatrix is the covariance matrix due to the 21-cm power spectrum

  • input_foregroundmatrix is the covariance matrix due to the foreground radio emission

Warn

Please pay attention to the argument order. Swapping arguments could lead to this function filtering all of the 21-cm signal while leaving the foreground emission in tact!

Keyword Arguments:

  • threshold is the maximum allowed foreground-signal ratio

  • tempdir is a path to a directory where temporary files can be placed

  • cleanup determines whether or not files placed in the tempdir are automatically removed. This can be set to false if you wish to check some of the intermediate output.

source
struct ForegroundComponent <: SkyComponent

This type represents the contribution of a single foreground component to the multi-frequency angular power spectrum.

\[C_l(ν_1, ν_2) = A \left(\frac{l+1}{1001}\right)^{-α} \left(\frac{ν_1 ν_2}{ν_0^2}\right)^{-β} \exp\left(-\frac{\log^2(ν_1/ν_2)}{2ζ^2}\right)\]

Fields:

  • ν0 specifies the reference frequency

  • A specifies the overall amplitude at the reference frequency

  • α is the power-law index for the multipole moment $l$

  • β is the power-law index for frequency

  • ζ essentially determines how quickly the foreground component decorrelates in frequency

Usage:

Some quick foreground models can be constructed based on the work of Santos, Cooray & Knox 2005. These can be accessed with the functions extragalactic_point_sources, extragalactic_free_free, galactic_synchrotron, and galactic_free_free.

julia> BPJSpec.extragalactic_point_sources()
ForegroundComponent(ν0 = 130.000 MHz, A = 57.000 mK², α = 1.100, β = 2.070, ζ = 1.000)

julia> BPJSpec.extragalactic_free_free()
ForegroundComponent(ν0 = 130.000 MHz, A = 0.014 mK², α = 1.000, β = 2.100, ζ = 35.000)

julia> BPJSpec.galactic_synchrotron()
ForegroundComponent(ν0 = 130.000 MHz, A = 700.000 mK², α = 2.400, β = 2.800, ζ = 4.000)

julia> BPJSpec.galactic_free_free()
ForegroundComponent(ν0 = 130.000 MHz, A = 0.088 mK², α = 3.000, β = 2.150, ζ = 35.000)

julia> component = BPJSpec.ForegroundComponent(100u"MHz", 1u"K^2", 1, 1, 100)
       component(100, 74u"MHz", 76u"MHz")
17.622494197510505 K^2
source
struct CylindricalPS <: PowerSpectrum <: SkyComponent

This type represents a cylindrically averaged power spectrum of the 21-cm brightness temperature over a given range in redshift. An instance of this type can be evaluated to compute an approximation of the multi-frequency angular power spectrum.

\[C_l(ν_1, ν_2) ≈ ...\]

Fields:

  • zrange specifies the range over which this power spectrum is valid. It is used to define the range over which cosmological quantities can be approximated

  • kpara is a list of wave numbers parallel to the line-of-sight

  • kperp is a list of wave numbers perpendicular to the line-of-sight

  • power is the amplitude of the power spectrum at the grid points specified by kpara and kperp

Usage:

julia> power_spectrum = BPJSpec.CylindricalPS((10, 30),
                                              [0.0, 1.0].*u"Mpc^-1", # kpara
                                              [0.0, 1.0].*u"Mpc^-1", # kperp
                                              [1.0 1.0; 1.0 1.0].*u"mK^2*Mpc^3")
CylindricalPS(10.0 < z < 30.0, k∥ = 0.00 Mpc⁻¹…1.00 Mpc⁻², k⟂ = 0.00 Mpc⁻¹…1.00 Mpc⁻², P ~ 1.0 mK²Mpc³)

julia> power_spectrum(100, 74u"MHz", 74u"MHz")
2.694677277820449e-15 K^2

julia> power_spectrum(100, 74u"MHz", 75u"MHz")
-4.315090053966302e-17 K^2
source
extragalactic_point_sources()

Constructs a model of extragalactic point sources based on the work of Santos, Cooray & Knox 2005.

source
extragalactic_free_free()

Constructs a model of extragalactic free-free emission based on the work of Santos, Cooray & Knox 2005.

source
galactic_synchrotron()

Constructs a model of galactic synchrotron emission based on the work of Santos, Cooray & Knox 2005.

source
galactic_free_free()

Constructs a model of galactic free-free emission based on the work of Santos, Cooray & Knox 2005.

source